blob: 88b71a20b602fa79985914735653766c0fbc37e9 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002 * $Id: saa7134-cards.c,v 1.80 2005/07/07 01:49:30 mkrufky Exp $
Linus Torvalds1da177e2005-04-16 15:20:36 -07003 *
4 * device driver for philips saa7134 based TV cards
5 * card-specific stuff.
6 *
7 * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 */
23
24#include <linux/init.h>
25#include <linux/module.h>
26
27#include "saa7134-reg.h"
28#include "saa7134.h"
29
30/* commly used strings */
31static char name_mute[] = "mute";
32static char name_radio[] = "Radio";
33static char name_tv[] = "Television";
34static char name_tv_mono[] = "TV (mono only)";
35static char name_comp1[] = "Composite1";
36static char name_comp2[] = "Composite2";
37static char name_comp3[] = "Composite3";
38static char name_comp4[] = "Composite4";
39static char name_svideo[] = "S-Video";
40
41/* ------------------------------------------------------------------ */
42/* board config info */
43
44struct saa7134_board saa7134_boards[] = {
45 [SAA7134_BOARD_UNKNOWN] = {
46 .name = "UNKNOWN/GENERIC",
47 .audio_clock = 0x00187de7,
48 .tuner_type = TUNER_ABSENT,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -070049 .radio_type = UNSET,
50 .tuner_addr = ADDR_UNSET,
51 .radio_addr = ADDR_UNSET,
52
Linus Torvalds1da177e2005-04-16 15:20:36 -070053 .inputs = {{
54 .name = "default",
55 .vmux = 0,
56 .amux = LINE1,
57 }},
58 },
59 [SAA7134_BOARD_PROTEUS_PRO] = {
60 /* /me */
61 .name = "Proteus Pro [philips reference design]",
62 .audio_clock = 0x00187de7,
63 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -070064 .radio_type = UNSET,
65 .tuner_addr = ADDR_UNSET,
66 .radio_addr = ADDR_UNSET,
67
Linus Torvalds1da177e2005-04-16 15:20:36 -070068 .inputs = {{
69 .name = name_comp1,
70 .vmux = 0,
71 .amux = LINE1,
72 },{
73 .name = name_tv,
74 .vmux = 1,
75 .amux = TV,
76 .tv = 1,
77 },{
78 .name = name_tv_mono,
79 .vmux = 1,
80 .amux = LINE2,
81 .tv = 1,
82 }},
83 .radio = {
84 .name = name_radio,
85 .amux = LINE2,
86 },
87 },
88 [SAA7134_BOARD_FLYVIDEO3000] = {
89 /* "Marco d'Itri" <md@Linux.IT> */
90 .name = "LifeView FlyVIDEO3000",
91 .audio_clock = 0x00200000,
92 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -070093 .radio_type = UNSET,
94 .tuner_addr = ADDR_UNSET,
95 .radio_addr = ADDR_UNSET,
96
Linus Torvalds1da177e2005-04-16 15:20:36 -070097 .gpiomask = 0xe000,
98 .inputs = {{
99 .name = name_tv,
100 .vmux = 1,
101 .amux = TV,
102 .gpio = 0x8000,
103 .tv = 1,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700104 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -0700105 .name = name_tv_mono,
106 .vmux = 1,
107 .amux = LINE2,
108 .gpio = 0x0000,
109 .tv = 1,
110 },{
111 .name = name_comp1,
112 .vmux = 0,
113 .amux = LINE2,
114 .gpio = 0x4000,
115 },{
116 .name = name_comp2,
117 .vmux = 3,
118 .amux = LINE2,
119 .gpio = 0x4000,
120 },{
121 .name = name_svideo,
122 .vmux = 8,
123 .amux = LINE2,
124 .gpio = 0x4000,
125 }},
126 .radio = {
127 .name = name_radio,
128 .amux = LINE2,
129 .gpio = 0x2000,
130 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700131 .mute = {
132 .name = name_mute,
133 .amux = TV,
134 .gpio = 0x8000,
135 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700136 },
137 [SAA7134_BOARD_FLYVIDEO2000] = {
138 /* "TC Wan" <tcwan@cs.usm.my> */
139 .name = "LifeView FlyVIDEO2000",
140 .audio_clock = 0x00200000,
141 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700142 .radio_type = UNSET,
143 .tuner_addr = ADDR_UNSET,
144 .radio_addr = ADDR_UNSET,
145
Linus Torvalds1da177e2005-04-16 15:20:36 -0700146 .gpiomask = 0xe000,
147 .inputs = {{
148 .name = name_tv,
149 .vmux = 1,
150 .amux = LINE2,
151 .gpio = 0x0000,
152 .tv = 1,
153 },{
154 .name = name_comp1,
155 .vmux = 0,
156 .amux = LINE2,
157 .gpio = 0x4000,
158 },{
159 .name = name_comp2,
160 .vmux = 3,
161 .amux = LINE2,
162 .gpio = 0x4000,
163 },{
164 .name = name_svideo,
165 .vmux = 8,
166 .amux = LINE2,
167 .gpio = 0x4000,
168 }},
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700169 .radio = {
170 .name = name_radio,
171 .amux = LINE2,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700172 .gpio = 0x2000,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700173 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700174 .mute = {
175 .name = name_mute,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700176 .amux = LINE2,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700177 .gpio = 0x8000,
178 },
179 },
180 [SAA7134_BOARD_FLYTVPLATINUM_MINI] = {
181 /* "Arnaud Quette" <aquette@free.fr> */
182 .name = "LifeView FlyTV Platinum Mini",
183 .audio_clock = 0x00200000,
184 .tuner_type = TUNER_PHILIPS_TDA8290,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700185 .radio_type = UNSET,
186 .tuner_addr = ADDR_UNSET,
187 .radio_addr = ADDR_UNSET,
188
Linus Torvalds1da177e2005-04-16 15:20:36 -0700189 .inputs = {{
190 .name = name_tv,
191 .vmux = 1,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -0700192 .amux = TV,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700193 .tv = 1,
194 },{
195 .name = name_comp1,
196 .vmux = 0,
197 .amux = LINE2,
198 },{
199 .name = name_svideo,
200 .vmux = 8,
201 .amux = LINE2,
202 }},
203 },
204 [SAA7134_BOARD_FLYTVPLATINUM_FM] = {
205 /* LifeView FlyTV Platinum FM (LR214WF) */
206 /* "Peter Missel <peter.missel@onlinehome.de> */
207 .name = "LifeView FlyTV Platinum FM",
208 .audio_clock = 0x00200000,
209 .tuner_type = TUNER_PHILIPS_TDA8290,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700210 .radio_type = UNSET,
211 .tuner_addr = ADDR_UNSET,
212 .radio_addr = ADDR_UNSET,
213
Peter Missel6c9e7372005-05-01 08:59:05 -0700214 .gpiomask = 0x1E000, /* Set GP16 and unused 15,14,13 to Output */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700215 .inputs = {{
216 .name = name_tv,
217 .vmux = 1,
218 .amux = TV,
Peter Missel6c9e7372005-05-01 08:59:05 -0700219 .gpio = 0x10000, /* GP16=1 selects TV input */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700220 .tv = 1,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700221 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -0700222/* .name = name_tv_mono,
223 .vmux = 1,
224 .amux = LINE2,
225 .gpio = 0x0000,
226 .tv = 1,
227 },{
228*/ .name = name_comp1, /* Composite signal on S-Video input */
229 .vmux = 0,
230 .amux = LINE2,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700231/* .gpio = 0x4000, */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700232 },{
233 .name = name_comp2, /* Composite input */
234 .vmux = 3,
235 .amux = LINE2,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700236/* .gpio = 0x4000, */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700237 },{
238 .name = name_svideo, /* S-Video signal on S-Video input */
239 .vmux = 8,
240 .amux = LINE2,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700241/* .gpio = 0x4000, */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700242 }},
Peter Missel6c9e7372005-05-01 08:59:05 -0700243 .radio = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700244 .name = name_radio,
Peter Missel6c9e7372005-05-01 08:59:05 -0700245 .amux = TV,
246 .gpio = 0x00000, /* GP16=0 selects FM radio antenna */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700247 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700248 .mute = {
249 .name = name_mute,
250 .amux = TV,
251 .gpio = 0x10000,
252 },
Peter Missel6c9e7372005-05-01 08:59:05 -0700253 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700254 [SAA7134_BOARD_EMPRESS] = {
255 /* "Gert Vervoort" <gert.vervoort@philips.com> */
256 .name = "EMPRESS",
257 .audio_clock = 0x00187de7,
258 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700259 .radio_type = UNSET,
260 .tuner_addr = ADDR_UNSET,
261 .radio_addr = ADDR_UNSET,
262
Linus Torvalds1da177e2005-04-16 15:20:36 -0700263 .inputs = {{
264 .name = name_comp1,
265 .vmux = 0,
266 .amux = LINE1,
267 },{
268 .name = name_svideo,
269 .vmux = 8,
270 .amux = LINE1,
271 },{
272 .name = name_tv,
273 .vmux = 1,
274 .amux = LINE2,
275 .tv = 1,
276 }},
277 .radio = {
278 .name = name_radio,
279 .amux = LINE2,
280 },
281 .mpeg = SAA7134_MPEG_EMPRESS,
282 .video_out = CCIR656,
283 },
284 [SAA7134_BOARD_MONSTERTV] = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700285 /* "K.Ohta" <alpha292@bremen.or.jp> */
286 .name = "SKNet Monster TV",
287 .audio_clock = 0x00187de7,
288 .tuner_type = TUNER_PHILIPS_NTSC_M,
289 .radio_type = UNSET,
290 .tuner_addr = ADDR_UNSET,
291 .radio_addr = ADDR_UNSET,
292
293 .inputs = {{
294 .name = name_tv,
295 .vmux = 1,
296 .amux = TV,
297 .tv = 1,
298 },{
299 .name = name_comp1,
300 .vmux = 0,
301 .amux = LINE1,
302 },{
303 .name = name_svideo,
304 .vmux = 8,
305 .amux = LINE1,
306 }},
307 .radio = {
308 .name = name_radio,
309 .amux = LINE2,
310 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700311 },
312 [SAA7134_BOARD_MD9717] = {
313 .name = "Tevion MD 9717",
314 .audio_clock = 0x00200000,
315 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700316 .radio_type = UNSET,
317 .tuner_addr = ADDR_UNSET,
318 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700319 .inputs = {{
320 .name = name_tv,
321 .vmux = 1,
322 .amux = TV,
323 .tv = 1,
324 },{
325 /* workaround for problems with normal TV sound */
326 .name = name_tv_mono,
327 .vmux = 1,
328 .amux = LINE2,
329 .tv = 1,
330 },{
331 .name = name_comp1,
332 .vmux = 2,
333 .amux = LINE1,
334 },{
335 .name = name_comp2,
336 .vmux = 3,
337 .amux = LINE1,
338 },{
339 .name = name_svideo,
340 .vmux = 8,
341 .amux = LINE1,
342 }},
343 .radio = {
344 .name = name_radio,
345 .amux = LINE2,
346 },
347 },
348 [SAA7134_BOARD_TVSTATION_RDS] = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700349 /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700350 .name = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
351 .audio_clock = 0x00200000,
352 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700353 .radio_type = UNSET,
354 .tuner_addr = ADDR_UNSET,
355 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700356 .tda9887_conf = TDA9887_PRESENT,
357 .inputs = {{
358 .name = name_tv,
359 .vmux = 1,
360 .amux = TV,
361 .tv = 1,
362 },{
363 .name = name_tv_mono,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700364 .vmux = 1,
365 .amux = LINE2,
366 .tv = 1,
367 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -0700368
369 .name = name_svideo,
370 .vmux = 8,
371 .amux = LINE1,
372 },{
373 .name = name_comp1,
374 .vmux = 3,
375 .amux = LINE1,
376 },{
377
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700378 .name = "CVid over SVid",
379 .vmux = 0,
380 .amux = LINE1,
381 }},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700382 .radio = {
383 .name = name_radio,
384 .amux = LINE2,
385 },
386 },
387 [SAA7134_BOARD_TVSTATION_DVR] = {
388 .name = "KNC One TV-Station DVR",
389 .audio_clock = 0x00200000,
390 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700391 .radio_type = UNSET,
392 .tuner_addr = ADDR_UNSET,
393 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700394 .tda9887_conf = TDA9887_PRESENT,
395 .gpiomask = 0x820000,
396 .inputs = {{
397 .name = name_tv,
398 .vmux = 1,
399 .amux = LINE2,
400 .tv = 1,
401 .gpio = 0x20000,
402 },{
403 .name = name_svideo,
404 .vmux = 8,
405 .amux = LINE1,
406 .gpio = 0x20000,
407 },{
408 .name = name_comp1,
409 .vmux = 3,
410 .amux = LINE1,
411 .gpio = 0x20000,
412 }},
413 .radio = {
414 .name = name_radio,
415 .amux = LINE2,
416 .gpio = 0x20000,
417 },
418 .mpeg = SAA7134_MPEG_EMPRESS,
419 .video_out = CCIR656,
420 },
421 [SAA7134_BOARD_CINERGY400] = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700422 .name = "Terratec Cinergy 400 TV",
423 .audio_clock = 0x00200000,
424 .tuner_type = TUNER_PHILIPS_PAL,
425 .radio_type = UNSET,
426 .tuner_addr = ADDR_UNSET,
427 .radio_addr = ADDR_UNSET,
428 .inputs = {{
429 .name = name_tv,
430 .vmux = 1,
431 .amux = TV,
432 .tv = 1,
433 },{
434 .name = name_comp1,
435 .vmux = 4,
436 .amux = LINE1,
437 },{
438 .name = name_svideo,
439 .vmux = 8,
440 .amux = LINE1,
441 },{
442 .name = name_comp2, /* CVideo over SVideo Connector */
443 .vmux = 0,
444 .amux = LINE1,
445 }}
446 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700447 [SAA7134_BOARD_MD5044] = {
448 .name = "Medion 5044",
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700449 .audio_clock = 0x00187de7, /* was: 0x00200000, */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700450 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700451 .radio_type = UNSET,
452 .tuner_addr = ADDR_UNSET,
453 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700454 .tda9887_conf = TDA9887_PRESENT,
455 .inputs = {{
456 .name = name_tv,
457 .vmux = 1,
458 .amux = TV,
459 .tv = 1,
460 },{
461 /* workaround for problems with normal TV sound */
462 .name = name_tv_mono,
463 .vmux = 1,
464 .amux = LINE2,
465 .tv = 1,
466 },{
467 .name = name_comp1,
468 .vmux = 0,
469 .amux = LINE2,
470 },{
471 .name = name_comp2,
472 .vmux = 3,
473 .amux = LINE2,
474 },{
475 .name = name_svideo,
476 .vmux = 8,
477 .amux = LINE2,
478 }},
479 .radio = {
480 .name = name_radio,
481 .amux = LINE2,
482 },
483 },
484 [SAA7134_BOARD_KWORLD] = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700485 .name = "Kworld/KuroutoShikou SAA7130-TVPCI",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700486 .audio_clock = 0x00187de7,
487 .tuner_type = TUNER_PHILIPS_NTSC_M,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700488 .radio_type = UNSET,
489 .tuner_addr = ADDR_UNSET,
490 .radio_addr = ADDR_UNSET,
491 .inputs = {{
492 .name = name_svideo,
493 .vmux = 8,
494 .amux = LINE1,
495 },{
496 .name = name_comp1,
497 .vmux = 3,
498 .amux = LINE1,
499 },{
500 .name = name_tv,
501 .vmux = 1,
502 .amux = LINE2,
503 .tv = 1,
504 }},
505 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700506 [SAA7134_BOARD_CINERGY600] = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700507 .name = "Terratec Cinergy 600 TV",
508 .audio_clock = 0x00200000,
509 .tuner_type = TUNER_PHILIPS_PAL,
510 .radio_type = UNSET,
511 .tuner_addr = ADDR_UNSET,
512 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700513 .tda9887_conf = TDA9887_PRESENT,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700514 .inputs = {{
515 .name = name_tv,
516 .vmux = 1,
517 .amux = TV,
518 .tv = 1,
519 },{
520 .name = name_comp1,
521 .vmux = 4,
522 .amux = LINE1,
523 },{
524 .name = name_svideo,
525 .vmux = 8,
526 .amux = LINE1,
527 },{
528 .name = name_comp2, /* CVideo over SVideo Connector */
529 .vmux = 0,
530 .amux = LINE1,
531 }},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700532 .radio = {
533 .name = name_radio,
534 .amux = LINE2,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700535 },
536 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700537 [SAA7134_BOARD_MD7134] = {
538 .name = "Medion 7134",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700539 .audio_clock = 0x00187de7,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700540 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
541 .radio_type = UNSET,
542 .tuner_addr = ADDR_UNSET,
543 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700544 .tda9887_conf = TDA9887_PRESENT,
545 .mpeg = SAA7134_MPEG_DVB,
546 .inputs = {{
547 .name = name_tv,
548 .vmux = 1,
549 .amux = TV,
550 .tv = 1,
551 },{
552 .name = name_comp1,
553 .vmux = 0,
554 .amux = LINE1,
555 },{
556 .name = name_svideo,
557 .vmux = 8,
558 .amux = LINE1,
559 }},
560 .radio = {
561 .name = name_radio,
562 .amux = LINE2,
563 },
564 },
565 [SAA7134_BOARD_TYPHOON_90031] = {
566 /* aka Typhoon "TV+Radio", Art.Nr 90031 */
567 /* Tom Zoerner <tomzo at users sourceforge net> */
568 .name = "Typhoon TV+Radio 90031",
569 .audio_clock = 0x00200000,
570 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700571 .radio_type = UNSET,
572 .tuner_addr = ADDR_UNSET,
573 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700574 .tda9887_conf = TDA9887_PRESENT,
575 .inputs = {{
576 .name = name_tv,
577 .vmux = 1,
578 .amux = TV,
579 .tv = 1,
580 },{
581 .name = name_comp1,
582 .vmux = 3,
583 .amux = LINE1,
584 },{
585 .name = name_svideo,
586 .vmux = 8,
587 .amux = LINE1,
588 }},
589 .radio = {
590 .name = name_radio,
591 .amux = LINE2,
592 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700593 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700594 [SAA7134_BOARD_ELSA] = {
595 .name = "ELSA EX-VISION 300TV",
596 .audio_clock = 0x00187de7,
597 .tuner_type = TUNER_HITACHI_NTSC,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700598 .radio_type = UNSET,
599 .tuner_addr = ADDR_UNSET,
600 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700601 .inputs = {{
602 .name = name_svideo,
603 .vmux = 8,
604 .amux = LINE1,
605 },{
606 .name = name_comp1,
607 .vmux = 0,
608 .amux = LINE1,
609 },{
610 .name = name_tv,
611 .vmux = 4,
612 .amux = LINE2,
613 .tv = 1,
614 }},
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700615 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700616 [SAA7134_BOARD_ELSA_500TV] = {
617 .name = "ELSA EX-VISION 500TV",
618 .audio_clock = 0x00187de7,
619 .tuner_type = TUNER_HITACHI_NTSC,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700620 .radio_type = UNSET,
621 .tuner_addr = ADDR_UNSET,
622 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700623 .inputs = {{
624 .name = name_svideo,
625 .vmux = 7,
626 .amux = LINE1,
627 },{
628 .name = name_tv,
629 .vmux = 8,
630 .amux = TV,
631 .tv = 1,
632 },{
633 .name = name_tv_mono,
634 .vmux = 8,
635 .amux = LINE2,
636 .tv = 1,
637 }},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700638 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700639 [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
640 .name = "ASUS TV-FM 7134",
641 .audio_clock = 0x00187de7,
642 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
643 .radio_type = UNSET,
644 .tuner_addr = ADDR_UNSET,
645 .radio_addr = ADDR_UNSET,
646 .tda9887_conf = TDA9887_PRESENT,
647 .inputs = {{
648 .name = name_tv,
649 .vmux = 1,
650 .amux = TV,
651 .tv = 1,
652 },{
653 .name = name_comp1,
654 .vmux = 4,
655 .amux = LINE2,
656 },{
657 .name = name_svideo,
658 .vmux = 6,
659 .amux = LINE2,
660 }},
661 .radio = {
662 .name = name_radio,
663 .amux = LINE1,
664 },
665 },
666 [SAA7134_BOARD_ASUSTeK_TVFM7135] = {
667 .name = "ASUS TV-FM 7135",
668 .audio_clock = 0x00187de7,
669 .tuner_type = TUNER_PHILIPS_TDA8290,
670 .radio_type = UNSET,
671 .tuner_addr = ADDR_UNSET,
672 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700673 .gpiomask = 0x200000,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700674 .inputs = {{
675 .name = name_tv,
676 .vmux = 1,
677 .amux = TV,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700678 .gpio = 0x0000,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700679 .tv = 1,
680 },{
681 .name = name_comp1,
682 .vmux = 4,
683 .amux = LINE2,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700684 .gpio = 0x0000,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700685 },{
686 .name = name_svideo,
687 .vmux = 6,
688 .amux = LINE2,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700689 .gpio = 0x0000,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700690 }},
691 .radio = {
692 .name = name_radio,
693 .amux = TV,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700694 .gpio = 0x200000,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700695 },
696 .mute = {
697 .name = name_mute,
698 .gpio = 0x0000,
699 },
700
Linus Torvalds1da177e2005-04-16 15:20:36 -0700701 },
702 [SAA7134_BOARD_VA1000POWER] = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700703 .name = "AOPEN VA1000 POWER",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700704 .audio_clock = 0x00187de7,
705 .tuner_type = TUNER_PHILIPS_NTSC,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700706 .radio_type = UNSET,
707 .tuner_addr = ADDR_UNSET,
708 .radio_addr = ADDR_UNSET,
709 .inputs = {{
710 .name = name_svideo,
711 .vmux = 8,
712 .amux = LINE1,
713 },{
714 .name = name_comp1,
715 .vmux = 3,
716 .amux = LINE1,
717 },{
718 .name = name_tv,
719 .vmux = 1,
720 .amux = LINE2,
721 .tv = 1,
722 }},
Linus Torvalds1da177e2005-04-16 15:20:36 -0700723 },
724 [SAA7134_BOARD_10MOONSTVMASTER] = {
725 /* "lilicheng" <llc@linuxfans.org> */
726 .name = "10MOONS PCI TV CAPTURE CARD",
727 .audio_clock = 0x00200000,
728 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700729 .radio_type = UNSET,
730 .tuner_addr = ADDR_UNSET,
731 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700732 .gpiomask = 0xe000,
733 .inputs = {{
734 .name = name_tv,
735 .vmux = 1,
736 .amux = LINE2,
737 .gpio = 0x0000,
738 .tv = 1,
739 },{
740 .name = name_comp1,
741 .vmux = 0,
742 .amux = LINE2,
743 .gpio = 0x4000,
744 },{
745 .name = name_comp2,
746 .vmux = 3,
747 .amux = LINE2,
748 .gpio = 0x4000,
749 },{
750 .name = name_svideo,
751 .vmux = 8,
752 .amux = LINE2,
753 .gpio = 0x4000,
754 }},
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700755 .radio = {
756 .name = name_radio,
757 .amux = LINE2,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700758 .gpio = 0x2000,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700759 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700760 .mute = {
761 .name = name_mute,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700762 .amux = LINE2,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700763 .gpio = 0x8000,
764 },
765 },
766 [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
767 /* "Andrew de Quincey" <adq@lidskialf.net> */
768 .name = "BMK MPEX No Tuner",
769 .audio_clock = 0x200000,
770 .tuner_type = TUNER_ABSENT,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700771 .radio_type = UNSET,
772 .tuner_addr = ADDR_UNSET,
773 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700774 .inputs = {{
775 .name = name_comp1,
776 .vmux = 4,
777 .amux = LINE1,
778 },{
779 .name = name_comp2,
780 .vmux = 3,
781 .amux = LINE1,
782 },{
783 .name = name_comp3,
784 .vmux = 0,
785 .amux = LINE1,
786 },{
787 .name = name_comp4,
788 .vmux = 1,
789 .amux = LINE1,
790 },{
791 .name = name_svideo,
792 .vmux = 8,
793 .amux = LINE1,
794 }},
795 .mpeg = SAA7134_MPEG_EMPRESS,
796 .video_out = CCIR656,
797 },
798 [SAA7134_BOARD_VIDEOMATE_TV] = {
799 .name = "Compro VideoMate TV",
800 .audio_clock = 0x00187de7,
801 .tuner_type = TUNER_PHILIPS_NTSC_M,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700802 .radio_type = UNSET,
803 .tuner_addr = ADDR_UNSET,
804 .radio_addr = ADDR_UNSET,
805 .inputs = {{
806 .name = name_svideo,
807 .vmux = 8,
808 .amux = LINE1,
809 },{
810 .name = name_comp1,
811 .vmux = 3,
812 .amux = LINE1,
813 },{
814 .name = name_tv,
815 .vmux = 1,
816 .amux = LINE2,
817 .tv = 1,
818 }},
819 },
820 [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -0700821 .name = "Compro VideoMate TV Gold+",
822 .audio_clock = 0x00187de7,
823 .tuner_type = TUNER_PHILIPS_NTSC_M,
824 .gpiomask = 0x800c0000,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700825 .radio_type = UNSET,
826 .tuner_addr = ADDR_UNSET,
827 .radio_addr = ADDR_UNSET,
828 .inputs = {{
829 .name = name_svideo,
830 .vmux = 8,
831 .amux = LINE1,
832 .gpio = 0x06c00012,
833 },{
834 .name = name_comp1,
835 .vmux = 3,
836 .amux = LINE1,
837 .gpio = 0x0ac20012,
838 },{
839 .name = name_tv,
840 .vmux = 1,
841 .amux = LINE2,
842 .gpio = 0x08c20012,
843 .tv = 1,
844 }}, /* radio and probably mute is missing */
845 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700846 [SAA7134_BOARD_CRONOS_PLUS] = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700847 /*
848 gpio pins:
849 0 .. 3 BASE_ID
850 4 .. 7 PROTECT_ID
851 8 .. 11 USER_OUT
852 12 .. 13 USER_IN
853 14 .. 15 VIDIN_SEL
854 */
Linus Torvalds1da177e2005-04-16 15:20:36 -0700855 .name = "Matrox CronosPlus",
856 .tuner_type = TUNER_ABSENT,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700857 .radio_type = UNSET,
858 .tuner_addr = ADDR_UNSET,
859 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700860 .gpiomask = 0xcf00,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700861 .inputs = {{
862 .name = name_comp1,
863 .vmux = 0,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700864 .gpio = 2 << 14,
865 },{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700866 .name = name_comp2,
867 .vmux = 0,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700868 .gpio = 1 << 14,
869 },{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700870 .name = name_comp3,
871 .vmux = 0,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700872 .gpio = 0 << 14,
873 },{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700874 .name = name_comp4,
875 .vmux = 0,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700876 .gpio = 3 << 14,
877 },{
878 .name = name_svideo,
879 .vmux = 8,
880 .gpio = 2 << 14,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700881 }},
882 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700883 [SAA7134_BOARD_MD2819] = {
884 .name = "AverMedia M156 / Medion 2819",
885 .audio_clock = 0x00187de7,
886 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700887 .radio_type = UNSET,
888 .tuner_addr = ADDR_UNSET,
889 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700890 .tda9887_conf = TDA9887_PRESENT,
891 .inputs = {{
892 .name = name_tv,
893 .vmux = 1,
894 .amux = TV,
895 .tv = 1,
896 },{
897 .name = name_comp1,
898 .vmux = 0,
899 .amux = LINE2,
900 },{
901 .name = name_comp2,
902 .vmux = 3,
903 .amux = LINE2,
904 },{
905 .name = name_svideo,
906 .vmux = 8,
907 .amux = LINE2,
908 }},
909 .radio = {
910 .name = name_radio,
911 .amux = LINE2,
912 },
913 },
914 [SAA7134_BOARD_BMK_MPEX_TUNER] = {
915 /* "Greg Wickham <greg.wickham@grangenet.net> */
916 .name = "BMK MPEX Tuner",
917 .audio_clock = 0x200000,
918 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700919 .radio_type = UNSET,
920 .tuner_addr = ADDR_UNSET,
921 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700922 .inputs = {{
923 .name = name_comp1,
924 .vmux = 1,
925 .amux = LINE1,
926 },{
927 .name = name_svideo,
928 .vmux = 8,
929 .amux = LINE1,
930 },{
931 .name = name_tv,
932 .vmux = 3,
933 .amux = TV,
934 .tv = 1,
935 }},
936 .mpeg = SAA7134_MPEG_EMPRESS,
937 .video_out = CCIR656,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700938 },
939 [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
940 .name = "ASUS TV-FM 7133",
941 .audio_clock = 0x00187de7,
942 /* probably wrong, the 7133 one is the NTSC version ...
943 * .tuner_type = TUNER_PHILIPS_FM1236_MK3 */
944 .tuner_type = TUNER_LG_NTSC_NEW_TAPC,
945 .radio_type = UNSET,
946 .tuner_addr = ADDR_UNSET,
947 .radio_addr = ADDR_UNSET,
948 .tda9887_conf = TDA9887_PRESENT,
949 .inputs = {{
950 .name = name_tv,
951 .vmux = 1,
952 .amux = TV,
953 .tv = 1,
954
Linus Torvalds1da177e2005-04-16 15:20:36 -0700955 },{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700956 .name = name_comp1,
957 .vmux = 4,
958 .amux = LINE2,
959 },{
960 .name = name_svideo,
961 .vmux = 6,
962 .amux = LINE2,
963 }},
964 .radio = {
965 .name = name_radio,
966 .amux = LINE1,
967 },
968 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700969 [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -0700970 .name = "Pinnacle PCTV Stereo (saa7134)",
971 .audio_clock = 0x00187de7,
972 .tuner_type = TUNER_MT2032,
973 .radio_type = UNSET,
974 .tuner_addr = ADDR_UNSET,
975 .radio_addr = ADDR_UNSET,
976 .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER,
977 .inputs = {{
978 .name = name_tv,
979 .vmux = 3,
980 .amux = TV,
981 .tv = 1,
982 },{
983 .name = name_comp1,
984 .vmux = 0,
985 .amux = LINE2,
986 },{
987 .name = name_comp2,
988 .vmux = 1,
989 .amux = LINE2,
990 },{
991 .name = name_svideo,
992 .vmux = 8,
993 .amux = LINE2,
994 }},
995 },
Linus Torvalds1da177e2005-04-16 15:20:36 -0700996 [SAA7134_BOARD_MANLI_MTV002] = {
997 /* Ognjen Nastic <ognjen@logosoft.ba> */
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -0700998 .name = "Manli MuchTV M-TV002/Behold TV 403 FM",
Linus Torvalds1da177e2005-04-16 15:20:36 -0700999 .audio_clock = 0x00200000,
1000 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001001 .radio_type = UNSET,
1002 .tuner_addr = ADDR_UNSET,
1003 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001004 .inputs = {{
1005 .name = name_svideo,
1006 .vmux = 8,
1007 .amux = LINE1,
1008 },{
1009 .name = name_comp1,
1010 .vmux = 1,
1011 .amux = LINE1,
1012 },{
1013 .name = name_tv,
1014 .vmux = 3,
1015 .amux = LINE2,
1016 .tv = 1,
1017 }},
1018 .radio = {
1019 .name = name_radio,
1020 .amux = LINE2,
1021 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001022 },
1023 [SAA7134_BOARD_MANLI_MTV001] = {
1024 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001025 .name = "Manli MuchTV M-TV001/Behold TV 401",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001026 .audio_clock = 0x00200000,
1027 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001028 .radio_type = UNSET,
1029 .tuner_addr = ADDR_UNSET,
1030 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001031 .inputs = {{
1032 .name = name_svideo,
1033 .vmux = 8,
1034 .amux = LINE1,
1035 },{
1036 .name = name_comp1,
1037 .vmux = 1,
1038 .amux = LINE1,
1039 },{
1040 .name = name_tv,
1041 .vmux = 3,
1042 .amux = LINE2,
1043 .tv = 1,
1044 }},
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001045 .mute = {
1046 .name = name_mute,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001047 .amux = LINE1,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001048 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001049 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001050 [SAA7134_BOARD_TG3000TV] = {
1051 /* TransGear 3000TV */
1052 .name = "Nagase Sangyo TransGear 3000TV",
1053 .audio_clock = 0x00187de7,
1054 .tuner_type = TUNER_PHILIPS_NTSC_M,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001055 .radio_type = UNSET,
1056 .tuner_addr = ADDR_UNSET,
1057 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001058 .inputs = {{
1059 .name = name_tv,
1060 .vmux = 1,
1061 .amux = LINE2,
1062 .tv = 1,
1063 },{
1064 .name = name_comp1,
1065 .vmux = 3,
1066 .amux = LINE2,
1067 },{
1068 .name = name_svideo,
1069 .vmux = 8,
1070 .amux = LINE2,
1071 }},
1072 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001073 [SAA7134_BOARD_ECS_TVP3XP] = {
1074 .name = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
1075 .audio_clock = 0x187de7, /* xtal 32.1 MHz */
1076 .tuner_type = TUNER_PHILIPS_PAL,
1077 .radio_type = UNSET,
1078 .tuner_addr = ADDR_UNSET,
1079 .radio_addr = ADDR_UNSET,
1080 .inputs = {{
1081 .name = name_tv,
1082 .vmux = 1,
1083 .amux = TV,
1084 .tv = 1,
1085 },{
1086 .name = name_tv_mono,
1087 .vmux = 1,
1088 .amux = LINE2,
1089 .tv = 1,
1090 },{
1091 .name = name_comp1,
1092 .vmux = 3,
1093 .amux = LINE1,
1094 },{
1095 .name = name_svideo,
1096 .vmux = 8,
1097 .amux = LINE1,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001098 },{
1099 .name = "CVid over SVid",
1100 .vmux = 0,
1101 .amux = LINE1,
1102 }},
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001103 .radio = {
1104 .name = name_radio,
1105 .amux = LINE2,
1106 },
1107 },
1108 [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
1109 .name = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
1110 .audio_clock = 0x187de7,
1111 .tuner_type = TUNER_PHILIPS_NTSC,
1112 .radio_type = UNSET,
1113 .tuner_addr = ADDR_UNSET,
1114 .radio_addr = ADDR_UNSET,
1115 .inputs = {{
1116 .name = name_tv,
1117 .vmux = 1,
1118 .amux = TV,
1119 .tv = 1,
1120 },{
1121 .name = name_tv_mono,
1122 .vmux = 1,
1123 .amux = LINE2,
1124 .tv = 1,
1125 },{
1126 .name = name_comp1,
1127 .vmux = 3,
1128 .amux = LINE1,
1129 },{
1130 .name = name_svideo,
1131 .vmux = 8,
1132 .amux = LINE1,
1133 },{
1134 .name = "CVid over SVid",
1135 .vmux = 0,
1136 .amux = LINE1,
1137 }},
1138 .radio = {
1139 .name = name_radio,
1140 .amux = LINE2,
1141 },
1142 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001143 [SAA7134_BOARD_AVACSSMARTTV] = {
1144 /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
1145 .name = "AVACS SmartTV",
1146 .audio_clock = 0x00187de7,
1147 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001148 .radio_type = UNSET,
1149 .tuner_addr = ADDR_UNSET,
1150 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001151 .inputs = {{
1152 .name = name_tv,
1153 .vmux = 1,
1154 .amux = TV,
1155 .tv = 1,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001156 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07001157 .name = name_tv_mono,
1158 .vmux = 1,
1159 .amux = LINE2,
1160 .tv = 1,
1161 },{
1162 .name = name_comp1,
1163 .vmux = 0,
1164 .amux = LINE2,
1165 },{
1166 .name = name_comp2,
1167 .vmux = 3,
1168 .amux = LINE2,
1169 },{
1170 .name = name_svideo,
1171 .vmux = 8,
1172 .amux = LINE2,
1173 }},
1174 .radio = {
1175 .name = name_radio,
1176 .amux = LINE2,
1177 .gpio = 0x200000,
1178 },
1179 },
1180 [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
1181 /* Michael Smith <msmith@cbnco.com> */
1182 .name = "AVerMedia DVD EZMaker",
1183 .audio_clock = 0x00187de7,
1184 .tuner_type = TUNER_ABSENT,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001185 .radio_type = UNSET,
1186 .tuner_addr = ADDR_UNSET,
1187 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001188 .inputs = {{
1189 .name = name_comp1,
1190 .vmux = 3,
1191 },{
1192 .name = name_svideo,
1193 .vmux = 8,
1194 }},
1195 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001196 [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
1197 /* toshii@netbsd.org */
1198 .name = "Noval Prime TV 7133",
1199 .audio_clock = 0x00200000,
1200 .tuner_type = TUNER_ALPS_TSBH1_NTSC,
1201 .radio_type = UNSET,
1202 .tuner_addr = ADDR_UNSET,
1203 .radio_addr = ADDR_UNSET,
1204 .inputs = {{
1205 .name = name_comp1,
1206 .vmux = 3,
1207 },{
1208 .name = name_tv,
1209 .vmux = 1,
1210 .amux = TV,
1211 .tv = 1,
1212 },{
1213 .name = name_svideo,
1214 .vmux = 8,
1215 }},
1216 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001217 [SAA7134_BOARD_AVERMEDIA_STUDIO_305] = {
1218 .name = "AverMedia AverTV Studio 305",
1219 .audio_clock = 0x00187de7,
1220 .tuner_type = TUNER_PHILIPS_FM1256_IH3,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001221 .radio_type = UNSET,
1222 .tuner_addr = ADDR_UNSET,
1223 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001224 .tda9887_conf = TDA9887_PRESENT,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001225 .inputs = {{
1226 .name = name_tv,
1227 .vmux = 1,
1228 .amux = LINE2,
1229 .tv = 1,
1230 },{
1231 .name = name_comp1,
1232 .vmux = 0,
1233 .amux = LINE2,
1234 },{
1235 .name = name_comp2,
1236 .vmux = 3,
1237 .amux = LINE2,
1238 },{
1239 .name = name_svideo,
1240 .vmux = 8,
1241 .amux = LINE2,
1242 }},
1243 .radio = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001244 .name = name_radio,
1245 .amux = LINE2,
1246 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001247 .mute = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001248 .name = name_mute,
1249 .amux = LINE1,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001250 },
1251 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001252 [SAA7134_BOARD_UPMOST_PURPLE_TV] = {
1253 .name = "UPMOST PURPLE TV",
1254 .audio_clock = 0x00187de7,
1255 .tuner_type = TUNER_PHILIPS_FM1236_MK3,
1256 .radio_type = UNSET,
1257 .tuner_addr = ADDR_UNSET,
1258 .radio_addr = ADDR_UNSET,
1259 .tda9887_conf = TDA9887_PRESENT,
1260 .inputs = {{
1261 .name = name_tv,
1262 .vmux = 7,
1263 .amux = TV,
1264 .tv = 1,
1265 },{
1266 .name = name_svideo,
1267 .vmux = 7,
1268 .amux = LINE1,
1269 }},
Linus Torvalds1da177e2005-04-16 15:20:36 -07001270 },
1271 [SAA7134_BOARD_ITEMS_MTV005] = {
1272 /* Norman Jonas <normanjonas@arcor.de> */
1273 .name = "Items MuchTV Plus / IT-005",
1274 .audio_clock = 0x00187de7,
1275 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001276 .radio_type = UNSET,
1277 .tuner_addr = ADDR_UNSET,
1278 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001279 .inputs = {{
1280 .name = name_tv,
1281 .vmux = 3,
1282 .amux = TV,
1283 .tv = 1,
1284 },{
1285 .name = name_comp1,
1286 .vmux = 1,
1287 .amux = LINE1,
1288 },{
1289 .name = name_svideo,
1290 .vmux = 8,
1291 .amux = LINE1,
1292 }},
1293 .radio = {
1294 .name = name_radio,
1295 .amux = LINE2,
1296 },
1297 },
1298 [SAA7134_BOARD_CINERGY200] = {
1299 .name = "Terratec Cinergy 200 TV",
1300 .audio_clock = 0x00200000,
1301 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001302 .radio_type = UNSET,
1303 .tuner_addr = ADDR_UNSET,
1304 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001305 .inputs = {{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001306 .name = name_tv,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001307 .vmux = 1,
1308 .amux = LINE2,
1309 .tv = 1,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001310 },{
1311 .name = name_comp1,
1312 .vmux = 4,
1313 .amux = LINE1,
1314 },{
1315 .name = name_svideo,
1316 .vmux = 8,
1317 .amux = LINE1,
1318 },{
1319 .name = name_comp2, /* CVideo over SVideo Connector */
1320 .vmux = 0,
1321 .amux = LINE1,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001322 }},
1323 .mute = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001324 .name = name_mute,
1325 .amux = LINE2,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001326 },
1327 },
1328 [SAA7134_BOARD_VIDEOMATE_TV_PVR] = {
1329 /* Alain St-Denis <alain@topaze.homeip.net> */
1330 .name = "Compro VideoMate TV PVR/FM",
1331 .audio_clock = 0x00187de7,
1332 .tuner_type = TUNER_PHILIPS_NTSC_M,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001333 .radio_type = UNSET,
1334 .tuner_addr = ADDR_UNSET,
1335 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001336 .gpiomask = 0x808c0080,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001337 .inputs = {{
1338 .name = name_svideo,
1339 .vmux = 8,
1340 .amux = LINE1,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001341 .gpio = 0x00080,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001342 },{
1343 .name = name_comp1,
1344 .vmux = 3,
1345 .amux = LINE1,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001346 .gpio = 0x00080,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001347 },{
1348 .name = name_tv,
1349 .vmux = 1,
1350 .amux = LINE2_LEFT,
1351 .tv = 1,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001352 .gpio = 0x00080,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001353 }},
Linus Torvalds1da177e2005-04-16 15:20:36 -07001354 .radio = {
1355 .name = name_radio,
1356 .amux = LINE2,
1357 .gpio = 0x80000,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001358 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001359 .mute = {
1360 .name = name_mute,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001361 .amux = LINE2,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001362 .gpio = 0x40000,
1363 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001364 },
1365 [SAA7134_BOARD_SABRENT_SBTTVFM] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001366 /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001367 .name = "Sabrent SBT-TVFM (saa7130)",
1368 .audio_clock = 0x00187de7,
1369 .tuner_type = TUNER_PHILIPS_NTSC_M,
1370 .radio_type = UNSET,
1371 .tuner_addr = ADDR_UNSET,
1372 .radio_addr = ADDR_UNSET,
1373 .inputs = {{
Linus Torvalds1da177e2005-04-16 15:20:36 -07001374 .name = name_comp1,
1375 .vmux = 1,
1376 .amux = LINE2,
1377 },{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001378 .name = name_tv,
1379 .vmux = 3,
1380 .amux = LINE2,
1381 .tv = 1,
1382 },{
1383 .name = name_svideo,
1384 .vmux = 8,
1385 .amux = LINE2,
1386 }},
1387 .radio = {
1388 .name = name_radio,
1389 .amux = LINE2,
1390 },
1391 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001392 [SAA7134_BOARD_ZOLID_XPERT_TV7134] = {
1393 /* Helge Jensen <helge.jensen@slog.dk> */
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001394 .name = ":Zolid Xpert TV7134",
Linus Torvalds1da177e2005-04-16 15:20:36 -07001395 .audio_clock = 0x00187de7,
1396 .tuner_type = TUNER_PHILIPS_NTSC,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001397 .radio_type = UNSET,
1398 .tuner_addr = ADDR_UNSET,
1399 .radio_addr = ADDR_UNSET,
1400 .inputs = {{
Linus Torvalds1da177e2005-04-16 15:20:36 -07001401 .name = name_svideo,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001402 .vmux = 8,
1403 .amux = LINE1,
1404 },{
1405 .name = name_comp1,
1406 .vmux = 3,
1407 .amux = LINE1,
1408 },{
1409 .name = name_tv,
1410 .vmux = 1,
1411 .amux = LINE2,
1412 .tv = 1,
1413 }},
Linus Torvalds1da177e2005-04-16 15:20:36 -07001414 },
1415 [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE] = {
1416 /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */
1417 .name = "Empire PCI TV-Radio LE",
1418 .audio_clock = 0x00187de7,
1419 .tuner_type = TUNER_PHILIPS_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001420 .radio_type = UNSET,
1421 .tuner_addr = ADDR_UNSET,
1422 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001423 .gpiomask = 0x4000,
1424 .inputs = {{
1425 .name = name_tv_mono,
1426 .vmux = 1,
1427 .amux = LINE2,
1428 .gpio = 0x8000,
1429 .tv = 1,
1430 },{
1431 .name = name_comp1,
1432 .vmux = 3,
1433 .amux = LINE1,
1434 .gpio = 0x8000,
1435 },{
1436 .name = name_svideo,
1437 .vmux = 6,
1438 .amux = LINE1,
1439 .gpio = 0x8000,
1440 }},
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001441 .radio = {
1442 .name = name_radio,
1443 .amux = LINE1,
1444 .gpio = 0x8000,
1445 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001446 .mute = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001447 .name = name_mute,
1448 .amux = TV,
1449 .gpio =0x8000,
1450 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07001451 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001452 [SAA7134_BOARD_AVERMEDIA_STUDIO_307] = {
Linus Torvalds1da177e2005-04-16 15:20:36 -07001453 /*
1454 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
1455 Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru>
1456 */
1457 .name = "Avermedia AVerTV Studio 307",
1458 .audio_clock = 0x00187de7,
1459 .tuner_type = TUNER_PHILIPS_FM1256_IH3,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001460 .radio_type = UNSET,
1461 .tuner_addr = ADDR_UNSET,
1462 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001463 .tda9887_conf = TDA9887_PRESENT,
1464 .gpiomask = 0x03,
1465 .inputs = {{
1466 .name = name_tv,
1467 .vmux = 1,
1468 .amux = TV,
1469 .tv = 1,
1470 .gpio = 0x00,
1471 },{
1472 .name = name_comp1,
1473 .vmux = 0,
1474 .amux = LINE2,
1475 .gpio = 0x00,
1476 },{
1477 .name = name_comp2,
1478 .vmux = 3,
1479 .amux = LINE2,
1480 .gpio = 0x00,
1481 },{
1482 .name = name_svideo,
1483 .vmux = 8,
1484 .amux = LINE2,
1485 .gpio = 0x00,
1486 }},
1487 .radio = {
1488 .name = name_radio,
1489 .amux = LINE1,
1490 .gpio = 0x01,
1491 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001492 .mute = {
1493 .name = name_mute,
1494 .amux = LINE1,
1495 .gpio = 0x00,
1496 },
1497 },
1498 [SAA7134_BOARD_AVERMEDIA_GO_007_FM] = {
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001499 .name = "Avermedia AVerTV GO 007 FM",
1500 .audio_clock = 0x00187de7,
1501 .tuner_type = TUNER_PHILIPS_TDA8290,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001502 .radio_type = UNSET,
1503 .tuner_addr = ADDR_UNSET,
1504 .radio_addr = ADDR_UNSET,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001505 .gpiomask = 0x00300003,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001506 /* .gpiomask = 0x8c240003, */
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001507 .inputs = {{
1508 .name = name_tv,
1509 .vmux = 1,
1510 .amux = TV,
1511 .tv = 1,
1512 .gpio = 0x01,
1513 },{
1514 .name = name_comp1,
1515 .vmux = 0,
1516 .amux = LINE2,
1517 .gpio = 0x02,
1518 },{
1519 .name = name_svideo,
1520 .vmux = 6,
1521 .amux = LINE2,
1522 .gpio = 0x02,
1523 }},
1524 .radio = {
1525 .name = name_radio,
1526 .amux = LINE1,
1527 .gpio = 0x00300001,
1528 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001529 .mute = {
1530 .name = name_mute,
1531 .amux = TV,
1532 .gpio = 0x01,
1533 },
1534 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001535 [SAA7134_BOARD_AVERMEDIA_CARDBUS] = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001536 /* Kees.Blom@cwi.nl */
1537 .name = "AVerMedia Cardbus TV/Radio (E500)",
1538 .audio_clock = 0x187de7,
1539 .tuner_type = TUNER_PHILIPS_TDA8290,
1540 .radio_type = UNSET,
1541 .tuner_addr = ADDR_UNSET,
1542 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001543 .inputs = {{
1544 .name = name_tv,
1545 .vmux = 1,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001546 .amux = TV,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001547 .tv = 1,
1548 },{
1549 .name = name_comp1,
1550 .vmux = 3,
1551 .amux = LINE2,
1552 },{
1553 .name = name_svideo,
1554 .vmux = 8,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001555 .amux = LINE1,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001556 }},
1557 .radio = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001558 .name = name_radio,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001559 .amux = LINE1,
1560 },
1561 },
1562 [SAA7134_BOARD_CINERGY400_CARDBUS] = {
1563 .name = "Terratec Cinergy 400 mobile",
1564 .audio_clock = 0x187de7,
1565 .tuner_type = TUNER_ALPS_TSBE5_PAL,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001566 .radio_type = UNSET,
1567 .tuner_addr = ADDR_UNSET,
1568 .radio_addr = ADDR_UNSET,
1569 .tda9887_conf = TDA9887_PRESENT,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001570 .inputs = {{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001571 .name = name_tv,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001572 .vmux = 1,
1573 .amux = TV,
1574 .tv = 1,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001575 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07001576 .name = name_tv_mono,
1577 .vmux = 1,
1578 .amux = LINE2,
1579 .tv = 1,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001580 },{
1581 .name = name_comp1,
1582 .vmux = 3,
1583 .amux = LINE1,
1584 },{
1585 .name = name_svideo,
1586 .vmux = 8,
1587 .amux = LINE1,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001588 }},
1589 },
1590 [SAA7134_BOARD_CINERGY600_MK3] = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001591 .name = "Terratec Cinergy 600 TV MK3",
1592 .audio_clock = 0x00200000,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001593 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001594 .radio_type = UNSET,
1595 .tuner_addr = ADDR_UNSET,
1596 .radio_addr = ADDR_UNSET,
1597 .tda9887_conf = TDA9887_PRESENT,
1598 .inputs = {{
1599 .name = name_tv,
1600 .vmux = 1,
1601 .amux = TV,
1602 .tv = 1,
1603 },{
1604 .name = name_comp1,
1605 .vmux = 4,
1606 .amux = LINE1,
1607 },{
1608 .name = name_svideo,
1609 .vmux = 8,
1610 .amux = LINE1,
1611 },{
1612 .name = name_comp2, /* CVideo over SVideo Connector */
1613 .vmux = 0,
1614 .amux = LINE1,
1615 }},
Linus Torvalds1da177e2005-04-16 15:20:36 -07001616 .radio = {
1617 .name = name_radio,
1618 .amux = LINE2,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001619 },
1620 },
1621 [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS] = {
1622 /* Dylan Walkden <dylan_walkden@hotmail.com> */
1623 .name = "Compro VideoMate Gold+ Pal",
1624 .audio_clock = 0x00187de7,
1625 .tuner_type = TUNER_PHILIPS_PAL,
1626 .radio_type = UNSET,
1627 .tuner_addr = ADDR_UNSET,
1628 .radio_addr = ADDR_UNSET,
1629 .gpiomask = 0x1ce780,
1630 .inputs = {{
1631 .name = name_svideo,
1632 .vmux = 0, /* CVideo over SVideo Connector - ok? */
1633 .amux = LINE1,
1634 .gpio = 0x008080,
1635 },{
1636 .name = name_comp1,
1637 .vmux = 3,
1638 .amux = LINE1,
1639 .gpio = 0x008080,
1640 },{
1641 .name = name_tv,
1642 .vmux = 1,
1643 .amux = TV,
1644 .tv = 1,
1645 .gpio = 0x008080,
1646 }},
1647 .radio = {
1648 .name = name_radio,
1649 .amux = LINE2,
1650 .gpio = 0x80000,
1651 },
1652 .mute = {
1653 .name = name_mute,
1654 .amux = LINE2,
1655 .gpio = 0x0c8000,
1656 },
1657 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001658 [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL] = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001659 .name = "Pinnacle PCTV 300i DVB-T + PAL",
1660 .audio_clock = 0x00187de7,
1661 .tuner_type = TUNER_MT2032,
1662 .radio_type = UNSET,
1663 .tuner_addr = ADDR_UNSET,
1664 .radio_addr = ADDR_UNSET,
1665 .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001666 .mpeg = SAA7134_MPEG_DVB,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001667 .inputs = {{
1668 .name = name_tv,
1669 .vmux = 3,
1670 .amux = TV,
1671 .tv = 1,
1672 },{
1673 .name = name_comp1,
1674 .vmux = 0,
1675 .amux = LINE2,
1676 },{
1677 .name = name_comp2,
1678 .vmux = 1,
1679 .amux = LINE2,
1680 },{
1681 .name = name_svideo,
1682 .vmux = 8,
1683 .amux = LINE2,
1684 }},
1685 },
Linus Torvalds1da177e2005-04-16 15:20:36 -07001686 [SAA7134_BOARD_PROVIDEO_PV952] = {
1687 /* andreas.kretschmer@web.de */
1688 .name = "ProVideo PV952",
1689 .audio_clock = 0x00187de7,
1690 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001691 .radio_type = UNSET,
1692 .tuner_addr = ADDR_UNSET,
1693 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001694 .tda9887_conf = TDA9887_PRESENT,
1695 .inputs = {{
1696 .name = name_comp1,
1697 .vmux = 0,
1698 .amux = LINE1,
1699 },{
1700 .name = name_tv,
1701 .vmux = 1,
1702 .amux = TV,
1703 .tv = 1,
1704 },{
1705 .name = name_tv_mono,
1706 .vmux = 1,
1707 .amux = LINE2,
1708 .tv = 1,
1709 }},
1710 .radio = {
1711 .name = name_radio,
1712 .amux = LINE2,
1713 },
1714 },
1715 [SAA7134_BOARD_AVERMEDIA_305] = {
1716 /* much like the "studio" version but without radio
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001717 * and another tuner (sirspiritus@yandex.ru) */
Linus Torvalds1da177e2005-04-16 15:20:36 -07001718 .name = "AverMedia AverTV/305",
1719 .audio_clock = 0x00187de7,
1720 .tuner_type = TUNER_PHILIPS_FQ1216ME,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001721 .radio_type = UNSET,
1722 .tuner_addr = ADDR_UNSET,
1723 .radio_addr = ADDR_UNSET,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001724 .tda9887_conf = TDA9887_PRESENT,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001725 .inputs = {{
1726 .name = name_tv,
1727 .vmux = 1,
1728 .amux = LINE2,
1729 .tv = 1,
1730 },{
1731 .name = name_comp1,
1732 .vmux = 0,
1733 .amux = LINE2,
1734 },{
1735 .name = name_comp2,
1736 .vmux = 3,
1737 .amux = LINE2,
1738 },{
1739 .name = name_svideo,
1740 .vmux = 8,
1741 .amux = LINE2,
1742 }},
1743 .mute = {
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001744 .name = name_mute,
1745 .amux = LINE1,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001746 },
1747 },
1748 [SAA7134_BOARD_FLYDVBTDUO] = {
1749 /* LifeView FlyDVB-T DUO */
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001750 /* "Nico Sabbi <nsabbi@tiscali.it> Hartmut Hackmann hartmut.hackmann@t-online.de*/
Linus Torvalds1da177e2005-04-16 15:20:36 -07001751 .name = "LifeView FlyDVB-T DUO",
1752 .audio_clock = 0x00200000,
1753 .tuner_type = TUNER_PHILIPS_TDA8290,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001754 .radio_type = UNSET,
1755 .tuner_addr = ADDR_UNSET,
1756 .radio_addr = ADDR_UNSET,
1757 .mpeg = SAA7134_MPEG_DVB,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001758 .inputs = {{
1759 .name = name_tv,
1760 .vmux = 1,
1761 .amux = TV,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001762 .tv = 1,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001763 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07001764 .name = name_comp1, /* Composite signal on S-Video input */
1765 .vmux = 0,
1766 .amux = LINE2,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001767 },{
1768 .name = name_comp2, /* Composite input */
1769 .vmux = 3,
1770 .amux = LINE2,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001771 },{
1772 .name = name_svideo, /* S-Video signal on S-Video input */
1773 .vmux = 8,
1774 .amux = LINE2,
Linus Torvalds1da177e2005-04-16 15:20:36 -07001775 }},
1776 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001777 [SAA7134_BOARD_PHILIPS_TOUGH] = {
1778 .name = "Philips TOUGH DVB-T reference design",
1779 .tuner_type = TUNER_ABSENT,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001780 .audio_clock = 0x00187de7,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001781 .radio_type = UNSET,
1782 .tuner_addr = ADDR_UNSET,
1783 .radio_addr = ADDR_UNSET,
1784 .mpeg = SAA7134_MPEG_DVB,
1785 .inputs = {{
1786 .name = name_comp1,
1787 .vmux = 0,
1788 .amux = LINE1,
1789 },{
1790 .name = name_svideo,
1791 .vmux = 8,
1792 .amux = LINE1,
1793 }},
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07001794 },
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07001795 [SAA7134_BOARD_AVERMEDIA_307] = {
1796 /*
1797 Davydov Vladimir <vladimir@iqmedia.com>
1798 */
1799 .name = "Avermedia AVerTV 307",
1800 .audio_clock = 0x00187de7,
1801 .tuner_type = TUNER_PHILIPS_FQ1216ME,
1802 .radio_type = UNSET,
1803 .tuner_addr = ADDR_UNSET,
1804 .radio_addr = ADDR_UNSET,
1805 .tda9887_conf = TDA9887_PRESENT,
1806 .inputs = {{
1807 .name = name_tv,
1808 .vmux = 1,
1809 .amux = TV,
1810 .tv = 1,
1811 },{
1812 .name = name_comp1,
1813 .vmux = 0,
1814 .amux = LINE1,
1815 },{
1816 .name = name_comp2,
1817 .vmux = 3,
1818 .amux = LINE1,
1819 },{
1820 .name = name_svideo,
1821 .vmux = 8,
1822 .amux = LINE1,
1823 }},
1824 },
1825 [SAA7134_BOARD_ADS_INSTANT_TV] = {
1826 .name = "ADS Tech Instant TV (saa7135)",
1827 .audio_clock = 0x00187de7,
1828 .tuner_type = TUNER_PHILIPS_TDA8290,
1829 .radio_type = UNSET,
1830 .tuner_addr = ADDR_UNSET,
1831 .radio_addr = ADDR_UNSET,
1832 .inputs = {{
1833 .name = name_tv,
1834 .vmux = 1,
1835 .amux = TV,
1836 .tv = 1,
1837 },{
1838 .name = name_comp1,
1839 .vmux = 3,
1840 .amux = LINE2,
1841 },{
1842 .name = name_svideo,
1843 .vmux = 8,
1844 .amux = LINE2,
1845 }},
1846 },
1847 [SAA7134_BOARD_KWORLD_VSTREAM_XPERT] = {
1848 .name = "Kworld/Tevion V-Stream Xpert TV PVR7134",
1849 .audio_clock = 0x00187de7,
1850 .tuner_type = TUNER_PHILIPS_PAL_I,
1851 .radio_type = UNSET,
1852 .tuner_addr = ADDR_UNSET,
1853 .radio_addr = ADDR_UNSET,
1854 .gpiomask = 0x0700,
1855 .inputs = {{
1856 .name = name_tv,
1857 .vmux = 1,
1858 .amux = TV,
1859 .tv = 1,
1860 .gpio = 0x000,
1861 },{
1862 .name = name_comp1,
1863 .vmux = 3,
1864 .amux = LINE1,
1865 .gpio = 0x200, /* gpio by DScaler */
1866 },{
1867 .name = name_svideo,
1868 .vmux = 0,
1869 .amux = LINE1,
1870 .gpio = 0x200,
1871 }},
1872 .radio = {
1873 .name = name_radio,
1874 .amux = LINE1,
1875 .gpio = 0x100,
1876 },
1877 .mute = {
1878 .name = name_mute,
1879 .amux = TV,
1880 .gpio = 0x000,
1881 },
1882 },
1883 [SAA7134_BOARD_THYPHOON_DVBT_DUO_CARDBUS] = {
1884 .name = "Typhoon DVB-T Duo Digital/Analog Cardbus",
1885 .audio_clock = 0x00200000,
1886 .tuner_type = TUNER_PHILIPS_TDA8290,
1887 .radio_type = UNSET,
1888 .tuner_addr = ADDR_UNSET,
1889 .radio_addr = ADDR_UNSET,
1890 .mpeg = SAA7134_MPEG_DVB,
1891 /* .gpiomask = 0xe000, */
1892 .inputs = {{
1893 .name = name_tv,
1894 .vmux = 1,
1895 .amux = TV,
1896 /* .gpio = 0x0000, */
1897 .tv = 1,
1898 },{
1899 .name = name_comp1, /* Composite signal on S-Video input */
1900 .vmux = 0,
1901 .amux = LINE2,
1902 /* .gpio = 0x4000, */
1903 },{
1904 .name = name_comp2, /* Composite input */
1905 .vmux = 3,
1906 .amux = LINE2,
1907 /* .gpio = 0x4000, */
1908 },{
1909 .name = name_svideo, /* S-Video signal on S-Video input */
1910 .vmux = 8,
1911 .amux = LINE2,
1912 /* .gpio = 0x4000, */
1913 }},
1914 .radio = {
1915 .name = name_radio,
1916 .amux = LINE2,
1917 },
1918 .mute = {
1919 .name = name_mute,
1920 .amux = LINE1,
1921 },
1922 },
1923 [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII] = {
1924 .name = "Compro VideoMate TV Gold+II",
1925 .audio_clock = 0x002187de7,
1926 .tuner_type = TUNER_LG_PAL_NEW_TAPC,
1927 .radio_type = TUNER_TEA5767,
1928 .tuner_addr = 0x63,
1929 .radio_addr = 0x60,
1930 .gpiomask = 0x8c1880,
1931 .inputs = {{
1932 .name = name_svideo,
1933 .vmux = 0,
1934 .amux = LINE1,
1935 .gpio = 0x800800,
1936 },{
1937 .name = name_comp1,
1938 .vmux = 3,
1939 .amux = LINE1,
1940 .gpio = 0x801000,
1941 },{
1942 .name = name_tv,
1943 .vmux = 1,
1944 .amux = TV,
1945 .tv = 1,
1946 .gpio = 0x800000,
1947 }},
1948 .radio = {
1949 .name = name_radio,
1950 .amux = TV,
1951 .gpio = 0x880000,
1952 },
1953 .mute = {
1954 .name = name_mute,
1955 .amux = LINE2,
1956 .gpio = 0x840000,
1957 },
1958 },
1959 [SAA7134_BOARD_KWORLD_XPERT] = {
1960 /*
1961 FIXME:
1962 - Remote control doesn't initialize properly.
1963 - Audio volume starts muted,
1964 then gradually increases after channel change.
1965 - Overlay scaling problems (application error?)
1966 - Composite S-Video untested.
1967 From: Konrad Rzepecki <hannibal@megapolis.pl>
1968 */
1969 .name = "Kworld Xpert TV PVR7134",
1970 .audio_clock = 0x00187de7,
1971 .tuner_type = TUNER_TENA_9533_DI,
1972 .radio_type = TUNER_TEA5767,
1973 .tuner_addr = 0x61,
1974 .radio_addr = 0x60,
1975 .gpiomask = 0x0700,
1976 .inputs = {{
1977 .name = name_tv,
1978 .vmux = 1,
1979 .amux = TV,
1980 .tv = 1,
1981 .gpio = 0x000,
1982 },{
1983 .name = name_comp1,
1984 .vmux = 3,
1985 .amux = LINE1,
1986 .gpio = 0x200, /* gpio by DScaler */
1987 },{
1988 .name = name_svideo,
1989 .vmux = 0,
1990 .amux = LINE1,
1991 .gpio = 0x200,
1992 }},
1993 .radio = {
1994 .name = name_radio,
1995 .amux = LINE1,
1996 .gpio = 0x100,
1997 },
1998 .mute = {
1999 .name = name_mute,
2000 .amux = TV,
2001 .gpio = 0x000,
2002 },
2003 },
2004};
2005
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002006
Linus Torvalds1da177e2005-04-16 15:20:36 -07002007const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
2008
2009/* ------------------------------------------------------------------ */
2010/* PCI ids + subsystem IDs */
2011
2012struct pci_device_id saa7134_pci_tbl[] = {
2013 {
2014 .vendor = PCI_VENDOR_ID_PHILIPS,
2015 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2016 .subvendor = PCI_VENDOR_ID_PHILIPS,
2017 .subdevice = 0x2001,
2018 .driver_data = SAA7134_BOARD_PROTEUS_PRO,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002019 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002020 .vendor = PCI_VENDOR_ID_PHILIPS,
2021 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2022 .subvendor = PCI_VENDOR_ID_PHILIPS,
2023 .subdevice = 0x2001,
2024 .driver_data = SAA7134_BOARD_PROTEUS_PRO,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002025 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002026 .vendor = PCI_VENDOR_ID_PHILIPS,
2027 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2028 .subvendor = PCI_VENDOR_ID_PHILIPS,
2029 .subdevice = 0x6752,
2030 .driver_data = SAA7134_BOARD_EMPRESS,
2031 },{
2032 .vendor = PCI_VENDOR_ID_PHILIPS,
2033 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002034 .subvendor = 0x1131,
2035 .subdevice = 0x4e85,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002036 .driver_data = SAA7134_BOARD_MONSTERTV,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002037 },{
2038 .vendor = PCI_VENDOR_ID_PHILIPS,
2039 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2040 .subvendor = 0x153B,
2041 .subdevice = 0x1142,
2042 .driver_data = SAA7134_BOARD_CINERGY400,
2043 },{
2044 .vendor = PCI_VENDOR_ID_PHILIPS,
2045 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2046 .subvendor = 0x153B,
2047 .subdevice = 0x1143,
2048 .driver_data = SAA7134_BOARD_CINERGY600,
2049 },{
2050 .vendor = PCI_VENDOR_ID_PHILIPS,
2051 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2052 .subvendor = 0x153B,
2053 .subdevice = 0x1158,
2054 .driver_data = SAA7134_BOARD_CINERGY600_MK3,
2055 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002056 .vendor = PCI_VENDOR_ID_PHILIPS,
2057 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2058 .subvendor = 0x153b,
2059 .subdevice = 0x1162,
2060 .driver_data = SAA7134_BOARD_CINERGY400_CARDBUS,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002061 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002062 .vendor = PCI_VENDOR_ID_PHILIPS,
2063 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2064 .subvendor = 0x5168,
2065 .subdevice = 0x0138,
2066 .driver_data = SAA7134_BOARD_FLYVIDEO3000,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002067 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002068 .vendor = PCI_VENDOR_ID_PHILIPS,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002069 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2070 .subvendor = 0x4e42, /* "Typhoon PCI Capture TV Card" Art.No. 50673 */
2071 .subdevice = 0x0138,
2072 .driver_data = SAA7134_BOARD_FLYVIDEO3000,
2073 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002074 .vendor = PCI_VENDOR_ID_PHILIPS,
2075 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
2076 .subvendor = 0x5168,
2077 .subdevice = 0x0138,
2078 .driver_data = SAA7134_BOARD_FLYVIDEO2000,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002079 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002080 .vendor = PCI_VENDOR_ID_PHILIPS,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002081 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002082 .subvendor = 0x5168,
2083 .subdevice = 0x0212, /* minipci, LR212 */
2084 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002085 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002086 .vendor = PCI_VENDOR_ID_PHILIPS,
2087 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
Peter Missel10e92062005-05-01 08:59:21 -07002088 .subvendor = 0x5168, /* Animation Technologies (LifeView) */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002089 .subdevice = 0x0214, /* Standard PCI, LR214WF */
2090 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002091 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002092 .vendor = PCI_VENDOR_ID_PHILIPS,
Peter Missel10e92062005-05-01 08:59:21 -07002093 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2094 .subvendor = 0x1489, /* KYE */
2095 .subdevice = 0x0214, /* Genius VideoWonder ProTV */
2096 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002097 },{
Peter Missel10e92062005-05-01 08:59:21 -07002098 .vendor = PCI_VENDOR_ID_PHILIPS,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002099 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2100 .subvendor = 0x16be,
2101 .subdevice = 0x0003,
2102 .driver_data = SAA7134_BOARD_MD7134,
2103 },{
2104 .vendor = PCI_VENDOR_ID_PHILIPS,
2105 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
2106 .subvendor = 0x1048,
2107 .subdevice = 0x226b,
2108 .driver_data = SAA7134_BOARD_ELSA,
2109 },{
2110 .vendor = PCI_VENDOR_ID_PHILIPS,
2111 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
2112 .subvendor = 0x1048,
2113 .subdevice = 0x226b,
2114 .driver_data = SAA7134_BOARD_ELSA_500TV,
2115 },{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002116 .vendor = PCI_VENDOR_ID_PHILIPS,
2117 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2118 .subvendor = PCI_VENDOR_ID_ASUSTEK,
2119 .subdevice = 0x4842,
2120 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002121 },{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002122 .vendor = PCI_VENDOR_ID_PHILIPS,
2123 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2124 .subvendor = PCI_VENDOR_ID_ASUSTEK,
2125 .subdevice = 0x4845,
2126 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7135,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002127 },{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002128 .vendor = PCI_VENDOR_ID_PHILIPS,
2129 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2130 .subvendor = PCI_VENDOR_ID_ASUSTEK,
2131 .subdevice = 0x4830,
2132 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002133 },{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002134 .vendor = PCI_VENDOR_ID_PHILIPS,
2135 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2136 .subvendor = PCI_VENDOR_ID_ASUSTEK,
2137 .subdevice = 0x4843,
2138 .driver_data = SAA7134_BOARD_ASUSTEK_TVFM7133,
2139 },{
2140 .vendor = PCI_VENDOR_ID_PHILIPS,
2141 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2142 .subvendor = PCI_VENDOR_ID_ASUSTEK,
2143 .subdevice = 0x4840,
2144 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
2145 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002146 .vendor = PCI_VENDOR_ID_PHILIPS,
2147 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2148 .subvendor = PCI_VENDOR_ID_PHILIPS,
2149 .subdevice = 0xfe01,
2150 .driver_data = SAA7134_BOARD_TVSTATION_RDS,
2151 },{
2152 .vendor = PCI_VENDOR_ID_PHILIPS,
2153 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2154 .subvendor = 0x1894,
2155 .subdevice = 0xfe01,
2156 .driver_data = SAA7134_BOARD_TVSTATION_RDS,
2157 },{
2158 .vendor = PCI_VENDOR_ID_PHILIPS,
2159 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2160 .subvendor = 0x1894,
2161 .subdevice = 0xa006,
2162 .driver_data = SAA7134_BOARD_TVSTATION_DVR,
2163 },{
2164 .vendor = PCI_VENDOR_ID_PHILIPS,
2165 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002166 .subvendor = 0x1131,
2167 .subdevice = 0x7133,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002168 .driver_data = SAA7134_BOARD_VA1000POWER,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002169 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002170 .vendor = PCI_VENDOR_ID_PHILIPS,
2171 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002172 .subvendor = PCI_VENDOR_ID_PHILIPS,
2173 .subdevice = 0x2001,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002174 .driver_data = SAA7134_BOARD_10MOONSTVMASTER,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002175 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002176 .vendor = PCI_VENDOR_ID_PHILIPS,
2177 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002178 .subvendor = 0x185b,
2179 .subdevice = 0xc100,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002180 .driver_data = SAA7134_BOARD_VIDEOMATE_TV,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002181 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002182 .vendor = PCI_VENDOR_ID_PHILIPS,
2183 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002184 .subvendor = 0x185b,
2185 .subdevice = 0xc100,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002186 .driver_data = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002187 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002188 .vendor = PCI_VENDOR_ID_PHILIPS,
2189 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002190 .subvendor = PCI_VENDOR_ID_MATROX,
2191 .subdevice = 0x48d0,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002192 .driver_data = SAA7134_BOARD_CRONOS_PLUS,
2193 },{
2194 .vendor = PCI_VENDOR_ID_PHILIPS,
2195 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002196 .subvendor = 0x1461, /* Avermedia Technologies Inc */
2197 .subdevice = 0xa70b,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002198 .driver_data = SAA7134_BOARD_MD2819,
2199 },{
2200 .vendor = PCI_VENDOR_ID_PHILIPS,
2201 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002202 .subvendor = 0x1461, /* Avermedia Technologies Inc */
2203 .subdevice = 0x2115,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002204 .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
2205 },{
2206 .vendor = PCI_VENDOR_ID_PHILIPS,
2207 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002208 .subvendor = 0x1461, /* Avermedia Technologies Inc */
2209 .subdevice = 0x2108,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002210 .driver_data = SAA7134_BOARD_AVERMEDIA_305,
2211 },{
2212 .vendor = PCI_VENDOR_ID_PHILIPS,
2213 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002214 .subvendor = 0x1461, /* Avermedia Technologies Inc */
2215 .subdevice = 0x10ff,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002216 .driver_data = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002217 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002218 /* AVerMedia CardBus */
2219 .vendor = PCI_VENDOR_ID_PHILIPS,
2220 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002221 .subvendor = 0x1461, /* Avermedia Technologies Inc */
2222 .subdevice = 0xd6ee,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002223 .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS,
2224 },{
2225 /* TransGear 3000TV */
2226 .vendor = PCI_VENDOR_ID_PHILIPS,
2227 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002228 .subvendor = 0x1461, /* Avermedia Technologies Inc */
2229 .subdevice = 0x050c,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002230 .driver_data = SAA7134_BOARD_TG3000TV,
2231 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002232 .vendor = PCI_VENDOR_ID_PHILIPS,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002233 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2234 .subvendor = 0x11bd,
2235 .subdevice = 0x002b,
2236 .driver_data = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
2237 },{
2238 .vendor = PCI_VENDOR_ID_PHILIPS,
2239 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2240 .subvendor = 0x11bd,
2241 .subdevice = 0x002d,
2242 .driver_data = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
2243 },{
2244 .vendor = PCI_VENDOR_ID_PHILIPS,
2245 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2246 .subvendor = 0x1019,
2247 .subdevice = 0x4cb4,
2248 .driver_data = SAA7134_BOARD_ECS_TVP3XP,
2249 },{
2250 .vendor = PCI_VENDOR_ID_PHILIPS,
2251 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2252 .subvendor = 0x1019,
2253 .subdevice = 0x4cb5,
2254 .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB5,
2255 },{
2256 .vendor = PCI_VENDOR_ID_PHILIPS,
2257 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2258 .subvendor = 0x12ab,
2259 .subdevice = 0x0800,
2260 .driver_data = SAA7134_BOARD_UPMOST_PURPLE_TV,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002261 },{
2262 .vendor = PCI_VENDOR_ID_PHILIPS,
2263 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
2264 .subvendor = 0x153B,
2265 .subdevice = 0x1152,
2266 .driver_data = SAA7134_BOARD_CINERGY200,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002267 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002268 .vendor = PCI_VENDOR_ID_PHILIPS,
2269 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002270 .subvendor = 0x185b,
2271 .subdevice = 0xc100,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002272 .driver_data = SAA7134_BOARD_VIDEOMATE_TV_PVR,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002273 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002274 .vendor = PCI_VENDOR_ID_PHILIPS,
2275 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002276 .subvendor = 0x1131,
2277 .subdevice = 0,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002278 .driver_data = SAA7134_BOARD_SABRENT_SBTTVFM,
2279 },{
2280 .vendor = PCI_VENDOR_ID_PHILIPS,
2281 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2282 .subvendor = 0x1461, /* Avermedia Technologies Inc */
2283 .subdevice = 0x9715,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002284 .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_307,
2285 },{
2286 .vendor = PCI_VENDOR_ID_PHILIPS,
2287 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2288 .subvendor = 0x1461, /* Avermedia Technologies Inc */
2289 .subdevice = 0xa70a,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002290 .driver_data = SAA7134_BOARD_AVERMEDIA_307,
2291 },{
2292 .vendor = PCI_VENDOR_ID_PHILIPS,
2293 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2294 .subvendor = 0x185b,
2295 .subdevice = 0xc200,
2296 .driver_data = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002297 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002298 .vendor = PCI_VENDOR_ID_PHILIPS,
2299 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2300 .subvendor = 0x1540,
2301 .subdevice = 0x9524,
2302 .driver_data = SAA7134_BOARD_PROVIDEO_PV952,
2303
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002304 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002305 .vendor = PCI_VENDOR_ID_PHILIPS,
2306 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2307 .subvendor = 0x5168,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002308 .subdevice = 0x0502, /* Cardbus version */
2309 .driver_data = SAA7134_BOARD_FLYDVBTDUO,
2310 },{
2311 .vendor = PCI_VENDOR_ID_PHILIPS,
2312 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2313 .subvendor = 0x5168,
2314 .subdevice = 0x0306, /* PCI version */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002315 .driver_data = SAA7134_BOARD_FLYDVBTDUO,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002316 },{
2317 .vendor = PCI_VENDOR_ID_PHILIPS,
2318 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2319 .subvendor = 0x1461, /* Avermedia Technologies Inc */
2320 .subdevice = 0xf31f,
2321 .driver_data = SAA7134_BOARD_AVERMEDIA_GO_007_FM,
2322
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002323 },{
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002324 .vendor = PCI_VENDOR_ID_PHILIPS,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002325 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
2326 .subvendor = PCI_VENDOR_ID_PHILIPS,
2327 .subdevice = 0x2004,
2328 .driver_data = SAA7134_BOARD_PHILIPS_TOUGH,
2329 },{
2330 .vendor = PCI_VENDOR_ID_PHILIPS,
2331 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002332 .subvendor = 0x1421,
2333 .subdevice = 0x0350, /* PCI version */
2334 .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
2335
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002336 },{
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002337 .vendor = PCI_VENDOR_ID_PHILIPS,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002338 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002339 .subvendor = 0x1421,
2340 .subdevice = 0x0370, /* cardbus version */
2341 .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002342
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002343 },{ /* Typhoon DVB-T Duo Digital/Analog Cardbus */
2344 .vendor = PCI_VENDOR_ID_PHILIPS,
2345 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
2346 .subvendor = 0x4e42,
2347 .subdevice = 0x0502,
2348 .driver_data = SAA7134_BOARD_THYPHOON_DVBT_DUO_CARDBUS,
2349
2350 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002351 /* --- boards without eeprom + subsystem ID --- */
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002352 .vendor = PCI_VENDOR_ID_PHILIPS,
2353 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
2354 .subvendor = PCI_VENDOR_ID_PHILIPS,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002355 .subdevice = 0,
2356 .driver_data = SAA7134_BOARD_NOAUTO,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002357 },{
2358 .vendor = PCI_VENDOR_ID_PHILIPS,
2359 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
2360 .subvendor = PCI_VENDOR_ID_PHILIPS,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002361 .subdevice = 0,
2362 .driver_data = SAA7134_BOARD_NOAUTO,
2363 },{
2364
2365 /* --- default catch --- */
2366 .vendor = PCI_VENDOR_ID_PHILIPS,
2367 .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002368 .subvendor = PCI_ANY_ID,
2369 .subdevice = PCI_ANY_ID,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002370 .driver_data = SAA7134_BOARD_UNKNOWN,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002371 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002372 .vendor = PCI_VENDOR_ID_PHILIPS,
2373 .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002374 .subvendor = PCI_ANY_ID,
2375 .subdevice = PCI_ANY_ID,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002376 .driver_data = SAA7134_BOARD_UNKNOWN,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002377 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002378 .vendor = PCI_VENDOR_ID_PHILIPS,
2379 .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002380 .subvendor = PCI_ANY_ID,
2381 .subdevice = PCI_ANY_ID,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002382 .driver_data = SAA7134_BOARD_UNKNOWN,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002383 },{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002384 .vendor = PCI_VENDOR_ID_PHILIPS,
2385 .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002386 .subvendor = PCI_ANY_ID,
2387 .subdevice = PCI_ANY_ID,
Linus Torvalds1da177e2005-04-16 15:20:36 -07002388 .driver_data = SAA7134_BOARD_UNKNOWN,
2389 },{
2390 /* --- end of list --- */
2391 }
2392};
2393MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
2394
2395/* ----------------------------------------------------------- */
2396/* flyvideo tweaks */
2397
Linus Torvalds1da177e2005-04-16 15:20:36 -07002398
2399static void board_flyvideo(struct saa7134_dev *dev)
2400{
Linus Torvalds1da177e2005-04-16 15:20:36 -07002401 printk("%s: there are different flyvideo cards with different tuners\n"
2402 "%s: out there, you might have to use the tuner=<nr> insmod\n"
2403 "%s: option to override the default value.\n",
2404 dev->name, dev->name, dev->name);
2405}
2406
2407/* ----------------------------------------------------------- */
2408
2409int saa7134_board_init1(struct saa7134_dev *dev)
2410{
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002411 /* Always print gpio, often manufacturers encode tuner type and other info. */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002412 saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
2413 dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
2414 printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
2415
2416 switch (dev->board) {
2417 case SAA7134_BOARD_FLYVIDEO2000:
2418 case SAA7134_BOARD_FLYVIDEO3000:
2419 dev->has_remote = 1;
2420 board_flyvideo(dev);
2421 break;
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002422 case SAA7134_BOARD_FLYTVPLATINUM_FM:
Linus Torvalds1da177e2005-04-16 15:20:36 -07002423 case SAA7134_BOARD_CINERGY400:
2424 case SAA7134_BOARD_CINERGY600:
2425 case SAA7134_BOARD_CINERGY600_MK3:
2426 case SAA7134_BOARD_ECS_TVP3XP:
2427 case SAA7134_BOARD_ECS_TVP3XP_4CB5:
2428 case SAA7134_BOARD_MD2819:
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002429 case SAA7134_BOARD_KWORLD_VSTREAM_XPERT:
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002430 case SAA7134_BOARD_KWORLD_XPERT:
Linus Torvalds1da177e2005-04-16 15:20:36 -07002431 case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
2432 case SAA7134_BOARD_AVERMEDIA_305:
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002433 case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
Linus Torvalds1da177e2005-04-16 15:20:36 -07002434 case SAA7134_BOARD_AVERMEDIA_307:
Mauro Carvalho Chehabac19ecc2005-06-23 22:05:09 -07002435 case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002436/* case SAA7134_BOARD_SABRENT_SBTTVFM: */ /* not finished yet */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002437 case SAA7134_BOARD_VIDEOMATE_TV_PVR:
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002438 case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII:
2439 case SAA7134_BOARD_MANLI_MTV001:
2440 case SAA7134_BOARD_MANLI_MTV002:
Linus Torvalds1da177e2005-04-16 15:20:36 -07002441 case SAA7134_BOARD_AVACSSMARTTV:
2442 dev->has_remote = 1;
2443 break;
2444 case SAA7134_BOARD_MD5044:
2445 printk("%s: seems there are two different versions of the MD5044\n"
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002446 "%s: (with the same ID) out there. If sound doesn't work for\n"
2447 "%s: you try the audio_clock_override=0x200000 insmod option.\n",
2448 dev->name,dev->name,dev->name);
Linus Torvalds1da177e2005-04-16 15:20:36 -07002449 break;
2450 case SAA7134_BOARD_CINERGY400_CARDBUS:
2451 /* power-up tuner chip */
2452 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000);
2453 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
2454 msleep(1);
2455 break;
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002456 case SAA7134_BOARD_FLYDVBTDUO:
2457 case SAA7134_BOARD_THYPHOON_DVBT_DUO_CARDBUS:
2458 /* turn the fan on Hac: static for the time being */
2459 saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
2460 saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x06);
2461 break;
2462 case SAA7134_BOARD_AVERMEDIA_CARDBUS:
2463 /* power-up tuner chip */
2464 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff);
2465 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
2466 msleep(1);
2467 break;
Linus Torvalds1da177e2005-04-16 15:20:36 -07002468 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07002469 return 0;
2470}
2471
2472/* stuff which needs working i2c */
2473int saa7134_board_init2(struct saa7134_dev *dev)
2474{
2475 unsigned char buf;
2476 int board;
2477
2478 switch (dev->board) {
2479 case SAA7134_BOARD_BMK_MPEX_NOTUNER:
2480 case SAA7134_BOARD_BMK_MPEX_TUNER:
2481 dev->i2c_client.addr = 0x60;
2482 board = (i2c_master_recv(&dev->i2c_client,&buf,0) < 0)
2483 ? SAA7134_BOARD_BMK_MPEX_NOTUNER
2484 : SAA7134_BOARD_BMK_MPEX_TUNER;
2485 if (board == dev->board)
2486 break;
2487 dev->board = board;
2488 printk("%s: board type fixup: %s\n", dev->name,
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002489 saa7134_boards[dev->board].name);
Linus Torvalds1da177e2005-04-16 15:20:36 -07002490 dev->tuner_type = saa7134_boards[dev->board].tuner_type;
Mauro Carvalho Chehab330a1152005-07-12 13:59:01 -07002491
2492 if (TUNER_ABSENT != dev->tuner_type) {
2493 struct tuner_setup tun_setup;
2494
2495 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
2496 tun_setup.type = dev->tuner_type;
2497 tun_setup.addr = ADDR_UNSET;
2498
2499 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR, &tun_setup);
2500 }
2501 break;
2502case SAA7134_BOARD_MD7134:
2503 {
2504 struct tuner_setup tun_setup;
2505 u8 subaddr;
2506 u8 data[3];
2507 int ret, tuner_t;
2508
2509 struct i2c_msg msg[] = {{.addr=0x50, .flags=0, .buf=&subaddr, .len = 1},
2510 {.addr=0x50, .flags=I2C_M_RD, .buf=data, .len = 3}};
2511 subaddr= 0x14;
2512 tuner_t = 0;
2513 ret = i2c_transfer(&dev->i2c_adap, msg, 2);
2514 if (ret != 2) {
2515 printk(KERN_ERR "EEPROM read failure\n");
2516 } else if ((data[0] != 0) && (data[0] != 0xff)) {
2517 /* old config structure */
2518 subaddr = data[0] + 2;
2519 msg[1].len = 2;
2520 i2c_transfer(&dev->i2c_adap, msg, 2);
2521 tuner_t = (data[0] << 8) + data[1];
2522 switch (tuner_t){
2523 case 0x0103:
2524 dev->tuner_type = TUNER_PHILIPS_PAL;
2525 break;
2526 case 0x010C:
2527 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
2528 break;
2529 default:
2530 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
2531 }
2532 } else if ((data[1] != 0) && (data[1] != 0xff)) {
2533 /* new config structure */
2534 subaddr = data[1] + 1;
2535 msg[1].len = 1;
2536 i2c_transfer(&dev->i2c_adap, msg, 2);
2537 subaddr = data[0] + 1;
2538 msg[1].len = 2;
2539 i2c_transfer(&dev->i2c_adap, msg, 2);
2540 tuner_t = (data[1] << 8) + data[0];
2541 switch (tuner_t) {
2542 case 0x0005:
2543 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
2544 break;
2545 case 0x001d:
2546 dev->tuner_type = TUNER_PHILIPS_FMD1216ME_MK3;
2547 printk(KERN_INFO "%s Board has DVB-T\n", dev->name);
2548 break;
2549 default:
2550 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
2551 }
2552 } else {
2553 printk(KERN_ERR "%s unexpected config structure\n", dev->name);
2554 }
2555
2556 printk(KERN_INFO "%s Tuner type is %d\n", dev->name, dev->tuner_type);
2557 if (dev->tuner_type == TUNER_PHILIPS_FMD1216ME_MK3) {
2558 dev->tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE;
2559 saa7134_i2c_call_clients(dev,TDA9887_SET_CONFIG, &dev->tda9887_conf);
2560 }
2561
2562 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
2563 tun_setup.type = dev->tuner_type;
2564 tun_setup.addr = ADDR_UNSET;
2565
2566 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup);
2567 }
Linus Torvalds1da177e2005-04-16 15:20:36 -07002568 break;
2569 }
2570 return 0;
2571}
2572
2573/* ----------------------------------------------------------- */
2574/*
2575 * Local variables:
2576 * c-basic-offset: 8
2577 * End:
2578 */