Lines Matching +full:0 +full:xa8000

86 static unsigned int card[BTTV_MAX]   = { [ 0 ... (BTTV_MAX-1) ] = UNSET };
87 static unsigned int pll[BTTV_MAX] = { [ 0 ... (BTTV_MAX-1) ] = UNSET };
88 static unsigned int tuner[BTTV_MAX] = { [ 0 ... (BTTV_MAX-1) ] = UNSET };
89 static unsigned int svhs[BTTV_MAX] = { [ 0 ... (BTTV_MAX-1) ] = UNSET };
90 static unsigned int remote[BTTV_MAX] = { [ 0 ... (BTTV_MAX-1) ] = UNSET };
93 static struct bttv *master[BTTV_MAX] = { [ 0 ... (BTTV_MAX-1) ] = NULL };
97 static unsigned int audiomux[5] = { [ 0 ... 4 ] = UNSET };
120 MODULE_PARM_DESC(pll, "specify installed crystal (0=none, 28=28 MHz, 35=35 MHz, 14=14 MHz)");
125 "\t\t 0 = autodetect (default)\n"
129 MODULE_PARM_DESC(saa6588, "if 1, then load the saa6588 RDS module, default (0) is to use the card d…
130 MODULE_PARM_DESC(no_overlay, "allow override overlay default (0 disables, 1 enables) [some VIA/SIS …
134 #define I2C_ADDR_TDA7432 0x8a
135 #define I2C_ADDR_MSP3400 0x80
136 #define I2C_ADDR_MSP3400_ALT 0x88
147 { 0x13eb0070, BTTV_BOARD_HAUPPAUGE878, "Hauppauge WinTV" },
148 { 0x39000070, BTTV_BOARD_HAUPPAUGE878, "Hauppauge WinTV-D" },
149 { 0x45000070, BTTV_BOARD_HAUPPAUGEPVR, "Hauppauge WinTV/PVR" },
150 { 0xff000070, BTTV_BOARD_OSPREY1x0, "Osprey-100" },
151 { 0xff010070, BTTV_BOARD_OSPREY2x0_SVID,"Osprey-200" },
152 { 0xff020070, BTTV_BOARD_OSPREY500, "Osprey-500" },
153 { 0xff030070, BTTV_BOARD_OSPREY2000, "Osprey-2000" },
154 { 0xff040070, BTTV_BOARD_OSPREY540, "Osprey-540" },
155 { 0xff070070, BTTV_BOARD_OSPREY440, "Osprey-440" },
157 { 0x00011002, BTTV_BOARD_ATI_TVWONDER, "ATI TV Wonder" },
158 { 0x00031002, BTTV_BOARD_ATI_TVWONDERVE,"ATI TV Wonder/VE" },
160 { 0x6606107d, BTTV_BOARD_WINFAST2000, "Leadtek WinFast TV 2000" },
161 { 0x6607107d, BTTV_BOARD_WINFASTVC100, "Leadtek WinFast VC 100" },
162 { 0x6609107d, BTTV_BOARD_WINFAST2000, "Leadtek TV 2000 XP" },
163 { 0x263610b4, BTTV_BOARD_STB2, "STB TV PCI FM, Gateway P/N 6000704" },
164 { 0x264510b4, BTTV_BOARD_STB2, "STB TV PCI FM, Gateway P/N 6000704" },
165 { 0x402010fc, BTTV_BOARD_GVBCTV3PCI, "I-O Data Co. GV-BCTV3/PCI" },
166 { 0x405010fc, BTTV_BOARD_GVBCTV4PCI, "I-O Data Co. GV-BCTV4/PCI" },
167 { 0x407010fc, BTTV_BOARD_GVBCTV5PCI, "I-O Data Co. GV-BCTV5/PCI" },
168 { 0xd01810fc, BTTV_BOARD_GVBCTV5PCI, "I-O Data Co. GV-BCTV5/PCI" },
170 { 0x001211bd, BTTV_BOARD_PINNACLE, "Pinnacle PCTV" },
172 { 0x1200bd11, BTTV_BOARD_PINNACLE, "Pinnacle PCTV [bswap]" },
173 { 0xff00bd11, BTTV_BOARD_PINNACLE, "Pinnacle PCTV [bswap]" },
175 { 0xff1211bd, BTTV_BOARD_PINNACLE, "Pinnacle PCTV" },
177 { 0x3000121a, BTTV_BOARD_VOODOOTV_200, "3Dfx VoodooTV 200" },
178 { 0x263710b4, BTTV_BOARD_VOODOOTV_FM, "3Dfx VoodooTV FM" },
179 { 0x3060121a, BTTV_BOARD_STB2, "3Dfx VoodooTV 100/ STB OEM" },
181 { 0x3000144f, BTTV_BOARD_MAGICTVIEW063, "(Askey Magic/others) TView99 CPH06x" },
182 { 0xa005144f, BTTV_BOARD_MAGICTVIEW063, "CPH06X TView99-Card" },
183 { 0x3002144f, BTTV_BOARD_MAGICTVIEW061, "(Askey Magic/others) TView99 CPH05x" },
184 { 0x3005144f, BTTV_BOARD_MAGICTVIEW061, "(Askey Magic/others) TView99 CPH061/06L (T1/LC)" },
185 { 0x5000144f, BTTV_BOARD_MAGICTVIEW061, "Askey CPH050" },
186 { 0x300014ff, BTTV_BOARD_MAGICTVIEW061, "TView 99 (CPH061)" },
187 { 0x300214ff, BTTV_BOARD_PHOEBE_TVMAS, "Phoebe TV Master (CPH060)" },
189 { 0x00011461, BTTV_BOARD_AVPHONE98, "AVerMedia TVPhone98" },
190 { 0x00021461, BTTV_BOARD_AVERMEDIA98, "AVermedia TVCapture 98" },
191 { 0x00031461, BTTV_BOARD_AVPHONE98, "AVerMedia TVPhone98" },
192 { 0x00041461, BTTV_BOARD_AVERMEDIA98, "AVerMedia TVCapture 98" },
193 { 0x03001461, BTTV_BOARD_AVERMEDIA98, "VDOMATE TV TUNER CARD" },
195 { 0x1117153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue (Philips PAL B/G)" },
196 { 0x1118153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue (Temic PAL B/G)" },
197 { 0x1119153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue (Philips PAL I)" },
198 { 0x111a153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue (Temic PAL I)" },
200 { 0x1123153b, BTTV_BOARD_TERRATVRADIO, "Terratec TV Radio+" },
201 { 0x1127153b, BTTV_BOARD_TERRATV, "Terratec TV+ (V1.05)" },
203 *{ 0x18521852, BTTV_BOARD_TERRATV, "Terratec TV+ (V1.10)" }, */
204 { 0x1134153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue (LR102)" },
205 { 0x1135153b, BTTV_BOARD_TERRATVALUER, "Terratec TValue Radio" }, /* LR102 */
206 { 0x5018153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue" }, /* ?? */
207 { 0xff3b153b, BTTV_BOARD_TERRATVALUER, "Terratec TValue Radio" }, /* ?? */
209 { 0x400015b0, BTTV_BOARD_ZOLTRIX_GENIE, "Zoltrix Genie TV" },
210 { 0x400a15b0, BTTV_BOARD_ZOLTRIX_GENIE, "Zoltrix Genie TV" },
211 { 0x400d15b0, BTTV_BOARD_ZOLTRIX_GENIE, "Zoltrix Genie TV / Radio" },
212 { 0x401015b0, BTTV_BOARD_ZOLTRIX_GENIE, "Zoltrix Genie TV / Radio" },
213 { 0x401615b0, BTTV_BOARD_ZOLTRIX_GENIE, "Zoltrix Genie TV / Radio" },
215 { 0x1430aa00, BTTV_BOARD_PV143, "Provideo PV143A" },
216 { 0x1431aa00, BTTV_BOARD_PV143, "Provideo PV143B" },
217 { 0x1432aa00, BTTV_BOARD_PV143, "Provideo PV143C" },
218 { 0x1433aa00, BTTV_BOARD_PV143, "Provideo PV143D" },
219 { 0x1433aa03, BTTV_BOARD_PV143, "Security Eyes" },
221 { 0x1460aa00, BTTV_BOARD_PV150, "Provideo PV150A-1" },
222 { 0x1461aa01, BTTV_BOARD_PV150, "Provideo PV150A-2" },
223 { 0x1462aa02, BTTV_BOARD_PV150, "Provideo PV150A-3" },
224 { 0x1463aa03, BTTV_BOARD_PV150, "Provideo PV150A-4" },
226 { 0x1464aa04, BTTV_BOARD_PV150, "Provideo PV150B-1" },
227 { 0x1465aa05, BTTV_BOARD_PV150, "Provideo PV150B-2" },
228 { 0x1466aa06, BTTV_BOARD_PV150, "Provideo PV150B-3" },
229 { 0x1467aa07, BTTV_BOARD_PV150, "Provideo PV150B-4" },
231 { 0xa132ff00, BTTV_BOARD_IVC100, "IVC-100" },
232 { 0xa1550000, BTTV_BOARD_IVC200, "IVC-200" },
233 { 0xa1550001, BTTV_BOARD_IVC200, "IVC-200" },
234 { 0xa1550002, BTTV_BOARD_IVC200, "IVC-200" },
235 { 0xa1550003, BTTV_BOARD_IVC200, "IVC-200" },
236 { 0xa1550100, BTTV_BOARD_IVC200, "IVC-200G" },
237 { 0xa1550101, BTTV_BOARD_IVC200, "IVC-200G" },
238 { 0xa1550102, BTTV_BOARD_IVC200, "IVC-200G" },
239 { 0xa1550103, BTTV_BOARD_IVC200, "IVC-200G" },
240 { 0xa1550800, BTTV_BOARD_IVC200, "IVC-200" },
241 { 0xa1550801, BTTV_BOARD_IVC200, "IVC-200" },
242 { 0xa1550802, BTTV_BOARD_IVC200, "IVC-200" },
243 { 0xa1550803, BTTV_BOARD_IVC200, "IVC-200" },
244 { 0xa182ff00, BTTV_BOARD_IVC120, "IVC-120G" },
245 { 0xa182ff01, BTTV_BOARD_IVC120, "IVC-120G" },
246 { 0xa182ff02, BTTV_BOARD_IVC120, "IVC-120G" },
247 { 0xa182ff03, BTTV_BOARD_IVC120, "IVC-120G" },
248 { 0xa182ff04, BTTV_BOARD_IVC120, "IVC-120G" },
249 { 0xa182ff05, BTTV_BOARD_IVC120, "IVC-120G" },
250 { 0xa182ff06, BTTV_BOARD_IVC120, "IVC-120G" },
251 { 0xa182ff07, BTTV_BOARD_IVC120, "IVC-120G" },
252 { 0xa182ff08, BTTV_BOARD_IVC120, "IVC-120G" },
253 { 0xa182ff09, BTTV_BOARD_IVC120, "IVC-120G" },
254 { 0xa182ff0a, BTTV_BOARD_IVC120, "IVC-120G" },
255 { 0xa182ff0b, BTTV_BOARD_IVC120, "IVC-120G" },
256 { 0xa182ff0c, BTTV_BOARD_IVC120, "IVC-120G" },
257 { 0xa182ff0d, BTTV_BOARD_IVC120, "IVC-120G" },
258 { 0xa182ff0e, BTTV_BOARD_IVC120, "IVC-120G" },
259 { 0xa182ff0f, BTTV_BOARD_IVC120, "IVC-120G" },
260 { 0xf0500000, BTTV_BOARD_IVCE8784, "IVCE-8784" },
261 { 0xf0500001, BTTV_BOARD_IVCE8784, "IVCE-8784" },
262 { 0xf0500002, BTTV_BOARD_IVCE8784, "IVCE-8784" },
263 { 0xf0500003, BTTV_BOARD_IVCE8784, "IVCE-8784" },
265 { 0x41424344, BTTV_BOARD_GRANDTEC, "GrandTec Multi Capture" },
266 { 0x01020304, BTTV_BOARD_XGUARD, "Grandtec Grand X-Guard" },
268 { 0x18501851, BTTV_BOARD_CHRONOS_VS2, "FlyVideo 98 (LR50)/ Chronos Video Shuttle II" },
269 { 0xa0501851, BTTV_BOARD_CHRONOS_VS2, "FlyVideo 98 (LR50)/ Chronos Video Shuttle II" },
270 { 0x18511851, BTTV_BOARD_FLYVIDEO98EZ, "FlyVideo 98EZ (LR51)/ CyberMail AV" },
271 { 0x18521852, BTTV_BOARD_TYPHOON_TVIEW, "FlyVideo 98FM (LR50)/ Typhoon TView TV/FM Tuner" },
272 { 0x41a0a051, BTTV_BOARD_FLYVIDEO_98FM, "Lifeview FlyVideo 98 LR50 Rev Q" },
273 { 0x18501f7f, BTTV_BOARD_FLYVIDEO_98, "Lifeview Flyvideo 98" },
275 { 0x010115cb, BTTV_BOARD_GMV1, "AG GMV1" },
276 { 0x010114c7, BTTV_BOARD_MODTEC_205, "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV" },
278 { 0x10b42636, BTTV_BOARD_HAUPPAUGE878, "STB ???" },
279 { 0x217d6606, BTTV_BOARD_WINFAST2000, "Leadtek WinFast TV 2000" },
280 { 0xfff6f6ff, BTTV_BOARD_WINFAST2000, "Leadtek WinFast TV 2000" },
281 { 0x03116000, BTTV_BOARD_SENSORAY311_611, "Sensoray 311" },
282 { 0x06116000, BTTV_BOARD_SENSORAY311_611, "Sensoray 611" },
283 { 0x00790e11, BTTV_BOARD_WINDVR, "Canopus WinDVR PCI" },
284 { 0xa0fca1a0, BTTV_BOARD_ZOLTRIX, "Face to Face Tvmax" },
285 { 0x82b2aa6a, BTTV_BOARD_SIMUS_GVC1100, "SIMUS GVC1100" },
286 { 0x146caa0c, BTTV_BOARD_PV951, "ituner spectra8" },
287 { 0x200a1295, BTTV_BOARD_PXC200, "ImageNation PXC200A" },
289 { 0x40111554, BTTV_BOARD_PV_BT878P_9B, "Prolink Pixelview PV-BT" },
290 { 0x17de0a01, BTTV_BOARD_KWORLD, "Mecer TV/FM/Video Tuner" },
292 { 0x01051805, BTTV_BOARD_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #1" },
293 { 0x01061805, BTTV_BOARD_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #2" },
294 { 0x01071805, BTTV_BOARD_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #3" },
295 { 0x01081805, BTTV_BOARD_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #4" },
297 { 0x15409511, BTTV_BOARD_ACORP_Y878F, "Acorp Y878F" },
299 { 0x53534149, BTTV_BOARD_SSAI_SECURITY, "SSAI Security Video Interface" },
300 { 0x5353414a, BTTV_BOARD_SSAI_ULTRASOUND, "SSAI Ultrasound Video Interface" },
303 * { 0xa0fca04f, BTTV_BOARD_MAGICTVIEW063, "Guillemot Maxi TV Video 3" }, */
306 * { 0x13eb0070, BTTV_BOARD_HAUPPAUGE_IMPACTVCB, "Hauppauge ImpactVCB" }, */
308 { 0x109e036e, BTTV_BOARD_CONCEPTRONIC_CTVFMI2, "Conceptronic CTVFMi v2"},
311 { 0x001c11bd, BTTV_BOARD_PINNACLESAT, "Pinnacle PCTV Sat" },
312 { 0x01010071, BTTV_BOARD_NEBULA_DIGITV, "Nebula Electronics DigiTV" },
313 { 0x20007063, BTTV_BOARD_PC_HDTV, "pcHDTV HD-2000 TV"},
314 { 0x002611bd, BTTV_BOARD_TWINHAN_DST, "Pinnacle PCTV SAT CI" },
315 { 0x00011822, BTTV_BOARD_TWINHAN_DST, "Twinhan VisionPlus DVB" },
316 { 0xfc00270f, BTTV_BOARD_TWINHAN_DST, "ChainTech digitop DST-1000 DVB-S" },
317 { 0x07711461, BTTV_BOARD_AVDVBT_771, "AVermedia AverTV DVB-T 771" },
318 { 0x07611461, BTTV_BOARD_AVDVBT_761, "AverMedia AverTV DVB-T 761" },
319 { 0xdb1018ac, BTTV_BOARD_DVICO_DVBT_LITE, "DViCO FusionHDTV DVB-T Lite" },
320 { 0xdb1118ac, BTTV_BOARD_DVICO_DVBT_LITE, "Ultraview DVB-T Lite" },
321 { 0xd50018ac, BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE, "DViCO FusionHDTV 5 Lite" },
322 { 0x00261822, BTTV_BOARD_TWINHAN_DST, "DNTV Live! Mini "},
323 { 0xd200dbc0, BTTV_BOARD_DVICO_FUSIONHDTV_2, "DViCO FusionHDTV 2" },
324 { 0x763c008a, BTTV_BOARD_GEOVISION_GV600, "GeoVision GV-600" },
325 { 0x18011000, BTTV_BOARD_ENLTV_FM_2, "Encore ENL TV-FM-2" },
326 { 0x763d800a, BTTV_BOARD_GEOVISION_GV800S, "GeoVision GV-800(S) (master)" },
327 { 0x763d800b, BTTV_BOARD_GEOVISION_GV800S_SL, "GeoVision GV-800(S) (slave)" },
328 { 0x763d800c, BTTV_BOARD_GEOVISION_GV800S_SL, "GeoVision GV-800(S) (slave)" },
329 { 0x763d800d, BTTV_BOARD_GEOVISION_GV800S_SL, "GeoVision GV-800(S) (slave)" },
331 { 0x15401830, BTTV_BOARD_PV183, "Provideo PV183-1" },
332 { 0x15401831, BTTV_BOARD_PV183, "Provideo PV183-2" },
333 { 0x15401832, BTTV_BOARD_PV183, "Provideo PV183-3" },
334 { 0x15401833, BTTV_BOARD_PV183, "Provideo PV183-4" },
335 { 0x15401834, BTTV_BOARD_PV183, "Provideo PV183-5" },
336 { 0x15401835, BTTV_BOARD_PV183, "Provideo PV183-6" },
337 { 0x15401836, BTTV_BOARD_PV183, "Provideo PV183-7" },
338 { 0x15401837, BTTV_BOARD_PV183, "Provideo PV183-8" },
339 { 0x3116f200, BTTV_BOARD_TVT_TD3116, "Tongwei Video Technology TD-3116" },
340 { 0x02280279, BTTV_BOARD_APOSONIC_WDVR, "Aposonic W-DVR" },
341 { 0, -1, NULL }
348 /* ---- card 0x00 ---------------------------------- */
353 .muxsel = MUXSEL(2, 3, 1, 0),
364 .gpiomux = { 2, 0, 0, 0 },
376 .gpiomux = { 0, 1, 2, 3 },
388 .gpiomux = { 4, 0, 2, 3 },
397 /* ---- card 0x04 ---------------------------------- */
401 /* .audio_inputs= 0, */
403 .gpiomask = 0,
405 .gpiomux = { 0 },
415 .muxsel = MUXSEL(2, 3, 1, 0),
416 .gpiomux = { 0, 1, 0, 1 },
427 .gpiomask = 0x0f,
428 .gpiomux = { 0x0c, 0x04, 0x08, 0x04 },
429 /* 0x04 for some cards ?? */
440 .gpiomask = 0,
441 .muxsel = MUXSEL(2, 3, 1, 0, 0),
442 .gpiomux = { 0 },
447 /* ---- card 0x08 ---------------------------------- */
453 .gpiomask = 0xc00,
455 .gpiomux = { 0, 0xc00, 0x800, 0x400 },
456 .gpiomute = 0xc00,
478 .gpiomask = 0x0f, /* old: 7 */
479 .muxsel = MUXSEL(2, 0, 1, 1),
480 .gpiomux = { 0, 1, 2, 3 },
491 .gpiomask = 0x3014f,
493 .gpiomux = { 0x20001,0x10001, 0, 0 },
499 /* ---- card 0x0c ---------------------------------- */
533 .gpiomux = { 0, 2, 1, 3 }, /* old: {0, 1, 2, 3, 4} */
546 .gpiomux = { 0, 0, 1, 0 },
552 /* ---- card 0x10 ---------------------------------- */
558 .gpiomask = 0x01fe00,
561 .gpiomux = { 0x001e00, 0, 0x018000, 0x014000 },
562 .gpiomute = 0x002000,
572 .gpiomask = 0x8300f8,
573 .muxsel = MUXSEL(2, 3, 1, 1, 0),
574 .gpiomux = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007 },
575 .gpiomute = 0xcfa007,
586 .gpiomask = 0,
588 .gpiomux = { 1, 0, 0, 0 },
597 .gpiomask = 0x8dff00,
599 .gpiomux = { 0 },
605 /* ---- card 0x14 ---------------------------------- */
620 .gpiomask = 0x1800,
622 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
623 .gpiomute = 0x1800,
633 .gpiomask = 0xc00,
635 .gpiomux = { 0, 1, 0x800, 0x400 },
636 .gpiomute = 0xc00,
648 .muxsel = MUXSEL(2, 3, 0), /* input 2 is digital */
650 .gpiomux = { 0, 0, 0, 0 },
657 /* ---- card 0x18 ---------------------------------- */
663 .gpiomask = 0xe00,
665 .gpiomux = {0x400, 0x400, 0x400, 0x400 },
666 .gpiomute = 0xc00,
678 .gpiomask = 0x1f0fff,
680 .gpiomux = { 0x20000, 0x30000, 0x10000, 0 },
681 .gpiomute = 0x40000,
692 .muxsel = MUXSEL(2, 0, 1, 1),
693 .gpiomux = { 0, 1, 2, 3 },
703 .gpiomask = 0x1800,
705 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
706 .gpiomute = 0x1800,
712 /* ---- card 0x1c ---------------------------------- */
718 .gpiomask = 0x1f0fff,
720 .gpiomux = { 0x20000, 0x30000, 0x10000, 0x00000 },
721 .gpiomute = 0x40000,
763 .gpiomask = 0,
764 .muxsel = MUXSEL(2, 3, 1, 0, 0),
765 .gpiomux = { 0 },
776 .gpiomask = 0x1800, /* 0x8dfe00 */
778 .gpiomux = { 0, 0x0800, 0x1000, 0x1000 },
779 .gpiomute = 0x1800,
791 .gpiomux = { 1, 0, 0, 0 },
797 /* ---- card 0x20 ---------------------------------- */
801 /* .audio_inputs= 0, */
803 .gpiomask = 0,
805 .gpiomux = { 0 },
814 .gpiomask = 0xffff00,
816 .gpiomux = { 0x500, 0, 0x300, 0x900 },
817 .gpiomute = 0x900,
828 .muxsel = MUXSEL(2, 3, 1, 1, 0),
830 .gpiomask = 0xb33000,
831 .gpiomux = { 0x122000,0x1000,0x0000,0x620000 },
832 .gpiomute = 0x800000,
834 gpio23 -- hef4052:nEnable (0x800000)
837 0x0000: external audio
838 0x1000: FM
839 0x2000: TV
840 0x3000: n.c.
856 .gpiomask = 0x1800,
858 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
859 .gpiomute = 0x1800,
865 /* ---- card 0x24 ---------------------------------- */
871 .gpiomask = 0x1800,
873 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
874 .gpiomute = 0x1800,
885 .gpiomask = 0xff,
887 .gpiomux = { 0x21, 0x20, 0x24, 0x2c },
888 .gpiomute = 0x29,
899 .gpiomask = 0x551e00,
900 .muxsel = MUXSEL(2, 3, 1, 0),
901 .gpiomux = { 0x551400, 0x551200, 0, 0 },
902 .gpiomute = 0x551c00,
913 .gpiomask = 0x03000F,
915 .gpiomux = { 2, 0xd0001, 0, 0 },
922 /* ---- card 0x28 ---------------------------------- */
930 .gpiomux = { 4, 0, 2, 3 },
957 .gpiomask = 0,
959 .gpiomux = { 0, 0, 0, 0},
970 .gpiomask = 0xe00b,
972 .gpiomux = { 0xff9ff6, 0xff9ff6, 0xff1ff7, 0 },
973 .gpiomute = 0xff3ffc,
979 /* ---- card 0x2c ---------------------------------- */
987 .gpiomux = { 1, 1, 0, 2 },
999 .gpiomask = 0,
1000 .muxsel = MUXSEL(2, 3, 1, 0, 0),
1001 .gpiomux = { 0 },
1012 .gpiomask = 0xbcf03f,
1014 .gpiomux = { 0xbc803f, 0xbc903f, 0xbcb03f, 0 },
1015 .gpiomute = 0xbcb03f,
1026 .gpiomask = 0x70000,
1028 .gpiomux = { 0x20000, 0x30000, 0x10000, 0 },
1029 .gpiomute = 0x40000,
1037 /* ---- card 0x30 ---------------------------------- */
1045 .gpiomux = {2,0,0,0 },
1056 .gpiomask = 0x010f00,
1057 .muxsel = MUXSEL(2, 3, 0, 0),
1058 .gpiomux = {0x10000, 0, 0x10000, 0 },
1071 .gpiomask = 0xAA0000,
1072 .muxsel = MUXSEL(2, 3, 1, 1, 0), /* in 4 is digital */
1074 .gpiomux = { 0x20000, 0, 0x80000, 0x80000 },
1075 .gpiomute = 0xa8000,
1088 Note: At i2c=0x8a is a Bt832 chip, which changes to 0x88 after being reset via GPIO22
1097 .muxsel = MUXSEL(2, 0, 1, 1),
1098 .gpiomux = { 0, 1, 2, 3 },
1105 /* ---- card 0x34 ---------------------------------- */
1112 .gpiomask = 0x03000F,
1114 .gpiomux = { 1, 0xd0001, 0, 0 },
1117 MUX1 (mask 0x03), Enable Pin 0x08 (0=enable, 1=disable)
1118 0= ext. Audio IN
1122 MUX2 (mask 0x30000):
1123 0,2,3= from MSP34xx
1136 .gpiomask = 0x1c,
1138 .gpiomux = { 0, 0, 0x10, 8 },
1148 options bttv card=0 pll=1 radio=1 gpiomask=0x18e0
1149 gpiomux =0x44c71f,0x44d71f,0,0x44d71f,0x44dfff
1155 .gpiomask = 0x18e0,
1157 .gpiomux = { 0x0000,0x0800,0x1000,0x1000 },
1158 .gpiomute = 0x18e0,
1160 0x0000: Tuner normal stereo
1161 0x0080: Tuner A2 SAP (second audio program = Zweikanalton)
1162 0x0880: Tuner A2 stereo */
1174 .gpiomask = 0xF,
1175 .muxsel = MUXSEL(2, 3, 1, 0),
1176 .gpiomux = { 2, 0, 0, 0 },
1183 /* ---- card 0x38 ---------------------------------- */
1190 .gpiomask = 0x1800,
1192 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
1193 .gpiomute = 0x1800,
1204 /* .audio_inputs= 0, */
1206 .gpiomask = 0,
1208 .gpiomux = { 0 },
1220 .gpiomask = 0xe00,
1222 .gpiomux = { 0x400, 0x400, 0x400, 0x400 },
1223 .gpiomute = 0x800,
1234 .gpiomask = 0x03000F,
1235 .muxsel = MUXSEL(2, 3, 1, 0),
1236 .gpiomux = { 2, 0, 0, 0 },
1244 /* ---- card 0x3c ---------------------------------- */
1253 .gpiomux = { 2, 0, 0, 1 },
1263 /* .audio_inputs= 0, */
1265 .gpiomask = 0xF,
1281 .gpiomask = 0xFF,
1282 .muxsel = MUXSEL(2, 3, 1, 0),
1283 .gpiomux = { 1, 0, 4, 4 },
1295 .gpiomask = 0xf03f,
1296 .muxsel = MUXSEL(2, 3, 1, 0),
1297 .gpiomux = { 0xbffe, 0, 0xbfff, 0 },
1298 .gpiomute = 0xbffe,
1304 /* ---- card 0x40 ---------------------------------- */
1312 .muxsel = MUXSEL(2, 3, 0, 1),
1313 .gpiomux = { 0, 0, 1, 0 },
1325 .gpiomask = 0x18e0,
1326 .muxsel = MUXSEL(2, 3, 0, 1),
1327 /* Radio changed from 1e80 to 0x800 to make
1329 /* -dk-???: set mute=0x1800 for tda9874h daughterboard */
1330 .gpiomux = { 0x0000,0x0800,0x1000,0x1000 },
1331 .gpiomute = 0x1800,
1343 .gpiomask = 0xffff00,
1345 .gpiomux = { 0x500, 0x500, 0x300, 0x900 },
1346 .gpiomute = 0x900,
1358 .gpiomask = 0x010f00,
1359 .muxsel = MUXSEL(2, 3, 0, 0),
1360 .gpiomux = {0x10000, 0, 0x10000, 0 },
1368 /* ---- card 0x44 ---------------------------------- */
1371 /* try "insmod msp3400 simple=0" if you have
1376 .gpiomask = 0x4f8a00,
1377 /* 0x100000: 1=MSP enabled (0=disable again)
1378 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
1379 .gpiomux = {0x947fff, 0x987fff,0x947fff,0x947fff },
1380 .gpiomute = 0x947fff,
1383 .muxsel = MUXSEL(2, 3, 0, 1),
1391 /* try "insmod msp3400 simple=0" if you have
1396 .gpiomask = 0x4f8a00,
1397 /* 0x100000: 1=MSP enabled (0=disable again)
1398 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
1399 .gpiomux = {0x947fff, 0x987fff,0x947fff,0x947fff },
1400 .gpiomute = 0x947fff,
1403 .muxsel = MUXSEL(2, 3, 0, 1),
1413 /* .audio_inputs= 0, */
1418 .gpiomask = 0
1428 .gpiomux = { 0, 0, 11, 7 }, /* TV and Radio with same GPIO ! */
1445 /* .audio_inputs= 0, */
1455 /* ---- card 0x48 ---------------------------------- */
1462 .gpiomask = 0x3f,
1464 .gpiomux = { 0x01, 0x00, 0x03, 0x03 },
1465 .gpiomute = 0x09,
1486 /* .audio_inputs= 0, */
1488 .gpiomask = 0,
1489 .muxsel = MUXSEL(2, 3, 1, 0, 0),
1490 .gpiomux = { 0 },
1498 /* .audio_inputs= 0, */
1500 .gpiomask = 0x00,
1501 .gpiomask2 = 0x07ff,
1513 ….gpiomask = 0x1C800F, /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remot…
1515 .gpiomux = { 0, 1, 2, 2 },
1523 /* ---- card 0x4c ---------------------------------- */
1530 .gpiomask = 0x140007,
1532 .gpiomux = { 0, 1, 2, 3 },
1541 /* .audio_inputs= 0, */
1543 .gpiomask = 0,
1544 .muxsel = MUXSEL(2, 3, 1, 0),
1545 .gpiomux = { 0 },
1559 ….gpiomux = { 0, 0, 4, 4 },/* Yes, this tuner uses the same audio output for TV and FM radio!
1564 * btwincap uses 0x80000/0x80003
1589 .muxsel = MUXSEL(2, 3, 1, 0),
1595 /* ---- card 0x50 ---------------------------------- */
1601 .muxsel = MUXSEL(2, 0, 1, 1),
1614 .gpiomask = 0x0f0f80,
1615 .muxsel = MUXSEL(2, 3, 1, 0),
1616 .gpiomux = {0x030000, 0x010000, 0, 0 },
1617 .gpiomute = 0x020000,
1626 .name = "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */
1628 /* .audio_inputs= 0, */
1630 .muxsel = MUXSEL(3, 2, 0, 1),
1638 .name = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */
1640 /* .audio_inputs= 0, */
1650 /* ---- card 0x54 ---------------------------------- */
1652 .name = "Osprey 101 (848)", /* 0x05-40C0-C1 */
1654 /* .audio_inputs= 0, */
1664 .name = "Osprey 101/151", /* 0x1(4|5)-0004-C4 */
1666 /* .audio_inputs= 0, */
1668 .muxsel = MUXSEL(0),
1676 .name = "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */
1678 /* .audio_inputs= 0, */
1680 .muxsel = MUXSEL(0, 1),
1688 .name = "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */
1692 .muxsel = MUXSEL(0),
1700 /* ---- card 0x58 ---------------------------------- */
1702 .name = "Osprey 200/250", /* 0x1(A|B)-00C4-C1 */
1706 .muxsel = MUXSEL(0, 1),
1714 .name = "Osprey 210/220/230", /* 0x1(A|B)-04C0-C1 */
1748 /* ---- card 0x5C ---------------------------------- */
1765 /* .audio_inputs= 0, */
1769 .gpiomask = 0,
1778 /* .audio_inputs= 0, */
1797 .gpiomux = { 2, 2, 0, 0 },
1803 GPIO=0x00,0x01,0x03: mute (?)
1804 0x02: both TV and radio (tuner: FM1216/I)
1811 /* ---- card 0x60 ---------------------------------- */
1819 .gpiomux = { 0, 1, 2, 3},
1828 /* .audio_inputs= 0, */
1830 .gpiomask = 0,
1833 .muxsel = MUXSEL(2, 0, 1),
1840 .name = "ProVideo PV150", /* 0x4f */
1842 /* .audio_inputs= 0, */
1844 .gpiomask = 0,
1846 .gpiomux = { 0 },
1855 .name = "AD-TVK503", /* 0x63 */
1859 .gpiomask = 0x001e8007,
1860 .muxsel = MUXSEL(2, 3, 1, 0),
1862 .gpiomux = { 0x08, 0x0f, 0x0a, 0x08 },
1863 .gpiomute = 0x0f,
1871 /* ---- card 0x64 ---------------------------------- */
1877 .gpiomask = 0x00,
1885 - stereo variant w/ daughter board with tda9874a @0xb0
1889 - Other chips: em78p156elp @ 0x96 (probably IR remote control)
1900 .gpiomask = 0,
1917 /* .audio_inputs= 0, */
1921 .gpiomask = 0xdf,
1928 /* .audio_inputs= 0, */
1932 .gpiomask = 0xdf,
1939 /* .audio_inputs= 0, */
1943 .gpiomask2 = 0xff,
1944 .muxsel = MUXSEL(2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0),
1951 /* ---- card 0x68 ---------------------------------- */
1956 .muxsel = MUXSEL(2, 3, 1, 0),
1964 .gpiomask = 0x1b,
1971 /* .audio_inputs= 0, */
1973 .gpiomask = 0,
1974 .muxsel = MUXSEL(2, 3, 1, 0),
1975 .gpiomux = { 0 },
1985 /* .audio_inputs= 0, */
1987 .gpiomask = 0x00,
1988 .muxsel = MUXSEL(2, 3, 1, 0),
1989 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
1997 /* .audio_inputs= 0, */
1999 .gpiomask = 0x00,
2001 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2007 /* ---- card 0x6c ---------------------------------- */
2011 /* .audio_inputs= 0, */
2013 .gpiomask = 0x00,
2014 .gpiomask2 = 0x03, /* used for external video mux */
2015 .muxsel = MUXSEL(2, 2, 2, 2, 3, 3, 3, 3, 1, 0),
2017 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2025 /* .audio_inputs= 0, */
2027 .gpiomask = 0x00,
2028 .gpiomask2 = 0x03, /* used for external video mux */
2031 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2039 /* .audio_inputs= 0, */
2043 .gpiomask = 0xdf,
2044 .muxsel = MUXSEL(2, 3, 1, 0),
2051 /* .audio_inputs= 0, */
2057 .gpiomask = 0x00,
2058 .muxsel = MUXSEL(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
2063 /* ---- card 0x70 ---------------------------------- */
2069 .muxsel = MUXSEL(2, 3, 1, 0),
2086 /* .audio_inputs= 0, */
2109 /* ---- card 0x74 ---------------------------------- */
2113 /* .audio_inputs= 0, */
2119 .gpiomask = 0x3F,
2123 /* Carlos Silva r3pek@r3pek.homelinux.org || card 0x75 */
2127 .gpiomask = 0x008007,
2128 .muxsel = MUXSEL(2, 3, 0, 0),
2129 .gpiomux = { 0, 0, 0, 0 },
2130 .gpiomute = 0x000003,
2140 /* .audio_inputs= 0, */
2142 .muxsel = MUXSEL(2, 3, 1, 0),
2156 .gpiomask = 0x68,
2158 .gpiomux = { 0x68, 0x68, 0x61, 0x61 },
2162 /* ---- card 0x78 ---------------------------------- */
2170 .gpiomask = 0x008007,
2172 .gpiomux = { 0, 1, 2, 2 },
2184 /*structure and #define BTTV_BOARD_PICOLO_TETRA_CHIP 0x79 in bttv.h*/
2187 /* .audio_inputs= 0, */
2189 .gpiomask = 0,
2190 ….gpiomask2 = 0x3C<<16,/*Set the GPIO[18]->GPIO[21] as output pin.==> drive the video inputs t…
2195 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2208 .gpiomask = 0x0000000f,
2210 .gpiomux = { 0x02, 0x00, 0x00, 0x00 },
2230 /* ---- card 0x7c ---------------------------------- */
2237 .muxsel = MUXSEL(3, 1, 2, 0), /* Comp0, S-Video, ?, ? */
2251 /* .audio_inputs= 0, */
2253 .gpiomask = 0x0,
2256 .gpiomux = { 0 },
2266 /* .audio_inputs= 0, */
2268 .gpiomask = 0x0,
2271 .gpiomux = { 0 },
2280 /* bt878 TV + FM 0x00000000 subsystem ID */
2285 .gpiomask = 0xFF,
2287 .gpiomux = { 2, 0, 0, 0 },
2296 /* ---- card 0x80 ---------------------------------- */
2314 .gpiomask = 0x3f,
2315 .muxsel = MUXSEL(2, 3, 1, 0),
2316 .gpiomux = {0x31, 0x31, 0x31, 0x31 },
2317 .gpiomute = 0x31,
2322 .has_radio = 0,
2330 .muxsel = MUXSEL(2, 3, 1, 0),
2333 .gpiomask = 0x008007,
2334 .gpiomux = { 0, 0x000001,0,0 },
2341 /* .audio_inputs= 0, */
2357 * other 3 chips should use card type 0x85, whose description
2365 /* .audio_inputs= 0, */
2369 /* GPIO bits 0-9 used for analog switch:
2372 * 07: data (1->on, 0->off)
2377 .gpiomask = 0x0003ff,
2394 /* .audio_inputs= 0, */
2398 .gpiomask = 0x010000,
2406 /* ---- card 0x86---------------------------------- */
2414 .muxsel = MUXSEL(2, 3, 1, 0),
2419 /* ---- card 0x87---------------------------------- */
2429 .gpiomask = 0x00e00007,
2430 .gpiomux = { 0x00400005, 0, 0x00000001, 0 },
2431 .gpiomute = 0x00c00007,
2436 /* ---- card 0x88---------------------------------- */
2443 .gpiomask = 0x01fe00,
2445 .gpiomux = { 0x001e00, 0, 0x018000, 0x014000 },
2446 .gpiomute = 0x002000,
2449 .tuner_addr = 0xc1 >>1,
2452 /* ---- card 0x89 ---------------------------------- */
2458 .gpiomask = 0x001c0007,
2460 .gpiomux = { 0, 1, 2, 2 },
2468 /* ---- card 0x8a ---------------------------------- */
2475 .gpiomask = 0x01fe00,
2476 .muxsel = MUXSEL(2, 3, 1, 1, 0), /* in 4 is digital */
2478 .gpiomux = { 0x00400, 0x10400, 0x04400, 0x80000 },
2479 .gpiomute = 0x12400,
2486 /* ---- card 0x8b ---------------------------------- */
2493 .gpiomask = 0x3f,
2495 .gpiomux = { 0x21, 0x20, 0x24, 0x2c },
2496 .gpiomute = 0x29,
2504 /* ---- card 0x8c ---------------------------------- */
2512 (mask=0x300, unbal=0x000, bal=0x100, ??=0x200,0x300)
2513 gain is controlled via an X9221A chip on the I2C bus @0x28
2515 (mask=0x3, 32kHz=0x0, 44.1kHz=0x1, 48kHz=0x2, ??=0x3)
2522 .muxsel = MUXSEL(2, 3, 0, 1), /* 3,0,1 are guesses */
2523 .gpiomask = 0x303,
2524 .gpiomute = 0x000, /* int + 32kHz */
2525 .gpiomux = { 0, 0, 0x000, 0x100},
2532 /* ---- card 0x8d ---------------------------------- */
2540 .gpiomux = { 2, 0, 0, 0 },
2546 /* ---- card 0x8e ---------------------------------- */
2552 .gpiomask = 0x108007,
2562 /* ---- card 0x8f ---------------------------------- */
2566 /* .audio_inputs= 0, */
2568 .gpiomask = 0x0f, /* old: 7 */
2569 .muxsel = MUXSEL(0, 1, 3, 2), /* Composite 0-3 */
2577 * Slightly different from original MachTV definition (0x60)
2579 * FIXME: RegSpy says gpiomask should be "0x001c800f", but it
2589 .gpiomux = { 0, 1, 2, 3 },
2600 /* .audio_inputs= 0, */
2602 .muxsel = MUXSEL(0, 1, 2, 3),
2609 /* .audio_inputs= 0, */
2611 .muxsel = MUXSEL(2, 0, 1, 3),
2615 /* ---- card 0x94---------------------------------- */
2624 .gpiomask = 0x00e00007,
2625 .gpiomux = { 0x00400005, 0, 0x00000001, 0 },
2626 .gpiomute = 0x00c00007,
2630 /* ---- card 0x95---------------------------------- */
2636 .gpiomask = 0x3014f,
2638 .gpiomux = { 0x20001,0x10001, 0, 0 },
2648 /* .audio_inputs= 0, */
2650 .gpiomask = 0x0,
2653 .gpiomux = { 0 },
2667 .gpiomask = 0x008007,
2669 .gpiomux = { 0, 1, 2, 2 }, /* CONTVFMi */
2690 .gpiomask = 0x060040,
2692 .gpiomux = { 0x60000, 0x60000, 0x20000, 0x20000 },
2693 .gpiomute = 0,
2704 /* .audio_inputs= 0, */
2706 .gpiomask = 0x00,
2707 .muxsel = MUXSEL(0, 2, 3, 1),
2708 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2717 /* .audio_inputs= 0, */
2719 .gpiomask = 0x00,
2721 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2730 /* .audio_inputs= 0, */
2732 .gpiomask = 0x00,
2734 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2748 * slaves should use card type 0x9e (following this one).
2758 .gpiomask = 0xf107f,
2782 .gpiomask = 0x00,
2791 .name = "ProVideo PV183", /* 0x9f */
2793 /* .audio_inputs= 0, */
2795 .gpiomask = 0,
2797 .gpiomux = { 0 },
2803 /* ---- card 0xa0---------------------------------- */
2807 .gpiomask = 0xc00ff,
2818 .muxsel = MUXSEL(2, 3, 1, 0),
2836 .muxsel = MUXSEL(2, 3, 1, 0),
2843 /* .audio_inputs= 0, */
2845 .muxsel = MUXSEL(2, 3, 1, 0),
2856 .gpiomask = 0x001c0007,
2858 .gpiomux = { 0, 1, 2, 2 },
2866 /* ---- card 0xa6---------------------------------- */
2871 /* .audio_inputs= 0, */
2902 if (0 != btv->cardid && 0xffffffff != btv->cardid) { in bttv_idcard()
2904 for (type = -1, i = 0; cards[i].id != 0; i++) in bttv_idcard()
2912 btv->cardid & 0xffff, in bttv_idcard()
2913 (btv->cardid >> 16) & 0xffff); in bttv_idcard()
2918 btv->c.nr, btv->cardid & 0xffff, in bttv_idcard()
2919 (btv->cardid >> 16) & 0xffff); in bttv_idcard()
2935 if (UNSET == audioall && UNSET == audiomux[0]) in bttv_idcard()
2938 if (UNSET != audiomux[0]) { in bttv_idcard()
2939 gpiobits = 0; in bttv_idcard()
2940 for (i = 0; i < ARRAY_SIZE(bttv_tvcards->gpiomux); i++) { in bttv_idcard()
2946 for (i = 0; i < ARRAY_SIZE(bttv_tvcards->gpiomux); i++) { in bttv_idcard()
2951 pr_info("%d: gpio config override: mask=0x%x, mux=", in bttv_idcard()
2953 for (i = 0; i < ARRAY_SIZE(bttv_tvcards->gpiomux); i++) { in bttv_idcard()
2969 if (0 == strncmp(eeprom_data,"GET MM20xPCTV",13)) in identify_by_eeprom()
2971 else if (0 == strncmp(eeprom_data+20,"Picolo",7)) in identify_by_eeprom()
2973 else if (eeprom_data[0] == 0x84 && eeprom_data[2]== 0) in identify_by_eeprom()
2989 gpio_inout(0xffffff, 0); in flyvideo_gpio()
2990 udelay(8); /* without this we would see the 0x1800 mask */ in flyvideo_gpio()
3005 ttype = (gpio & 0x0f0000) >> 16; in flyvideo_gpio()
3007 case 0x0: in flyvideo_gpio()
3010 case 0x2: in flyvideo_gpio()
3013 case 0x4: in flyvideo_gpio()
3016 case 0x6: in flyvideo_gpio()
3019 case 0xC: in flyvideo_gpio()
3027 has_remote = gpio & 0x800000; in flyvideo_gpio()
3028 has_radio = gpio & 0x400000; in flyvideo_gpio()
3029 /* unknown 0x200000; in flyvideo_gpio()
3030 * unknown2 0x100000; */ in flyvideo_gpio()
3031 is_capture_only = !(gpio & 0x008000); /* GPIO15 */ in flyvideo_gpio()
3032 has_tda9820_tda9821 = !(gpio & 0x004000); in flyvideo_gpio()
3033 is_lr90 = !(gpio & 0x002000); /* else LR26/LR50 (LR38/LR51 f. capture only) */ in flyvideo_gpio()
3035 * gpio & 0x001000 output bit for audio routing */ in flyvideo_gpio()
3040 pr_info("%d: FlyVideo Radio=%s RemoteControl=%s Tuner=%d gpio=0x%06x\n", in flyvideo_gpio()
3052 /* LR90 Audio Routing is done by 2 hef4052, so Audio_Mask has 4 bits: 0x001c80 in flyvideo_gpio()
3053 * LR26/LR50 only has 1 hef4052, Audio_Mask 0x000c00 in flyvideo_gpio()
3060 static int miro_tunermap[] = { 0,6,2,3, 4,5,6,0, 3,0,4,5, 5,2,16,1,
3062 static int miro_fmtuner[] = { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1,
3063 1,1,1,1, 1,1,1,0, 0,0,0,0, 0,1,0,0 };
3070 gpio_inout(0xffffff, 0); in miro_pinnacle_gpio()
3076 if (0 == (gpio & 0x20)) { in miro_pinnacle_gpio()
3087 btv->has_radio = 0; in miro_pinnacle_gpio()
3103 btv->has_radio = 0; in miro_pinnacle_gpio()
3148 #define LM1882_SYNC_DRIVE 0x200000L
3152 gpio_inout(0xffffff,0xFFFF37); in init_ids_eagle()
3153 gpio_write(0x200020); in init_ids_eagle()
3156 gpio_write(0x200024); in init_ids_eagle()
3185 static const int masks[] = {0x30, 0x01, 0x12, 0x23}; in gvc1100_muxsel()
3192 GPIObit | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
3198 OUT ENABLE 1 1 0 . 1 1 0 0 . 0 0 0 0 = 0x6C0
3205 btwrite(0x000000, BT848_GPIO_REG_INP); in init_lmlbt4x()
3206 gpio_inout(0xffffff, 0x0006C0); in init_lmlbt4x()
3207 gpio_write(0x000000); in init_lmlbt4x()
3213 gpio_inout( 0xf, 0xf ); in sigmaSQ_muxsel()
3214 gpio_bits( 0xf, inmux ); in sigmaSQ_muxsel()
3227 gpio_inout(0xf, 0xf); in geovision_muxsel()
3228 gpio_bits(0xf, inmux); in geovision_muxsel()
3235 * GPIOs 0-7. GPIO 18 is connected to the LE signal of the latch.
3243 gpio_bits((1<<18) | 0xff, value); in td3116_latch_value()
3244 gpio_bits((1<<18) | 0xff, (1<<18) | value); in td3116_latch_value()
3246 gpio_bits((1<<18) | 0xff, value); in td3116_latch_value()
3254 highbit = (input & 0x8) >> 3 ; in td3116_muxsel()
3257 value = 0x11; /* Disable outputs */ in td3116_muxsel()
3258 value |= ((input & 0x7) << 1) << (4 * highbit); in td3116_muxsel()
3262 value &= ~0x11; in td3116_muxsel()
3263 value |= ((highbit ^ 0x1) << 4) | highbit; in td3116_muxsel()
3274 * function-0 (video capture) address space. in bttv_reset_audio()
3277 * 0x5B, but at 0x058. (B is an odd-number, obviously a typo!). in bttv_reset_audio()
3285 btwrite((1<<7), 0x058); in bttv_reset_audio()
3287 btwrite( 0, 0x058); in bttv_reset_audio()
3331 bttv_readee(btv,eeprom_data,0xa0); in bttv_init_card2()
3360 bttv_readee(btv,eeprom_data,0xa0); in bttv_init_card2()
3365 bttv_readee(btv,eeprom_data,0xa0); in bttv_init_card2()
3388 if (btv->cardid == 0x3002144f) { in bttv_init_card2()
3395 if (btv->cardid == 0x3060121a) { in bttv_init_card2()
3398 btv->has_radio=0; in bttv_init_card2()
3414 bttv_readee(btv,eeprom_data,0xa0); in bttv_init_card2()
3421 bttv_readee(btv,eeprom_data,0xa0); in bttv_init_card2()
3439 if (!(btv->id==848 && btv->revision==0x11)) { in bttv_init_card2()
3455 case 0: /* none */ in bttv_init_card2()
3456 btv->pll.pll_crystal = 0; in bttv_init_card2()
3457 btv->pll.pll_ifreq = 0; in bttv_init_card2()
3458 btv->pll.pll_ofreq = 0; in bttv_init_card2()
3463 btv->pll.pll_ofreq = 0; in bttv_init_card2()
3469 btv->pll.pll_ofreq = 0; in bttv_init_card2()
3475 btv->pll.pll_ofreq = 0; in bttv_init_card2()
3531 0x20 >> 1, in bttv_init_card2()
3532 0x22 >> 1, in bttv_init_card2()
3538 &btv->c.i2c_adap, "saa6588", 0, addrs); in bttv_init_card2()
3551 case 0: /* autodetect */ in bttv_init_card2()
3563 &btv->c.i2c_adap, "msp3400", 0, addrs); in bttv_init_card2()
3577 &btv->c.i2c_adap, "tda7432", 0, addrs)) in bttv_init_card2()
3585 &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs()); in bttv_init_card2()
3605 0, I2C_ADDRS(I2C_ADDR_MSP3400 >> 1)); in bttv_init_card2()
3609 0, I2C_ADDRS(I2C_ADDR_MSP3400_ALT >> 1)); in bttv_init_card2()
3618 &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs()); in bttv_init_card2()
3623 &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs()); in bttv_init_card2()
3634 &btv->c.i2c_adap, "tda7432", 0, addrs); in bttv_init_card2()
3661 0, v4l2_i2c_tuner_addrs(ADDRS_RADIO)); in bttv_init_tuner()
3664 0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD)); in bttv_init_tuner()
3667 0, v4l2_i2c_tuner_addrs(ADDRS_TV_WITH_DEMOD)); in bttv_init_tuner()
3693 if( strncmp(&(eeprom_data[0x1e]),"Temic 4066 FY5",14) ==0) { in modtec_eeprom()
3696 btv->c.nr, &eeprom_data[0x1e]); in modtec_eeprom()
3697 } else if (strncmp(&(eeprom_data[0x1e]),"Alps TSBB5",10) ==0) { in modtec_eeprom()
3700 btv->c.nr, &eeprom_data[0x1e]); in modtec_eeprom()
3701 } else if (strncmp(&(eeprom_data[0x1e]),"Philips FM1246",14) ==0) { in modtec_eeprom()
3704 btv->c.nr, &eeprom_data[0x1e]); in modtec_eeprom()
3707 btv->c.nr, &eeprom_data[0x1e]); in modtec_eeprom()
3745 u16 val = 0; in bttv_tea575x_set_pins()
3747 val |= (pins & TEA575X_DATA) ? (1 << gpio.data) : 0; in bttv_tea575x_set_pins()
3748 val |= (pins & TEA575X_CLK) ? (1 << gpio.clk) : 0; in bttv_tea575x_set_pins()
3749 val |= (pins & TEA575X_WREN) ? (1 << gpio.wren) : 0; in bttv_tea575x_set_pins()
3754 gpio_bits(btv->mbox_iow | btv->mbox_csel, 0); in bttv_tea575x_set_pins()
3766 u8 ret = 0; in bttv_tea575x_get_pins()
3771 gpio_bits(btv->mbox_ior | btv->mbox_csel, 0); in bttv_tea575x_get_pins()
3816 return 0; in tea575x_init()
3819 btv->has_tea575x = 0; in tea575x_init()
3820 btv->has_radio = 0; in tea575x_init()
3845 return 0; in terratec_active_radio_upgrade()
3860 #define BTTV_ALT_DATA 0x000001
3861 #define BTTV_ALT_DCLK 0x100000
3862 #define BTTV_ALT_NCONFIG 0x800000
3870 gpio_inout(0xffffff,BTTV_ALT_DATA|BTTV_ALT_DCLK|BTTV_ALT_NCONFIG); in pvr_altera_load()
3871 gpio_write(0); in pvr_altera_load()
3877 for (n = 0; n < microlen; n++) { in pvr_altera_load()
3879 for (i = 0 ; i < 8 ; i++) { in pvr_altera_load()
3880 gpio_bits(BTTV_ALT_DCLK,0); in pvr_altera_load()
3881 if (bits & 0x01) in pvr_altera_load()
3884 gpio_bits(BTTV_ALT_DATA,0); in pvr_altera_load()
3889 gpio_bits(BTTV_ALT_DCLK,0); in pvr_altera_load()
3893 for (i = 0 ; i < 30 ; i++) { in pvr_altera_load()
3894 gpio_bits(BTTV_ALT_DCLK,0); in pvr_altera_load()
3897 gpio_bits(BTTV_ALT_DCLK,0); in pvr_altera_load()
3898 return 0; in pvr_altera_load()
3907 if (rc != 0) { in pvr_boot()
3913 btv->c.nr, (rc < 0) ? "failed" : "ok"); in pvr_boot()
3924 u32 serial = 0; in osprey_eeprom()
3931 u8 checksum = 0; in osprey_eeprom()
3932 for (i = 0; i < 21; i++) in osprey_eeprom()
3939 serial += ee[i] - '0'; in osprey_eeprom()
3948 if ((checksum & 0xff) + (checksum >> 8) == 0xff) in osprey_eeprom()
3960 case 0x0004: in osprey_eeprom()
3963 case 0x0005: in osprey_eeprom()
3968 case 0x0012: in osprey_eeprom()
3969 case 0x0013: in osprey_eeprom()
3972 case 0x0014: in osprey_eeprom()
3973 case 0x0015: in osprey_eeprom()
3976 case 0x0016: in osprey_eeprom()
3977 case 0x0017: in osprey_eeprom()
3978 case 0x0020: in osprey_eeprom()
3981 case 0x0018: in osprey_eeprom()
3982 case 0x0019: in osprey_eeprom()
3983 case 0x001E: in osprey_eeprom()
3984 case 0x001F: in osprey_eeprom()
3987 case 0x001A: in osprey_eeprom()
3988 case 0x001B: in osprey_eeprom()
3991 case 0x0040: in osprey_eeprom()
3994 case 0x0050: in osprey_eeprom()
3995 case 0x0056: in osprey_eeprom()
3999 case 0x0060: in osprey_eeprom()
4000 case 0x0070: in osprey_eeprom()
4001 case 0x00A0: in osprey_eeprom()
4004 gpio_inout(0xffffff,0x000303); in osprey_eeprom()
4006 case 0x00D8: in osprey_eeprom()
4011 pr_info("%d: osprey eeprom: unknown card type 0x%04x\n", in osprey_eeprom()
4020 cardid > 0 ? bttv_tvcards[cardid].name : "Unknown", serial); in osprey_eeprom()
4022 if (cardid<0 || btv->c.type == cardid) in osprey_eeprom()
4056 int tuner_make, tuner_tv_fm, tuner_format, tuner_type = 0; in avermedia_eeprom()
4058 tuner_make = (eeprom_data[0x41] & 0x7); in avermedia_eeprom()
4059 tuner_tv_fm = (eeprom_data[0x41] & 0x18) >> 3; in avermedia_eeprom()
4060 tuner_format = (eeprom_data[0x42] & 0xf0) >> 4; in avermedia_eeprom()
4061 btv->has_remote = (eeprom_data[0x42] & 0x01); in avermedia_eeprom()
4063 if (tuner_make == 0 || tuner_make == 2) in avermedia_eeprom()
4064 if (tuner_format <= 0x0a) in avermedia_eeprom()
4071 if (tuner_format == 0x09) in avermedia_eeprom()
4074 pr_info("%d: Avermedia eeprom[0x%02x%02x]: tuner=", in avermedia_eeprom()
4075 btv->c.nr, eeprom_data[0x41], eeprom_data[0x42]); in avermedia_eeprom()
4091 * 0x10000 is connected to S0. S0 low selects a 38.9 MHz VIF for B/G/D/K/I
4099 gpiobits |= 0x10000; in bttv_tda9880_setnorm()
4101 gpiobits &= ~0x10000; in bttv_tda9880_setnorm()
4121 gpio_bits(mask,0); in boot_msp34xx()
4141 static int vals[] = { 0x08, 0x09, 0x0a, 0x0b, 0x0d, 0x0d, 0x01, 0x02, in init_PXC200()
4142 0x03, 0x04, 0x05, 0x06, 0x00 }; in init_PXC200()
4148 gpio_inout(0xffffff, (1<<13)); in init_PXC200()
4149 gpio_write(0); in init_PXC200()
4154 gpio_bits(0xffffff, 0); in init_PXC200()
4170 bttv_I2CWrite(btv,0x5E,0,0x80,1); in init_PXC200()
4185 /* Then, push to 0 the reset pin long enough to reset the * in init_PXC200()
4189 gpio_inout(0xffffff,(1<<2)); in init_PXC200()
4190 gpio_write(0); in init_PXC200()
4194 for (i = 0; i < ARRAY_SIZE(vals); i++) { in init_PXC200()
4195 tmp=bttv_I2CWrite(btv,0x1E,0,vals[i],1); in init_PXC200()
4198 vals[i],tmp,bttv_I2CRead(btv,0x1F,NULL)); in init_PXC200()
4212 * 1) write 0x00C3FEFF to the GPIO_OUT_EN register
4215 * - 0x0E
4217 * - 0x10 + 0x0E
4219 * - 0x0E
4221 * - if ( data>>18 & 0x01 != 0) || ( buf>>19 & 0x01 != 1 )
4225 * - write 0x4400 + 0x0E
4227 * - write 0x4410 + 0x0E
4229 * - write 0x0E
4231 * - if ( buf>>18 & 0x01 ) || ( buf>>19 & 0x01 != 0 )
4238 uint32_t dataRead = 0; in init_RTV24()
4239 long watchdog_value = 0x0E; in init_RTV24()
4244 btwrite (0x00c3feff, BT848_GPIO_OUT_EN); in init_RTV24()
4246 btwrite (0 + watchdog_value, BT848_GPIO_DATA); in init_RTV24()
4248 btwrite (0x10 + watchdog_value, BT848_GPIO_DATA); in init_RTV24()
4250 btwrite (0 + watchdog_value, BT848_GPIO_DATA); in init_RTV24()
4254 if ((((dataRead >> 18) & 0x01) != 0) || (((dataRead >> 19) & 0x01) != 1)) { in init_RTV24()
4259 btwrite (0x4400 + watchdog_value, BT848_GPIO_DATA); in init_RTV24()
4261 btwrite (0x4410 + watchdog_value, BT848_GPIO_DATA); in init_RTV24()
4267 if ((((dataRead >> 18) & 0x01) != 0) || (((dataRead >> 19) & 0x01) != 0)) { in init_RTV24()
4285 * CPLD is connected to most of the GPIOs of PCI device 0xD, only
4290 * Eight GPIOs of device 0xC are provided on connector CN4 (4 in, 4 out).
4291 * Devices 0xE and 0xF do not appear to have anything connected to their
4305 if ((PCI_SLOT(btv->c.pci->devfn) & ~3) != 0xC) { in init_PCI8604PW()
4310 if (PCI_SLOT(btv->c.pci->devfn) != 0xD) in init_PCI8604PW()
4313 btwrite(0x080002, BT848_GPIO_OUT_EN); in init_PCI8604PW()
4325 btwrite(0x080000, BT848_GPIO_DATA); in init_PCI8604PW()
4327 btwrite(0x000000, BT848_GPIO_DATA); in init_PCI8604PW()
4333 case 0: in init_PCI8604PW()
4335 more time, the CPLD goes into state 0, where PCI bus in init_PCI8604PW()
4349 case 0x15: in init_PCI8604PW()
4350 case 0x56: in init_PCI8604PW()
4351 case 0x64: in init_PCI8604PW()
4352 case 0x47: in init_PCI8604PW()
4353 /* The transition from state 7 to state 0 is, as explained in init_PCI8604PW()
4356 case 0x70: */ in init_PCI8604PW()
4376 * GPIO[0:3] - AX[0:3] (xpoint) - P1[0:3] (microcontroller)
4377 * GPIO[4:6] - AY[0:2] (xpoint) - P1[4:6] (microcontroller)
4393 static const u8 muxgpio[] = { 0x3, 0x1, 0x2, 0x4, 0xf, 0x7, 0xe, 0x0, in rv605_muxsel()
4394 0xd, 0xb, 0xc, 0x6, 0x9, 0x5, 0x8, 0xa }; in rv605_muxsel()
4396 gpio_bits(0x07f, muxgpio[input]); in rv605_muxsel()
4399 gpio_bits(0x200,0x200); in rv605_muxsel()
4401 gpio_bits(0x200,0x000); in rv605_muxsel()
4405 gpio_bits(0x480,0x480); in rv605_muxsel()
4407 gpio_bits(0x480,0x080); in rv605_muxsel()
4431 * GPIO[0:3] - Video output monitor select (only available from one 878A)
4442 gpio_bits(0x0f0000, input << 16); in tibetCS16_muxsel()
4448 gpio_inout(0xffffff, 0x0f7fff); in tibetCS16_init()
4449 gpio_write(0x0f7fff); in tibetCS16_init()
4463 * is {3, 0, 2, 1}, i.e. the first controller to be detected is logical
4464 * unit 3, the second (which is the master) is logical unit 0, etc.
4472 * (gpio bits 0-3, representing the camera, ranging from 0-15), and a
4473 * Y-address (gpio bits 4-6, representing the controller, ranging from 0-3).
4474 * A data value (gpio bit 7) of '1' enables the switch, and '0' disables
4485 udata = (data << 7) | ((yaddr&3) << 4) | (xaddr&0xf); in kodicom4400r_write()
4486 gpio_bits(0x1ff, udata); /* write ADDR and DAT */ in kodicom4400r_write()
4487 gpio_bits(0x1ff, udata | (1 << 8)); /* strobe high */ in kodicom4400r_write()
4488 gpio_bits(0x1ff, udata); /* strobe low */ in kodicom4400r_write()
4497 * requested camera number (0 - 15).
4503 static unsigned char map[4] = {3, 0, 2, 1}; in kodicom4400r_muxsel()
4511 xaddr = input & 0xf; in kodicom4400r_muxsel()
4516 kodicom4400r_write(mctlr, mctlr->sw_status[yaddr], yaddr, 0); in kodicom4400r_muxsel()
4526 * 0 through 3
4532 gpio_inout(0x0003ff, 0x0003ff); in kodicom4400r_init()
4534 gpio_write(0); in kodicom4400r_init()
4535 /* Preset camera 0 to the 4 controllers */ in kodicom4400r_init()
4536 for (ix = 0; ix < 4; ix++) { in kodicom4400r_init()
4561 #define ENA0 0x01
4562 #define ENB0 0x02
4563 #define ENA1 0x04
4564 #define ENB1 0x08
4566 #define IN10 0x10
4567 #define IN00 0x20
4568 #define IN11 0x40
4569 #define IN01 0x80
4584 btwrite (0x08<<16,BT848_GPIO_DATA);/*GPIO[19] [==> 4053 B+C] set to 1 */ in picolo_tetra_init()
4585 btwrite (0x04<<16,BT848_GPIO_DATA);/*GPIO[18] [==> 4053 A] set to 1*/ in picolo_tetra_init()
4610 * OUT0 of the TDA8540's is connected to MUX0 (0x03)
4611 * OUT1 of the TDA8540's is connected to "Monitor Out" (0x0C)
4613 * TDA8540_ALT3 IN0-3 = Channel 13 - 16 (0x03)
4614 * TDA8540_ALT4 IN0-3 = Channel 1 - 4 (0x03)
4615 * TDA8540_ALT5 IN0-3 = Channel 5 - 8 (0x03)
4616 * TDA8540_ALT6 IN0-3 = Channel 9 - 12 (0x03)
4621 #define I2C_TDA8540 0x90
4622 #define I2C_TDA8540_ALT1 0x92
4623 #define I2C_TDA8540_ALT2 0x94
4624 #define I2C_TDA8540_ALT3 0x96
4625 #define I2C_TDA8540_ALT4 0x98
4626 #define I2C_TDA8540_ALT5 0x9a
4627 #define I2C_TDA8540_ALT6 0x9c
4639 bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x00, in ivc120_muxsel()
4640 ((matrix == 3) ? (key | key << 2) : 0x00), 1); in ivc120_muxsel()
4641 bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x00, in ivc120_muxsel()
4642 ((matrix == 0) ? (key | key << 2) : 0x00), 1); in ivc120_muxsel()
4643 bttv_I2CWrite(btv, I2C_TDA8540_ALT5, 0x00, in ivc120_muxsel()
4644 ((matrix == 1) ? (key | key << 2) : 0x00), 1); in ivc120_muxsel()
4645 bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x00, in ivc120_muxsel()
4646 ((matrix == 2) ? (key | key << 2) : 0x00), 1); in ivc120_muxsel()
4649 bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x02, in ivc120_muxsel()
4650 ((matrix == 3) ? 0x03 : 0x00), 1); /* 13 - 16 */ in ivc120_muxsel()
4651 bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x02, in ivc120_muxsel()
4652 ((matrix == 0) ? 0x03 : 0x00), 1); /* 1-4 */ in ivc120_muxsel()
4653 bttv_I2CWrite(btv, I2C_TDA8540_ALT5, 0x02, in ivc120_muxsel()
4654 ((matrix == 1) ? 0x03 : 0x00), 1); /* 5-8 */ in ivc120_muxsel()
4655 bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x02, in ivc120_muxsel()
4656 ((matrix == 2) ? 0x03 : 0x00), 1); /* 9-12 */ in ivc120_muxsel()
4673 #define PX_CFG_PXC200F 0x01
4674 #define PX_FLAG_PXC200A 0x00001000 /* a pxc200A is bt-878 based */
4675 #define PX_I2C_PIC 0x0f
4676 #define PX_PXC200A_CARDID 0x200a1295
4677 #define PX_I2C_CMD_CFG 0x00
4688 buf[0]=0; in PXC200_muxsel()
4689 buf[1]=0; in PXC200_muxsel()
4690 rc=bttv_I2CWrite(btv,(PX_I2C_PIC<<1),buf[0],buf[1],1); in PXC200_muxsel()
4713 /* bitmask=0x30f; */ in PXC200_muxsel()
4714 bitmask=0x302; in PXC200_muxsel()
4717 bitmask ^= 0x180; /* use 7 and 9, not 8 and 9 */ in PXC200_muxsel()
4724 bitmask = (bitmask & ~0x280) | ((mux & 2) << 8) | ((mux & 1) << 7); in PXC200_muxsel()
4726 bitmask = (bitmask & ~0x300) | ((mux & 3) << 8); in PXC200_muxsel()
4730 * Was "to be safe, set the bt848 to input 0" in PXC200_muxsel()
4749 mux = 0; in phytec_muxsel()
4751 gpio_bits(0x3, mux); in phytec_muxsel()
4761 * (gpio bits 0-3, representing the camera, ranging from 0-15), and a
4762 * Y-address (gpio bits 4-6, representing the controller, ranging from 0-3).
4763 * A data value (gpio bit 18) of '1' enables the switch, and '0' disables
4774 * GPIO bits 0-9 are used for the analog switch: in gv800s_write()
4779 * 18: data (1->on, 0->off) in gv800s_write()
4782 const u32 ADDRESS = ((xaddr&0xf) | (yaddr&3)<<4); in gv800s_write()
4787 gpio_bits(0x1007f, ADDRESS | CSELECT); /* write ADDRESS and CSELECT */ in gv800s_write()
4788 gpio_bits(0x20000, STROBE); /* STROBE high */ in gv800s_write()
4789 gpio_bits(0x40000, DATA); /* write DATA */ in gv800s_write()
4790 gpio_bits(0x20000, ~STROBE); /* STROBE low */ in gv800s_write()
4800 * The parameter 'input' is the requested camera number (0-4) on the controller.
4803 * every controller to input 0, then to input 1, 2, 3, repeat. This means that
4804 * the physical "camera 1" connector corresponds to controller 0 input 0,
4805 * "camera 2" corresponds to controller 1 input 0, and so on.
4815 static unsigned int map[4][4] = { { 0x0, 0x4, 0xa, 0x6 }, in gv800s_muxsel()
4816 { 0x1, 0x5, 0xb, 0x7 }, in gv800s_muxsel()
4817 { 0x2, 0x8, 0xc, 0xe }, in gv800s_muxsel()
4818 { 0x3, 0x9, 0xd, 0xf } }; in gv800s_muxsel()
4826 xaddr = map[yaddr][input] & 0xf; in gv800s_muxsel()
4831 gv800s_write(mctlr, mctlr->sw_status[yaddr], yaddr, 0); in gv800s_muxsel()
4842 gpio_inout(0xf107f, 0xf107f); in gv800s_init()
4844 gpio_write(0); in gv800s_init()
4846 /* Preset camera 0 to the 4 controllers */ in gv800s_init()
4847 for (ix = 0; ix < 4; ix++) { in gv800s_init()
4853 bttv_I2CWrite(btv, 0x18, 0x5, 0x90, 1); in gv800s_init()
4872 int pcipci_fail = 0; in bttv_check_chipset()
4883 latency = 0x0A; in bttv_check_chipset()
4906 pci_read_config_byte(dev, 0x53, &b); in bttv_check_chipset()
4908 pr_info("Host bridge: 82441FX Natoma, bufcon=0x%02x\n", in bttv_check_chipset()
4918 return 0; in bttv_handle_chipset()
4946 return 0; in bttv_handle_chipset()