diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-02-05 06:47:02 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-02-05 06:47:02 +0000 |
commit | 99a7e12f34b3661a0d1354eef83a0eef4df5e34c (patch) | |
tree | 3560aca9ca86792f9ab7bd87861ea143a1b3c7a3 /drivers/char/bttv.h | |
parent | e73a04659c0b8cdee4dd40e58630e2cf63afb316 (diff) |
Merge with Linux 2.3.38.
Diffstat (limited to 'drivers/char/bttv.h')
-rw-r--r-- | drivers/char/bttv.h | 167 |
1 files changed, 103 insertions, 64 deletions
diff --git a/drivers/char/bttv.h b/drivers/char/bttv.h index f6ad6a97e..b4b0caaa0 100644 --- a/drivers/char/bttv.h +++ b/drivers/char/bttv.h @@ -21,15 +21,34 @@ #ifndef _BTTV_H_ #define _BTTV_H_ -#define BTTV_VERSION_CODE 0x000523 +#define BTTV_VERSION_CODE 0x00070b #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 @@ struct bttv_window int interlace; int color_fmt; ushort depth; + + int use_yuv; + struct video_window2 win2; }; struct bttv_pll_info { @@ -67,16 +89,9 @@ struct bttv_pll_info { 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 bttv 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 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 @@ struct bttv 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 @@ struct bttv /*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 @@ struct bttv #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 @@ struct bttv #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 @@ struct bttv #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 @@ struct bttv #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 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 TDA9840_SW 0x00 +#define TDA9840_LVADJ 0x02 +#define TDA9840_STADJ 0x03 +#define TDA9840_TEST 0x04 #define TDA9850_CON1 0x04 #define TDA9850_CON2 0x05 @@ -263,7 +318,7 @@ struct bttv #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 */ @@ -271,22 +326,6 @@ struct bttv #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 #define PT2254_DBS_IN_2 0x400 |