summaryrefslogtreecommitdiffstats
path: root/drivers/char/bttv.h
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-02-05 06:47:02 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-02-05 06:47:02 +0000
commit99a7e12f34b3661a0d1354eef83a0eef4df5e34c (patch)
tree3560aca9ca86792f9ab7bd87861ea143a1b3c7a3 /drivers/char/bttv.h
parente73a04659c0b8cdee4dd40e58630e2cf63afb316 (diff)
Merge with Linux 2.3.38.
Diffstat (limited to 'drivers/char/bttv.h')
-rw-r--r--drivers/char/bttv.h167
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