patch-2.3.34 linux/drivers/char/bttv.h

Next file: linux/drivers/char/buz.c
Previous file: linux/drivers/char/bttv.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.33/linux/drivers/char/bttv.h linux/drivers/char/bttv.h
@@ -21,15 +21,34 @@
 #ifndef _BTTV_H_
 #define _BTTV_H_
 
-#define BTTV_VERSION_CODE 0x000523
+#define BTTV_VERSION_CODE 0x00070a
 
 #include <linux/types.h>
 #include <linux/wait.h>
 
-#include <linux/i2c.h>
-#include "msp3400.h"
+#include "audiochip.h"
 #include "bt848.h"
-#include <linux/videodev.h>
+
+
+/* experimental, interface might change */
+#ifndef VIDIOCSWIN2
+#define VIDIOCSWIN2 _IOW('v',28,struct video_window2)
+struct video_window2
+{
+	__u16   palette;                /* Palette (aka video format) in use */
+	__u32   start;                  /* start address, relative to video_buffer.base */
+	__u32   pitch;
+	__u32   width;
+	__u32   height;
+	__u32   flags;
+	
+	struct	video_clip *clips;
+	int	clipcount;
+};
+#endif
+
+
+#define WAIT_QUEUE                 wait_queue_head_t
 
 #ifndef O_NONCAP  
 #define O_NONCAP	O_TRUNC
@@ -37,10 +56,10 @@
 
 #define MAX_GBUFFERS	2
 #define RISCMEM_LEN	(32744*2)
-#define VBIBUF_SIZE     65536
+#define VBI_MAXLINES    16
+#define VBIBUF_SIZE     (2048*VBI_MAXLINES*2)
 
-/* maximum needed buffer size for extended VBI frame mode capturing */
-#define BTTV_MAX_FBUF	0x190000
+#define BTTV_MAX_FBUF	0x208000
 
 #ifdef __KERNEL__
 
@@ -58,6 +77,9 @@
 	int interlace;
 	int color_fmt;
 	ushort depth;
+
+	int use_yuv;
+	struct video_window2 win2;
 };
 
 struct bttv_pll_info {
@@ -67,16 +89,9 @@
 	unsigned int pll_current;  /* Currently programmed ofreq */
 };
 
-/*  Per-open data for handling multiple opens on one device */
-struct device_open
-{
-	int	     isopen;
-	int	     noncapturing;
-	struct bttv  *dev;
-};
-#define MAX_OPENS 3
+#define I2C_CLIENTS_MAX 8
 
-struct bttv 
+struct bttv
 {
 	struct video_device video_dev;
 	struct video_device radio_dev;
@@ -84,28 +99,26 @@
 	struct video_picture picture;		/* Current picture params */
 	struct video_audio audio_dev;		/* Current audio params */
 
-	struct semaphore lock;
+        struct semaphore lock;
 	int user;
 	int capuser;
-	struct device_open open_data[MAX_OPENS];
-	
-	struct i2c_bus i2c;
-	int have_msp3400;
-	int have_tuner;
+
+	/* i2c */
+	struct i2c_adapter         i2c_adap;
+	struct i2c_algo_bit_data   i2c_algo;
+	struct i2c_client          i2c_client;
+	int                        i2c_state;
+	struct i2c_client         *i2c_clients[I2C_CLIENTS_MAX];
+
         int tuner_type;
         int channel;
         
         unsigned int nr;
 	unsigned short id;
-#if LINUX_VERSION_CODE < 0x020100
-	unsigned char bus;          /* PCI bus the Bt848 is on */
-	unsigned char devfn;
-#else
 	struct pci_dev *dev;
-#endif
-	unsigned int irq;           /* IRQ used by Bt848 card */
+	unsigned int irq;          /* IRQ used by Bt848 card */
 	unsigned char revision;
-	unsigned long bt848_adr;    /* bus address of IO mem returned by PCI BIOS */
+	unsigned long bt848_adr;      /* bus address of IO mem returned by PCI BIOS */
 	unsigned char *bt848_mem;   /* pointer to mapped IO memory */
 	unsigned long busriscmem; 
 	u32 *riscmem;
@@ -114,8 +127,7 @@
 	struct bttv_window win;
 	int type;            /* card type  */
 	int audio;           /* audio mode */
-	int audio_chip;
-	int fader_chip;
+	int audio_chip;      /* set to one of the chips supported by bttv.c */
 	int radio;
 
 	u32 *risc_jmp;
@@ -123,10 +135,10 @@
 	u32 *vbi_even;
 	u32 bus_vbi_even;
 	u32 bus_vbi_odd;
-	wait_queue_head_t vbiq;
-	wait_queue_head_t capq;
-	wait_queue_head_t capqo;
-	wait_queue_head_t capqe;
+        WAIT_QUEUE vbiq;
+	WAIT_QUEUE capq;
+	WAIT_QUEUE capqo;
+	WAIT_QUEUE capqe;
 	int vbip;
 
 	u32 *risc_odd;
@@ -170,6 +182,17 @@
 /*The following should be done in more portable way. It depends on define
   of _ALPHA_BTTV in the Makefile.*/
 
+#if defined(__powerpc__) /* big-endian */
+extern __inline__ void io_st_le32(volatile unsigned *addr, unsigned val)
+{
+        __asm__ __volatile__ ("stwbrx %1,0,%2" : \
+                            "=m" (*addr) : "r" (val), "r" (addr));
+      __asm__ __volatile__ ("eieio" : : : "memory");
+}
+
+#define btwrite(dat,adr)  io_st_le32((unsigned *)(btv->bt848_mem+(adr)),(dat))
+#define btread(adr)       ld_le32((unsigned *)(btv->bt848_mem+(adr)))
+#else
 #ifdef _ALPHA_BTTV
 #define btwrite(dat,adr)    writel((dat),(char *) (btv->bt848_adr+(adr)))
 #define btread(adr)         readl(btv->bt848_adr+(adr))
@@ -177,6 +200,7 @@
 #define btwrite(dat,adr)    writel((dat), (char *) (btv->bt848_mem+(adr)))
 #define btread(adr)         readl(btv->bt848_mem+(adr))
 #endif
+#endif
 
 #define btand(dat,adr)      btwrite((dat) & btread(adr), adr)
 #define btor(dat,adr)       btwrite((dat) | btread(adr), adr)
@@ -192,7 +216,7 @@
 #define BTTV_BURST_OFF     	_IOR('v' , BASE_VIDIOCPRIVATE+5, int)
 #define BTTV_VERSION  	        _IOR('v' , BASE_VIDIOCPRIVATE+6, int)
 #define BTTV_PICNR		_IOR('v' , BASE_VIDIOCPRIVATE+7, int)
-
+#define BTTV_VBISIZE            _IOR('v' , BASE_VIDIOCPRIVATE+8, int)
 
 #define BTTV_UNKNOWN       0x00
 #define BTTV_MIRO          0x01
@@ -220,6 +244,37 @@
 #define BTTV_MODTEC_205    0x17
 #define BTTV_MAGICTVIEW061 0x18
 
+#define BTTV_MAXI          0x1b
+#define BTTV_TERRATV       0x1c
+#define BTTV_PXC200        0x1d
+
+#if 0
+#define BTTV_UNKNOWN       0x00
+#define BTTV_MIRO          0x01
+#define BTTV_HAUPPAUGE     0x02
+#define BTTV_STB           0x03
+#define BTTV_INTEL         0x04
+#define BTTV_DIAMOND       0x05 
+#define BTTV_AVERMEDIA     0x06 
+#define BTTV_MATRIX_VISION 0x07 
+#define BTTV_FLYVIDEO      0x08
+#define BTTV_TURBOTV       0x09
+#define BTTV_HAUPPAUGE878  0x0a
+#define BTTV_MIROPRO       0x0b
+#define BTTV_TVBOOSTAR     0x0c
+#define BTTV_WINCAM        0x0d
+#define BTTV_MAXI          0x0e
+#define BTTV_VHX           0x10
+#define BTTV_PXC200        0x11
+#define BTTV_AVERMEDIA98   0x12
+#define BTTV_FLYVIDEO98    0x13
+
+#define BTTV_PIXVIEWPLAYTV 0x17
+#define BTTV_WINVIEW_601   0x18
+#define BTTV_CONFERENCETV  0x1c
+#endif
+
+
 #define AUDIO_TUNER        0x00
 #define AUDIO_RADIO        0x01
 #define AUDIO_EXTERN       0x02
@@ -230,25 +285,25 @@
 #define AUDIO_UNMUTE       0x81
 
 #define TDA9850            0x01
-#define TDA8425            0x02
-#define TDA9840            0x03
+#define TDA9840            0x02
+#define TDA8425            0x03
 #define TEA6300            0x04
-#define TEA6320            0x05
 
 #define I2C_TSA5522        0xc2
-#define I2C_TDA9840	   0x84
+#define I2C_TDA9840        0x84
 #define I2C_TDA9850        0xb6
 #define I2C_TDA8425        0x82
 #define I2C_HAUPEE         0xa0
 #define I2C_STBEE          0xae
-#define I2C_VHX 	   0xc0
-#define I2C_TEA6300        0x80 /* same as TEA6320 */
-#define I2C_TEA6320        0x80
-
-#define TDA9840_SW	   0x00
-#define TDA9840_LVADJ	   0x02
-#define TDA9840_STADJ	   0x03
-#define TDA9840_TEST	   0x04
+#define I2C_VHX            0xc0
+#define I2C_MSP3400        0x80
+#define I2C_TEA6300        0x80
+#define I2C_DPL3518	   0x84
+
+#define TDA9840_SW         0x00
+#define TDA9840_LVADJ      0x02
+#define TDA9840_STADJ      0x03
+#define TDA9840_TEST       0x04
 
 #define TDA9850_CON1       0x04
 #define TDA9850_CON2       0x05
@@ -263,29 +318,13 @@
 #define TDA8425_BA         0x02
 #define TDA8425_TR         0x03
 #define TDA8425_S1         0x08
-
+ 
 #define TEA6300_VL         0x00		/* volume control left */
 #define TEA6300_VR         0x01		/* volume control right */
 #define TEA6300_BA         0x02		/* bass control */
 #define TEA6300_TR         0x03		/* treble control */
 #define TEA6300_FA         0x04		/* fader control */
 #define TEA6300_SW         0x05		/* mute and source switch */
-
-
-#define TEA6320_V          0x00
-#define TEA6320_FFR        0x01  /* volume front right */
-#define TEA6320_FFL        0x02  /* volume front left */
-#define TEA6320_FRR        0x03  /* volume rear right */
-#define TEA6320_FRL        0x04  /* volume rear left */
-#define TEA6320_BA         0x05  /* bass */
-#define TEA6320_TR         0x06  /* treble */
-#define TEA6320_S          0x07  /* switch register */
-                                 /* values for those registers: */
-#define TEA6320_S_SA       0x01  /* stereo A input */
-#define TEA6320_S_SB       0x07  /* stereo B -- databook wrong? this works */
-#define TEA6320_S_SC       0x04  /* stereo C */
-#define TEA6320_S_GMU      0x80  /* general mute */
-
 
 #define PT2254_L_CHANEL 0x10
 #define PT2254_R_CHANEL 0x08

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)