1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* |
3 | bt878.h - Bt878 audio module (register offsets) |
4 | |
5 | Copyright (C) 2002 Peter Hettkamp <peter.hettkamp@htp-tel.de> |
6 | |
7 | */ |
8 | |
9 | #ifndef _BT878_H_ |
10 | #define _BT878_H_ |
11 | |
12 | #include <linux/interrupt.h> |
13 | #include <linux/pci.h> |
14 | #include <linux/sched.h> |
15 | #include <linux/spinlock.h> |
16 | #include <linux/mutex.h> |
17 | |
18 | #include "bt848.h" |
19 | #include "bttv.h" |
20 | |
21 | #define BT878_VERSION_CODE 0x000000 |
22 | |
23 | #define BT878_AINT_STAT 0x100 |
24 | #define BT878_ARISCS (0xf<<28) |
25 | #define BT878_ARISC_EN (1<<27) |
26 | #define BT878_ASCERR (1<<19) |
27 | #define BT878_AOCERR (1<<18) |
28 | #define BT878_APABORT (1<<17) |
29 | #define BT878_ARIPERR (1<<16) |
30 | #define BT878_APPERR (1<<15) |
31 | #define BT878_AFDSR (1<<14) |
32 | #define BT878_AFTRGT (1<<13) |
33 | #define BT878_AFBUS (1<<12) |
34 | #define BT878_ARISCI (1<<11) |
35 | #define BT878_AOFLOW (1<<3) |
36 | |
37 | #define BT878_AINT_MASK 0x104 |
38 | |
39 | #define BT878_AGPIO_DMA_CTL 0x10c |
40 | #define BT878_A_GAIN (0xf<<28) |
41 | #define BT878_A_G2X (1<<27) |
42 | #define BT878_A_PWRDN (1<<26) |
43 | #define BT878_A_SEL (3<<24) |
44 | #define BT878_DA_SCE (1<<23) |
45 | #define BT878_DA_LRI (1<<22) |
46 | #define BT878_DA_MLB (1<<21) |
47 | #define BT878_DA_LRD (0x1f<<16) |
48 | #define BT878_DA_DPM (1<<15) |
49 | #define BT878_DA_SBR (1<<14) |
50 | #define BT878_DA_ES2 (1<<13) |
51 | #define BT878_DA_LMT (1<<12) |
52 | #define BT878_DA_SDR (0xf<<8) |
53 | #define BT878_DA_IOM (3<<6) |
54 | #define BT878_DA_APP (1<<5) |
55 | #define BT878_ACAP_EN (1<<4) |
56 | #define BT878_PKTP (3<<2) |
57 | #define BT878_RISC_EN (1<<1) |
58 | #define BT878_FIFO_EN 1 |
59 | |
60 | #define BT878_APACK_LEN 0x110 |
61 | #define BT878_AFP_LEN (0xff<<16) |
62 | #define BT878_ALP_LEN 0xfff |
63 | |
64 | #define BT878_ARISC_START 0x114 |
65 | |
66 | #define BT878_ARISC_PC 0x120 |
67 | |
68 | /* BT878 FUNCTION 0 REGISTERS */ |
69 | #define BT878_GPIO_DMA_CTL 0x10c |
70 | |
71 | /* Interrupt register */ |
72 | #define BT878_INT_STAT 0x100 |
73 | #define BT878_INT_MASK 0x104 |
74 | #define BT878_I2CRACK (1<<25) |
75 | #define BT878_I2CDONE (1<<8) |
76 | |
77 | #define BT878_MAX 4 |
78 | |
79 | #define BT878_RISC_SYNC_MASK (1 << 15) |
80 | |
81 | |
82 | #define BTTV_BOARD_UNKNOWN 0x00 |
83 | #define BTTV_BOARD_PINNACLESAT 0x5e |
84 | #define BTTV_BOARD_NEBULA_DIGITV 0x68 |
85 | #define BTTV_BOARD_PC_HDTV 0x70 |
86 | #define BTTV_BOARD_TWINHAN_DST 0x71 |
87 | #define BTTV_BOARD_AVDVBT_771 0x7b |
88 | #define BTTV_BOARD_AVDVBT_761 0x7c |
89 | #define BTTV_BOARD_DVICO_DVBT_LITE 0x80 |
90 | #define BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE 0x87 |
91 | |
92 | extern int bt878_num; |
93 | |
94 | struct bt878 { |
95 | struct mutex gpio_lock; |
96 | unsigned int nr; |
97 | unsigned int bttv_nr; |
98 | struct i2c_adapter *adapter; |
99 | struct pci_dev *dev; |
100 | unsigned int id; |
101 | unsigned int TS_Size; |
102 | unsigned char revision; |
103 | unsigned int irq; |
104 | unsigned long bt878_adr; |
105 | volatile void __iomem *bt878_mem; /* function 1 */ |
106 | |
107 | volatile u32 finished_block; |
108 | volatile u32 last_block; |
109 | u32 block_count; |
110 | u32 block_bytes; |
111 | u32 line_bytes; |
112 | u32 line_count; |
113 | |
114 | u32 buf_size; |
115 | u8 *buf_cpu; |
116 | dma_addr_t buf_dma; |
117 | |
118 | u32 risc_size; |
119 | __le32 *risc_cpu; |
120 | dma_addr_t risc_dma; |
121 | u32 risc_pos; |
122 | |
123 | struct tasklet_struct tasklet; |
124 | int shutdown; |
125 | }; |
126 | |
127 | extern struct bt878 bt878[BT878_MAX]; |
128 | |
129 | void bt878_start(struct bt878 *bt, u32 controlreg, u32 op_sync_orin, |
130 | u32 irq_err_ignore); |
131 | void bt878_stop(struct bt878 *bt); |
132 | |
133 | #define bmtwrite(dat,adr) writel((dat), (adr)) |
134 | #define bmtread(adr) readl(adr) |
135 | |
136 | #endif |
137 | |