Lines Matching +full:0 +full:xaa0000
85 static unsigned int card[BTTV_MAX] = { [ 0 ... (BTTV_MAX-1) ] = UNSET };
86 static unsigned int pll[BTTV_MAX] = { [ 0 ... (BTTV_MAX-1) ] = UNSET };
87 static unsigned int tuner[BTTV_MAX] = { [ 0 ... (BTTV_MAX-1) ] = UNSET };
88 static unsigned int svhs[BTTV_MAX] = { [ 0 ... (BTTV_MAX-1) ] = UNSET };
89 static unsigned int remote[BTTV_MAX] = { [ 0 ... (BTTV_MAX-1) ] = UNSET };
92 static struct bttv *master[BTTV_MAX] = { [ 0 ... (BTTV_MAX-1) ] = NULL };
96 static unsigned int audiomux[5] = { [ 0 ... 4 ] = UNSET };
118 MODULE_PARM_DESC(pll, "specify installed crystal (0=none, 28=28 MHz, 35=35 MHz, 14=14 MHz)");
123 "\t\t 0 = autodetect (default)\n"
127 MODULE_PARM_DESC(saa6588, "if 1, then load the saa6588 RDS module, default (0) is to use the card d…
132 #define I2C_ADDR_TDA7432 0x8a
133 #define I2C_ADDR_MSP3400 0x80
134 #define I2C_ADDR_MSP3400_ALT 0x88
145 { 0x13eb0070, BTTV_BOARD_HAUPPAUGE878, "Hauppauge WinTV" },
146 { 0x39000070, BTTV_BOARD_HAUPPAUGE878, "Hauppauge WinTV-D" },
147 { 0x45000070, BTTV_BOARD_HAUPPAUGEPVR, "Hauppauge WinTV/PVR" },
148 { 0xff000070, BTTV_BOARD_OSPREY1x0, "Osprey-100" },
149 { 0xff010070, BTTV_BOARD_OSPREY2x0_SVID,"Osprey-200" },
150 { 0xff020070, BTTV_BOARD_OSPREY500, "Osprey-500" },
151 { 0xff030070, BTTV_BOARD_OSPREY2000, "Osprey-2000" },
152 { 0xff040070, BTTV_BOARD_OSPREY540, "Osprey-540" },
153 { 0xff070070, BTTV_BOARD_OSPREY440, "Osprey-440" },
155 { 0x00011002, BTTV_BOARD_ATI_TVWONDER, "ATI TV Wonder" },
156 { 0x00031002, BTTV_BOARD_ATI_TVWONDERVE,"ATI TV Wonder/VE" },
158 { 0x6606107d, BTTV_BOARD_WINFAST2000, "Leadtek WinFast TV 2000" },
159 { 0x6607107d, BTTV_BOARD_WINFASTVC100, "Leadtek WinFast VC 100" },
160 { 0x6609107d, BTTV_BOARD_WINFAST2000, "Leadtek TV 2000 XP" },
161 { 0x263610b4, BTTV_BOARD_STB2, "STB TV PCI FM, Gateway P/N 6000704" },
162 { 0x264510b4, BTTV_BOARD_STB2, "STB TV PCI FM, Gateway P/N 6000704" },
163 { 0x402010fc, BTTV_BOARD_GVBCTV3PCI, "I-O Data Co. GV-BCTV3/PCI" },
164 { 0x405010fc, BTTV_BOARD_GVBCTV4PCI, "I-O Data Co. GV-BCTV4/PCI" },
165 { 0x407010fc, BTTV_BOARD_GVBCTV5PCI, "I-O Data Co. GV-BCTV5/PCI" },
166 { 0xd01810fc, BTTV_BOARD_GVBCTV5PCI, "I-O Data Co. GV-BCTV5/PCI" },
168 { 0x001211bd, BTTV_BOARD_PINNACLE, "Pinnacle PCTV" },
170 { 0x1200bd11, BTTV_BOARD_PINNACLE, "Pinnacle PCTV [bswap]" },
171 { 0xff00bd11, BTTV_BOARD_PINNACLE, "Pinnacle PCTV [bswap]" },
173 { 0xff1211bd, BTTV_BOARD_PINNACLE, "Pinnacle PCTV" },
175 { 0x3000121a, BTTV_BOARD_VOODOOTV_200, "3Dfx VoodooTV 200" },
176 { 0x263710b4, BTTV_BOARD_VOODOOTV_FM, "3Dfx VoodooTV FM" },
177 { 0x3060121a, BTTV_BOARD_STB2, "3Dfx VoodooTV 100/ STB OEM" },
179 { 0x3000144f, BTTV_BOARD_MAGICTVIEW063, "(Askey Magic/others) TView99 CPH06x" },
180 { 0xa005144f, BTTV_BOARD_MAGICTVIEW063, "CPH06X TView99-Card" },
181 { 0x3002144f, BTTV_BOARD_MAGICTVIEW061, "(Askey Magic/others) TView99 CPH05x" },
182 { 0x3005144f, BTTV_BOARD_MAGICTVIEW061, "(Askey Magic/others) TView99 CPH061/06L (T1/LC)" },
183 { 0x5000144f, BTTV_BOARD_MAGICTVIEW061, "Askey CPH050" },
184 { 0x300014ff, BTTV_BOARD_MAGICTVIEW061, "TView 99 (CPH061)" },
185 { 0x300214ff, BTTV_BOARD_PHOEBE_TVMAS, "Phoebe TV Master (CPH060)" },
187 { 0x00011461, BTTV_BOARD_AVPHONE98, "AVerMedia TVPhone98" },
188 { 0x00021461, BTTV_BOARD_AVERMEDIA98, "AVermedia TVCapture 98" },
189 { 0x00031461, BTTV_BOARD_AVPHONE98, "AVerMedia TVPhone98" },
190 { 0x00041461, BTTV_BOARD_AVERMEDIA98, "AVerMedia TVCapture 98" },
191 { 0x03001461, BTTV_BOARD_AVERMEDIA98, "VDOMATE TV TUNER CARD" },
193 { 0x1117153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue (Philips PAL B/G)" },
194 { 0x1118153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue (Temic PAL B/G)" },
195 { 0x1119153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue (Philips PAL I)" },
196 { 0x111a153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue (Temic PAL I)" },
198 { 0x1123153b, BTTV_BOARD_TERRATVRADIO, "Terratec TV Radio+" },
199 { 0x1127153b, BTTV_BOARD_TERRATV, "Terratec TV+ (V1.05)" },
201 *{ 0x18521852, BTTV_BOARD_TERRATV, "Terratec TV+ (V1.10)" }, */
202 { 0x1134153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue (LR102)" },
203 { 0x1135153b, BTTV_BOARD_TERRATVALUER, "Terratec TValue Radio" }, /* LR102 */
204 { 0x5018153b, BTTV_BOARD_TERRATVALUE, "Terratec TValue" }, /* ?? */
205 { 0xff3b153b, BTTV_BOARD_TERRATVALUER, "Terratec TValue Radio" }, /* ?? */
207 { 0x400015b0, BTTV_BOARD_ZOLTRIX_GENIE, "Zoltrix Genie TV" },
208 { 0x400a15b0, BTTV_BOARD_ZOLTRIX_GENIE, "Zoltrix Genie TV" },
209 { 0x400d15b0, BTTV_BOARD_ZOLTRIX_GENIE, "Zoltrix Genie TV / Radio" },
210 { 0x401015b0, BTTV_BOARD_ZOLTRIX_GENIE, "Zoltrix Genie TV / Radio" },
211 { 0x401615b0, BTTV_BOARD_ZOLTRIX_GENIE, "Zoltrix Genie TV / Radio" },
213 { 0x1430aa00, BTTV_BOARD_PV143, "Provideo PV143A" },
214 { 0x1431aa00, BTTV_BOARD_PV143, "Provideo PV143B" },
215 { 0x1432aa00, BTTV_BOARD_PV143, "Provideo PV143C" },
216 { 0x1433aa00, BTTV_BOARD_PV143, "Provideo PV143D" },
217 { 0x1433aa03, BTTV_BOARD_PV143, "Security Eyes" },
219 { 0x1460aa00, BTTV_BOARD_PV150, "Provideo PV150A-1" },
220 { 0x1461aa01, BTTV_BOARD_PV150, "Provideo PV150A-2" },
221 { 0x1462aa02, BTTV_BOARD_PV150, "Provideo PV150A-3" },
222 { 0x1463aa03, BTTV_BOARD_PV150, "Provideo PV150A-4" },
224 { 0x1464aa04, BTTV_BOARD_PV150, "Provideo PV150B-1" },
225 { 0x1465aa05, BTTV_BOARD_PV150, "Provideo PV150B-2" },
226 { 0x1466aa06, BTTV_BOARD_PV150, "Provideo PV150B-3" },
227 { 0x1467aa07, BTTV_BOARD_PV150, "Provideo PV150B-4" },
229 { 0xa132ff00, BTTV_BOARD_IVC100, "IVC-100" },
230 { 0xa1550000, BTTV_BOARD_IVC200, "IVC-200" },
231 { 0xa1550001, BTTV_BOARD_IVC200, "IVC-200" },
232 { 0xa1550002, BTTV_BOARD_IVC200, "IVC-200" },
233 { 0xa1550003, BTTV_BOARD_IVC200, "IVC-200" },
234 { 0xa1550100, BTTV_BOARD_IVC200, "IVC-200G" },
235 { 0xa1550101, BTTV_BOARD_IVC200, "IVC-200G" },
236 { 0xa1550102, BTTV_BOARD_IVC200, "IVC-200G" },
237 { 0xa1550103, BTTV_BOARD_IVC200, "IVC-200G" },
238 { 0xa1550800, BTTV_BOARD_IVC200, "IVC-200" },
239 { 0xa1550801, BTTV_BOARD_IVC200, "IVC-200" },
240 { 0xa1550802, BTTV_BOARD_IVC200, "IVC-200" },
241 { 0xa1550803, BTTV_BOARD_IVC200, "IVC-200" },
242 { 0xa182ff00, BTTV_BOARD_IVC120, "IVC-120G" },
243 { 0xa182ff01, BTTV_BOARD_IVC120, "IVC-120G" },
244 { 0xa182ff02, BTTV_BOARD_IVC120, "IVC-120G" },
245 { 0xa182ff03, BTTV_BOARD_IVC120, "IVC-120G" },
246 { 0xa182ff04, BTTV_BOARD_IVC120, "IVC-120G" },
247 { 0xa182ff05, BTTV_BOARD_IVC120, "IVC-120G" },
248 { 0xa182ff06, BTTV_BOARD_IVC120, "IVC-120G" },
249 { 0xa182ff07, BTTV_BOARD_IVC120, "IVC-120G" },
250 { 0xa182ff08, BTTV_BOARD_IVC120, "IVC-120G" },
251 { 0xa182ff09, BTTV_BOARD_IVC120, "IVC-120G" },
252 { 0xa182ff0a, BTTV_BOARD_IVC120, "IVC-120G" },
253 { 0xa182ff0b, BTTV_BOARD_IVC120, "IVC-120G" },
254 { 0xa182ff0c, BTTV_BOARD_IVC120, "IVC-120G" },
255 { 0xa182ff0d, BTTV_BOARD_IVC120, "IVC-120G" },
256 { 0xa182ff0e, BTTV_BOARD_IVC120, "IVC-120G" },
257 { 0xa182ff0f, BTTV_BOARD_IVC120, "IVC-120G" },
258 { 0xf0500000, BTTV_BOARD_IVCE8784, "IVCE-8784" },
259 { 0xf0500001, BTTV_BOARD_IVCE8784, "IVCE-8784" },
260 { 0xf0500002, BTTV_BOARD_IVCE8784, "IVCE-8784" },
261 { 0xf0500003, BTTV_BOARD_IVCE8784, "IVCE-8784" },
263 { 0x41424344, BTTV_BOARD_GRANDTEC, "GrandTec Multi Capture" },
264 { 0x01020304, BTTV_BOARD_XGUARD, "Grandtec Grand X-Guard" },
266 { 0x18501851, BTTV_BOARD_CHRONOS_VS2, "FlyVideo 98 (LR50)/ Chronos Video Shuttle II" },
267 { 0xa0501851, BTTV_BOARD_CHRONOS_VS2, "FlyVideo 98 (LR50)/ Chronos Video Shuttle II" },
268 { 0x18511851, BTTV_BOARD_FLYVIDEO98EZ, "FlyVideo 98EZ (LR51)/ CyberMail AV" },
269 { 0x18521852, BTTV_BOARD_TYPHOON_TVIEW, "FlyVideo 98FM (LR50)/ Typhoon TView TV/FM Tuner" },
270 { 0x41a0a051, BTTV_BOARD_FLYVIDEO_98FM, "Lifeview FlyVideo 98 LR50 Rev Q" },
271 { 0x18501f7f, BTTV_BOARD_FLYVIDEO_98, "Lifeview Flyvideo 98" },
273 { 0x010115cb, BTTV_BOARD_GMV1, "AG GMV1" },
274 { 0x010114c7, BTTV_BOARD_MODTEC_205, "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV" },
276 { 0x10b42636, BTTV_BOARD_HAUPPAUGE878, "STB ???" },
277 { 0x217d6606, BTTV_BOARD_WINFAST2000, "Leadtek WinFast TV 2000" },
278 { 0xfff6f6ff, BTTV_BOARD_WINFAST2000, "Leadtek WinFast TV 2000" },
279 { 0x03116000, BTTV_BOARD_SENSORAY311_611, "Sensoray 311" },
280 { 0x06116000, BTTV_BOARD_SENSORAY311_611, "Sensoray 611" },
281 { 0x00790e11, BTTV_BOARD_WINDVR, "Canopus WinDVR PCI" },
282 { 0xa0fca1a0, BTTV_BOARD_ZOLTRIX, "Face to Face Tvmax" },
283 { 0x82b2aa6a, BTTV_BOARD_SIMUS_GVC1100, "SIMUS GVC1100" },
284 { 0x146caa0c, BTTV_BOARD_PV951, "ituner spectra8" },
285 { 0x200a1295, BTTV_BOARD_PXC200, "ImageNation PXC200A" },
287 { 0x40111554, BTTV_BOARD_PV_BT878P_9B, "Prolink Pixelview PV-BT" },
288 { 0x17de0a01, BTTV_BOARD_KWORLD, "Mecer TV/FM/Video Tuner" },
290 { 0x01051805, BTTV_BOARD_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #1" },
291 { 0x01061805, BTTV_BOARD_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #2" },
292 { 0x01071805, BTTV_BOARD_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #3" },
293 { 0x01081805, BTTV_BOARD_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #4" },
295 { 0x15409511, BTTV_BOARD_ACORP_Y878F, "Acorp Y878F" },
297 { 0x53534149, BTTV_BOARD_SSAI_SECURITY, "SSAI Security Video Interface" },
298 { 0x5353414a, BTTV_BOARD_SSAI_ULTRASOUND, "SSAI Ultrasound Video Interface" },
301 * { 0xa0fca04f, BTTV_BOARD_MAGICTVIEW063, "Guillemot Maxi TV Video 3" }, */
304 * { 0x13eb0070, BTTV_BOARD_HAUPPAUGE_IMPACTVCB, "Hauppauge ImpactVCB" }, */
306 { 0x109e036e, BTTV_BOARD_CONCEPTRONIC_CTVFMI2, "Conceptronic CTVFMi v2"},
309 { 0x001c11bd, BTTV_BOARD_PINNACLESAT, "Pinnacle PCTV Sat" },
310 { 0x01010071, BTTV_BOARD_NEBULA_DIGITV, "Nebula Electronics DigiTV" },
311 { 0x20007063, BTTV_BOARD_PC_HDTV, "pcHDTV HD-2000 TV"},
312 { 0x002611bd, BTTV_BOARD_TWINHAN_DST, "Pinnacle PCTV SAT CI" },
313 { 0x00011822, BTTV_BOARD_TWINHAN_DST, "Twinhan VisionPlus DVB" },
314 { 0xfc00270f, BTTV_BOARD_TWINHAN_DST, "ChainTech digitop DST-1000 DVB-S" },
315 { 0x07711461, BTTV_BOARD_AVDVBT_771, "AVermedia AverTV DVB-T 771" },
316 { 0x07611461, BTTV_BOARD_AVDVBT_761, "AverMedia AverTV DVB-T 761" },
317 { 0xdb1018ac, BTTV_BOARD_DVICO_DVBT_LITE, "DViCO FusionHDTV DVB-T Lite" },
318 { 0xdb1118ac, BTTV_BOARD_DVICO_DVBT_LITE, "Ultraview DVB-T Lite" },
319 { 0xd50018ac, BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE, "DViCO FusionHDTV 5 Lite" },
320 { 0x00261822, BTTV_BOARD_TWINHAN_DST, "DNTV Live! Mini "},
321 { 0xd200dbc0, BTTV_BOARD_DVICO_FUSIONHDTV_2, "DViCO FusionHDTV 2" },
322 { 0x763c008a, BTTV_BOARD_GEOVISION_GV600, "GeoVision GV-600" },
323 { 0x18011000, BTTV_BOARD_ENLTV_FM_2, "Encore ENL TV-FM-2" },
324 { 0x763d800a, BTTV_BOARD_GEOVISION_GV800S, "GeoVision GV-800(S) (master)" },
325 { 0x763d800b, BTTV_BOARD_GEOVISION_GV800S_SL, "GeoVision GV-800(S) (slave)" },
326 { 0x763d800c, BTTV_BOARD_GEOVISION_GV800S_SL, "GeoVision GV-800(S) (slave)" },
327 { 0x763d800d, BTTV_BOARD_GEOVISION_GV800S_SL, "GeoVision GV-800(S) (slave)" },
329 { 0x15401830, BTTV_BOARD_PV183, "Provideo PV183-1" },
330 { 0x15401831, BTTV_BOARD_PV183, "Provideo PV183-2" },
331 { 0x15401832, BTTV_BOARD_PV183, "Provideo PV183-3" },
332 { 0x15401833, BTTV_BOARD_PV183, "Provideo PV183-4" },
333 { 0x15401834, BTTV_BOARD_PV183, "Provideo PV183-5" },
334 { 0x15401835, BTTV_BOARD_PV183, "Provideo PV183-6" },
335 { 0x15401836, BTTV_BOARD_PV183, "Provideo PV183-7" },
336 { 0x15401837, BTTV_BOARD_PV183, "Provideo PV183-8" },
337 { 0x3116f200, BTTV_BOARD_TVT_TD3116, "Tongwei Video Technology TD-3116" },
338 { 0x02280279, BTTV_BOARD_APOSONIC_WDVR, "Aposonic W-DVR" },
339 { 0, -1, NULL }
346 /* ---- card 0x00 ---------------------------------- */
351 .muxsel = MUXSEL(2, 3, 1, 0),
362 .gpiomux = { 2, 0, 0, 0 },
374 .gpiomux = { 0, 1, 2, 3 },
386 .gpiomux = { 4, 0, 2, 3 },
395 /* ---- card 0x04 ---------------------------------- */
399 /* .audio_inputs= 0, */
401 .gpiomask = 0,
403 .gpiomux = { 0 },
413 .muxsel = MUXSEL(2, 3, 1, 0),
414 .gpiomux = { 0, 1, 0, 1 },
425 .gpiomask = 0x0f,
426 .gpiomux = { 0x0c, 0x04, 0x08, 0x04 },
427 /* 0x04 for some cards ?? */
438 .gpiomask = 0,
439 .muxsel = MUXSEL(2, 3, 1, 0, 0),
440 .gpiomux = { 0 },
445 /* ---- card 0x08 ---------------------------------- */
451 .gpiomask = 0xc00,
453 .gpiomux = { 0, 0xc00, 0x800, 0x400 },
454 .gpiomute = 0xc00,
476 .gpiomask = 0x0f, /* old: 7 */
477 .muxsel = MUXSEL(2, 0, 1, 1),
478 .gpiomux = { 0, 1, 2, 3 },
489 .gpiomask = 0x3014f,
491 .gpiomux = { 0x20001,0x10001, 0, 0 },
497 /* ---- card 0x0c ---------------------------------- */
531 .gpiomux = { 0, 2, 1, 3 }, /* old: {0, 1, 2, 3, 4} */
544 .gpiomux = { 0, 0, 1, 0 },
550 /* ---- card 0x10 ---------------------------------- */
556 .gpiomask = 0x01fe00,
559 .gpiomux = { 0x001e00, 0, 0x018000, 0x014000 },
560 .gpiomute = 0x002000,
570 .gpiomask = 0x8300f8,
571 .muxsel = MUXSEL(2, 3, 1, 1, 0),
572 .gpiomux = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007 },
573 .gpiomute = 0xcfa007,
584 .gpiomask = 0,
586 .gpiomux = { 1, 0, 0, 0 },
595 .gpiomask = 0x8dff00,
597 .gpiomux = { 0 },
603 /* ---- card 0x14 ---------------------------------- */
618 .gpiomask = 0x1800,
620 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
621 .gpiomute = 0x1800,
631 .gpiomask = 0xc00,
633 .gpiomux = { 0, 1, 0x800, 0x400 },
634 .gpiomute = 0xc00,
646 .muxsel = MUXSEL(2, 3, 0), /* input 2 is digital */
648 .gpiomux = { 0, 0, 0, 0 },
655 /* ---- card 0x18 ---------------------------------- */
661 .gpiomask = 0xe00,
663 .gpiomux = {0x400, 0x400, 0x400, 0x400 },
664 .gpiomute = 0xc00,
676 .gpiomask = 0x1f0fff,
678 .gpiomux = { 0x20000, 0x30000, 0x10000, 0 },
679 .gpiomute = 0x40000,
690 .muxsel = MUXSEL(2, 0, 1, 1),
691 .gpiomux = { 0, 1, 2, 3 },
701 .gpiomask = 0x1800,
703 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
704 .gpiomute = 0x1800,
710 /* ---- card 0x1c ---------------------------------- */
716 .gpiomask = 0x1f0fff,
718 .gpiomux = { 0x20000, 0x30000, 0x10000, 0x00000 },
719 .gpiomute = 0x40000,
761 .gpiomask = 0,
762 .muxsel = MUXSEL(2, 3, 1, 0, 0),
763 .gpiomux = { 0 },
774 .gpiomask = 0x1800, /* 0x8dfe00 */
776 .gpiomux = { 0, 0x0800, 0x1000, 0x1000 },
777 .gpiomute = 0x1800,
789 .gpiomux = { 1, 0, 0, 0 },
795 /* ---- card 0x20 ---------------------------------- */
799 /* .audio_inputs= 0, */
801 .gpiomask = 0,
803 .gpiomux = { 0 },
812 .gpiomask = 0xffff00,
814 .gpiomux = { 0x500, 0, 0x300, 0x900 },
815 .gpiomute = 0x900,
826 .muxsel = MUXSEL(2, 3, 1, 1, 0),
828 .gpiomask = 0xb33000,
829 .gpiomux = { 0x122000,0x1000,0x0000,0x620000 },
830 .gpiomute = 0x800000,
832 gpio23 -- hef4052:nEnable (0x800000)
835 0x0000: external audio
836 0x1000: FM
837 0x2000: TV
838 0x3000: n.c.
854 .gpiomask = 0x1800,
856 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
857 .gpiomute = 0x1800,
863 /* ---- card 0x24 ---------------------------------- */
869 .gpiomask = 0x1800,
871 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
872 .gpiomute = 0x1800,
883 .gpiomask = 0xff,
885 .gpiomux = { 0x21, 0x20, 0x24, 0x2c },
886 .gpiomute = 0x29,
897 .gpiomask = 0x551e00,
898 .muxsel = MUXSEL(2, 3, 1, 0),
899 .gpiomux = { 0x551400, 0x551200, 0, 0 },
900 .gpiomute = 0x551c00,
911 .gpiomask = 0x03000F,
913 .gpiomux = { 2, 0xd0001, 0, 0 },
920 /* ---- card 0x28 ---------------------------------- */
928 .gpiomux = { 4, 0, 2, 3 },
955 .gpiomask = 0,
957 .gpiomux = { 0, 0, 0, 0},
968 .gpiomask = 0xe00b,
970 .gpiomux = { 0xff9ff6, 0xff9ff6, 0xff1ff7, 0 },
971 .gpiomute = 0xff3ffc,
977 /* ---- card 0x2c ---------------------------------- */
985 .gpiomux = { 1, 1, 0, 2 },
997 .gpiomask = 0,
998 .muxsel = MUXSEL(2, 3, 1, 0, 0),
999 .gpiomux = { 0 },
1010 .gpiomask = 0xbcf03f,
1012 .gpiomux = { 0xbc803f, 0xbc903f, 0xbcb03f, 0 },
1013 .gpiomute = 0xbcb03f,
1024 .gpiomask = 0x70000,
1026 .gpiomux = { 0x20000, 0x30000, 0x10000, 0 },
1027 .gpiomute = 0x40000,
1035 /* ---- card 0x30 ---------------------------------- */
1043 .gpiomux = {2,0,0,0 },
1054 .gpiomask = 0x010f00,
1055 .muxsel = MUXSEL(2, 3, 0, 0),
1056 .gpiomux = {0x10000, 0, 0x10000, 0 },
1069 .gpiomask = 0xAA0000,
1070 .muxsel = MUXSEL(2, 3, 1, 1, 0), /* in 4 is digital */
1072 .gpiomux = { 0x20000, 0, 0x80000, 0x80000 },
1073 .gpiomute = 0xa8000,
1086 Note: At i2c=0x8a is a Bt832 chip, which changes to 0x88 after being reset via GPIO22
1095 .muxsel = MUXSEL(2, 0, 1, 1),
1096 .gpiomux = { 0, 1, 2, 3 },
1103 /* ---- card 0x34 ---------------------------------- */
1110 .gpiomask = 0x03000F,
1112 .gpiomux = { 1, 0xd0001, 0, 0 },
1115 MUX1 (mask 0x03), Enable Pin 0x08 (0=enable, 1=disable)
1116 0= ext. Audio IN
1120 MUX2 (mask 0x30000):
1121 0,2,3= from MSP34xx
1134 .gpiomask = 0x1c,
1136 .gpiomux = { 0, 0, 0x10, 8 },
1146 options bttv card=0 pll=1 radio=1 gpiomask=0x18e0
1147 gpiomux =0x44c71f,0x44d71f,0,0x44d71f,0x44dfff
1153 .gpiomask = 0x18e0,
1155 .gpiomux = { 0x0000,0x0800,0x1000,0x1000 },
1156 .gpiomute = 0x18e0,
1158 0x0000: Tuner normal stereo
1159 0x0080: Tuner A2 SAP (second audio program = Zweikanalton)
1160 0x0880: Tuner A2 stereo */
1172 .gpiomask = 0xF,
1173 .muxsel = MUXSEL(2, 3, 1, 0),
1174 .gpiomux = { 2, 0, 0, 0 },
1181 /* ---- card 0x38 ---------------------------------- */
1188 .gpiomask = 0x1800,
1190 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
1191 .gpiomute = 0x1800,
1202 /* .audio_inputs= 0, */
1204 .gpiomask = 0,
1206 .gpiomux = { 0 },
1218 .gpiomask = 0xe00,
1220 .gpiomux = { 0x400, 0x400, 0x400, 0x400 },
1221 .gpiomute = 0x800,
1232 .gpiomask = 0x03000F,
1233 .muxsel = MUXSEL(2, 3, 1, 0),
1234 .gpiomux = { 2, 0, 0, 0 },
1242 /* ---- card 0x3c ---------------------------------- */
1251 .gpiomux = { 2, 0, 0, 1 },
1261 /* .audio_inputs= 0, */
1263 .gpiomask = 0xF,
1279 .gpiomask = 0xFF,
1280 .muxsel = MUXSEL(2, 3, 1, 0),
1281 .gpiomux = { 1, 0, 4, 4 },
1293 .gpiomask = 0xf03f,
1294 .muxsel = MUXSEL(2, 3, 1, 0),
1295 .gpiomux = { 0xbffe, 0, 0xbfff, 0 },
1296 .gpiomute = 0xbffe,
1302 /* ---- card 0x40 ---------------------------------- */
1310 .muxsel = MUXSEL(2, 3, 0, 1),
1311 .gpiomux = { 0, 0, 1, 0 },
1323 .gpiomask = 0x18e0,
1324 .muxsel = MUXSEL(2, 3, 0, 1),
1325 /* Radio changed from 1e80 to 0x800 to make
1327 /* -dk-???: set mute=0x1800 for tda9874h daughterboard */
1328 .gpiomux = { 0x0000,0x0800,0x1000,0x1000 },
1329 .gpiomute = 0x1800,
1341 .gpiomask = 0xffff00,
1343 .gpiomux = { 0x500, 0x500, 0x300, 0x900 },
1344 .gpiomute = 0x900,
1356 .gpiomask = 0x010f00,
1357 .muxsel = MUXSEL(2, 3, 0, 0),
1358 .gpiomux = {0x10000, 0, 0x10000, 0 },
1366 /* ---- card 0x44 ---------------------------------- */
1369 /* try "insmod msp3400 simple=0" if you have
1374 .gpiomask = 0x4f8a00,
1375 /* 0x100000: 1=MSP enabled (0=disable again)
1376 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
1377 .gpiomux = {0x947fff, 0x987fff,0x947fff,0x947fff },
1378 .gpiomute = 0x947fff,
1381 .muxsel = MUXSEL(2, 3, 0, 1),
1389 /* try "insmod msp3400 simple=0" if you have
1394 .gpiomask = 0x4f8a00,
1395 /* 0x100000: 1=MSP enabled (0=disable again)
1396 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
1397 .gpiomux = {0x947fff, 0x987fff,0x947fff,0x947fff },
1398 .gpiomute = 0x947fff,
1401 .muxsel = MUXSEL(2, 3, 0, 1),
1411 /* .audio_inputs= 0, */
1416 .gpiomask = 0
1426 .gpiomux = { 0, 0, 11, 7 }, /* TV and Radio with same GPIO ! */
1443 /* .audio_inputs= 0, */
1453 /* ---- card 0x48 ---------------------------------- */
1460 .gpiomask = 0x3f,
1462 .gpiomux = { 0x01, 0x00, 0x03, 0x03 },
1463 .gpiomute = 0x09,
1484 /* .audio_inputs= 0, */
1486 .gpiomask = 0,
1487 .muxsel = MUXSEL(2, 3, 1, 0, 0),
1488 .gpiomux = { 0 },
1496 /* .audio_inputs= 0, */
1498 .gpiomask = 0x00,
1499 .gpiomask2 = 0x07ff,
1511 ….gpiomask = 0x1C800F, /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remot…
1513 .gpiomux = { 0, 1, 2, 2 },
1521 /* ---- card 0x4c ---------------------------------- */
1528 .gpiomask = 0x140007,
1530 .gpiomux = { 0, 1, 2, 3 },
1539 /* .audio_inputs= 0, */
1541 .gpiomask = 0,
1542 .muxsel = MUXSEL(2, 3, 1, 0),
1543 .gpiomux = { 0 },
1557 ….gpiomux = { 0, 0, 4, 4 },/* Yes, this tuner uses the same audio output for TV and FM radio!
1562 * btwincap uses 0x80000/0x80003
1587 .muxsel = MUXSEL(2, 3, 1, 0),
1593 /* ---- card 0x50 ---------------------------------- */
1599 .muxsel = MUXSEL(2, 0, 1, 1),
1612 .gpiomask = 0x0f0f80,
1613 .muxsel = MUXSEL(2, 3, 1, 0),
1614 .gpiomux = {0x030000, 0x010000, 0, 0 },
1615 .gpiomute = 0x020000,
1624 .name = "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */
1626 /* .audio_inputs= 0, */
1628 .muxsel = MUXSEL(3, 2, 0, 1),
1636 .name = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */
1638 /* .audio_inputs= 0, */
1648 /* ---- card 0x54 ---------------------------------- */
1650 .name = "Osprey 101 (848)", /* 0x05-40C0-C1 */
1652 /* .audio_inputs= 0, */
1662 .name = "Osprey 101/151", /* 0x1(4|5)-0004-C4 */
1664 /* .audio_inputs= 0, */
1666 .muxsel = MUXSEL(0),
1674 .name = "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */
1676 /* .audio_inputs= 0, */
1678 .muxsel = MUXSEL(0, 1),
1686 .name = "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */
1690 .muxsel = MUXSEL(0),
1698 /* ---- card 0x58 ---------------------------------- */
1700 .name = "Osprey 200/250", /* 0x1(A|B)-00C4-C1 */
1704 .muxsel = MUXSEL(0, 1),
1712 .name = "Osprey 210/220/230", /* 0x1(A|B)-04C0-C1 */
1746 /* ---- card 0x5C ---------------------------------- */
1763 /* .audio_inputs= 0, */
1767 .gpiomask = 0,
1776 /* .audio_inputs= 0, */
1795 .gpiomux = { 2, 2, 0, 0 },
1801 GPIO=0x00,0x01,0x03: mute (?)
1802 0x02: both TV and radio (tuner: FM1216/I)
1809 /* ---- card 0x60 ---------------------------------- */
1817 .gpiomux = { 0, 1, 2, 3},
1826 /* .audio_inputs= 0, */
1828 .gpiomask = 0,
1831 .muxsel = MUXSEL(2, 0, 1),
1838 .name = "ProVideo PV150", /* 0x4f */
1840 /* .audio_inputs= 0, */
1842 .gpiomask = 0,
1844 .gpiomux = { 0 },
1853 .name = "AD-TVK503", /* 0x63 */
1857 .gpiomask = 0x001e8007,
1858 .muxsel = MUXSEL(2, 3, 1, 0),
1860 .gpiomux = { 0x08, 0x0f, 0x0a, 0x08 },
1861 .gpiomute = 0x0f,
1869 /* ---- card 0x64 ---------------------------------- */
1875 .gpiomask = 0x00,
1883 - stereo variant w/ daughter board with tda9874a @0xb0
1887 - Other chips: em78p156elp @ 0x96 (probably IR remote control)
1898 .gpiomask = 0,
1915 /* .audio_inputs= 0, */
1919 .gpiomask = 0xdf,
1926 /* .audio_inputs= 0, */
1930 .gpiomask = 0xdf,
1937 /* .audio_inputs= 0, */
1941 .gpiomask2 = 0xff,
1942 .muxsel = MUXSEL(2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0),
1949 /* ---- card 0x68 ---------------------------------- */
1954 .muxsel = MUXSEL(2, 3, 1, 0),
1962 .gpiomask = 0x1b,
1969 /* .audio_inputs= 0, */
1971 .gpiomask = 0,
1972 .muxsel = MUXSEL(2, 3, 1, 0),
1973 .gpiomux = { 0 },
1983 /* .audio_inputs= 0, */
1985 .gpiomask = 0x00,
1986 .muxsel = MUXSEL(2, 3, 1, 0),
1987 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
1995 /* .audio_inputs= 0, */
1997 .gpiomask = 0x00,
1999 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2005 /* ---- card 0x6c ---------------------------------- */
2009 /* .audio_inputs= 0, */
2011 .gpiomask = 0x00,
2012 .gpiomask2 = 0x03, /* used for external video mux */
2013 .muxsel = MUXSEL(2, 2, 2, 2, 3, 3, 3, 3, 1, 0),
2015 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2023 /* .audio_inputs= 0, */
2025 .gpiomask = 0x00,
2026 .gpiomask2 = 0x03, /* used for external video mux */
2029 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2037 /* .audio_inputs= 0, */
2041 .gpiomask = 0xdf,
2042 .muxsel = MUXSEL(2, 3, 1, 0),
2049 /* .audio_inputs= 0, */
2055 .gpiomask = 0x00,
2056 .muxsel = MUXSEL(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
2061 /* ---- card 0x70 ---------------------------------- */
2067 .muxsel = MUXSEL(2, 3, 1, 0),
2084 /* .audio_inputs= 0, */
2107 /* ---- card 0x74 ---------------------------------- */
2111 /* .audio_inputs= 0, */
2117 .gpiomask = 0x3F,
2121 /* Carlos Silva r3pek@r3pek.homelinux.org || card 0x75 */
2125 .gpiomask = 0x008007,
2126 .muxsel = MUXSEL(2, 3, 0, 0),
2127 .gpiomux = { 0, 0, 0, 0 },
2128 .gpiomute = 0x000003,
2138 /* .audio_inputs= 0, */
2140 .muxsel = MUXSEL(2, 3, 1, 0),
2154 .gpiomask = 0x68,
2156 .gpiomux = { 0x68, 0x68, 0x61, 0x61 },
2160 /* ---- card 0x78 ---------------------------------- */
2168 .gpiomask = 0x008007,
2170 .gpiomux = { 0, 1, 2, 2 },
2182 /*structure and #define BTTV_BOARD_PICOLO_TETRA_CHIP 0x79 in bttv.h*/
2185 /* .audio_inputs= 0, */
2187 .gpiomask = 0,
2188 ….gpiomask2 = 0x3C<<16,/*Set the GPIO[18]->GPIO[21] as output pin.==> drive the video inputs t…
2193 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2206 .gpiomask = 0x0000000f,
2208 .gpiomux = { 0x02, 0x00, 0x00, 0x00 },
2228 /* ---- card 0x7c ---------------------------------- */
2235 .muxsel = MUXSEL(3, 1, 2, 0), /* Comp0, S-Video, ?, ? */
2249 /* .audio_inputs= 0, */
2251 .gpiomask = 0x0,
2254 .gpiomux = { 0 },
2264 /* .audio_inputs= 0, */
2266 .gpiomask = 0x0,
2269 .gpiomux = { 0 },
2278 /* bt878 TV + FM 0x00000000 subsystem ID */
2283 .gpiomask = 0xFF,
2285 .gpiomux = { 2, 0, 0, 0 },
2294 /* ---- card 0x80 ---------------------------------- */
2312 .gpiomask = 0x3f,
2313 .muxsel = MUXSEL(2, 3, 1, 0),
2314 .gpiomux = {0x31, 0x31, 0x31, 0x31 },
2315 .gpiomute = 0x31,
2320 .has_radio = 0,
2328 .muxsel = MUXSEL(2, 3, 1, 0),
2331 .gpiomask = 0x008007,
2332 .gpiomux = { 0, 0x000001,0,0 },
2339 /* .audio_inputs= 0, */
2355 * other 3 chips should use card type 0x85, whose description
2363 /* .audio_inputs= 0, */
2367 /* GPIO bits 0-9 used for analog switch:
2370 * 07: data (1->on, 0->off)
2375 .gpiomask = 0x0003ff,
2392 /* .audio_inputs= 0, */
2396 .gpiomask = 0x010000,
2404 /* ---- card 0x86---------------------------------- */
2412 .muxsel = MUXSEL(2, 3, 1, 0),
2417 /* ---- card 0x87---------------------------------- */
2427 .gpiomask = 0x00e00007,
2428 .gpiomux = { 0x00400005, 0, 0x00000001, 0 },
2429 .gpiomute = 0x00c00007,
2434 /* ---- card 0x88---------------------------------- */
2441 .gpiomask = 0x01fe00,
2443 .gpiomux = { 0x001e00, 0, 0x018000, 0x014000 },
2444 .gpiomute = 0x002000,
2447 .tuner_addr = 0xc1 >>1,
2450 /* ---- card 0x89 ---------------------------------- */
2456 .gpiomask = 0x001c0007,
2458 .gpiomux = { 0, 1, 2, 2 },
2466 /* ---- card 0x8a ---------------------------------- */
2473 .gpiomask = 0x01fe00,
2474 .muxsel = MUXSEL(2, 3, 1, 1, 0), /* in 4 is digital */
2476 .gpiomux = { 0x00400, 0x10400, 0x04400, 0x80000 },
2477 .gpiomute = 0x12400,
2484 /* ---- card 0x8b ---------------------------------- */
2491 .gpiomask = 0x3f,
2493 .gpiomux = { 0x21, 0x20, 0x24, 0x2c },
2494 .gpiomute = 0x29,
2502 /* ---- card 0x8c ---------------------------------- */
2510 (mask=0x300, unbal=0x000, bal=0x100, ??=0x200,0x300)
2511 gain is controlled via an X9221A chip on the I2C bus @0x28
2513 (mask=0x3, 32kHz=0x0, 44.1kHz=0x1, 48kHz=0x2, ??=0x3)
2520 .muxsel = MUXSEL(2, 3, 0, 1), /* 3,0,1 are guesses */
2521 .gpiomask = 0x303,
2522 .gpiomute = 0x000, /* int + 32kHz */
2523 .gpiomux = { 0, 0, 0x000, 0x100},
2530 /* ---- card 0x8d ---------------------------------- */
2538 .gpiomux = { 2, 0, 0, 0 },
2544 /* ---- card 0x8e ---------------------------------- */
2550 .gpiomask = 0x108007,
2560 /* ---- card 0x8f ---------------------------------- */
2564 /* .audio_inputs= 0, */
2566 .gpiomask = 0x0f, /* old: 7 */
2567 .muxsel = MUXSEL(0, 1, 3, 2), /* Composite 0-3 */
2575 * Slightly different from original MachTV definition (0x60)
2577 * FIXME: RegSpy says gpiomask should be "0x001c800f", but it
2587 .gpiomux = { 0, 1, 2, 3 },
2598 /* .audio_inputs= 0, */
2600 .muxsel = MUXSEL(0, 1, 2, 3),
2607 /* .audio_inputs= 0, */
2609 .muxsel = MUXSEL(2, 0, 1, 3),
2613 /* ---- card 0x94---------------------------------- */
2622 .gpiomask = 0x00e00007,
2623 .gpiomux = { 0x00400005, 0, 0x00000001, 0 },
2624 .gpiomute = 0x00c00007,
2628 /* ---- card 0x95---------------------------------- */
2634 .gpiomask = 0x3014f,
2636 .gpiomux = { 0x20001,0x10001, 0, 0 },
2646 /* .audio_inputs= 0, */
2648 .gpiomask = 0x0,
2651 .gpiomux = { 0 },
2665 .gpiomask = 0x008007,
2667 .gpiomux = { 0, 1, 2, 2 }, /* CONTVFMi */
2688 .gpiomask = 0x060040,
2690 .gpiomux = { 0x60000, 0x60000, 0x20000, 0x20000 },
2691 .gpiomute = 0,
2702 /* .audio_inputs= 0, */
2704 .gpiomask = 0x00,
2705 .muxsel = MUXSEL(0, 2, 3, 1),
2706 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2715 /* .audio_inputs= 0, */
2717 .gpiomask = 0x00,
2719 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2728 /* .audio_inputs= 0, */
2730 .gpiomask = 0x00,
2732 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2746 * slaves should use card type 0x9e (following this one).
2756 .gpiomask = 0xf107f,
2780 .gpiomask = 0x00,
2789 .name = "ProVideo PV183", /* 0x9f */
2791 /* .audio_inputs= 0, */
2793 .gpiomask = 0,
2795 .gpiomux = { 0 },
2801 /* ---- card 0xa0---------------------------------- */
2805 .gpiomask = 0xc00ff,
2816 .muxsel = MUXSEL(2, 3, 1, 0),
2834 .muxsel = MUXSEL(2, 3, 1, 0),
2841 /* .audio_inputs= 0, */
2843 .muxsel = MUXSEL(2, 3, 1, 0),
2854 .gpiomask = 0x001c0007,
2856 .gpiomux = { 0, 1, 2, 2 },
2864 /* ---- card 0xa6---------------------------------- */
2869 /* .audio_inputs= 0, */
2900 if (0 != btv->cardid && 0xffffffff != btv->cardid) { in bttv_idcard()
2902 for (type = -1, i = 0; cards[i].id != 0; i++) in bttv_idcard()
2910 btv->cardid & 0xffff, in bttv_idcard()
2911 (btv->cardid >> 16) & 0xffff); in bttv_idcard()
2916 btv->c.nr, btv->cardid & 0xffff, in bttv_idcard()
2917 (btv->cardid >> 16) & 0xffff); in bttv_idcard()
2933 if (UNSET == audioall && UNSET == audiomux[0]) in bttv_idcard()
2936 if (UNSET != audiomux[0]) { in bttv_idcard()
2937 gpiobits = 0; in bttv_idcard()
2938 for (i = 0; i < ARRAY_SIZE(bttv_tvcards->gpiomux); i++) { in bttv_idcard()
2944 for (i = 0; i < ARRAY_SIZE(bttv_tvcards->gpiomux); i++) { in bttv_idcard()
2949 pr_info("%d: gpio config override: mask=0x%x, mux=", in bttv_idcard()
2951 for (i = 0; i < ARRAY_SIZE(bttv_tvcards->gpiomux); i++) { in bttv_idcard()
2967 if (0 == strncmp(eeprom_data,"GET MM20xPCTV",13)) in identify_by_eeprom()
2969 else if (0 == strncmp(eeprom_data+20,"Picolo",7)) in identify_by_eeprom()
2971 else if (eeprom_data[0] == 0x84 && eeprom_data[2]== 0) in identify_by_eeprom()
2987 gpio_inout(0xffffff, 0); in flyvideo_gpio()
2988 udelay(8); /* without this we would see the 0x1800 mask */ in flyvideo_gpio()
3003 ttype = (gpio & 0x0f0000) >> 16; in flyvideo_gpio()
3005 case 0x0: in flyvideo_gpio()
3008 case 0x2: in flyvideo_gpio()
3011 case 0x4: in flyvideo_gpio()
3014 case 0x6: in flyvideo_gpio()
3017 case 0xC: in flyvideo_gpio()
3025 has_remote = gpio & 0x800000; in flyvideo_gpio()
3026 has_radio = gpio & 0x400000; in flyvideo_gpio()
3027 /* unknown 0x200000; in flyvideo_gpio()
3028 * unknown2 0x100000; */ in flyvideo_gpio()
3029 is_capture_only = !(gpio & 0x008000); /* GPIO15 */ in flyvideo_gpio()
3030 has_tda9820_tda9821 = !(gpio & 0x004000); in flyvideo_gpio()
3031 is_lr90 = !(gpio & 0x002000); /* else LR26/LR50 (LR38/LR51 f. capture only) */ in flyvideo_gpio()
3033 * gpio & 0x001000 output bit for audio routing */ in flyvideo_gpio()
3038 pr_info("%d: FlyVideo Radio=%s RemoteControl=%s Tuner=%d gpio=0x%06x\n", in flyvideo_gpio()
3050 /* LR90 Audio Routing is done by 2 hef4052, so Audio_Mask has 4 bits: 0x001c80 in flyvideo_gpio()
3051 * LR26/LR50 only has 1 hef4052, Audio_Mask 0x000c00 in flyvideo_gpio()
3058 static int miro_tunermap[] = { 0,6,2,3, 4,5,6,0, 3,0,4,5, 5,2,16,1,
3060 static int miro_fmtuner[] = { 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1,
3061 1,1,1,1, 1,1,1,0, 0,0,0,0, 0,1,0,0 };
3068 gpio_inout(0xffffff, 0); in miro_pinnacle_gpio()
3074 if (0 == (gpio & 0x20)) { in miro_pinnacle_gpio()
3085 btv->has_radio = 0; in miro_pinnacle_gpio()
3101 btv->has_radio = 0; in miro_pinnacle_gpio()
3146 #define LM1882_SYNC_DRIVE 0x200000L
3150 gpio_inout(0xffffff,0xFFFF37); in init_ids_eagle()
3151 gpio_write(0x200020); in init_ids_eagle()
3154 gpio_write(0x200024); in init_ids_eagle()
3183 static const int masks[] = {0x30, 0x01, 0x12, 0x23}; in gvc1100_muxsel()
3190 GPIObit | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
3196 OUT ENABLE 1 1 0 . 1 1 0 0 . 0 0 0 0 = 0x6C0
3203 btwrite(0x000000, BT848_GPIO_REG_INP); in init_lmlbt4x()
3204 gpio_inout(0xffffff, 0x0006C0); in init_lmlbt4x()
3205 gpio_write(0x000000); in init_lmlbt4x()
3211 gpio_inout( 0xf, 0xf ); in sigmaSQ_muxsel()
3212 gpio_bits( 0xf, inmux ); in sigmaSQ_muxsel()
3225 gpio_inout(0xf, 0xf); in geovision_muxsel()
3226 gpio_bits(0xf, inmux); in geovision_muxsel()
3233 * GPIOs 0-7. GPIO 18 is connected to the LE signal of the latch.
3241 gpio_bits((1<<18) | 0xff, value); in td3116_latch_value()
3242 gpio_bits((1<<18) | 0xff, (1<<18) | value); in td3116_latch_value()
3244 gpio_bits((1<<18) | 0xff, value); in td3116_latch_value()
3252 highbit = (input & 0x8) >> 3 ; in td3116_muxsel()
3255 value = 0x11; /* Disable outputs */ in td3116_muxsel()
3256 value |= ((input & 0x7) << 1) << (4 * highbit); in td3116_muxsel()
3260 value &= ~0x11; in td3116_muxsel()
3261 value |= ((highbit ^ 0x1) << 4) | highbit; in td3116_muxsel()
3272 * function-0 (video capture) address space. in bttv_reset_audio()
3275 * 0x5B, but at 0x058. (B is an odd-number, obviously a typo!). in bttv_reset_audio()
3283 btwrite((1<<7), 0x058); in bttv_reset_audio()
3285 btwrite( 0, 0x058); in bttv_reset_audio()
3329 bttv_readee(btv,eeprom_data,0xa0); in bttv_init_card2()
3358 bttv_readee(btv,eeprom_data,0xa0); in bttv_init_card2()
3363 bttv_readee(btv,eeprom_data,0xa0); in bttv_init_card2()
3386 if (btv->cardid == 0x3002144f) { in bttv_init_card2()
3393 if (btv->cardid == 0x3060121a) { in bttv_init_card2()
3396 btv->has_radio=0; in bttv_init_card2()
3412 bttv_readee(btv,eeprom_data,0xa0); in bttv_init_card2()
3419 bttv_readee(btv,eeprom_data,0xa0); in bttv_init_card2()
3437 if (!(btv->id==848 && btv->revision==0x11)) { in bttv_init_card2()
3453 case 0: /* none */ in bttv_init_card2()
3454 btv->pll.pll_crystal = 0; in bttv_init_card2()
3455 btv->pll.pll_ifreq = 0; in bttv_init_card2()
3456 btv->pll.pll_ofreq = 0; in bttv_init_card2()
3461 btv->pll.pll_ofreq = 0; in bttv_init_card2()
3467 btv->pll.pll_ofreq = 0; in bttv_init_card2()
3473 btv->pll.pll_ofreq = 0; in bttv_init_card2()
3529 0x20 >> 1, in bttv_init_card2()
3530 0x22 >> 1, in bttv_init_card2()
3536 &btv->c.i2c_adap, "saa6588", 0, addrs); in bttv_init_card2()
3549 case 0: /* autodetect */ in bttv_init_card2()
3561 &btv->c.i2c_adap, "msp3400", 0, addrs); in bttv_init_card2()
3575 &btv->c.i2c_adap, "tda7432", 0, addrs)) in bttv_init_card2()
3583 &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs()); in bttv_init_card2()
3603 0, I2C_ADDRS(I2C_ADDR_MSP3400 >> 1)); in bttv_init_card2()
3607 0, I2C_ADDRS(I2C_ADDR_MSP3400_ALT >> 1)); in bttv_init_card2()
3616 &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs()); in bttv_init_card2()
3621 &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs()); in bttv_init_card2()
3632 &btv->c.i2c_adap, "tda7432", 0, addrs); in bttv_init_card2()
3659 0, v4l2_i2c_tuner_addrs(ADDRS_RADIO)); in bttv_init_tuner()
3662 0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD)); in bttv_init_tuner()
3665 0, v4l2_i2c_tuner_addrs(ADDRS_TV_WITH_DEMOD)); in bttv_init_tuner()
3691 if( strncmp(&(eeprom_data[0x1e]),"Temic 4066 FY5",14) ==0) { in modtec_eeprom()
3694 btv->c.nr, &eeprom_data[0x1e]); in modtec_eeprom()
3695 } else if (strncmp(&(eeprom_data[0x1e]),"Alps TSBB5",10) ==0) { in modtec_eeprom()
3698 btv->c.nr, &eeprom_data[0x1e]); in modtec_eeprom()
3699 } else if (strncmp(&(eeprom_data[0x1e]),"Philips FM1246",14) ==0) { in modtec_eeprom()
3702 btv->c.nr, &eeprom_data[0x1e]); in modtec_eeprom()
3705 btv->c.nr, &eeprom_data[0x1e]); in modtec_eeprom()
3743 u16 val = 0; in bttv_tea575x_set_pins()
3745 val |= (pins & TEA575X_DATA) ? (1 << gpio.data) : 0; in bttv_tea575x_set_pins()
3746 val |= (pins & TEA575X_CLK) ? (1 << gpio.clk) : 0; in bttv_tea575x_set_pins()
3747 val |= (pins & TEA575X_WREN) ? (1 << gpio.wren) : 0; in bttv_tea575x_set_pins()
3752 gpio_bits(btv->mbox_iow | btv->mbox_csel, 0); in bttv_tea575x_set_pins()
3764 u8 ret = 0; in bttv_tea575x_get_pins()
3769 gpio_bits(btv->mbox_ior | btv->mbox_csel, 0); in bttv_tea575x_get_pins()
3814 return 0; in tea575x_init()
3817 btv->has_tea575x = 0; in tea575x_init()
3818 btv->has_radio = 0; in tea575x_init()
3843 return 0; in terratec_active_radio_upgrade()
3858 #define BTTV_ALT_DATA 0x000001
3859 #define BTTV_ALT_DCLK 0x100000
3860 #define BTTV_ALT_NCONFIG 0x800000
3868 gpio_inout(0xffffff,BTTV_ALT_DATA|BTTV_ALT_DCLK|BTTV_ALT_NCONFIG); in pvr_altera_load()
3869 gpio_write(0); in pvr_altera_load()
3875 for (n = 0; n < microlen; n++) { in pvr_altera_load()
3877 for (i = 0 ; i < 8 ; i++) { in pvr_altera_load()
3878 gpio_bits(BTTV_ALT_DCLK,0); in pvr_altera_load()
3879 if (bits & 0x01) in pvr_altera_load()
3882 gpio_bits(BTTV_ALT_DATA,0); in pvr_altera_load()
3887 gpio_bits(BTTV_ALT_DCLK,0); in pvr_altera_load()
3891 for (i = 0 ; i < 30 ; i++) { in pvr_altera_load()
3892 gpio_bits(BTTV_ALT_DCLK,0); in pvr_altera_load()
3895 gpio_bits(BTTV_ALT_DCLK,0); in pvr_altera_load()
3896 return 0; in pvr_altera_load()
3905 if (rc != 0) { in pvr_boot()
3911 btv->c.nr, (rc < 0) ? "failed" : "ok"); in pvr_boot()
3922 u32 serial = 0; in osprey_eeprom()
3929 u8 checksum = 0; in osprey_eeprom()
3930 for (i = 0; i < 21; i++) in osprey_eeprom()
3937 serial += ee[i] - '0'; in osprey_eeprom()
3946 if ((checksum & 0xff) + (checksum >> 8) == 0xff) in osprey_eeprom()
3958 case 0x0004: in osprey_eeprom()
3961 case 0x0005: in osprey_eeprom()
3966 case 0x0012: in osprey_eeprom()
3967 case 0x0013: in osprey_eeprom()
3970 case 0x0014: in osprey_eeprom()
3971 case 0x0015: in osprey_eeprom()
3974 case 0x0016: in osprey_eeprom()
3975 case 0x0017: in osprey_eeprom()
3976 case 0x0020: in osprey_eeprom()
3979 case 0x0018: in osprey_eeprom()
3980 case 0x0019: in osprey_eeprom()
3981 case 0x001E: in osprey_eeprom()
3982 case 0x001F: in osprey_eeprom()
3985 case 0x001A: in osprey_eeprom()
3986 case 0x001B: in osprey_eeprom()
3989 case 0x0040: in osprey_eeprom()
3992 case 0x0050: in osprey_eeprom()
3993 case 0x0056: in osprey_eeprom()
3997 case 0x0060: in osprey_eeprom()
3998 case 0x0070: in osprey_eeprom()
3999 case 0x00A0: in osprey_eeprom()
4002 gpio_inout(0xffffff,0x000303); in osprey_eeprom()
4004 case 0x00D8: in osprey_eeprom()
4009 pr_info("%d: osprey eeprom: unknown card type 0x%04x\n", in osprey_eeprom()
4018 cardid > 0 ? bttv_tvcards[cardid].name : "Unknown", serial); in osprey_eeprom()
4020 if (cardid<0 || btv->c.type == cardid) in osprey_eeprom()
4054 int tuner_make, tuner_tv_fm, tuner_format, tuner_type = 0; in avermedia_eeprom()
4056 tuner_make = (eeprom_data[0x41] & 0x7); in avermedia_eeprom()
4057 tuner_tv_fm = (eeprom_data[0x41] & 0x18) >> 3; in avermedia_eeprom()
4058 tuner_format = (eeprom_data[0x42] & 0xf0) >> 4; in avermedia_eeprom()
4059 btv->has_remote = (eeprom_data[0x42] & 0x01); in avermedia_eeprom()
4061 if (tuner_make == 0 || tuner_make == 2) in avermedia_eeprom()
4062 if (tuner_format <= 0x0a) in avermedia_eeprom()
4069 if (tuner_format == 0x09) in avermedia_eeprom()
4072 pr_info("%d: Avermedia eeprom[0x%02x%02x]: tuner=", in avermedia_eeprom()
4073 btv->c.nr, eeprom_data[0x41], eeprom_data[0x42]); in avermedia_eeprom()
4089 * 0x10000 is connected to S0. S0 low selects a 38.9 MHz VIF for B/G/D/K/I
4097 gpiobits |= 0x10000; in bttv_tda9880_setnorm()
4099 gpiobits &= ~0x10000; in bttv_tda9880_setnorm()
4119 gpio_bits(mask,0); in boot_msp34xx()
4139 static int vals[] = { 0x08, 0x09, 0x0a, 0x0b, 0x0d, 0x0d, 0x01, 0x02, in init_PXC200()
4140 0x03, 0x04, 0x05, 0x06, 0x00 }; in init_PXC200()
4146 gpio_inout(0xffffff, (1<<13)); in init_PXC200()
4147 gpio_write(0); in init_PXC200()
4152 gpio_bits(0xffffff, 0); in init_PXC200()
4168 bttv_I2CWrite(btv,0x5E,0,0x80,1); in init_PXC200()
4183 /* Then, push to 0 the reset pin long enough to reset the * in init_PXC200()
4187 gpio_inout(0xffffff,(1<<2)); in init_PXC200()
4188 gpio_write(0); in init_PXC200()
4192 for (i = 0; i < ARRAY_SIZE(vals); i++) { in init_PXC200()
4193 tmp=bttv_I2CWrite(btv,0x1E,0,vals[i],1); in init_PXC200()
4196 vals[i],tmp,bttv_I2CRead(btv,0x1F,NULL)); in init_PXC200()
4210 * 1) write 0x00C3FEFF to the GPIO_OUT_EN register
4213 * - 0x0E
4215 * - 0x10 + 0x0E
4217 * - 0x0E
4219 * - if ( data>>18 & 0x01 != 0) || ( buf>>19 & 0x01 != 1 )
4223 * - write 0x4400 + 0x0E
4225 * - write 0x4410 + 0x0E
4227 * - write 0x0E
4229 * - if ( buf>>18 & 0x01 ) || ( buf>>19 & 0x01 != 0 )
4236 uint32_t dataRead = 0; in init_RTV24()
4237 long watchdog_value = 0x0E; in init_RTV24()
4242 btwrite (0x00c3feff, BT848_GPIO_OUT_EN); in init_RTV24()
4244 btwrite (0 + watchdog_value, BT848_GPIO_DATA); in init_RTV24()
4246 btwrite (0x10 + watchdog_value, BT848_GPIO_DATA); in init_RTV24()
4248 btwrite (0 + watchdog_value, BT848_GPIO_DATA); in init_RTV24()
4252 if ((((dataRead >> 18) & 0x01) != 0) || (((dataRead >> 19) & 0x01) != 1)) { in init_RTV24()
4257 btwrite (0x4400 + watchdog_value, BT848_GPIO_DATA); in init_RTV24()
4259 btwrite (0x4410 + watchdog_value, BT848_GPIO_DATA); in init_RTV24()
4265 if ((((dataRead >> 18) & 0x01) != 0) || (((dataRead >> 19) & 0x01) != 0)) { in init_RTV24()
4283 * CPLD is connected to most of the GPIOs of PCI device 0xD, only
4288 * Eight GPIOs of device 0xC are provided on connector CN4 (4 in, 4 out).
4289 * Devices 0xE and 0xF do not appear to have anything connected to their
4303 if ((PCI_SLOT(btv->c.pci->devfn) & ~3) != 0xC) { in init_PCI8604PW()
4308 if (PCI_SLOT(btv->c.pci->devfn) != 0xD) in init_PCI8604PW()
4311 btwrite(0x080002, BT848_GPIO_OUT_EN); in init_PCI8604PW()
4323 btwrite(0x080000, BT848_GPIO_DATA); in init_PCI8604PW()
4325 btwrite(0x000000, BT848_GPIO_DATA); in init_PCI8604PW()
4331 case 0: in init_PCI8604PW()
4333 more time, the CPLD goes into state 0, where PCI bus in init_PCI8604PW()
4347 case 0x15: in init_PCI8604PW()
4348 case 0x56: in init_PCI8604PW()
4349 case 0x64: in init_PCI8604PW()
4350 case 0x47: in init_PCI8604PW()
4351 /* The transition from state 7 to state 0 is, as explained in init_PCI8604PW()
4354 case 0x70: */ in init_PCI8604PW()
4374 * GPIO[0:3] - AX[0:3] (xpoint) - P1[0:3] (microcontroller)
4375 * GPIO[4:6] - AY[0:2] (xpoint) - P1[4:6] (microcontroller)
4391 static const u8 muxgpio[] = { 0x3, 0x1, 0x2, 0x4, 0xf, 0x7, 0xe, 0x0, in rv605_muxsel()
4392 0xd, 0xb, 0xc, 0x6, 0x9, 0x5, 0x8, 0xa }; in rv605_muxsel()
4394 gpio_bits(0x07f, muxgpio[input]); in rv605_muxsel()
4397 gpio_bits(0x200,0x200); in rv605_muxsel()
4399 gpio_bits(0x200,0x000); in rv605_muxsel()
4403 gpio_bits(0x480,0x480); in rv605_muxsel()
4405 gpio_bits(0x480,0x080); in rv605_muxsel()
4429 * GPIO[0:3] - Video output monitor select (only available from one 878A)
4440 gpio_bits(0x0f0000, input << 16); in tibetCS16_muxsel()
4446 gpio_inout(0xffffff, 0x0f7fff); in tibetCS16_init()
4447 gpio_write(0x0f7fff); in tibetCS16_init()
4461 * is {3, 0, 2, 1}, i.e. the first controller to be detected is logical
4462 * unit 3, the second (which is the master) is logical unit 0, etc.
4470 * (gpio bits 0-3, representing the camera, ranging from 0-15), and a
4471 * Y-address (gpio bits 4-6, representing the controller, ranging from 0-3).
4472 * A data value (gpio bit 7) of '1' enables the switch, and '0' disables
4483 udata = (data << 7) | ((yaddr&3) << 4) | (xaddr&0xf); in kodicom4400r_write()
4484 gpio_bits(0x1ff, udata); /* write ADDR and DAT */ in kodicom4400r_write()
4485 gpio_bits(0x1ff, udata | (1 << 8)); /* strobe high */ in kodicom4400r_write()
4486 gpio_bits(0x1ff, udata); /* strobe low */ in kodicom4400r_write()
4495 * requested camera number (0 - 15).
4501 static unsigned char map[4] = {3, 0, 2, 1}; in kodicom4400r_muxsel()
4509 xaddr = input & 0xf; in kodicom4400r_muxsel()
4514 kodicom4400r_write(mctlr, mctlr->sw_status[yaddr], yaddr, 0); in kodicom4400r_muxsel()
4524 * 0 through 3
4530 gpio_inout(0x0003ff, 0x0003ff); in kodicom4400r_init()
4532 gpio_write(0); in kodicom4400r_init()
4533 /* Preset camera 0 to the 4 controllers */ in kodicom4400r_init()
4534 for (ix = 0; ix < 4; ix++) { in kodicom4400r_init()
4559 #define ENA0 0x01
4560 #define ENB0 0x02
4561 #define ENA1 0x04
4562 #define ENB1 0x08
4564 #define IN10 0x10
4565 #define IN00 0x20
4566 #define IN11 0x40
4567 #define IN01 0x80
4582 btwrite (0x08<<16,BT848_GPIO_DATA);/*GPIO[19] [==> 4053 B+C] set to 1 */ in picolo_tetra_init()
4583 btwrite (0x04<<16,BT848_GPIO_DATA);/*GPIO[18] [==> 4053 A] set to 1*/ in picolo_tetra_init()
4608 * OUT0 of the TDA8540's is connected to MUX0 (0x03)
4609 * OUT1 of the TDA8540's is connected to "Monitor Out" (0x0C)
4611 * TDA8540_ALT3 IN0-3 = Channel 13 - 16 (0x03)
4612 * TDA8540_ALT4 IN0-3 = Channel 1 - 4 (0x03)
4613 * TDA8540_ALT5 IN0-3 = Channel 5 - 8 (0x03)
4614 * TDA8540_ALT6 IN0-3 = Channel 9 - 12 (0x03)
4619 #define I2C_TDA8540 0x90
4620 #define I2C_TDA8540_ALT1 0x92
4621 #define I2C_TDA8540_ALT2 0x94
4622 #define I2C_TDA8540_ALT3 0x96
4623 #define I2C_TDA8540_ALT4 0x98
4624 #define I2C_TDA8540_ALT5 0x9a
4625 #define I2C_TDA8540_ALT6 0x9c
4637 bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x00, in ivc120_muxsel()
4638 ((matrix == 3) ? (key | key << 2) : 0x00), 1); in ivc120_muxsel()
4639 bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x00, in ivc120_muxsel()
4640 ((matrix == 0) ? (key | key << 2) : 0x00), 1); in ivc120_muxsel()
4641 bttv_I2CWrite(btv, I2C_TDA8540_ALT5, 0x00, in ivc120_muxsel()
4642 ((matrix == 1) ? (key | key << 2) : 0x00), 1); in ivc120_muxsel()
4643 bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x00, in ivc120_muxsel()
4644 ((matrix == 2) ? (key | key << 2) : 0x00), 1); in ivc120_muxsel()
4647 bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x02, in ivc120_muxsel()
4648 ((matrix == 3) ? 0x03 : 0x00), 1); /* 13 - 16 */ in ivc120_muxsel()
4649 bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x02, in ivc120_muxsel()
4650 ((matrix == 0) ? 0x03 : 0x00), 1); /* 1-4 */ in ivc120_muxsel()
4651 bttv_I2CWrite(btv, I2C_TDA8540_ALT5, 0x02, in ivc120_muxsel()
4652 ((matrix == 1) ? 0x03 : 0x00), 1); /* 5-8 */ in ivc120_muxsel()
4653 bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x02, in ivc120_muxsel()
4654 ((matrix == 2) ? 0x03 : 0x00), 1); /* 9-12 */ in ivc120_muxsel()
4671 #define PX_CFG_PXC200F 0x01
4672 #define PX_FLAG_PXC200A 0x00001000 /* a pxc200A is bt-878 based */
4673 #define PX_I2C_PIC 0x0f
4674 #define PX_PXC200A_CARDID 0x200a1295
4675 #define PX_I2C_CMD_CFG 0x00
4686 buf[0]=0; in PXC200_muxsel()
4687 buf[1]=0; in PXC200_muxsel()
4688 rc=bttv_I2CWrite(btv,(PX_I2C_PIC<<1),buf[0],buf[1],1); in PXC200_muxsel()
4711 /* bitmask=0x30f; */ in PXC200_muxsel()
4712 bitmask=0x302; in PXC200_muxsel()
4715 bitmask ^= 0x180; /* use 7 and 9, not 8 and 9 */ in PXC200_muxsel()
4722 bitmask = (bitmask & ~0x280) | ((mux & 2) << 8) | ((mux & 1) << 7); in PXC200_muxsel()
4724 bitmask = (bitmask & ~0x300) | ((mux & 3) << 8); in PXC200_muxsel()
4728 * Was "to be safe, set the bt848 to input 0" in PXC200_muxsel()
4747 mux = 0; in phytec_muxsel()
4749 gpio_bits(0x3, mux); in phytec_muxsel()
4759 * (gpio bits 0-3, representing the camera, ranging from 0-15), and a
4760 * Y-address (gpio bits 4-6, representing the controller, ranging from 0-3).
4761 * A data value (gpio bit 18) of '1' enables the switch, and '0' disables
4772 * GPIO bits 0-9 are used for the analog switch: in gv800s_write()
4777 * 18: data (1->on, 0->off) in gv800s_write()
4780 const u32 ADDRESS = ((xaddr&0xf) | (yaddr&3)<<4); in gv800s_write()
4785 gpio_bits(0x1007f, ADDRESS | CSELECT); /* write ADDRESS and CSELECT */ in gv800s_write()
4786 gpio_bits(0x20000, STROBE); /* STROBE high */ in gv800s_write()
4787 gpio_bits(0x40000, DATA); /* write DATA */ in gv800s_write()
4788 gpio_bits(0x20000, ~STROBE); /* STROBE low */ in gv800s_write()
4798 * The parameter 'input' is the requested camera number (0-4) on the controller.
4801 * every controller to input 0, then to input 1, 2, 3, repeat. This means that
4802 * the physical "camera 1" connector corresponds to controller 0 input 0,
4803 * "camera 2" corresponds to controller 1 input 0, and so on.
4813 static unsigned int map[4][4] = { { 0x0, 0x4, 0xa, 0x6 }, in gv800s_muxsel()
4814 { 0x1, 0x5, 0xb, 0x7 }, in gv800s_muxsel()
4815 { 0x2, 0x8, 0xc, 0xe }, in gv800s_muxsel()
4816 { 0x3, 0x9, 0xd, 0xf } }; in gv800s_muxsel()
4824 xaddr = map[yaddr][input] & 0xf; in gv800s_muxsel()
4829 gv800s_write(mctlr, mctlr->sw_status[yaddr], yaddr, 0); in gv800s_muxsel()
4840 gpio_inout(0xf107f, 0xf107f); in gv800s_init()
4842 gpio_write(0); in gv800s_init()
4844 /* Preset camera 0 to the 4 controllers */ in gv800s_init()
4845 for (ix = 0; ix < 4; ix++) { in gv800s_init()
4851 bttv_I2CWrite(btv, 0x18, 0x5, 0x90, 1); in gv800s_init()
4878 latency = 0x0A; in bttv_check_chipset()
4892 pci_read_config_byte(dev, 0x53, &b); in bttv_check_chipset()
4894 pr_info("Host bridge: 82441FX Natoma, bufcon=0x%02x\n", in bttv_check_chipset()
4904 return 0; in bttv_handle_chipset()
4932 return 0; in bttv_handle_chipset()