Advertisement
Guest User

7134cards

a guest
Jun 26th, 2015
2,115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 210.77 KB | None | 0 0
  1. /*
  2. *
  3. * device driver for philips saa7134 based TV cards
  4. * card-specific stuff.
  5. *
  6. * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
  7. *
  8. * This program is free software; you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License as published by
  10. * the Free Software Foundation; either version 2 of the License, or
  11. * (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  21. */
  22.  
  23. #include "saa7134.h"
  24. #include "saa7134-reg.h"
  25.  
  26. #include <linux/init.h>
  27. #include <linux/module.h>
  28. #include <linux/i2c.h>
  29. #include <linux/i2c-algo-bit.h>
  30.  
  31. #include "tuner-xc2028.h"
  32. #include <media/v4l2-common.h>
  33. #include <media/tveeprom.h>
  34. #include "tea5767.h"
  35. #include "tda18271.h"
  36. #include "xc5000.h"
  37. #include "s5h1411.h"
  38.  
  39. /* commly used strings */
  40. static char name_mute[] = "mute";
  41. static char name_radio[] = "Radio";
  42. static char name_tv[] = "Television";
  43. static char name_tv_mono[] = "TV (mono only)";
  44. static char name_comp[] = "Composite";
  45. static char name_comp1[] = "Composite1";
  46. static char name_comp2[] = "Composite2";
  47. static char name_comp3[] = "Composite3";
  48. static char name_comp4[] = "Composite4";
  49. static char name_svideo[] = "S-Video";
  50.  
  51. /* ------------------------------------------------------------------ */
  52. /* board config info */
  53.  
  54. static struct tda18271_std_map aver_a706_std_map = {
  55. .fm_radio = { .if_freq = 5500, .fm_rfn = 0, .agc_mode = 3, .std = 0,
  56. .if_lvl = 0, .rfagc_top = 0x2c, },
  57. };
  58.  
  59. /* If radio_type !=UNSET, radio_addr should be specified
  60. */
  61.  
  62. struct saa7134_board saa7134_boards[] = {
  63. [SAA7134_BOARD_UNKNOWN] = {
  64. .name = "UNKNOWN/GENERIC",
  65. .audio_clock = 0x00187de7,
  66. .tuner_type = TUNER_ABSENT,
  67. .radio_type = UNSET,
  68. .tuner_addr = ADDR_UNSET,
  69. .radio_addr = ADDR_UNSET,
  70.  
  71. .inputs = {{
  72. .name = "default",
  73. .vmux = 0,
  74. .amux = LINE1,
  75. }},
  76. },
  77. [SAA7134_BOARD_PROTEUS_PRO] = {
  78. /* /me */
  79. .name = "Proteus Pro [philips reference design]",
  80. .audio_clock = 0x00187de7,
  81. .tuner_type = TUNER_PHILIPS_PAL,
  82. .radio_type = UNSET,
  83. .tuner_addr = ADDR_UNSET,
  84. .radio_addr = ADDR_UNSET,
  85.  
  86. .inputs = {{
  87. .name = name_comp1,
  88. .vmux = 0,
  89. .amux = LINE1,
  90. },{
  91. .name = name_tv,
  92. .vmux = 1,
  93. .amux = TV,
  94. .tv = 1,
  95. },{
  96. .name = name_tv_mono,
  97. .vmux = 1,
  98. .amux = LINE2,
  99. .tv = 1,
  100. }},
  101. .radio = {
  102. .name = name_radio,
  103. .amux = LINE2,
  104. },
  105. },
  106. [SAA7134_BOARD_FLYVIDEO3000] = {
  107. /* "Marco d'Itri" <md@Linux.IT> */
  108. .name = "LifeView FlyVIDEO3000",
  109. .audio_clock = 0x00200000,
  110. .tuner_type = TUNER_PHILIPS_PAL,
  111. .radio_type = UNSET,
  112. .tuner_addr = ADDR_UNSET,
  113. .radio_addr = ADDR_UNSET,
  114.  
  115. .gpiomask = 0xe000,
  116. .inputs = {{
  117. .name = name_tv,
  118. .vmux = 1,
  119. .amux = TV,
  120. .gpio = 0x8000,
  121. .tv = 1,
  122. },{
  123. .name = name_tv_mono,
  124. .vmux = 1,
  125. .amux = LINE2,
  126. .gpio = 0x0000,
  127. .tv = 1,
  128. },{
  129. .name = name_comp1,
  130. .vmux = 0,
  131. .amux = LINE2,
  132. .gpio = 0x4000,
  133. },{
  134. .name = name_comp2,
  135. .vmux = 3,
  136. .amux = LINE2,
  137. .gpio = 0x4000,
  138. },{
  139. .name = name_svideo,
  140. .vmux = 8,
  141. .amux = LINE2,
  142. .gpio = 0x4000,
  143. }},
  144. .radio = {
  145. .name = name_radio,
  146. .amux = LINE2,
  147. .gpio = 0x2000,
  148. },
  149. .mute = {
  150. .name = name_mute,
  151. .amux = TV,
  152. .gpio = 0x8000,
  153. },
  154. },
  155. [SAA7134_BOARD_FLYVIDEO2000] = {
  156. /* "TC Wan" <tcwan@cs.usm.my> */
  157. .name = "LifeView/Typhoon FlyVIDEO2000",
  158. .audio_clock = 0x00200000,
  159. .tuner_type = TUNER_LG_PAL_NEW_TAPC,
  160. .radio_type = UNSET,
  161. .tuner_addr = ADDR_UNSET,
  162. .radio_addr = ADDR_UNSET,
  163.  
  164. .gpiomask = 0xe000,
  165. .inputs = {{
  166. .name = name_tv,
  167. .vmux = 1,
  168. .amux = LINE2,
  169. .gpio = 0x0000,
  170. .tv = 1,
  171. },{
  172. .name = name_comp1,
  173. .vmux = 0,
  174. .amux = LINE2,
  175. .gpio = 0x4000,
  176. },{
  177. .name = name_comp2,
  178. .vmux = 3,
  179. .amux = LINE2,
  180. .gpio = 0x4000,
  181. },{
  182. .name = name_svideo,
  183. .vmux = 8,
  184. .amux = LINE2,
  185. .gpio = 0x4000,
  186. }},
  187. .radio = {
  188. .name = name_radio,
  189. .amux = LINE2,
  190. .gpio = 0x2000,
  191. },
  192. .mute = {
  193. .name = name_mute,
  194. .amux = LINE2,
  195. .gpio = 0x8000,
  196. },
  197. },
  198. [SAA7134_BOARD_FLYTVPLATINUM_MINI] = {
  199. /* "Arnaud Quette" <aquette@free.fr> */
  200. .name = "LifeView FlyTV Platinum Mini",
  201. .audio_clock = 0x00200000,
  202. .tuner_type = TUNER_PHILIPS_TDA8290,
  203. .radio_type = UNSET,
  204. .tuner_addr = ADDR_UNSET,
  205. .radio_addr = ADDR_UNSET,
  206.  
  207. .inputs = {{
  208. .name = name_tv,
  209. .vmux = 1,
  210. .amux = TV,
  211. .tv = 1,
  212. },{
  213. .name = name_comp1, /* Composite signal on S-Video input */
  214. .vmux = 0,
  215. .amux = LINE2,
  216. },{
  217. .name = name_comp2, /* Composite input */
  218. .vmux = 3,
  219. .amux = LINE2,
  220. },{
  221. .name = name_svideo,
  222. .vmux = 8,
  223. .amux = LINE2,
  224. }},
  225. },
  226. [SAA7134_BOARD_FLYTVPLATINUM_FM] = {
  227. /* LifeView FlyTV Platinum FM (LR214WF) */
  228. /* "Peter Missel <peter.missel@onlinehome.de> */
  229. .name = "LifeView FlyTV Platinum FM / Gold",
  230. .audio_clock = 0x00200000,
  231. .tuner_type = TUNER_PHILIPS_TDA8290,
  232. .radio_type = UNSET,
  233. .tuner_addr = ADDR_UNSET,
  234. .radio_addr = ADDR_UNSET,
  235.  
  236. .gpiomask = 0x1E000, /* Set GP16 and unused 15,14,13 to Output */
  237. .inputs = {{
  238. .name = name_tv,
  239. .vmux = 1,
  240. .amux = TV,
  241. .gpio = 0x10000, /* GP16=1 selects TV input */
  242. .tv = 1,
  243. },{
  244. /* .name = name_tv_mono,
  245. .vmux = 1,
  246. .amux = LINE2,
  247. .gpio = 0x0000,
  248. .tv = 1,
  249. },{
  250. */ .name = name_comp1, /* Composite signal on S-Video input */
  251. .vmux = 0,
  252. .amux = LINE2,
  253. /* .gpio = 0x4000, */
  254. },{
  255. .name = name_comp2, /* Composite input */
  256. .vmux = 3,
  257. .amux = LINE2,
  258. /* .gpio = 0x4000, */
  259. },{
  260. .name = name_svideo, /* S-Video signal on S-Video input */
  261. .vmux = 8,
  262. .amux = LINE2,
  263. /* .gpio = 0x4000, */
  264. }},
  265. .radio = {
  266. .name = name_radio,
  267. .amux = TV,
  268. .gpio = 0x00000, /* GP16=0 selects FM radio antenna */
  269. },
  270. .mute = {
  271. .name = name_mute,
  272. .amux = TV,
  273. .gpio = 0x10000,
  274. },
  275. },
  276. [SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM] = {
  277. /* RoverMedia TV Link Pro FM (LR138 REV:I) */
  278. /* Eugene Yudin <Eugene.Yudin@gmail.com> */
  279. .name = "RoverMedia TV Link Pro FM",
  280. .audio_clock = 0x00200000,
  281. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, /* TCL MFPE05 2 */
  282. .radio_type = UNSET,
  283. .tuner_addr = ADDR_UNSET,
  284. .radio_addr = ADDR_UNSET,
  285. .tda9887_conf = TDA9887_PRESENT,
  286. .gpiomask = 0xe000,
  287. .inputs = { {
  288. .name = name_tv,
  289. .vmux = 1,
  290. .amux = TV,
  291. .gpio = 0x8000,
  292. .tv = 1,
  293. }, {
  294. .name = name_tv_mono,
  295. .vmux = 1,
  296. .amux = LINE2,
  297. .gpio = 0x0000,
  298. .tv = 1,
  299. }, {
  300. .name = name_comp1,
  301. .vmux = 0,
  302. .amux = LINE2,
  303. .gpio = 0x4000,
  304. }, {
  305. .name = name_comp2,
  306. .vmux = 3,
  307. .amux = LINE2,
  308. .gpio = 0x4000,
  309. }, {
  310. .name = name_svideo,
  311. .vmux = 8,
  312. .amux = LINE2,
  313. .gpio = 0x4000,
  314. } },
  315. .radio = {
  316. .name = name_radio,
  317. .amux = LINE2,
  318. .gpio = 0x2000,
  319. },
  320. .mute = {
  321. .name = name_mute,
  322. .amux = TV,
  323. .gpio = 0x8000,
  324. },
  325. },
  326. [SAA7134_BOARD_EMPRESS] = {
  327. /* "Gert Vervoort" <gert.vervoort@philips.com> */
  328. .name = "EMPRESS",
  329. .audio_clock = 0x00187de7,
  330. .tuner_type = TUNER_PHILIPS_PAL,
  331. .radio_type = UNSET,
  332. .tuner_addr = ADDR_UNSET,
  333. .radio_addr = ADDR_UNSET,
  334. .empress_addr = 0x20,
  335.  
  336. .inputs = {{
  337. .name = name_comp1,
  338. .vmux = 0,
  339. .amux = LINE1,
  340. },{
  341. .name = name_svideo,
  342. .vmux = 8,
  343. .amux = LINE1,
  344. },{
  345. .name = name_tv,
  346. .vmux = 1,
  347. .amux = LINE2,
  348. .tv = 1,
  349. }},
  350. .radio = {
  351. .name = name_radio,
  352. .amux = LINE2,
  353. },
  354. .mpeg = SAA7134_MPEG_EMPRESS,
  355. .video_out = CCIR656,
  356. },
  357. [SAA7134_BOARD_MONSTERTV] = {
  358. /* "K.Ohta" <alpha292@bremen.or.jp> */
  359. .name = "SKNet Monster TV",
  360. .audio_clock = 0x00187de7,
  361. .tuner_type = TUNER_PHILIPS_NTSC_M,
  362. .radio_type = UNSET,
  363. .tuner_addr = ADDR_UNSET,
  364. .radio_addr = ADDR_UNSET,
  365.  
  366. .inputs = {{
  367. .name = name_tv,
  368. .vmux = 1,
  369. .amux = TV,
  370. .tv = 1,
  371. },{
  372. .name = name_comp1,
  373. .vmux = 0,
  374. .amux = LINE1,
  375. },{
  376. .name = name_svideo,
  377. .vmux = 8,
  378. .amux = LINE1,
  379. }},
  380. .radio = {
  381. .name = name_radio,
  382. .amux = LINE2,
  383. },
  384. },
  385. [SAA7134_BOARD_MD9717] = {
  386. .name = "Tevion MD 9717",
  387. .audio_clock = 0x00200000,
  388. .tuner_type = TUNER_PHILIPS_PAL,
  389. .radio_type = UNSET,
  390. .tuner_addr = ADDR_UNSET,
  391. .radio_addr = ADDR_UNSET,
  392. .inputs = {{
  393. .name = name_tv,
  394. .vmux = 1,
  395. .amux = TV,
  396. .tv = 1,
  397. },{
  398. /* workaround for problems with normal TV sound */
  399. .name = name_tv_mono,
  400. .vmux = 1,
  401. .amux = LINE2,
  402. .tv = 1,
  403. },{
  404. .name = name_comp1,
  405. .vmux = 0,
  406. .amux = LINE1,
  407. },{
  408. .name = name_comp2,
  409. .vmux = 3,
  410. .amux = LINE1,
  411. },{
  412. .name = name_svideo,
  413. .vmux = 8,
  414. .amux = LINE1,
  415. }},
  416. .radio = {
  417. .name = name_radio,
  418. .amux = LINE2,
  419. },
  420. .mute = {
  421. .name = name_mute,
  422. .amux = TV,
  423. },
  424. },
  425. [SAA7134_BOARD_TVSTATION_RDS] = {
  426. /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
  427. .name = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
  428. .audio_clock = 0x00200000,
  429. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  430. .radio_type = UNSET,
  431. .tuner_addr = ADDR_UNSET,
  432. .radio_addr = ADDR_UNSET,
  433. .tda9887_conf = TDA9887_PRESENT,
  434. .inputs = {{
  435. .name = name_tv,
  436. .vmux = 1,
  437. .amux = TV,
  438. .tv = 1,
  439. },{
  440. .name = name_tv_mono,
  441. .vmux = 1,
  442. .amux = LINE2,
  443. .tv = 1,
  444. },{
  445.  
  446. .name = name_svideo,
  447. .vmux = 8,
  448. .amux = LINE1,
  449. },{
  450. .name = name_comp1,
  451. .vmux = 3,
  452. .amux = LINE1,
  453. },{
  454.  
  455. .name = "CVid over SVid",
  456. .vmux = 0,
  457. .amux = LINE1,
  458. }},
  459. .radio = {
  460. .name = name_radio,
  461. .amux = LINE2,
  462. },
  463. },
  464. [SAA7134_BOARD_TVSTATION_DVR] = {
  465. .name = "KNC One TV-Station DVR",
  466. .audio_clock = 0x00200000,
  467. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  468. .radio_type = UNSET,
  469. .tuner_addr = ADDR_UNSET,
  470. .radio_addr = ADDR_UNSET,
  471. .empress_addr = 0x20,
  472. .tda9887_conf = TDA9887_PRESENT,
  473. .gpiomask = 0x820000,
  474. .inputs = {{
  475. .name = name_tv,
  476. .vmux = 1,
  477. .amux = TV,
  478. .tv = 1,
  479. .gpio = 0x20000,
  480. },{
  481. .name = name_svideo,
  482. .vmux = 8,
  483. .amux = LINE1,
  484. .gpio = 0x20000,
  485. },{
  486. .name = name_comp1,
  487. .vmux = 3,
  488. .amux = LINE1,
  489. .gpio = 0x20000,
  490. }},
  491. .radio = {
  492. .name = name_radio,
  493. .amux = LINE2,
  494. .gpio = 0x20000,
  495. },
  496. .mpeg = SAA7134_MPEG_EMPRESS,
  497. .video_out = CCIR656,
  498. },
  499. [SAA7134_BOARD_CINERGY400] = {
  500. .name = "Terratec Cinergy 400 TV",
  501. .audio_clock = 0x00200000,
  502. .tuner_type = TUNER_PHILIPS_PAL,
  503. .radio_type = UNSET,
  504. .tuner_addr = ADDR_UNSET,
  505. .radio_addr = ADDR_UNSET,
  506. .inputs = {{
  507. .name = name_tv,
  508. .vmux = 1,
  509. .amux = TV,
  510. .tv = 1,
  511. },{
  512. .name = name_comp1,
  513. .vmux = 4,
  514. .amux = LINE1,
  515. },{
  516. .name = name_svideo,
  517. .vmux = 8,
  518. .amux = LINE1,
  519. },{
  520. .name = name_comp2, /* CVideo over SVideo Connector */
  521. .vmux = 0,
  522. .amux = LINE1,
  523. }}
  524. },
  525. [SAA7134_BOARD_MD5044] = {
  526. .name = "Medion 5044",
  527. .audio_clock = 0x00187de7, /* was: 0x00200000, */
  528. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  529. .radio_type = UNSET,
  530. .tuner_addr = ADDR_UNSET,
  531. .radio_addr = ADDR_UNSET,
  532. .tda9887_conf = TDA9887_PRESENT,
  533. .inputs = {{
  534. .name = name_tv,
  535. .vmux = 1,
  536. .amux = TV,
  537. .tv = 1,
  538. },{
  539. /* workaround for problems with normal TV sound */
  540. .name = name_tv_mono,
  541. .vmux = 1,
  542. .amux = LINE2,
  543. .tv = 1,
  544. },{
  545. .name = name_comp1,
  546. .vmux = 0,
  547. .amux = LINE2,
  548. },{
  549. .name = name_comp2,
  550. .vmux = 3,
  551. .amux = LINE2,
  552. },{
  553. .name = name_svideo,
  554. .vmux = 8,
  555. .amux = LINE2,
  556. }},
  557. .radio = {
  558. .name = name_radio,
  559. .amux = LINE2,
  560. },
  561. },
  562. [SAA7134_BOARD_KWORLD] = {
  563. .name = "Kworld/KuroutoShikou SAA7130-TVPCI",
  564. .audio_clock = 0x00187de7,
  565. .tuner_type = TUNER_PHILIPS_NTSC_M,
  566. .radio_type = UNSET,
  567. .tuner_addr = ADDR_UNSET,
  568. .radio_addr = ADDR_UNSET,
  569. .inputs = {{
  570. .name = name_svideo,
  571. .vmux = 8,
  572. .amux = LINE1,
  573. },{
  574. .name = name_comp1,
  575. .vmux = 3,
  576. .amux = LINE1,
  577. },{
  578. .name = name_tv,
  579. .vmux = 1,
  580. .amux = LINE2,
  581. .tv = 1,
  582. }},
  583. },
  584. [SAA7134_BOARD_CINERGY600] = {
  585. .name = "Terratec Cinergy 600 TV",
  586. .audio_clock = 0x00200000,
  587. .tuner_type = TUNER_PHILIPS_PAL,
  588. .radio_type = UNSET,
  589. .tuner_addr = ADDR_UNSET,
  590. .radio_addr = ADDR_UNSET,
  591. .tda9887_conf = TDA9887_PRESENT,
  592. .inputs = {{
  593. .name = name_tv,
  594. .vmux = 1,
  595. .amux = TV,
  596. .tv = 1,
  597. },{
  598. .name = name_comp1,
  599. .vmux = 4,
  600. .amux = LINE1,
  601. },{
  602. .name = name_svideo,
  603. .vmux = 8,
  604. .amux = LINE1,
  605. },{
  606. .name = name_comp2, /* CVideo over SVideo Connector */
  607. .vmux = 0,
  608. .amux = LINE1,
  609. }},
  610. .radio = {
  611. .name = name_radio,
  612. .amux = LINE2,
  613. },
  614. },
  615. [SAA7134_BOARD_MD7134] = {
  616. .name = "Medion 7134",
  617. .audio_clock = 0x00187de7,
  618. .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
  619. .radio_type = UNSET,
  620. .tuner_addr = ADDR_UNSET,
  621. .radio_addr = ADDR_UNSET,
  622. .tda9887_conf = TDA9887_PRESENT,
  623. .mpeg = SAA7134_MPEG_DVB,
  624. .inputs = {{
  625. .name = name_tv,
  626. .vmux = 1,
  627. .amux = TV,
  628. .tv = 1,
  629. },{
  630. .name = name_comp1,
  631. .vmux = 0,
  632. .amux = LINE1,
  633. },{
  634. .name = name_svideo,
  635. .vmux = 8,
  636. .amux = LINE1,
  637. }},
  638. .radio = {
  639. .name = name_radio,
  640. .amux = LINE2,
  641. },
  642. .mute = {
  643. .name = name_mute,
  644. .amux = TV,
  645. },
  646. },
  647. [SAA7134_BOARD_TYPHOON_90031] = {
  648. /* aka Typhoon "TV+Radio", Art.Nr 90031 */
  649. /* Tom Zoerner <tomzo at users sourceforge net> */
  650. .name = "Typhoon TV+Radio 90031",
  651. .audio_clock = 0x00200000,
  652. .tuner_type = TUNER_PHILIPS_PAL,
  653. .radio_type = UNSET,
  654. .tuner_addr = ADDR_UNSET,
  655. .radio_addr = ADDR_UNSET,
  656. .tda9887_conf = TDA9887_PRESENT,
  657. .inputs = {{
  658. .name = name_tv,
  659. .vmux = 1,
  660. .amux = TV,
  661. .tv = 1,
  662. },{
  663. .name = name_comp1,
  664. .vmux = 3,
  665. .amux = LINE1,
  666. },{
  667. .name = name_svideo,
  668. .vmux = 8,
  669. .amux = LINE1,
  670. }},
  671. .radio = {
  672. .name = name_radio,
  673. .amux = LINE2,
  674. },
  675. },
  676. [SAA7134_BOARD_ELSA] = {
  677. .name = "ELSA EX-VISION 300TV",
  678. .audio_clock = 0x00187de7,
  679. .tuner_type = TUNER_HITACHI_NTSC,
  680. .radio_type = UNSET,
  681. .tuner_addr = ADDR_UNSET,
  682. .radio_addr = ADDR_UNSET,
  683. .inputs = {{
  684. .name = name_svideo,
  685. .vmux = 8,
  686. .amux = LINE1,
  687. },{
  688. .name = name_comp1,
  689. .vmux = 0,
  690. .amux = LINE1,
  691. },{
  692. .name = name_tv,
  693. .vmux = 4,
  694. .amux = LINE2,
  695. .tv = 1,
  696. }},
  697. },
  698. [SAA7134_BOARD_ELSA_500TV] = {
  699. .name = "ELSA EX-VISION 500TV",
  700. .audio_clock = 0x00187de7,
  701. .tuner_type = TUNER_HITACHI_NTSC,
  702. .radio_type = UNSET,
  703. .tuner_addr = ADDR_UNSET,
  704. .radio_addr = ADDR_UNSET,
  705. .inputs = {{
  706. .name = name_svideo,
  707. .vmux = 7,
  708. .amux = LINE1,
  709. },{
  710. .name = name_tv,
  711. .vmux = 8,
  712. .amux = TV,
  713. .tv = 1,
  714. },{
  715. .name = name_tv_mono,
  716. .vmux = 8,
  717. .amux = LINE2,
  718. .tv = 1,
  719. }},
  720. },
  721. [SAA7134_BOARD_ELSA_700TV] = {
  722. .name = "ELSA EX-VISION 700TV",
  723. .audio_clock = 0x00187de7,
  724. .tuner_type = TUNER_HITACHI_NTSC,
  725. .radio_type = UNSET,
  726. .tuner_addr = ADDR_UNSET,
  727. .radio_addr = ADDR_UNSET,
  728. .inputs = {{
  729. .name = name_tv,
  730. .vmux = 4,
  731. .amux = LINE2,
  732. .tv = 1,
  733. },{
  734. .name = name_comp1,
  735. .vmux = 6,
  736. .amux = LINE1,
  737. },{
  738. .name = name_svideo,
  739. .vmux = 7,
  740. .amux = LINE1,
  741. }},
  742. .mute = {
  743. .name = name_mute,
  744. .amux = TV,
  745. },
  746. },
  747. [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
  748. .name = "ASUS TV-FM 7134",
  749. .audio_clock = 0x00187de7,
  750. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  751. .radio_type = UNSET,
  752. .tuner_addr = ADDR_UNSET,
  753. .radio_addr = ADDR_UNSET,
  754. .tda9887_conf = TDA9887_PRESENT,
  755. .inputs = {{
  756. .name = name_tv,
  757. .vmux = 1,
  758. .amux = TV,
  759. .tv = 1,
  760. },{
  761. .name = name_comp1,
  762. .vmux = 4,
  763. .amux = LINE2,
  764. },{
  765. .name = name_svideo,
  766. .vmux = 6,
  767. .amux = LINE2,
  768. }},
  769. .radio = {
  770. .name = name_radio,
  771. .amux = LINE1,
  772. },
  773. },
  774. [SAA7134_BOARD_ASUSTeK_TVFM7135] = {
  775. .name = "ASUS TV-FM 7135",
  776. .audio_clock = 0x00187de7,
  777. .tuner_type = TUNER_PHILIPS_TDA8290,
  778. .radio_type = UNSET,
  779. .tuner_addr = ADDR_UNSET,
  780. .radio_addr = ADDR_UNSET,
  781. .gpiomask = 0x200000,
  782. .inputs = {{
  783. .name = name_tv,
  784. .vmux = 1,
  785. .amux = TV,
  786. .gpio = 0x0000,
  787. .tv = 1,
  788. },{
  789. .name = name_comp1,
  790. .vmux = 4,
  791. .amux = LINE2,
  792. .gpio = 0x0000,
  793. },{
  794. .name = name_svideo,
  795. .vmux = 6,
  796. .amux = LINE2,
  797. .gpio = 0x0000,
  798. }},
  799. .radio = {
  800. .name = name_radio,
  801. .amux = TV,
  802. .gpio = 0x200000,
  803. },
  804. .mute = {
  805. .name = name_mute,
  806. .gpio = 0x0000,
  807. },
  808.  
  809. },
  810. [SAA7134_BOARD_VA1000POWER] = {
  811. .name = "AOPEN VA1000 POWER",
  812. .audio_clock = 0x00187de7,
  813. .tuner_type = TUNER_PHILIPS_NTSC,
  814. .radio_type = UNSET,
  815. .tuner_addr = ADDR_UNSET,
  816. .radio_addr = ADDR_UNSET,
  817. .inputs = {{
  818. .name = name_svideo,
  819. .vmux = 8,
  820. .amux = LINE1,
  821. },{
  822. .name = name_comp1,
  823. .vmux = 3,
  824. .amux = LINE1,
  825. },{
  826. .name = name_tv,
  827. .vmux = 1,
  828. .amux = LINE2,
  829. .tv = 1,
  830. }},
  831. },
  832. [SAA7134_BOARD_10MOONSTVMASTER] = {
  833. /* "lilicheng" <llc@linuxfans.org> */
  834. .name = "10MOONS PCI TV CAPTURE CARD",
  835. .audio_clock = 0x00200000,
  836. .tuner_type = TUNER_LG_PAL_NEW_TAPC,
  837. .radio_type = UNSET,
  838. .tuner_addr = ADDR_UNSET,
  839. .radio_addr = ADDR_UNSET,
  840. .gpiomask = 0xe000,
  841. .inputs = {{
  842. .name = name_tv,
  843. .vmux = 1,
  844. .amux = LINE2,
  845. .gpio = 0x0000,
  846. .tv = 1,
  847. },{
  848. .name = name_comp1,
  849. .vmux = 0,
  850. .amux = LINE2,
  851. .gpio = 0x4000,
  852. },{
  853. .name = name_comp2,
  854. .vmux = 3,
  855. .amux = LINE2,
  856. .gpio = 0x4000,
  857. },{
  858. .name = name_svideo,
  859. .vmux = 8,
  860. .amux = LINE2,
  861. .gpio = 0x4000,
  862. }},
  863. .radio = {
  864. .name = name_radio,
  865. .amux = LINE2,
  866. .gpio = 0x2000,
  867. },
  868. .mute = {
  869. .name = name_mute,
  870. .amux = LINE2,
  871. .gpio = 0x8000,
  872. },
  873. },
  874. [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
  875. /* "Andrew de Quincey" <adq@lidskialf.net> */
  876. .name = "BMK MPEX No Tuner",
  877. .audio_clock = 0x200000,
  878. .tuner_type = TUNER_ABSENT,
  879. .radio_type = UNSET,
  880. .tuner_addr = ADDR_UNSET,
  881. .radio_addr = ADDR_UNSET,
  882. .empress_addr = 0x20,
  883. .inputs = {{
  884. .name = name_comp1,
  885. .vmux = 4,
  886. .amux = LINE1,
  887. },{
  888. .name = name_comp2,
  889. .vmux = 3,
  890. .amux = LINE1,
  891. },{
  892. .name = name_comp3,
  893. .vmux = 0,
  894. .amux = LINE1,
  895. },{
  896. .name = name_comp4,
  897. .vmux = 1,
  898. .amux = LINE1,
  899. },{
  900. .name = name_svideo,
  901. .vmux = 8,
  902. .amux = LINE1,
  903. }},
  904. .mpeg = SAA7134_MPEG_EMPRESS,
  905. .video_out = CCIR656,
  906. },
  907. [SAA7134_BOARD_VIDEOMATE_TV] = {
  908. .name = "Compro VideoMate TV",
  909. .audio_clock = 0x00187de7,
  910. .tuner_type = TUNER_PHILIPS_NTSC_M,
  911. .radio_type = UNSET,
  912. .tuner_addr = ADDR_UNSET,
  913. .radio_addr = ADDR_UNSET,
  914. .inputs = {{
  915. .name = name_svideo,
  916. .vmux = 8,
  917. .amux = LINE1,
  918. },{
  919. .name = name_comp1,
  920. .vmux = 3,
  921. .amux = LINE1,
  922. },{
  923. .name = name_tv,
  924. .vmux = 1,
  925. .amux = LINE2,
  926. .tv = 1,
  927. }},
  928. },
  929. [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS] = {
  930. .name = "Compro VideoMate TV Gold+",
  931. .audio_clock = 0x00187de7,
  932. .tuner_type = TUNER_PHILIPS_NTSC_M,
  933. .gpiomask = 0x800c0000,
  934. .radio_type = UNSET,
  935. .tuner_addr = ADDR_UNSET,
  936. .radio_addr = ADDR_UNSET,
  937. .inputs = {{
  938. .name = name_svideo,
  939. .vmux = 8,
  940. .amux = LINE1,
  941. .gpio = 0x06c00012,
  942. },{
  943. .name = name_comp1,
  944. .vmux = 3,
  945. .amux = LINE1,
  946. .gpio = 0x0ac20012,
  947. },{
  948. .name = name_tv,
  949. .vmux = 1,
  950. .amux = LINE2,
  951. .gpio = 0x08c20012,
  952. .tv = 1,
  953. }}, /* radio and probably mute is missing */
  954. },
  955. [SAA7134_BOARD_CRONOS_PLUS] = {
  956. /*
  957. gpio pins:
  958. 0 .. 3 BASE_ID
  959. 4 .. 7 PROTECT_ID
  960. 8 .. 11 USER_OUT
  961. 12 .. 13 USER_IN
  962. 14 .. 15 VIDIN_SEL
  963. */
  964. .name = "Matrox CronosPlus",
  965. .tuner_type = TUNER_ABSENT,
  966. .radio_type = UNSET,
  967. .tuner_addr = ADDR_UNSET,
  968. .radio_addr = ADDR_UNSET,
  969. .gpiomask = 0xcf00,
  970. .inputs = {{
  971. .name = name_comp1,
  972. .vmux = 0,
  973. .gpio = 2 << 14,
  974. },{
  975. .name = name_comp2,
  976. .vmux = 0,
  977. .gpio = 1 << 14,
  978. },{
  979. .name = name_comp3,
  980. .vmux = 0,
  981. .gpio = 0 << 14,
  982. },{
  983. .name = name_comp4,
  984. .vmux = 0,
  985. .gpio = 3 << 14,
  986. },{
  987. .name = name_svideo,
  988. .vmux = 8,
  989. .gpio = 2 << 14,
  990. }},
  991. },
  992. [SAA7134_BOARD_MD2819] = {
  993. .name = "AverMedia M156 / Medion 2819",
  994. .audio_clock = 0x00187de7,
  995. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  996. .radio_type = UNSET,
  997. .tuner_addr = ADDR_UNSET,
  998. .radio_addr = ADDR_UNSET,
  999. .tda9887_conf = TDA9887_PRESENT,
  1000. .gpiomask = 0x03,
  1001. .inputs = {{
  1002. .name = name_tv,
  1003. .vmux = 1,
  1004. .amux = TV,
  1005. .tv = 1,
  1006. .gpio = 0x00,
  1007. }, {
  1008. .name = name_comp1,
  1009. .vmux = 3,
  1010. .amux = LINE1,
  1011. .gpio = 0x02,
  1012. }, {
  1013. .name = name_comp2,
  1014. .vmux = 0,
  1015. .amux = LINE1,
  1016. .gpio = 0x02,
  1017. }, {
  1018. .name = name_svideo,
  1019. .vmux = 8,
  1020. .amux = LINE1,
  1021. .gpio = 0x02,
  1022. } },
  1023. .radio = {
  1024. .name = name_radio,
  1025. .amux = LINE1,
  1026. .gpio = 0x01,
  1027. },
  1028. .mute = {
  1029. .name = name_mute,
  1030. .amux = TV,
  1031. .gpio = 0x00,
  1032. },
  1033. },
  1034. [SAA7134_BOARD_BMK_MPEX_TUNER] = {
  1035. /* "Greg Wickham <greg.wickham@grangenet.net> */
  1036. .name = "BMK MPEX Tuner",
  1037. .audio_clock = 0x200000,
  1038. .tuner_type = TUNER_PHILIPS_PAL,
  1039. .radio_type = UNSET,
  1040. .tuner_addr = ADDR_UNSET,
  1041. .radio_addr = ADDR_UNSET,
  1042. .empress_addr = 0x20,
  1043. .inputs = {{
  1044. .name = name_comp1,
  1045. .vmux = 1,
  1046. .amux = LINE1,
  1047. },{
  1048. .name = name_svideo,
  1049. .vmux = 8,
  1050. .amux = LINE1,
  1051. },{
  1052. .name = name_tv,
  1053. .vmux = 3,
  1054. .amux = TV,
  1055. .tv = 1,
  1056. }},
  1057. .mpeg = SAA7134_MPEG_EMPRESS,
  1058. .video_out = CCIR656,
  1059. },
  1060. [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
  1061. .name = "ASUS TV-FM 7133",
  1062. .audio_clock = 0x00187de7,
  1063. /* probably wrong, the 7133 one is the NTSC version ...
  1064. * .tuner_type = TUNER_PHILIPS_FM1236_MK3 */
  1065. .tuner_type = TUNER_LG_NTSC_NEW_TAPC,
  1066. .radio_type = UNSET,
  1067. .tuner_addr = ADDR_UNSET,
  1068. .radio_addr = ADDR_UNSET,
  1069. .tda9887_conf = TDA9887_PRESENT,
  1070. .inputs = {{
  1071. .name = name_tv,
  1072. .vmux = 1,
  1073. .amux = TV,
  1074. .tv = 1,
  1075.  
  1076. },{
  1077. .name = name_comp1,
  1078. .vmux = 4,
  1079. .amux = LINE2,
  1080. },{
  1081. .name = name_svideo,
  1082. .vmux = 6,
  1083. .amux = LINE2,
  1084. }},
  1085. .radio = {
  1086. .name = name_radio,
  1087. .amux = LINE1,
  1088. },
  1089. },
  1090. [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
  1091. .name = "Pinnacle PCTV Stereo (saa7134)",
  1092. .audio_clock = 0x00187de7,
  1093. .tuner_type = TUNER_MT2032,
  1094. .radio_type = UNSET,
  1095. .tuner_addr = ADDR_UNSET,
  1096. .radio_addr = ADDR_UNSET,
  1097. .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
  1098. .inputs = {{
  1099. .name = name_tv,
  1100. .vmux = 3,
  1101. .amux = TV,
  1102. .tv = 1,
  1103. },{
  1104. .name = name_comp1,
  1105. .vmux = 0,
  1106. .amux = LINE2,
  1107. },{
  1108. .name = name_comp2,
  1109. .vmux = 1,
  1110. .amux = LINE2,
  1111. },{
  1112. .name = name_svideo,
  1113. .vmux = 8,
  1114. .amux = LINE2,
  1115. }},
  1116. },
  1117. [SAA7134_BOARD_MANLI_MTV002] = {
  1118. /* Ognjen Nastic <ognjen@logosoft.ba> */
  1119. .name = "Manli MuchTV M-TV002",
  1120. .audio_clock = 0x00200000,
  1121. .tuner_type = TUNER_PHILIPS_PAL,
  1122. .radio_type = UNSET,
  1123. .tuner_addr = ADDR_UNSET,
  1124. .radio_addr = ADDR_UNSET,
  1125. .inputs = {{
  1126. .name = name_svideo,
  1127. .vmux = 8,
  1128. .amux = LINE1,
  1129. },{
  1130. .name = name_comp1,
  1131. .vmux = 1,
  1132. .amux = LINE1,
  1133. },{
  1134. .name = name_tv,
  1135. .vmux = 3,
  1136. .amux = LINE2,
  1137. .tv = 1,
  1138. }},
  1139. .radio = {
  1140. .name = name_radio,
  1141. .amux = LINE2,
  1142. },
  1143. },
  1144. [SAA7134_BOARD_MANLI_MTV001] = {
  1145. /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
  1146. .name = "Manli MuchTV M-TV001",
  1147. .audio_clock = 0x00200000,
  1148. .tuner_type = TUNER_PHILIPS_PAL,
  1149. .radio_type = UNSET,
  1150. .tuner_addr = ADDR_UNSET,
  1151. .radio_addr = ADDR_UNSET,
  1152. .inputs = {{
  1153. .name = name_svideo,
  1154. .vmux = 8,
  1155. .amux = LINE1,
  1156. },{
  1157. .name = name_comp1,
  1158. .vmux = 1,
  1159. .amux = LINE1,
  1160. },{
  1161. .name = name_tv,
  1162. .vmux = 3,
  1163. .amux = LINE2,
  1164. .tv = 1,
  1165. }},
  1166. .mute = {
  1167. .name = name_mute,
  1168. .amux = LINE1,
  1169. },
  1170. },
  1171. [SAA7134_BOARD_TG3000TV] = {
  1172. /* TransGear 3000TV */
  1173. .name = "Nagase Sangyo TransGear 3000TV",
  1174. .audio_clock = 0x00187de7,
  1175. .tuner_type = TUNER_PHILIPS_NTSC_M,
  1176. .radio_type = UNSET,
  1177. .tuner_addr = ADDR_UNSET,
  1178. .radio_addr = ADDR_UNSET,
  1179. .inputs = {{
  1180. .name = name_tv,
  1181. .vmux = 1,
  1182. .amux = LINE2,
  1183. .tv = 1,
  1184. },{
  1185. .name = name_comp1,
  1186. .vmux = 3,
  1187. .amux = LINE2,
  1188. },{
  1189. .name = name_svideo,
  1190. .vmux = 8,
  1191. .amux = LINE2,
  1192. }},
  1193. },
  1194. [SAA7134_BOARD_ECS_TVP3XP] = {
  1195. .name = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
  1196. .audio_clock = 0x187de7, /* xtal 32.1 MHz */
  1197. .tuner_type = TUNER_PHILIPS_PAL,
  1198. .radio_type = UNSET,
  1199. .tuner_addr = ADDR_UNSET,
  1200. .radio_addr = ADDR_UNSET,
  1201. .inputs = {{
  1202. .name = name_tv,
  1203. .vmux = 1,
  1204. .amux = TV,
  1205. .tv = 1,
  1206. },{
  1207. .name = name_tv_mono,
  1208. .vmux = 1,
  1209. .amux = LINE2,
  1210. .tv = 1,
  1211. },{
  1212. .name = name_comp1,
  1213. .vmux = 3,
  1214. .amux = LINE1,
  1215. },{
  1216. .name = name_svideo,
  1217. .vmux = 8,
  1218. .amux = LINE1,
  1219. },{
  1220. .name = "CVid over SVid",
  1221. .vmux = 0,
  1222. .amux = LINE1,
  1223. }},
  1224. .radio = {
  1225. .name = name_radio,
  1226. .amux = LINE2,
  1227. },
  1228. },
  1229. [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
  1230. .name = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
  1231. .audio_clock = 0x187de7,
  1232. .tuner_type = TUNER_PHILIPS_NTSC,
  1233. .radio_type = UNSET,
  1234. .tuner_addr = ADDR_UNSET,
  1235. .radio_addr = ADDR_UNSET,
  1236. .inputs = {{
  1237. .name = name_tv,
  1238. .vmux = 1,
  1239. .amux = TV,
  1240. .tv = 1,
  1241. },{
  1242. .name = name_tv_mono,
  1243. .vmux = 1,
  1244. .amux = LINE2,
  1245. .tv = 1,
  1246. },{
  1247. .name = name_comp1,
  1248. .vmux = 3,
  1249. .amux = LINE1,
  1250. },{
  1251. .name = name_svideo,
  1252. .vmux = 8,
  1253. .amux = LINE1,
  1254. },{
  1255. .name = "CVid over SVid",
  1256. .vmux = 0,
  1257. .amux = LINE1,
  1258. }},
  1259. .radio = {
  1260. .name = name_radio,
  1261. .amux = LINE2,
  1262. },
  1263. },
  1264. [SAA7134_BOARD_ECS_TVP3XP_4CB6] = {
  1265. /* Barry Scott <barry.scott@onelan.co.uk> */
  1266. .name = "Elitegroup ECS TVP3XP FM1246 Tuner Card (PAL,FM)",
  1267. .audio_clock = 0x187de7,
  1268. .tuner_type = TUNER_PHILIPS_PAL_I,
  1269. .radio_type = UNSET,
  1270. .tuner_addr = ADDR_UNSET,
  1271. .radio_addr = ADDR_UNSET,
  1272. .inputs = {{
  1273. .name = name_tv,
  1274. .vmux = 1,
  1275. .amux = TV,
  1276. .tv = 1,
  1277. },{
  1278. .name = name_tv_mono,
  1279. .vmux = 1,
  1280. .amux = LINE2,
  1281. .tv = 1,
  1282. },{
  1283. .name = name_comp1,
  1284. .vmux = 3,
  1285. .amux = LINE1,
  1286. },{
  1287. .name = name_svideo,
  1288. .vmux = 8,
  1289. .amux = LINE1,
  1290. },{
  1291. .name = "CVid over SVid",
  1292. .vmux = 0,
  1293. .amux = LINE1,
  1294. }},
  1295. .radio = {
  1296. .name = name_radio,
  1297. .amux = LINE2,
  1298. },
  1299. },
  1300. [SAA7134_BOARD_AVACSSMARTTV] = {
  1301. /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
  1302. .name = "AVACS SmartTV",
  1303. .audio_clock = 0x00187de7,
  1304. .tuner_type = TUNER_PHILIPS_PAL,
  1305. .radio_type = UNSET,
  1306. .tuner_addr = ADDR_UNSET,
  1307. .radio_addr = ADDR_UNSET,
  1308. .inputs = {{
  1309. .name = name_tv,
  1310. .vmux = 1,
  1311. .amux = TV,
  1312. .tv = 1,
  1313. },{
  1314. .name = name_tv_mono,
  1315. .vmux = 1,
  1316. .amux = LINE2,
  1317. .tv = 1,
  1318. },{
  1319. .name = name_comp1,
  1320. .vmux = 0,
  1321. .amux = LINE2,
  1322. },{
  1323. .name = name_comp2,
  1324. .vmux = 3,
  1325. .amux = LINE2,
  1326. },{
  1327. .name = name_svideo,
  1328. .vmux = 8,
  1329. .amux = LINE2,
  1330. }},
  1331. .radio = {
  1332. .name = name_radio,
  1333. .amux = LINE2,
  1334. .gpio = 0x200000,
  1335. },
  1336. },
  1337. [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
  1338. /* Michael Smith <msmith@cbnco.com> */
  1339. .name = "AVerMedia DVD EZMaker",
  1340. .audio_clock = 0x00187de7,
  1341. .tuner_type = TUNER_ABSENT,
  1342. .radio_type = UNSET,
  1343. .tuner_addr = ADDR_UNSET,
  1344. .radio_addr = ADDR_UNSET,
  1345. .inputs = {{
  1346. .name = name_comp1,
  1347. .vmux = 3,
  1348. },{
  1349. .name = name_svideo,
  1350. .vmux = 8,
  1351. }},
  1352. },
  1353. [SAA7134_BOARD_AVERMEDIA_M103] = {
  1354. /* Massimo Piccioni <dafastidio@libero.it> */
  1355. .name = "AVerMedia MiniPCI DVB-T Hybrid M103",
  1356. .audio_clock = 0x187de7,
  1357. .tuner_type = TUNER_XC2028,
  1358. .radio_type = UNSET,
  1359. .tuner_addr = ADDR_UNSET,
  1360. .radio_addr = ADDR_UNSET,
  1361. .mpeg = SAA7134_MPEG_DVB,
  1362. .inputs = {{
  1363. .name = name_tv,
  1364. .vmux = 1,
  1365. .amux = TV,
  1366. .tv = 1,
  1367. } },
  1368. },
  1369. [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
  1370. /* toshii@netbsd.org */
  1371. .name = "Noval Prime TV 7133",
  1372. .audio_clock = 0x00200000,
  1373. .tuner_type = TUNER_ALPS_TSBH1_NTSC,
  1374. .radio_type = UNSET,
  1375. .tuner_addr = ADDR_UNSET,
  1376. .radio_addr = ADDR_UNSET,
  1377. .inputs = {{
  1378. .name = name_comp1,
  1379. .vmux = 3,
  1380. },{
  1381. .name = name_tv,
  1382. .vmux = 1,
  1383. .amux = TV,
  1384. .tv = 1,
  1385. },{
  1386. .name = name_svideo,
  1387. .vmux = 8,
  1388. }},
  1389. },
  1390. [SAA7134_BOARD_AVERMEDIA_STUDIO_305] = {
  1391. .name = "AverMedia AverTV Studio 305",
  1392. .audio_clock = 0x00187de7,
  1393. .tuner_type = TUNER_PHILIPS_FM1256_IH3,
  1394. .radio_type = UNSET,
  1395. .tuner_addr = ADDR_UNSET,
  1396. .radio_addr = ADDR_UNSET,
  1397. .tda9887_conf = TDA9887_PRESENT,
  1398. .inputs = {{
  1399. .name = name_tv,
  1400. .vmux = 1,
  1401. .amux = LINE2,
  1402. .tv = 1,
  1403. },{
  1404. .name = name_comp1,
  1405. .vmux = 0,
  1406. .amux = LINE2,
  1407. },{
  1408. .name = name_comp2,
  1409. .vmux = 3,
  1410. .amux = LINE2,
  1411. },{
  1412. .name = name_svideo,
  1413. .vmux = 8,
  1414. .amux = LINE2,
  1415. }},
  1416. .radio = {
  1417. .name = name_radio,
  1418. .amux = LINE2,
  1419. },
  1420. .mute = {
  1421. .name = name_mute,
  1422. .amux = LINE1,
  1423. },
  1424. },
  1425. [SAA7134_BOARD_AVERMEDIA_STUDIO_505] = {
  1426. /* Vasiliy Temnikov <vaka@newmail.ru> */
  1427. .name = "AverMedia AverTV Studio 505",
  1428. .audio_clock = 0x00187de7,
  1429. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  1430. .radio_type = UNSET,
  1431. .tuner_addr = ADDR_UNSET,
  1432. .radio_addr = ADDR_UNSET,
  1433. .tda9887_conf = TDA9887_PRESENT,
  1434. .inputs = { {
  1435. .name = name_tv,
  1436. .vmux = 1,
  1437. .amux = LINE2,
  1438. .tv = 1,
  1439. }, {
  1440. .name = name_comp1,
  1441. .vmux = 0,
  1442. .amux = LINE2,
  1443. }, {
  1444. .name = name_comp2,
  1445. .vmux = 3,
  1446. .amux = LINE2,
  1447. },{
  1448. .name = name_svideo,
  1449. .vmux = 8,
  1450. .amux = LINE2,
  1451. } },
  1452. .radio = {
  1453. .name = name_radio,
  1454. .amux = LINE2,
  1455. },
  1456. .mute = {
  1457. .name = name_mute,
  1458. .amux = LINE1,
  1459. },
  1460. },
  1461. [SAA7134_BOARD_UPMOST_PURPLE_TV] = {
  1462. .name = "UPMOST PURPLE TV",
  1463. .audio_clock = 0x00187de7,
  1464. .tuner_type = TUNER_PHILIPS_FM1236_MK3,
  1465. .radio_type = UNSET,
  1466. .tuner_addr = ADDR_UNSET,
  1467. .radio_addr = ADDR_UNSET,
  1468. .tda9887_conf = TDA9887_PRESENT,
  1469. .inputs = {{
  1470. .name = name_tv,
  1471. .vmux = 7,
  1472. .amux = TV,
  1473. .tv = 1,
  1474. },{
  1475. .name = name_svideo,
  1476. .vmux = 7,
  1477. .amux = LINE1,
  1478. }},
  1479. },
  1480. [SAA7134_BOARD_ITEMS_MTV005] = {
  1481. /* Norman Jonas <normanjonas@arcor.de> */
  1482. .name = "Items MuchTV Plus / IT-005",
  1483. .audio_clock = 0x00187de7,
  1484. .tuner_type = TUNER_PHILIPS_PAL,
  1485. .radio_type = UNSET,
  1486. .tuner_addr = ADDR_UNSET,
  1487. .radio_addr = ADDR_UNSET,
  1488. .inputs = {{
  1489. .name = name_tv,
  1490. .vmux = 3,
  1491. .amux = TV,
  1492. .tv = 1,
  1493. },{
  1494. .name = name_comp1,
  1495. .vmux = 1,
  1496. .amux = LINE1,
  1497. },{
  1498. .name = name_svideo,
  1499. .vmux = 8,
  1500. .amux = LINE1,
  1501. }},
  1502. .radio = {
  1503. .name = name_radio,
  1504. .amux = LINE2,
  1505. },
  1506. },
  1507. [SAA7134_BOARD_CINERGY200] = {
  1508. .name = "Terratec Cinergy 200 TV",
  1509. .audio_clock = 0x00200000,
  1510. .tuner_type = TUNER_PHILIPS_PAL,
  1511. .radio_type = UNSET,
  1512. .tuner_addr = ADDR_UNSET,
  1513. .radio_addr = ADDR_UNSET,
  1514. .inputs = {{
  1515. .name = name_tv,
  1516. .vmux = 1,
  1517. .amux = LINE2,
  1518. .tv = 1,
  1519. },{
  1520. .name = name_comp1,
  1521. .vmux = 4,
  1522. .amux = LINE1,
  1523. },{
  1524. .name = name_svideo,
  1525. .vmux = 8,
  1526. .amux = LINE1,
  1527. },{
  1528. .name = name_comp2, /* CVideo over SVideo Connector */
  1529. .vmux = 0,
  1530. .amux = LINE1,
  1531. }},
  1532. .mute = {
  1533. .name = name_mute,
  1534. .amux = LINE2,
  1535. },
  1536. },
  1537. [SAA7134_BOARD_VIDEOMATE_TV_PVR] = {
  1538. /* Alain St-Denis <alain@topaze.homeip.net> */
  1539. .name = "Compro VideoMate TV PVR/FM",
  1540. .audio_clock = 0x00187de7,
  1541. .tuner_type = TUNER_PHILIPS_NTSC_M,
  1542. .radio_type = UNSET,
  1543. .tuner_addr = ADDR_UNSET,
  1544. .radio_addr = ADDR_UNSET,
  1545. .gpiomask = 0x808c0080,
  1546. .inputs = {{
  1547. .name = name_svideo,
  1548. .vmux = 8,
  1549. .amux = LINE1,
  1550. .gpio = 0x00080,
  1551. },{
  1552. .name = name_comp1,
  1553. .vmux = 3,
  1554. .amux = LINE1,
  1555. .gpio = 0x00080,
  1556. },{
  1557. .name = name_tv,
  1558. .vmux = 1,
  1559. .amux = LINE2_LEFT,
  1560. .tv = 1,
  1561. .gpio = 0x00080,
  1562. }},
  1563. .radio = {
  1564. .name = name_radio,
  1565. .amux = LINE2,
  1566. .gpio = 0x80000,
  1567. },
  1568. .mute = {
  1569. .name = name_mute,
  1570. .amux = LINE2,
  1571. .gpio = 0x40000,
  1572. },
  1573. },
  1574. [SAA7134_BOARD_SABRENT_SBTTVFM] = {
  1575. /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */
  1576. .name = "Sabrent SBT-TVFM (saa7130)",
  1577. .audio_clock = 0x00187de7,
  1578. .tuner_type = TUNER_PHILIPS_NTSC_M,
  1579. .radio_type = UNSET,
  1580. .tuner_addr = ADDR_UNSET,
  1581. .radio_addr = ADDR_UNSET,
  1582. .inputs = {{
  1583. .name = name_comp1,
  1584. .vmux = 1,
  1585. .amux = LINE1,
  1586. },{
  1587. .name = name_tv,
  1588. .vmux = 3,
  1589. .amux = LINE2,
  1590. .tv = 1,
  1591. },{
  1592. .name = name_svideo,
  1593. .vmux = 8,
  1594. .amux = LINE1,
  1595. }},
  1596. .radio = {
  1597. .name = name_radio,
  1598. .amux = LINE2,
  1599. },
  1600. },
  1601. [SAA7134_BOARD_ZOLID_XPERT_TV7134] = {
  1602. /* Helge Jensen <helge.jensen@slog.dk> */
  1603. .name = ":Zolid Xpert TV7134",
  1604. .audio_clock = 0x00187de7,
  1605. .tuner_type = TUNER_PHILIPS_NTSC,
  1606. .radio_type = UNSET,
  1607. .tuner_addr = ADDR_UNSET,
  1608. .radio_addr = ADDR_UNSET,
  1609. .inputs = {{
  1610. .name = name_svideo,
  1611. .vmux = 8,
  1612. .amux = LINE1,
  1613. },{
  1614. .name = name_comp1,
  1615. .vmux = 3,
  1616. .amux = LINE1,
  1617. },{
  1618. .name = name_tv,
  1619. .vmux = 1,
  1620. .amux = LINE2,
  1621. .tv = 1,
  1622. }},
  1623. },
  1624. [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE] = {
  1625. /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */
  1626. .name = "Empire PCI TV-Radio LE",
  1627. .audio_clock = 0x00187de7,
  1628. .tuner_type = TUNER_PHILIPS_PAL,
  1629. .radio_type = UNSET,
  1630. .tuner_addr = ADDR_UNSET,
  1631. .radio_addr = ADDR_UNSET,
  1632. .gpiomask = 0x4000,
  1633. .inputs = {{
  1634. .name = name_tv_mono,
  1635. .vmux = 1,
  1636. .amux = LINE2,
  1637. .gpio = 0x8000,
  1638. .tv = 1,
  1639. },{
  1640. .name = name_comp1,
  1641. .vmux = 3,
  1642. .amux = LINE1,
  1643. .gpio = 0x8000,
  1644. },{
  1645. .name = name_svideo,
  1646. .vmux = 6,
  1647. .amux = LINE1,
  1648. .gpio = 0x8000,
  1649. }},
  1650. .radio = {
  1651. .name = name_radio,
  1652. .amux = LINE1,
  1653. .gpio = 0x8000,
  1654. },
  1655. .mute = {
  1656. .name = name_mute,
  1657. .amux = TV,
  1658. .gpio =0x8000,
  1659. }
  1660. },
  1661. [SAA7134_BOARD_AVERMEDIA_STUDIO_307] = {
  1662. /*
  1663. Nickolay V. Shmyrev <nshmyrev@yandex.ru>
  1664. Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru>
  1665. */
  1666. .name = "Avermedia AVerTV Studio 307",
  1667. .audio_clock = 0x00187de7,
  1668. .tuner_type = TUNER_PHILIPS_FM1256_IH3,
  1669. .radio_type = UNSET,
  1670. .tuner_addr = ADDR_UNSET,
  1671. .radio_addr = ADDR_UNSET,
  1672. .tda9887_conf = TDA9887_PRESENT,
  1673. .gpiomask = 0x03,
  1674. .inputs = {{
  1675. .name = name_tv,
  1676. .vmux = 1,
  1677. .amux = TV,
  1678. .tv = 1,
  1679. .gpio = 0x00,
  1680. },{
  1681. .name = name_comp,
  1682. .vmux = 3,
  1683. .amux = LINE1,
  1684. .gpio = 0x02,
  1685. },{
  1686. .name = name_svideo,
  1687. .vmux = 8,
  1688. .amux = LINE1,
  1689. .gpio = 0x02,
  1690. }},
  1691. .radio = {
  1692. .name = name_radio,
  1693. .amux = LINE1,
  1694. .gpio = 0x01,
  1695. },
  1696. .mute = {
  1697. .name = name_mute,
  1698. .amux = LINE1,
  1699. .gpio = 0x00,
  1700. },
  1701. },
  1702. [SAA7134_BOARD_AVERMEDIA_GO_007_FM] = {
  1703. .name = "Avermedia AVerTV GO 007 FM",
  1704. .audio_clock = 0x00187de7,
  1705. .tuner_type = TUNER_PHILIPS_TDA8290,
  1706. .radio_type = UNSET,
  1707. .tuner_addr = ADDR_UNSET,
  1708. .radio_addr = ADDR_UNSET,
  1709. .gpiomask = 0x00300003,
  1710. /* .gpiomask = 0x8c240003, */
  1711. .inputs = {{
  1712. .name = name_tv,
  1713. .vmux = 1,
  1714. .amux = TV,
  1715. .tv = 1,
  1716. .gpio = 0x01,
  1717. },{
  1718. .name = name_comp1,
  1719. .vmux = 0,
  1720. .amux = LINE1,
  1721. .gpio = 0x02,
  1722. },{
  1723. .name = name_svideo,
  1724. .vmux = 6,
  1725. .amux = LINE1,
  1726. .gpio = 0x02,
  1727. }},
  1728. .radio = {
  1729. .name = name_radio,
  1730. .amux = TV,
  1731. .gpio = 0x00300001,
  1732. },
  1733. .mute = {
  1734. .name = name_mute,
  1735. .amux = TV,
  1736. .gpio = 0x01,
  1737. },
  1738. },
  1739. [SAA7134_BOARD_AVERMEDIA_CARDBUS] = {
  1740. /* Kees.Blom@cwi.nl */
  1741. .name = "AVerMedia Cardbus TV/Radio (E500)",
  1742. .audio_clock = 0x187de7,
  1743. .tuner_type = TUNER_PHILIPS_TDA8290,
  1744. .radio_type = UNSET,
  1745. .tuner_addr = ADDR_UNSET,
  1746. .radio_addr = ADDR_UNSET,
  1747. .inputs = {{
  1748. .name = name_tv,
  1749. .vmux = 1,
  1750. .amux = TV,
  1751. .tv = 1,
  1752. },{
  1753. .name = name_comp1,
  1754. .vmux = 3,
  1755. .amux = LINE2,
  1756. },{
  1757. .name = name_svideo,
  1758. .vmux = 8,
  1759. .amux = LINE1,
  1760. }},
  1761. .radio = {
  1762. .name = name_radio,
  1763. .amux = LINE1,
  1764. },
  1765. },
  1766. [SAA7134_BOARD_AVERMEDIA_CARDBUS_501] = {
  1767. /* Oldrich Jedlicka <oldium.pro@seznam.cz> */
  1768. .name = "AVerMedia Cardbus TV/Radio (E501R)",
  1769. .audio_clock = 0x187de7,
  1770. .tuner_type = TUNER_ALPS_TSBE5_PAL,
  1771. .radio_type = TUNER_TEA5767,
  1772. .tuner_addr = 0x61,
  1773. .radio_addr = 0x60,
  1774. .tda9887_conf = TDA9887_PRESENT,
  1775. .gpiomask = 0x08000000,
  1776. .inputs = { {
  1777. .name = name_tv,
  1778. .vmux = 1,
  1779. .amux = TV,
  1780. .tv = 1,
  1781. .gpio = 0x08000000,
  1782. }, {
  1783. .name = name_comp1,
  1784. .vmux = 3,
  1785. .amux = LINE1,
  1786. .gpio = 0x08000000,
  1787. }, {
  1788. .name = name_svideo,
  1789. .vmux = 8,
  1790. .amux = LINE1,
  1791. .gpio = 0x08000000,
  1792. } },
  1793. .radio = {
  1794. .name = name_radio,
  1795. .amux = LINE2,
  1796. .gpio = 0x00000000,
  1797. },
  1798. },
  1799. [SAA7134_BOARD_CINERGY400_CARDBUS] = {
  1800. .name = "Terratec Cinergy 400 mobile",
  1801. .audio_clock = 0x187de7,
  1802. .tuner_type = TUNER_ALPS_TSBE5_PAL,
  1803. .radio_type = UNSET,
  1804. .tuner_addr = ADDR_UNSET,
  1805. .radio_addr = ADDR_UNSET,
  1806. .tda9887_conf = TDA9887_PRESENT,
  1807. .inputs = {{
  1808. .name = name_tv,
  1809. .vmux = 1,
  1810. .amux = TV,
  1811. .tv = 1,
  1812. },{
  1813. .name = name_tv_mono,
  1814. .vmux = 1,
  1815. .amux = LINE2,
  1816. .tv = 1,
  1817. },{
  1818. .name = name_comp1,
  1819. .vmux = 3,
  1820. .amux = LINE1,
  1821. },{
  1822. .name = name_svideo,
  1823. .vmux = 8,
  1824. .amux = LINE1,
  1825. }},
  1826. },
  1827. [SAA7134_BOARD_CINERGY600_MK3] = {
  1828. .name = "Terratec Cinergy 600 TV MK3",
  1829. .audio_clock = 0x00200000,
  1830. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  1831. .radio_type = UNSET,
  1832. .tuner_addr = ADDR_UNSET,
  1833. .radio_addr = ADDR_UNSET,
  1834. .rds_addr = 0x10,
  1835. .tda9887_conf = TDA9887_PRESENT,
  1836. .inputs = {{
  1837. .name = name_tv,
  1838. .vmux = 1,
  1839. .amux = TV,
  1840. .tv = 1,
  1841. },{
  1842. .name = name_comp1,
  1843. .vmux = 4,
  1844. .amux = LINE1,
  1845. },{
  1846. .name = name_svideo,
  1847. .vmux = 8,
  1848. .amux = LINE1,
  1849. },{
  1850. .name = name_comp2, /* CVideo over SVideo Connector */
  1851. .vmux = 0,
  1852. .amux = LINE1,
  1853. }},
  1854. .radio = {
  1855. .name = name_radio,
  1856. .amux = LINE2,
  1857. },
  1858. },
  1859. [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS] = {
  1860. /* Dylan Walkden <dylan_walkden@hotmail.com> */
  1861. .name = "Compro VideoMate Gold+ Pal",
  1862. .audio_clock = 0x00187de7,
  1863. .tuner_type = TUNER_PHILIPS_PAL,
  1864. .radio_type = UNSET,
  1865. .tuner_addr = ADDR_UNSET,
  1866. .radio_addr = ADDR_UNSET,
  1867. .gpiomask = 0x1ce780,
  1868. .inputs = {{
  1869. .name = name_svideo,
  1870. .vmux = 0, /* CVideo over SVideo Connector - ok? */
  1871. .amux = LINE1,
  1872. .gpio = 0x008080,
  1873. },{
  1874. .name = name_comp1,
  1875. .vmux = 3,
  1876. .amux = LINE1,
  1877. .gpio = 0x008080,
  1878. },{
  1879. .name = name_tv,
  1880. .vmux = 1,
  1881. .amux = TV,
  1882. .tv = 1,
  1883. .gpio = 0x008080,
  1884. }},
  1885. .radio = {
  1886. .name = name_radio,
  1887. .amux = LINE2,
  1888. .gpio = 0x80000,
  1889. },
  1890. .mute = {
  1891. .name = name_mute,
  1892. .amux = LINE2,
  1893. .gpio = 0x0c8000,
  1894. },
  1895. },
  1896. [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL] = {
  1897. .name = "Pinnacle PCTV 300i DVB-T + PAL",
  1898. .audio_clock = 0x00187de7,
  1899. .tuner_type = TUNER_MT2032,
  1900. .radio_type = UNSET,
  1901. .tuner_addr = ADDR_UNSET,
  1902. .radio_addr = ADDR_UNSET,
  1903. .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
  1904. .mpeg = SAA7134_MPEG_DVB,
  1905. .inputs = {{
  1906. .name = name_tv,
  1907. .vmux = 3,
  1908. .amux = TV,
  1909. .tv = 1,
  1910. },{
  1911. .name = name_comp1,
  1912. .vmux = 0,
  1913. .amux = LINE2,
  1914. },{
  1915. .name = name_comp2,
  1916. .vmux = 1,
  1917. .amux = LINE2,
  1918. },{
  1919. .name = name_svideo,
  1920. .vmux = 8,
  1921. .amux = LINE2,
  1922. }},
  1923. },
  1924. [SAA7134_BOARD_PROVIDEO_PV952] = {
  1925. /* andreas.kretschmer@web.de */
  1926. .name = "ProVideo PV952",
  1927. .audio_clock = 0x00187de7,
  1928. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  1929. .radio_type = UNSET,
  1930. .tuner_addr = ADDR_UNSET,
  1931. .radio_addr = ADDR_UNSET,
  1932. .tda9887_conf = TDA9887_PRESENT,
  1933. .inputs = {{
  1934. .name = name_comp1,
  1935. .vmux = 0,
  1936. .amux = LINE1,
  1937. },{
  1938. .name = name_tv,
  1939. .vmux = 1,
  1940. .amux = TV,
  1941. .tv = 1,
  1942. },{
  1943. .name = name_tv_mono,
  1944. .vmux = 1,
  1945. .amux = LINE2,
  1946. .tv = 1,
  1947. }},
  1948. .radio = {
  1949. .name = name_radio,
  1950. .amux = LINE2,
  1951. },
  1952. },
  1953. [SAA7134_BOARD_AVERMEDIA_305] = {
  1954. /* much like the "studio" version but without radio
  1955. * and another tuner (sirspiritus@yandex.ru) */
  1956. .name = "AverMedia AverTV/305",
  1957. .audio_clock = 0x00187de7,
  1958. .tuner_type = TUNER_PHILIPS_FQ1216ME,
  1959. .radio_type = UNSET,
  1960. .tuner_addr = ADDR_UNSET,
  1961. .radio_addr = ADDR_UNSET,
  1962. .tda9887_conf = TDA9887_PRESENT,
  1963. .inputs = {{
  1964. .name = name_tv,
  1965. .vmux = 1,
  1966. .amux = LINE2,
  1967. .tv = 1,
  1968. },{
  1969. .name = name_comp1,
  1970. .vmux = 0,
  1971. .amux = LINE2,
  1972. },{
  1973. .name = name_comp2,
  1974. .vmux = 3,
  1975. .amux = LINE2,
  1976. },{
  1977. .name = name_svideo,
  1978. .vmux = 8,
  1979. .amux = LINE2,
  1980. }},
  1981. .mute = {
  1982. .name = name_mute,
  1983. .amux = LINE1,
  1984. },
  1985. },
  1986. [SAA7134_BOARD_FLYDVBTDUO] = {
  1987. /* LifeView FlyDVB-T DUO */
  1988. /* "Nico Sabbi <nsabbi@tiscali.it> Hartmut Hackmann hartmut.hackmann@t-online.de*/
  1989. .name = "LifeView FlyDVB-T DUO / MSI TV@nywhere Duo",
  1990. .audio_clock = 0x00200000,
  1991. .tuner_type = TUNER_PHILIPS_TDA8290,
  1992. .radio_type = UNSET,
  1993. .tuner_addr = ADDR_UNSET,
  1994. .radio_addr = ADDR_UNSET,
  1995. .gpiomask = 0x00200000,
  1996. .mpeg = SAA7134_MPEG_DVB,
  1997. .inputs = {{
  1998. .name = name_tv,
  1999. .vmux = 1,
  2000. .amux = TV,
  2001. .gpio = 0x200000, /* GPIO21=High for TV input */
  2002. .tv = 1,
  2003. },{
  2004. .name = name_comp1, /* Composite signal on S-Video input */
  2005. .vmux = 0,
  2006. .amux = LINE2,
  2007. },{
  2008. .name = name_comp2, /* Composite input */
  2009. .vmux = 3,
  2010. .amux = LINE2,
  2011. },{
  2012. .name = name_svideo, /* S-Video signal on S-Video input */
  2013. .vmux = 8,
  2014. .amux = LINE2,
  2015. }},
  2016. .radio = {
  2017. .name = name_radio,
  2018. .amux = TV,
  2019. .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
  2020. },
  2021. },
  2022. [SAA7134_BOARD_PHILIPS_TOUGH] = {
  2023. .name = "Philips TOUGH DVB-T reference design",
  2024. .tuner_type = TUNER_ABSENT,
  2025. .audio_clock = 0x00187de7,
  2026. .radio_type = UNSET,
  2027. .tuner_addr = ADDR_UNSET,
  2028. .radio_addr = ADDR_UNSET,
  2029. .mpeg = SAA7134_MPEG_DVB,
  2030. .inputs = {{
  2031. .name = name_comp1,
  2032. .vmux = 0,
  2033. .amux = LINE1,
  2034. },{
  2035. .name = name_svideo,
  2036. .vmux = 8,
  2037. .amux = LINE1,
  2038. }},
  2039. },
  2040. [SAA7134_BOARD_AVERMEDIA_307] = {
  2041. /*
  2042. Davydov Vladimir <vladimir@iqmedia.com>
  2043. */
  2044. .name = "Avermedia AVerTV 307",
  2045. .audio_clock = 0x00187de7,
  2046. .tuner_type = TUNER_PHILIPS_FQ1216ME,
  2047. .radio_type = UNSET,
  2048. .tuner_addr = ADDR_UNSET,
  2049. .radio_addr = ADDR_UNSET,
  2050. .tda9887_conf = TDA9887_PRESENT,
  2051. .inputs = {{
  2052. .name = name_tv,
  2053. .vmux = 1,
  2054. .amux = TV,
  2055. .tv = 1,
  2056. },{
  2057. .name = name_comp1,
  2058. .vmux = 0,
  2059. .amux = LINE1,
  2060. },{
  2061. .name = name_comp2,
  2062. .vmux = 3,
  2063. .amux = LINE1,
  2064. },{
  2065. .name = name_svideo,
  2066. .vmux = 8,
  2067. .amux = LINE1,
  2068. }},
  2069. },
  2070. [SAA7134_BOARD_ADS_INSTANT_TV] = {
  2071. .name = "ADS Tech Instant TV (saa7135)",
  2072. .audio_clock = 0x00187de7,
  2073. .tuner_type = TUNER_PHILIPS_TDA8290,
  2074. .radio_type = UNSET,
  2075. .tuner_addr = ADDR_UNSET,
  2076. .radio_addr = ADDR_UNSET,
  2077. .inputs = {{
  2078. .name = name_tv,
  2079. .vmux = 1,
  2080. .amux = TV,
  2081. .tv = 1,
  2082. },{
  2083. .name = name_comp1,
  2084. .vmux = 3,
  2085. .amux = LINE2,
  2086. },{
  2087. .name = name_svideo,
  2088. .vmux = 8,
  2089. .amux = LINE2,
  2090. }},
  2091. },
  2092. [SAA7134_BOARD_KWORLD_VSTREAM_XPERT] = {
  2093. .name = "Kworld/Tevion V-Stream Xpert TV PVR7134",
  2094. .audio_clock = 0x00187de7,
  2095. .tuner_type = TUNER_PHILIPS_PAL_I,
  2096. .radio_type = UNSET,
  2097. .tuner_addr = ADDR_UNSET,
  2098. .radio_addr = ADDR_UNSET,
  2099. .gpiomask = 0x0700,
  2100. .inputs = {{
  2101. .name = name_tv,
  2102. .vmux = 1,
  2103. .amux = TV,
  2104. .tv = 1,
  2105. .gpio = 0x000,
  2106. },{
  2107. .name = name_comp1,
  2108. .vmux = 3,
  2109. .amux = LINE1,
  2110. .gpio = 0x200, /* gpio by DScaler */
  2111. },{
  2112. .name = name_svideo,
  2113. .vmux = 0,
  2114. .amux = LINE1,
  2115. .gpio = 0x200,
  2116. }},
  2117. .radio = {
  2118. .name = name_radio,
  2119. .amux = LINE1,
  2120. .gpio = 0x100,
  2121. },
  2122. .mute = {
  2123. .name = name_mute,
  2124. .amux = TV,
  2125. .gpio = 0x000,
  2126. },
  2127. },
  2128. [SAA7134_BOARD_FLYDVBT_DUO_CARDBUS] = {
  2129. .name = "LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus",
  2130. .audio_clock = 0x00200000,
  2131. .tuner_type = TUNER_PHILIPS_TDA8290,
  2132. .radio_type = UNSET,
  2133. .tuner_addr = ADDR_UNSET,
  2134. .radio_addr = ADDR_UNSET,
  2135. .mpeg = SAA7134_MPEG_DVB,
  2136. .gpiomask = 0x00200000,
  2137. .inputs = {{
  2138. .name = name_tv,
  2139. .vmux = 1,
  2140. .amux = TV,
  2141. .gpio = 0x200000, /* GPIO21=High for TV input */
  2142. .tv = 1,
  2143. },{
  2144. .name = name_svideo, /* S-Video signal on S-Video input */
  2145. .vmux = 8,
  2146. .amux = LINE2,
  2147. },{
  2148. .name = name_comp1, /* Composite signal on S-Video input */
  2149. .vmux = 0,
  2150. .amux = LINE2,
  2151. },{
  2152. .name = name_comp2, /* Composite input */
  2153. .vmux = 3,
  2154. .amux = LINE2,
  2155. }},
  2156. .radio = {
  2157. .name = name_radio,
  2158. .amux = TV,
  2159. .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
  2160. },
  2161. },
  2162. [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII] = {
  2163. .name = "Compro VideoMate TV Gold+II",
  2164. .audio_clock = 0x002187de7,
  2165. .tuner_type = TUNER_LG_PAL_NEW_TAPC,
  2166. .radio_type = TUNER_TEA5767,
  2167. .tuner_addr = 0x63,
  2168. .radio_addr = 0x60,
  2169. .gpiomask = 0x8c1880,
  2170. .inputs = {{
  2171. .name = name_svideo,
  2172. .vmux = 0,
  2173. .amux = LINE1,
  2174. .gpio = 0x800800,
  2175. },{
  2176. .name = name_comp1,
  2177. .vmux = 3,
  2178. .amux = LINE1,
  2179. .gpio = 0x801000,
  2180. },{
  2181. .name = name_tv,
  2182. .vmux = 1,
  2183. .amux = TV,
  2184. .tv = 1,
  2185. .gpio = 0x800000,
  2186. }},
  2187. .radio = {
  2188. .name = name_radio,
  2189. .amux = TV,
  2190. .gpio = 0x880000,
  2191. },
  2192. .mute = {
  2193. .name = name_mute,
  2194. .amux = LINE2,
  2195. .gpio = 0x840000,
  2196. },
  2197. },
  2198. [SAA7134_BOARD_KWORLD_XPERT] = {
  2199. /*
  2200. FIXME:
  2201. - Remote control doesn't initialize properly.
  2202. - Audio volume starts muted,
  2203. then gradually increases after channel change.
  2204. - Overlay scaling problems (application error?)
  2205. - Composite S-Video untested.
  2206. From: Konrad Rzepecki <hannibal@megapolis.pl>
  2207. */
  2208. .name = "Kworld Xpert TV PVR7134",
  2209. .audio_clock = 0x00187de7,
  2210. .tuner_type = TUNER_TENA_9533_DI,
  2211. .radio_type = TUNER_TEA5767,
  2212. .tuner_addr = 0x61,
  2213. .radio_addr = 0x60,
  2214. .gpiomask = 0x0700,
  2215. .inputs = {{
  2216. .name = name_tv,
  2217. .vmux = 1,
  2218. .amux = TV,
  2219. .tv = 1,
  2220. .gpio = 0x000,
  2221. },{
  2222. .name = name_comp1,
  2223. .vmux = 3,
  2224. .amux = LINE1,
  2225. .gpio = 0x200, /* gpio by DScaler */
  2226. },{
  2227. .name = name_svideo,
  2228. .vmux = 0,
  2229. .amux = LINE1,
  2230. .gpio = 0x200,
  2231. }},
  2232. .radio = {
  2233. .name = name_radio,
  2234. .amux = LINE1,
  2235. .gpio = 0x100,
  2236. },
  2237. .mute = {
  2238. .name = name_mute,
  2239. .amux = TV,
  2240. .gpio = 0x000,
  2241. },
  2242. },
  2243. [SAA7134_BOARD_FLYTV_DIGIMATRIX] = {
  2244. .name = "FlyTV mini Asus Digimatrix",
  2245. .audio_clock = 0x00200000,
  2246. .tuner_type = TUNER_LG_TALN,
  2247. .radio_type = UNSET,
  2248. .tuner_addr = ADDR_UNSET,
  2249. .radio_addr = ADDR_UNSET,
  2250. .inputs = {{
  2251. .name = name_tv,
  2252. .vmux = 1,
  2253. .amux = TV,
  2254. .tv = 1,
  2255. },{
  2256. .name = name_tv_mono,
  2257. .vmux = 1,
  2258. .amux = LINE2,
  2259. .tv = 1,
  2260. },{
  2261. .name = name_comp1,
  2262. .vmux = 0,
  2263. .amux = LINE2,
  2264. },{
  2265. .name = name_comp2,
  2266. .vmux = 3,
  2267. .amux = LINE2,
  2268. },{
  2269. .name = name_svideo,
  2270. .vmux = 8,
  2271. .amux = LINE2,
  2272. }},
  2273. .radio = {
  2274. .name = name_radio, /* radio unconfirmed */
  2275. .amux = LINE2,
  2276. },
  2277. },
  2278. [SAA7134_BOARD_KWORLD_TERMINATOR] = {
  2279. /* Kworld V-Stream Studio TV Terminator */
  2280. /* "James Webb <jrwebb@qwest.net> */
  2281. .name = "V-Stream Studio TV Terminator",
  2282. .audio_clock = 0x00187de7,
  2283. .tuner_type = TUNER_PHILIPS_TDA8290,
  2284. .radio_type = UNSET,
  2285. .tuner_addr = ADDR_UNSET,
  2286. .radio_addr = ADDR_UNSET,
  2287. .gpiomask = 1 << 21,
  2288. .inputs = {{
  2289. .name = name_tv,
  2290. .vmux = 1,
  2291. .amux = TV,
  2292. .gpio = 0x0000000,
  2293. .tv = 1,
  2294. },{
  2295. .name = name_comp1, /* Composite input */
  2296. .vmux = 3,
  2297. .amux = LINE2,
  2298. .gpio = 0x0000000,
  2299. },{
  2300. .name = name_svideo, /* S-Video input */
  2301. .vmux = 8,
  2302. .amux = LINE2,
  2303. .gpio = 0x0000000,
  2304. }},
  2305. .radio = {
  2306. .name = name_radio,
  2307. .amux = TV,
  2308. .gpio = 0x0200000,
  2309. },
  2310. },
  2311. [SAA7134_BOARD_YUAN_TUN900] = {
  2312. /* FIXME:
  2313. * S-Video and composite sources untested.
  2314. * Radio not working.
  2315. * Remote control not yet implemented.
  2316. * From : codemaster@webgeeks.be */
  2317. .name = "Yuan TUN-900 (saa7135)",
  2318. .audio_clock = 0x00187de7,
  2319. .tuner_type = TUNER_PHILIPS_TDA8290,
  2320. .radio_type = UNSET,
  2321. .tuner_addr= ADDR_UNSET,
  2322. .radio_addr= ADDR_UNSET,
  2323. .gpiomask = 0x00010003,
  2324. .inputs = {{
  2325. .name = name_tv,
  2326. .vmux = 1,
  2327. .amux = TV,
  2328. .tv = 1,
  2329. .gpio = 0x01,
  2330. },{
  2331. .name = name_comp1,
  2332. .vmux = 0,
  2333. .amux = LINE2,
  2334. .gpio = 0x02,
  2335. },{
  2336. .name = name_svideo,
  2337. .vmux = 6,
  2338. .amux = LINE2,
  2339. .gpio = 0x02,
  2340. }},
  2341. .radio = {
  2342. .name = name_radio,
  2343. .amux = LINE1,
  2344. .gpio = 0x00010003,
  2345. },
  2346. .mute = {
  2347. .name = name_mute,
  2348. .amux = TV,
  2349. .gpio = 0x01,
  2350. },
  2351. },
  2352. [SAA7134_BOARD_BEHOLD_409FM] = {
  2353. /* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */
  2354. /* Beholder Intl. Ltd. 2008 */
  2355. /*Dmitry Belimov <d.belimov@gmail.com> */
  2356. .name = "Beholder BeholdTV 409 FM",
  2357. .audio_clock = 0x00187de7,
  2358. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  2359. .radio_type = UNSET,
  2360. .tuner_addr = ADDR_UNSET,
  2361. .radio_addr = ADDR_UNSET,
  2362. .tda9887_conf = TDA9887_PRESENT,
  2363. .gpiomask = 0x00008000,
  2364. .inputs = {{
  2365. .name = name_tv,
  2366. .vmux = 3,
  2367. .amux = TV,
  2368. .tv = 1,
  2369. },{
  2370. .name = name_comp1,
  2371. .vmux = 1,
  2372. .amux = LINE1,
  2373. },{
  2374. .name = name_svideo,
  2375. .vmux = 8,
  2376. .amux = LINE1,
  2377. }},
  2378. .radio = {
  2379. .name = name_radio,
  2380. .amux = LINE2,
  2381. },
  2382. },
  2383. [SAA7134_BOARD_GOTVIEW_7135] = {
  2384. /* Mike Baikov <mike@baikov.com> */
  2385. /* Andrey Cvetcov <ays14@yandex.ru> */
  2386. .name = "GoTView 7135 PCI",
  2387. .audio_clock = 0x00187de7,
  2388. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  2389. .radio_type = UNSET,
  2390. .tuner_addr = ADDR_UNSET,
  2391. .radio_addr = ADDR_UNSET,
  2392. .tda9887_conf = TDA9887_PRESENT,
  2393. .gpiomask = 0x00200003,
  2394. .inputs = {{
  2395. .name = name_tv,
  2396. .vmux = 1,
  2397. .amux = TV,
  2398. .tv = 1,
  2399. .gpio = 0x00200003,
  2400. },{
  2401. .name = name_tv_mono,
  2402. .vmux = 1,
  2403. .amux = LINE2,
  2404. .gpio = 0x00200003,
  2405. },{
  2406. .name = name_comp1,
  2407. .vmux = 3,
  2408. .amux = LINE1,
  2409. .gpio = 0x00200003,
  2410. },{
  2411. .name = name_svideo,
  2412. .vmux = 8,
  2413. .amux = LINE1,
  2414. .gpio = 0x00200003,
  2415. }},
  2416. .radio = {
  2417. .name = name_radio,
  2418. .amux = LINE2,
  2419. .gpio = 0x00200003,
  2420. },
  2421. .mute = {
  2422. .name = name_mute,
  2423. .amux = TV,
  2424. .gpio = 0x00200003,
  2425. },
  2426. },
  2427. [SAA7134_BOARD_PHILIPS_EUROPA] = {
  2428. .name = "Philips EUROPA V3 reference design",
  2429. .audio_clock = 0x00187de7,
  2430. .tuner_type = TUNER_PHILIPS_TD1316,
  2431. .radio_type = UNSET,
  2432. .tuner_addr = 0x61,
  2433. .radio_addr = ADDR_UNSET,
  2434. .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
  2435. .mpeg = SAA7134_MPEG_DVB,
  2436. .inputs = {{
  2437. .name = name_tv,
  2438. .vmux = 3,
  2439. .amux = TV,
  2440. .tv = 1,
  2441. },{
  2442. .name = name_comp1,
  2443. .vmux = 0,
  2444. .amux = LINE2,
  2445. },{
  2446. .name = name_svideo,
  2447. .vmux = 8,
  2448. .amux = LINE2,
  2449. }},
  2450. },
  2451. [SAA7134_BOARD_VIDEOMATE_DVBT_300] = {
  2452. .name = "Compro Videomate DVB-T300",
  2453. .audio_clock = 0x00187de7,
  2454. .tuner_type = TUNER_PHILIPS_TD1316,
  2455. .radio_type = UNSET,
  2456. .tuner_addr = 0x61,
  2457. .radio_addr = ADDR_UNSET,
  2458. .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
  2459. .mpeg = SAA7134_MPEG_DVB,
  2460. .inputs = {{
  2461. .name = name_tv,
  2462. .vmux = 3,
  2463. .amux = TV,
  2464. .tv = 1,
  2465. },{
  2466. .name = name_comp1,
  2467. .vmux = 1,
  2468. .amux = LINE2,
  2469. },{
  2470. .name = name_svideo,
  2471. .vmux = 8,
  2472. .amux = LINE2,
  2473. }},
  2474. },
  2475. [SAA7134_BOARD_VIDEOMATE_DVBT_200] = {
  2476. .name = "Compro Videomate DVB-T200",
  2477. .tuner_type = TUNER_ABSENT,
  2478. .audio_clock = 0x00187de7,
  2479. .radio_type = UNSET,
  2480. .tuner_addr = ADDR_UNSET,
  2481. .radio_addr = ADDR_UNSET,
  2482. .mpeg = SAA7134_MPEG_DVB,
  2483. .inputs = {{
  2484. .name = name_comp1,
  2485. .vmux = 0,
  2486. .amux = LINE1,
  2487. },{
  2488. .name = name_svideo,
  2489. .vmux = 8,
  2490. .amux = LINE1,
  2491. }},
  2492. },
  2493. [SAA7134_BOARD_RTD_VFG7350] = {
  2494. .name = "RTD Embedded Technologies VFG7350",
  2495. .audio_clock = 0x00200000,
  2496. .tuner_type = TUNER_ABSENT,
  2497. .radio_type = UNSET,
  2498. .tuner_addr = ADDR_UNSET,
  2499. .radio_addr = ADDR_UNSET,
  2500. .empress_addr = 0x21,
  2501. .inputs = {{
  2502. .name = "Composite 0",
  2503. .vmux = 0,
  2504. .amux = LINE1,
  2505. },{
  2506. .name = "Composite 1",
  2507. .vmux = 1,
  2508. .amux = LINE2,
  2509. },{
  2510. .name = "Composite 2",
  2511. .vmux = 2,
  2512. .amux = LINE1,
  2513. },{
  2514. .name = "Composite 3",
  2515. .vmux = 3,
  2516. .amux = LINE2,
  2517. },{
  2518. .name = "S-Video 0",
  2519. .vmux = 8,
  2520. .amux = LINE1,
  2521. },{
  2522. .name = "S-Video 1",
  2523. .vmux = 9,
  2524. .amux = LINE2,
  2525. }},
  2526. .mpeg = SAA7134_MPEG_EMPRESS,
  2527. .video_out = CCIR656,
  2528. .vid_port_opts = ( SET_T_CODE_POLARITY_NON_INVERTED |
  2529. SET_CLOCK_NOT_DELAYED |
  2530. SET_CLOCK_INVERTED |
  2531. SET_VSYNC_OFF ),
  2532. },
  2533. [SAA7134_BOARD_RTD_VFG7330] = {
  2534. .name = "RTD Embedded Technologies VFG7330",
  2535. .audio_clock = 0x00200000,
  2536. .tuner_type = TUNER_ABSENT,
  2537. .radio_type = UNSET,
  2538. .tuner_addr = ADDR_UNSET,
  2539. .radio_addr = ADDR_UNSET,
  2540. .inputs = {{
  2541. .name = "Composite 0",
  2542. .vmux = 0,
  2543. .amux = LINE1,
  2544. },{
  2545. .name = "Composite 1",
  2546. .vmux = 1,
  2547. .amux = LINE2,
  2548. },{
  2549. .name = "Composite 2",
  2550. .vmux = 2,
  2551. .amux = LINE1,
  2552. },{
  2553. .name = "Composite 3",
  2554. .vmux = 3,
  2555. .amux = LINE2,
  2556. },{
  2557. .name = "S-Video 0",
  2558. .vmux = 8,
  2559. .amux = LINE1,
  2560. },{
  2561. .name = "S-Video 1",
  2562. .vmux = 9,
  2563. .amux = LINE2,
  2564. }},
  2565. },
  2566. [SAA7134_BOARD_FLYTVPLATINUM_MINI2] = {
  2567. .name = "LifeView FlyTV Platinum Mini2",
  2568. .audio_clock = 0x00200000,
  2569. .tuner_type = TUNER_PHILIPS_TDA8290,
  2570. .radio_type = UNSET,
  2571. .tuner_addr = ADDR_UNSET,
  2572. .radio_addr = ADDR_UNSET,
  2573.  
  2574. .inputs = {{
  2575. .name = name_tv,
  2576. .vmux = 1,
  2577. .amux = TV,
  2578. .tv = 1,
  2579. },{
  2580. .name = name_comp1, /* Composite signal on S-Video input */
  2581. .vmux = 0,
  2582. .amux = LINE2,
  2583. },{
  2584. .name = name_comp2, /* Composite input */
  2585. .vmux = 3,
  2586. .amux = LINE2,
  2587. },{
  2588. .name = name_svideo,
  2589. .vmux = 8,
  2590. .amux = LINE2,
  2591. }},
  2592. },
  2593. [SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180] = {
  2594. /* Michael Krufky <mkrufky@linuxtv.org>
  2595. * Uses Alps Electric TDHU2, containing NXT2004 ATSC Decoder
  2596. * AFAIK, there is no analog demod, thus,
  2597. * no support for analog television.
  2598. */
  2599. .name = "AVerMedia AVerTVHD MCE A180",
  2600. .audio_clock = 0x00187de7,
  2601. .tuner_type = TUNER_ABSENT,
  2602. .radio_type = UNSET,
  2603. .tuner_addr = ADDR_UNSET,
  2604. .radio_addr = ADDR_UNSET,
  2605. .mpeg = SAA7134_MPEG_DVB,
  2606. .inputs = {{
  2607. .name = name_comp1,
  2608. .vmux = 3,
  2609. .amux = LINE2,
  2610. },{
  2611. .name = name_svideo,
  2612. .vmux = 8,
  2613. .amux = LINE2,
  2614. }},
  2615. },
  2616. [SAA7134_BOARD_MONSTERTV_MOBILE] = {
  2617. .name = "SKNet MonsterTV Mobile",
  2618. .audio_clock = 0x00187de7,
  2619. .tuner_type = TUNER_PHILIPS_TDA8290,
  2620. .radio_type = UNSET,
  2621. .tuner_addr = ADDR_UNSET,
  2622. .radio_addr = ADDR_UNSET,
  2623.  
  2624. .inputs = {{
  2625. .name = name_tv,
  2626. .vmux = 1,
  2627. .amux = TV,
  2628. .tv = 1,
  2629. },{
  2630. .name = name_comp1,
  2631. .vmux = 3,
  2632. .amux = LINE1,
  2633. },{
  2634. .name = name_svideo,
  2635. .vmux = 6,
  2636. .amux = LINE1,
  2637. }},
  2638. },
  2639. [SAA7134_BOARD_PINNACLE_PCTV_110i] = {
  2640. .name = "Pinnacle PCTV 40i/50i/110i (saa7133)",
  2641. .audio_clock = 0x00187de7,
  2642. .tuner_type = TUNER_PHILIPS_TDA8290,
  2643. .radio_type = UNSET,
  2644. .tuner_addr = ADDR_UNSET,
  2645. .radio_addr = ADDR_UNSET,
  2646. .gpiomask = 0x080200000,
  2647. .inputs = { {
  2648. .name = name_tv,
  2649. .vmux = 4,
  2650. .amux = TV,
  2651. .tv = 1,
  2652. }, {
  2653. .name = name_comp1,
  2654. .vmux = 1,
  2655. .amux = LINE2,
  2656. }, {
  2657. .name = name_comp2,
  2658. .vmux = 0,
  2659. .amux = LINE2,
  2660. }, {
  2661. .name = name_svideo,
  2662. .vmux = 8,
  2663. .amux = LINE2,
  2664. } },
  2665. .radio = {
  2666. .name = name_radio,
  2667. .amux = TV,
  2668. .gpio = 0x0200000,
  2669. },
  2670. },
  2671. [SAA7134_BOARD_ASUSTeK_P7131_DUAL] = {
  2672. .name = "ASUSTeK P7131 Dual",
  2673. .audio_clock = 0x00187de7,
  2674. .tuner_type = TUNER_PHILIPS_TDA8290,
  2675. .radio_type = UNSET,
  2676. .tuner_addr = ADDR_UNSET,
  2677. .radio_addr = ADDR_UNSET,
  2678. .gpiomask = 1 << 21,
  2679. .mpeg = SAA7134_MPEG_DVB,
  2680. .inputs = {{
  2681. .name = name_tv,
  2682. .vmux = 1,
  2683. .amux = TV,
  2684. .tv = 1,
  2685. .gpio = 0x0000000,
  2686. },{
  2687. .name = name_comp1,
  2688. .vmux = 3,
  2689. .amux = LINE2,
  2690. .gpio = 0x0200000,
  2691. },{
  2692. .name = name_comp2,
  2693. .vmux = 0,
  2694. .amux = LINE2,
  2695. .gpio = 0x0200000,
  2696. },{
  2697. .name = name_svideo,
  2698. .vmux = 8,
  2699. .amux = LINE2,
  2700. .gpio = 0x0200000,
  2701. }},
  2702. .radio = {
  2703. .name = name_radio,
  2704. .amux = TV,
  2705. .gpio = 0x0200000,
  2706. },
  2707. },
  2708. [SAA7134_BOARD_SEDNA_PC_TV_CARDBUS] = {
  2709. /* Paul Tom Zalac <pzalac@gmail.com> */
  2710. /* Pavel Mihaylov <bin@bash.info> */
  2711. .name = "Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)",
  2712. /* Sedna/MuchTV (OEM) Cardbus TV Tuner */
  2713. .audio_clock = 0x00187de7,
  2714. .tuner_type = TUNER_PHILIPS_TDA8290,
  2715. .radio_type = UNSET,
  2716. .tuner_addr = ADDR_UNSET,
  2717. .radio_addr = ADDR_UNSET,
  2718. .gpiomask = 0xe880c0,
  2719. .inputs = {{
  2720. .name = name_tv,
  2721. .vmux = 3,
  2722. .amux = TV,
  2723. .tv = 1,
  2724. },{
  2725. .name = name_comp1,
  2726. .vmux = 1,
  2727. .amux = LINE1,
  2728. },{
  2729. .name = name_svideo,
  2730. .vmux = 6,
  2731. .amux = LINE1,
  2732. }},
  2733. .radio = {
  2734. .name = name_radio,
  2735. .amux = LINE2,
  2736. },
  2737. },
  2738. [SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV] = {
  2739. /* "Cyril Lacoux (Yack)" <clacoux@ifeelgood.org> */
  2740. .name = "ASUS Digimatrix TV",
  2741. .audio_clock = 0x00200000,
  2742. .tuner_type = TUNER_PHILIPS_FQ1216ME,
  2743. .tda9887_conf = TDA9887_PRESENT,
  2744. .radio_type = UNSET,
  2745. .tuner_addr = ADDR_UNSET,
  2746. .radio_addr = ADDR_UNSET,
  2747. .inputs = {{
  2748. .name = name_tv,
  2749. .vmux = 1,
  2750. .amux = TV,
  2751. .tv = 1,
  2752. },{
  2753. .name = name_comp1,
  2754. .vmux = 3,
  2755. .amux = LINE1,
  2756. },{
  2757. .name = name_svideo,
  2758. .vmux = 8,
  2759. .amux = LINE1,
  2760. }},
  2761. },
  2762. [SAA7134_BOARD_PHILIPS_TIGER] = {
  2763. .name = "Philips Tiger reference design",
  2764. .audio_clock = 0x00187de7,
  2765. .tuner_type = TUNER_PHILIPS_TDA8290,
  2766. .radio_type = UNSET,
  2767. .tuner_addr = ADDR_UNSET,
  2768. .radio_addr = ADDR_UNSET,
  2769. .tda829x_conf = { .lna_cfg = TDA8290_LNA_OFF },
  2770. .mpeg = SAA7134_MPEG_DVB,
  2771. .gpiomask = 0x0200000,
  2772. .inputs = {{
  2773. .name = name_tv,
  2774. .vmux = 1,
  2775. .amux = TV,
  2776. .tv = 1,
  2777. },{
  2778. .name = name_comp1,
  2779. .vmux = 3,
  2780. .amux = LINE1,
  2781. },{
  2782. .name = name_svideo,
  2783. .vmux = 8,
  2784. .amux = LINE1,
  2785. }},
  2786. .radio = {
  2787. .name = name_radio,
  2788. .amux = TV,
  2789. .gpio = 0x0200000,
  2790. },
  2791. },
  2792. [SAA7134_BOARD_MSI_TVATANYWHERE_PLUS] = {
  2793. .name = "MSI TV@Anywhere plus",
  2794. .audio_clock = 0x00187de7,
  2795. .tuner_type = TUNER_PHILIPS_TDA8290,
  2796. .radio_type = UNSET,
  2797. .tuner_addr = ADDR_UNSET,
  2798. .radio_addr = ADDR_UNSET,
  2799. .gpiomask = 1 << 21,
  2800. .inputs = {{
  2801. .name = name_tv,
  2802. .vmux = 1,
  2803. .amux = TV,
  2804. .tv = 1,
  2805. },{
  2806. .name = name_comp1,
  2807. .vmux = 3,
  2808. .amux = LINE2, /* unconfirmed, taken from Philips driver */
  2809. },{
  2810. .name = name_comp2,
  2811. .vmux = 0, /* untested, Composite over S-Video */
  2812. .amux = LINE2,
  2813. },{
  2814. .name = name_svideo,
  2815. .vmux = 8,
  2816. .amux = LINE2,
  2817. }},
  2818. .radio = {
  2819. .name = name_radio,
  2820. .amux = TV,
  2821. .gpio = 0x0200000,
  2822. },
  2823. },
  2824. [SAA7134_BOARD_CINERGY250PCI] = {
  2825. /* remote-control does not work. The signal about a
  2826. key press comes in via gpio, but the key code
  2827. doesn't. Neither does it have an i2c remote control
  2828. interface. */
  2829. .name = "Terratec Cinergy 250 PCI TV",
  2830. .audio_clock = 0x00187de7,
  2831. .tuner_type = TUNER_PHILIPS_TDA8290,
  2832. .radio_type = UNSET,
  2833. .tuner_addr = ADDR_UNSET,
  2834. .radio_addr = ADDR_UNSET,
  2835. .gpiomask = 0x80200000,
  2836. .inputs = {{
  2837. .name = name_tv,
  2838. .vmux = 1,
  2839. .amux = TV,
  2840. .tv = 1,
  2841. },{
  2842. .name = name_svideo, /* NOT tested */
  2843. .vmux = 8,
  2844. .amux = LINE1,
  2845. }},
  2846. .radio = {
  2847. .name = name_radio,
  2848. .amux = TV,
  2849. .gpio = 0x0200000,
  2850. },
  2851. },
  2852. [SAA7134_BOARD_FLYDVB_TRIO] = {
  2853. /* LifeView LR319 FlyDVB Trio */
  2854. /* Peter Missel <peter.missel@onlinehome.de> */
  2855. .name = "LifeView FlyDVB Trio",
  2856. .audio_clock = 0x00200000,
  2857. .tuner_type = TUNER_PHILIPS_TDA8290,
  2858. .radio_type = UNSET,
  2859. .tuner_addr = ADDR_UNSET,
  2860. .radio_addr = ADDR_UNSET,
  2861. .gpiomask = 0x00200000,
  2862. .mpeg = SAA7134_MPEG_DVB,
  2863. .inputs = {{
  2864. .name = name_tv, /* Analog broadcast/cable TV */
  2865. .vmux = 1,
  2866. .amux = TV,
  2867. .gpio = 0x200000, /* GPIO21=High for TV input */
  2868. .tv = 1,
  2869. },{
  2870. .name = name_svideo, /* S-Video signal on S-Video input */
  2871. .vmux = 8,
  2872. .amux = LINE2,
  2873. },{
  2874. .name = name_comp1, /* Composite signal on S-Video input */
  2875. .vmux = 0,
  2876. .amux = LINE2,
  2877. },{
  2878. .name = name_comp2, /* Composite input */
  2879. .vmux = 3,
  2880. .amux = LINE2,
  2881. }},
  2882. .radio = {
  2883. .name = name_radio,
  2884. .amux = TV,
  2885. .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
  2886. },
  2887. },
  2888. [SAA7134_BOARD_AVERMEDIA_777] = {
  2889. .name = "AverTV DVB-T 777",
  2890. .audio_clock = 0x00187de7,
  2891. .tuner_type = TUNER_ABSENT,
  2892. .radio_type = UNSET,
  2893. .tuner_addr = ADDR_UNSET,
  2894. .radio_addr = ADDR_UNSET,
  2895. .mpeg = SAA7134_MPEG_DVB,
  2896. .inputs = {{
  2897. .name = name_comp1,
  2898. .vmux = 1,
  2899. .amux = LINE1,
  2900. },{
  2901. .name = name_svideo,
  2902. .vmux = 8,
  2903. .amux = LINE1,
  2904. }},
  2905. },
  2906. [SAA7134_BOARD_FLYDVBT_LR301] = {
  2907. /* LifeView FlyDVB-T */
  2908. /* Giampiero Giancipoli <gianci@libero.it> */
  2909. .name = "LifeView FlyDVB-T / Genius VideoWonder DVB-T",
  2910. .audio_clock = 0x00200000,
  2911. .tuner_type = TUNER_ABSENT,
  2912. .radio_type = UNSET,
  2913. .tuner_addr = ADDR_UNSET,
  2914. .radio_addr = ADDR_UNSET,
  2915. .mpeg = SAA7134_MPEG_DVB,
  2916. .inputs = {{
  2917. .name = name_comp1, /* Composite input */
  2918. .vmux = 3,
  2919. .amux = LINE2,
  2920. },{
  2921. .name = name_svideo, /* S-Video signal on S-Video input */
  2922. .vmux = 8,
  2923. .amux = LINE2,
  2924. }},
  2925. },
  2926. [SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331] = {
  2927. .name = "ADS Instant TV Duo Cardbus PTV331",
  2928. .audio_clock = 0x00200000,
  2929. .tuner_type = TUNER_PHILIPS_TDA8290,
  2930. .radio_type = UNSET,
  2931. .tuner_addr = ADDR_UNSET,
  2932. .radio_addr = ADDR_UNSET,
  2933. .mpeg = SAA7134_MPEG_DVB,
  2934. .gpiomask = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
  2935. .inputs = {{
  2936. .name = name_tv,
  2937. .vmux = 1,
  2938. .amux = TV,
  2939. .tv = 1,
  2940. .gpio = 0x00200000,
  2941. }},
  2942. },
  2943. [SAA7134_BOARD_TEVION_DVBT_220RF] = {
  2944. .name = "Tevion/KWorld DVB-T 220RF",
  2945. .audio_clock = 0x00187de7,
  2946. .tuner_type = TUNER_PHILIPS_TDA8290,
  2947. .radio_type = UNSET,
  2948. .tuner_addr = ADDR_UNSET,
  2949. .radio_addr = ADDR_UNSET,
  2950. .mpeg = SAA7134_MPEG_DVB,
  2951. .gpiomask = 1 << 21,
  2952. .inputs = {{
  2953. .name = name_tv,
  2954. .vmux = 1,
  2955. .amux = TV,
  2956. .tv = 1,
  2957. },{
  2958. .name = name_comp1,
  2959. .vmux = 3,
  2960. .amux = LINE1,
  2961. },{
  2962. .name = name_comp2,
  2963. .vmux = 0,
  2964. .amux = LINE1,
  2965. },{
  2966. .name = name_svideo,
  2967. .vmux = 8,
  2968. .amux = LINE1,
  2969. }},
  2970. .radio = {
  2971. .name = name_radio,
  2972. .amux = TV,
  2973. .gpio = 0x0200000,
  2974. },
  2975. },
  2976. [SAA7134_BOARD_KWORLD_DVBT_210] = {
  2977. .name = "KWorld DVB-T 210",
  2978. .audio_clock = 0x00187de7,
  2979. .tuner_type = TUNER_PHILIPS_TDA8290,
  2980. .radio_type = UNSET,
  2981. .tuner_addr = ADDR_UNSET,
  2982. .radio_addr = ADDR_UNSET,
  2983. .mpeg = SAA7134_MPEG_DVB,
  2984. .gpiomask = 1 << 21,
  2985. .inputs = {{
  2986. .name = name_tv,
  2987. .vmux = 1,
  2988. .amux = TV,
  2989. .tv = 1,
  2990. },{
  2991. .name = name_comp1,
  2992. .vmux = 3,
  2993. .amux = LINE1,
  2994. },{
  2995. .name = name_svideo,
  2996. .vmux = 8,
  2997. .amux = LINE1,
  2998. }},
  2999. .radio = {
  3000. .name = name_radio,
  3001. .amux = TV,
  3002. .gpio = 0x0200000,
  3003. },
  3004. },
  3005. [SAA7134_BOARD_KWORLD_ATSC110] = {
  3006. .name = "Kworld ATSC110/115",
  3007. .audio_clock = 0x00187de7,
  3008. .tuner_type = TUNER_PHILIPS_TUV1236D,
  3009. .radio_type = UNSET,
  3010. .tuner_addr = ADDR_UNSET,
  3011. .radio_addr = ADDR_UNSET,
  3012. .tda9887_conf = TDA9887_PRESENT,
  3013. .mpeg = SAA7134_MPEG_DVB,
  3014. .inputs = {{
  3015. .name = name_tv,
  3016. .vmux = 1,
  3017. .amux = TV,
  3018. .tv = 1,
  3019. },{
  3020. .name = name_comp1,
  3021. .vmux = 3,
  3022. .amux = LINE2,
  3023. },{
  3024. .name = name_svideo,
  3025. .vmux = 8,
  3026. .amux = LINE2,
  3027. }},
  3028. },
  3029. [SAA7134_BOARD_AVERMEDIA_A169_B] = {
  3030. /* AVerMedia A169 */
  3031. /* Rickard Osser <ricky@osser.se> */
  3032. /* This card has two saa7134 chips on it,
  3033. but only one of them is currently working. */
  3034. .name = "AVerMedia A169 B",
  3035. .audio_clock = 0x02187de7,
  3036. .tuner_type = TUNER_LG_TALN,
  3037. .radio_type = UNSET,
  3038. .tuner_addr = ADDR_UNSET,
  3039. .radio_addr = ADDR_UNSET,
  3040. .tda9887_conf = TDA9887_PRESENT,
  3041. .gpiomask = 0x0a60000,
  3042. },
  3043. [SAA7134_BOARD_AVERMEDIA_A169_B1] = {
  3044. /* AVerMedia A169 */
  3045. /* Rickard Osser <ricky@osser.se> */
  3046. .name = "AVerMedia A169 B1",
  3047. .audio_clock = 0x02187de7,
  3048. .tuner_type = TUNER_LG_TALN,
  3049. .radio_type = UNSET,
  3050. .tuner_addr = ADDR_UNSET,
  3051. .radio_addr = ADDR_UNSET,
  3052. .tda9887_conf = TDA9887_PRESENT,
  3053. .gpiomask = 0xca60000,
  3054. .inputs = {{
  3055. .name = name_tv,
  3056. .vmux = 4,
  3057. .amux = TV,
  3058. .tv = 1,
  3059. .gpio = 0x04a61000,
  3060. },{
  3061. .name = name_comp2, /* Composite SVIDEO (B/W if signal is carried with SVIDEO) */
  3062. .vmux = 1,
  3063. .amux = LINE2,
  3064. },{
  3065. .name = name_svideo,
  3066. .vmux = 9, /* 9 is correct as S-VIDEO1 according to a169.inf! */
  3067. .amux = LINE1,
  3068. }},
  3069. },
  3070. [SAA7134_BOARD_MD7134_BRIDGE_2] = {
  3071. /* The second saa7134 on this card only serves as DVB-S host bridge */
  3072. .name = "Medion 7134 Bridge #2",
  3073. .audio_clock = 0x00187de7,
  3074. .radio_type = UNSET,
  3075. .tuner_addr = ADDR_UNSET,
  3076. .radio_addr = ADDR_UNSET,
  3077. .mpeg = SAA7134_MPEG_DVB,
  3078. },
  3079. [SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS] = {
  3080. .name = "LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB",
  3081. .audio_clock = 0x00200000,
  3082. .tuner_type = TUNER_PHILIPS_TDA8290,
  3083. .radio_type = UNSET,
  3084. .tuner_addr = ADDR_UNSET,
  3085. .radio_addr = ADDR_UNSET,
  3086. .mpeg = SAA7134_MPEG_DVB,
  3087. .gpiomask = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
  3088. .inputs = {{
  3089. .name = name_tv,
  3090. .vmux = 1,
  3091. .amux = TV,
  3092. .gpio = 0x200000, /* GPIO21=High for TV input */
  3093. .tv = 1,
  3094. },{
  3095. .name = name_svideo, /* S-Video signal on S-Video input */
  3096. .vmux = 8,
  3097. .amux = LINE2,
  3098. },{
  3099. .name = name_comp1, /* Composite signal on S-Video input */
  3100. .vmux = 0,
  3101. .amux = LINE2,
  3102. },{
  3103. .name = name_comp2, /* Composite input */
  3104. .vmux = 3,
  3105. .amux = LINE2,
  3106. }},
  3107. .radio = {
  3108. .name = name_radio,
  3109. .amux = TV,
  3110. .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
  3111. },
  3112. },
  3113. [SAA7134_BOARD_FLYVIDEO3000_NTSC] = {
  3114. /* "Zac Bowling" <zac@zacbowling.com> */
  3115. .name = "LifeView FlyVIDEO3000 (NTSC)",
  3116. .audio_clock = 0x00200000,
  3117. .tuner_type = TUNER_PHILIPS_NTSC,
  3118. .radio_type = UNSET,
  3119. .tuner_addr = ADDR_UNSET,
  3120. .radio_addr = ADDR_UNSET,
  3121.  
  3122. .gpiomask = 0xe000,
  3123. .inputs = {{
  3124. .name = name_tv,
  3125. .vmux = 1,
  3126. .amux = TV,
  3127. .gpio = 0x8000,
  3128. .tv = 1,
  3129. },{
  3130. .name = name_tv_mono,
  3131. .vmux = 1,
  3132. .amux = LINE2,
  3133. .gpio = 0x0000,
  3134. .tv = 1,
  3135. },{
  3136. .name = name_comp1,
  3137. .vmux = 0,
  3138. .amux = LINE2,
  3139. .gpio = 0x4000,
  3140. },{
  3141. .name = name_comp2,
  3142. .vmux = 3,
  3143. .amux = LINE2,
  3144. .gpio = 0x4000,
  3145. },{
  3146. .name = name_svideo,
  3147. .vmux = 8,
  3148. .amux = LINE2,
  3149. .gpio = 0x4000,
  3150. }},
  3151. .radio = {
  3152. .name = name_radio,
  3153. .amux = LINE2,
  3154. .gpio = 0x2000,
  3155. },
  3156. .mute = {
  3157. .name = name_mute,
  3158. .amux = TV,
  3159. .gpio = 0x8000,
  3160. },
  3161. },
  3162. [SAA7134_BOARD_MEDION_MD8800_QUADRO] = {
  3163. .name = "Medion Md8800 Quadro",
  3164. .audio_clock = 0x00187de7,
  3165. .tuner_type = TUNER_PHILIPS_TDA8290,
  3166. .radio_type = UNSET,
  3167. .tuner_addr = ADDR_UNSET,
  3168. .radio_addr = ADDR_UNSET,
  3169. .mpeg = SAA7134_MPEG_DVB,
  3170. .inputs = {{
  3171. .name = name_tv,
  3172. .vmux = 1,
  3173. .amux = TV,
  3174. .tv = 1,
  3175. },{
  3176. .name = name_comp1,
  3177. .vmux = 0,
  3178. .amux = LINE1,
  3179. },{
  3180. .name = name_svideo,
  3181. .vmux = 8,
  3182. .amux = LINE1,
  3183. }},
  3184. },
  3185. [SAA7134_BOARD_FLYDVBS_LR300] = {
  3186. /* LifeView FlyDVB-s */
  3187. /* Igor M. Liplianin <liplianin@tut.by> */
  3188. .name = "LifeView FlyDVB-S /Acorp TV134DS",
  3189. .audio_clock = 0x00200000,
  3190. .tuner_type = TUNER_ABSENT,
  3191. .radio_type = UNSET,
  3192. .tuner_addr = ADDR_UNSET,
  3193. .radio_addr = ADDR_UNSET,
  3194. .mpeg = SAA7134_MPEG_DVB,
  3195. .inputs = {{
  3196. .name = name_comp1, /* Composite input */
  3197. .vmux = 3,
  3198. .amux = LINE1,
  3199. },{
  3200. .name = name_svideo, /* S-Video signal on S-Video input */
  3201. .vmux = 8,
  3202. .amux = LINE1,
  3203. }},
  3204. },
  3205. [SAA7134_BOARD_PROTEUS_2309] = {
  3206. .name = "Proteus Pro 2309",
  3207. .audio_clock = 0x00187de7,
  3208. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  3209. .radio_type = UNSET,
  3210. .tuner_addr = ADDR_UNSET,
  3211. .radio_addr = ADDR_UNSET,
  3212. .tda9887_conf = TDA9887_PRESENT,
  3213. .inputs = {{
  3214. .name = name_tv,
  3215. .vmux = 1,
  3216. .amux = LINE2,
  3217. .tv = 1,
  3218. },{
  3219. .name = name_comp1,
  3220. .vmux = 0,
  3221. .amux = LINE2,
  3222. },{
  3223. .name = name_comp2,
  3224. .vmux = 3,
  3225. .amux = LINE2,
  3226. },{
  3227. .name = name_svideo,
  3228. .vmux = 8,
  3229. .amux = LINE2,
  3230. }},
  3231. .mute = {
  3232. .name = name_mute,
  3233. .amux = LINE1,
  3234. },
  3235. },
  3236. [SAA7134_BOARD_AVERMEDIA_A16AR] = {
  3237. /* Petr Baudis <pasky@ucw.cz> */
  3238. .name = "AVerMedia TV Hybrid A16AR",
  3239. .audio_clock = 0x187de7,
  3240. .tuner_type = TUNER_PHILIPS_TD1316, /* untested */
  3241. .radio_type = TUNER_TEA5767, /* untested */
  3242. .tuner_addr = ADDR_UNSET,
  3243. .radio_addr = 0x60,
  3244. .tda9887_conf = TDA9887_PRESENT,
  3245. .mpeg = SAA7134_MPEG_DVB,
  3246. .inputs = {{
  3247. .name = name_tv,
  3248. .vmux = 1,
  3249. .amux = TV,
  3250. .tv = 1,
  3251. },{
  3252. .name = name_comp1,
  3253. .vmux = 3,
  3254. .amux = LINE2,
  3255. },{
  3256. .name = name_svideo,
  3257. .vmux = 8,
  3258. .amux = LINE1,
  3259. }},
  3260. .radio = {
  3261. .name = name_radio,
  3262. .amux = LINE1,
  3263. },
  3264. },
  3265. [SAA7134_BOARD_ASUS_EUROPA2_HYBRID] = {
  3266. .name = "Asus Europa2 OEM",
  3267. .audio_clock = 0x00187de7,
  3268. .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
  3269. .radio_type = UNSET,
  3270. .tuner_addr = ADDR_UNSET,
  3271. .radio_addr = ADDR_UNSET,
  3272. .tda9887_conf = TDA9887_PRESENT| TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE,
  3273. .mpeg = SAA7134_MPEG_DVB,
  3274. .inputs = {{
  3275. .name = name_tv,
  3276. .vmux = 3,
  3277. .amux = TV,
  3278. .tv = 1,
  3279. },{
  3280. .name = name_comp1,
  3281. .vmux = 4,
  3282. .amux = LINE2,
  3283. },{
  3284. .name = name_svideo,
  3285. .vmux = 8,
  3286. .amux = LINE2,
  3287. }},
  3288. .radio = {
  3289. .name = name_radio,
  3290. .amux = LINE1,
  3291. },
  3292. },
  3293. [SAA7134_BOARD_PINNACLE_PCTV_310i] = {
  3294. .name = "Pinnacle PCTV 310i",
  3295. .audio_clock = 0x00187de7,
  3296. .tuner_type = TUNER_PHILIPS_TDA8290,
  3297. .radio_type = UNSET,
  3298. .tuner_addr = ADDR_UNSET,
  3299. .radio_addr = ADDR_UNSET,
  3300. .tda829x_conf = { .lna_cfg = TDA8290_LNA_GP0_HIGH_ON },
  3301. .mpeg = SAA7134_MPEG_DVB,
  3302. .gpiomask = 0x000200000,
  3303. .inputs = {{
  3304. .name = name_tv,
  3305. .vmux = 4,
  3306. .amux = TV,
  3307. .tv = 1,
  3308. },{
  3309. .name = name_comp1,
  3310. .vmux = 1,
  3311. .amux = LINE2,
  3312. },{
  3313. .name = name_comp2,
  3314. .vmux = 0,
  3315. .amux = LINE2,
  3316. },{
  3317. .name = name_svideo,
  3318. .vmux = 8,
  3319. .amux = LINE2,
  3320. }},
  3321. .radio = {
  3322. .name = name_radio,
  3323. .amux = TV,
  3324. .gpio = 0x0200000,
  3325. },
  3326. },
  3327. [SAA7134_BOARD_AVERMEDIA_STUDIO_507] = {
  3328. /* Mikhail Fedotov <mo_fedotov@mail.ru> */
  3329. .name = "Avermedia AVerTV Studio 507",
  3330. .audio_clock = 0x00187de7,
  3331. .tuner_type = TUNER_PHILIPS_FM1256_IH3,
  3332. .radio_type = UNSET,
  3333. .tuner_addr = ADDR_UNSET,
  3334. .radio_addr = ADDR_UNSET,
  3335. .tda9887_conf = TDA9887_PRESENT,
  3336. .gpiomask = 0x03,
  3337. .inputs = {{
  3338. .name = name_tv,
  3339. .vmux = 1,
  3340. .amux = TV,
  3341. .tv = 1,
  3342. .gpio = 0x00,
  3343. },{
  3344. .name = name_comp1,
  3345. .vmux = 0,
  3346. .amux = LINE2,
  3347. .gpio = 0x00,
  3348. },{
  3349. .name = name_comp2,
  3350. .vmux = 3,
  3351. .amux = LINE2,
  3352. .gpio = 0x00,
  3353. },{
  3354. .name = name_svideo,
  3355. .vmux = 8,
  3356. .amux = LINE2,
  3357. .gpio = 0x00,
  3358. }},
  3359. .radio = {
  3360. .name = name_radio,
  3361. .amux = LINE2,
  3362. .gpio = 0x01,
  3363. },
  3364. .mute = {
  3365. .name = name_mute,
  3366. .amux = LINE1,
  3367. .gpio = 0x00,
  3368. },
  3369. },
  3370. [SAA7134_BOARD_VIDEOMATE_DVBT_200A] = {
  3371. /* Francis Barber <fedora@barber-family.id.au> */
  3372. .name = "Compro Videomate DVB-T200A",
  3373. .audio_clock = 0x00187de7,
  3374. .tuner_type = TUNER_ABSENT,
  3375. .radio_type = UNSET,
  3376. .tuner_addr = ADDR_UNSET,
  3377. .radio_addr = ADDR_UNSET,
  3378. .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
  3379. .mpeg = SAA7134_MPEG_DVB,
  3380. .inputs = {{
  3381. .name = name_tv,
  3382. .vmux = 3,
  3383. .amux = TV,
  3384. .tv = 1,
  3385. },{
  3386. .name = name_comp1,
  3387. .vmux = 1,
  3388. .amux = LINE2,
  3389. },{
  3390. .name = name_svideo,
  3391. .vmux = 8,
  3392. .amux = LINE2,
  3393. }},
  3394. },
  3395. [SAA7134_BOARD_HAUPPAUGE_HVR1110] = {
  3396. /* Thomas Genty <tomlohave@gmail.com> */
  3397. /* David Bentham <db260179@hotmail.com> */
  3398. .name = "Hauppauge WinTV-HVR1110 DVB-T/Hybrid",
  3399. .audio_clock = 0x00187de7,
  3400. .tuner_type = TUNER_PHILIPS_TDA8290,
  3401. .radio_type = UNSET,
  3402. .tuner_addr = ADDR_UNSET,
  3403. .radio_addr = ADDR_UNSET,
  3404. .tda829x_conf = { .lna_cfg = TDA8290_LNA_GP0_HIGH_ON },
  3405. .mpeg = SAA7134_MPEG_DVB,
  3406. .gpiomask = 0x0200100,
  3407. .inputs = {{
  3408. .name = name_tv,
  3409. .vmux = 1,
  3410. .amux = TV,
  3411. .tv = 1,
  3412. .gpio = 0x0000100,
  3413. }, {
  3414. .name = name_comp1,
  3415. .vmux = 3,
  3416. .amux = LINE1,
  3417. }, {
  3418. .name = name_svideo,
  3419. .vmux = 8,
  3420. .amux = LINE1,
  3421. } },
  3422. .radio = {
  3423. .name = name_radio,
  3424. .amux = TV,
  3425. .gpio = 0x0200100,
  3426. },
  3427. },
  3428. [SAA7134_BOARD_HAUPPAUGE_HVR1150] = {
  3429. .name = "Hauppauge WinTV-HVR1150 ATSC/QAM-Hybrid",
  3430. .audio_clock = 0x00187de7,
  3431. .tuner_type = TUNER_PHILIPS_TDA8290,
  3432. .radio_type = UNSET,
  3433. .tuner_addr = ADDR_UNSET,
  3434. .radio_addr = ADDR_UNSET,
  3435. .tda829x_conf = { .lna_cfg = TDA8290_LNA_ON_BRIDGE },
  3436. .mpeg = SAA7134_MPEG_DVB,
  3437. .ts_type = SAA7134_MPEG_TS_SERIAL,
  3438. .ts_force_val = 1,
  3439. .gpiomask = 0x0800100, /* GPIO 21 is an INPUT */
  3440. .inputs = {{
  3441. .name = name_tv,
  3442. .vmux = 1,
  3443. .amux = TV,
  3444. .tv = 1,
  3445. .gpio = 0x0000100,
  3446. }, {
  3447. .name = name_comp1,
  3448. .vmux = 3,
  3449. .amux = LINE1,
  3450. }, {
  3451. .name = name_svideo,
  3452. .vmux = 8,
  3453. .amux = LINE1,
  3454. } },
  3455. .radio = {
  3456. .name = name_radio,
  3457. .amux = TV,
  3458. .gpio = 0x0800100, /* GPIO 23 HI for FM */
  3459. },
  3460. },
  3461. [SAA7134_BOARD_HAUPPAUGE_HVR1120] = {
  3462. .name = "Hauppauge WinTV-HVR1120 DVB-T/Hybrid",
  3463. .audio_clock = 0x00187de7,
  3464. .tuner_type = TUNER_PHILIPS_TDA8290,
  3465. .radio_type = UNSET,
  3466. .tuner_addr = ADDR_UNSET,
  3467. .radio_addr = ADDR_UNSET,
  3468. .tda829x_conf = { .lna_cfg = TDA8290_LNA_ON_BRIDGE },
  3469. .mpeg = SAA7134_MPEG_DVB,
  3470. .ts_type = SAA7134_MPEG_TS_SERIAL,
  3471. .gpiomask = 0x0800100, /* GPIO 21 is an INPUT */
  3472. .inputs = {{
  3473. .name = name_tv,
  3474. .vmux = 1,
  3475. .amux = TV,
  3476. .tv = 1,
  3477. .gpio = 0x0000100,
  3478. }, {
  3479. .name = name_comp1,
  3480. .vmux = 3,
  3481. .amux = LINE1,
  3482. }, {
  3483. .name = name_svideo,
  3484. .vmux = 8,
  3485. .amux = LINE1,
  3486. } },
  3487. .radio = {
  3488. .name = name_radio,
  3489. .amux = TV,
  3490. .gpio = 0x0800100, /* GPIO 23 HI for FM */
  3491. },
  3492. },
  3493. [SAA7134_BOARD_CINERGY_HT_PCMCIA] = {
  3494. .name = "Terratec Cinergy HT PCMCIA",
  3495. .audio_clock = 0x00187de7,
  3496. .tuner_type = TUNER_PHILIPS_TDA8290,
  3497. .radio_type = UNSET,
  3498. .tuner_addr = ADDR_UNSET,
  3499. .radio_addr = ADDR_UNSET,
  3500. .mpeg = SAA7134_MPEG_DVB,
  3501. .inputs = {{
  3502. .name = name_tv,
  3503. .vmux = 1,
  3504. .amux = TV,
  3505. .tv = 1,
  3506. },{
  3507. .name = name_comp1,
  3508. .vmux = 0,
  3509. .amux = LINE1,
  3510. },{
  3511. .name = name_svideo,
  3512. .vmux = 6,
  3513. .amux = LINE1,
  3514. }},
  3515. },
  3516. [SAA7134_BOARD_ENCORE_ENLTV] = {
  3517. /* Steven Walter <stevenrwalter@gmail.com>
  3518. Juan Pablo Sormani <sorman@gmail.com> */
  3519. .name = "Encore ENLTV",
  3520. .audio_clock = 0x00200000,
  3521. .tuner_type = TUNER_TNF_5335MF,
  3522. .radio_type = UNSET,
  3523. .tuner_addr = ADDR_UNSET,
  3524. .radio_addr = ADDR_UNSET,
  3525. .inputs = {{
  3526. .name = name_tv,
  3527. .vmux = 1,
  3528. .amux = 3,
  3529. .tv = 1,
  3530. },{
  3531. .name = name_tv_mono,
  3532. .vmux = 7,
  3533. .amux = 4,
  3534. .tv = 1,
  3535. },{
  3536. .name = name_comp1,
  3537. .vmux = 3,
  3538. .amux = 2,
  3539. },{
  3540. .name = name_svideo,
  3541. .vmux = 0,
  3542. .amux = 2,
  3543. }},
  3544. .radio = {
  3545. .name = name_radio,
  3546. .amux = LINE2,
  3547. /* .gpio = 0x00300001,*/
  3548. .gpio = 0x20000,
  3549.  
  3550. },
  3551. .mute = {
  3552. .name = name_mute,
  3553. .amux = 0,
  3554. },
  3555. },
  3556. [SAA7134_BOARD_ENCORE_ENLTV_FM] = {
  3557. /* Juan Pablo Sormani <sorman@gmail.com> */
  3558. .name = "Encore ENLTV-FM",
  3559. .audio_clock = 0x00200000,
  3560. .tuner_type = TUNER_PHILIPS_FCV1236D,
  3561. .radio_type = UNSET,
  3562. .tuner_addr = ADDR_UNSET,
  3563. .radio_addr = ADDR_UNSET,
  3564. .inputs = {{
  3565. .name = name_tv,
  3566. .vmux = 1,
  3567. .amux = 3,
  3568. .tv = 1,
  3569. },{
  3570. .name = name_tv_mono,
  3571. .vmux = 7,
  3572. .amux = 4,
  3573. .tv = 1,
  3574. },{
  3575. .name = name_comp1,
  3576. .vmux = 3,
  3577. .amux = 2,
  3578. },{
  3579. .name = name_svideo,
  3580. .vmux = 0,
  3581. .amux = 2,
  3582. }},
  3583. .radio = {
  3584. .name = name_radio,
  3585. .amux = LINE2,
  3586. .gpio = 0x20000,
  3587.  
  3588. },
  3589. .mute = {
  3590. .name = name_mute,
  3591. .amux = 0,
  3592. },
  3593. },
  3594. [SAA7134_BOARD_ENCORE_ENLTV_FM53] = {
  3595. .name = "Encore ENLTV-FM v5.3",
  3596. .audio_clock = 0x00200000,
  3597. .tuner_type = TUNER_TNF_5335MF,
  3598. .radio_type = UNSET,
  3599. .tuner_addr = ADDR_UNSET,
  3600. .radio_addr = ADDR_UNSET,
  3601. .gpiomask = 0x7000,
  3602. .inputs = { {
  3603. .name = name_tv,
  3604. .vmux = 1,
  3605. .amux = 1,
  3606. .tv = 1,
  3607. .gpio = 0x50000,
  3608. }, {
  3609. .name = name_comp1,
  3610. .vmux = 3,
  3611. .amux = 2,
  3612. .gpio = 0x2000,
  3613. }, {
  3614. .name = name_svideo,
  3615. .vmux = 8,
  3616. .amux = 2,
  3617. .gpio = 0x2000,
  3618. } },
  3619. .radio = {
  3620. .name = name_radio,
  3621. .vmux = 1,
  3622. .amux = 1,
  3623. },
  3624. .mute = {
  3625. .name = name_mute,
  3626. .gpio = 0xf000,
  3627. .amux = 0,
  3628. },
  3629. },
  3630. [SAA7134_BOARD_ENCORE_ENLTV_FM3] = {
  3631. .name = "Encore ENLTV-FM 3",
  3632. .audio_clock = 0x02187de7,
  3633. .tuner_type = TUNER_TENA_TNF_5337,
  3634. .radio_type = TUNER_TEA5767,
  3635. .tuner_addr = 0x61,
  3636. .radio_addr = 0x60,
  3637. .inputs = { {
  3638. .name = name_tv,
  3639. .vmux = 1,
  3640. .amux = LINE2,
  3641. .tv = 1,
  3642. }, {
  3643. .name = name_comp1,
  3644. .vmux = 3,
  3645. .amux = LINE1,
  3646. }, {
  3647. .name = name_svideo,
  3648. .vmux = 8,
  3649. .amux = LINE1,
  3650. } },
  3651. .radio = {
  3652. .name = name_radio,
  3653. .vmux = 1,
  3654. .amux = LINE1,
  3655. },
  3656. .mute = {
  3657. .name = name_mute,
  3658. .amux = LINE1,
  3659. .gpio = 0x43000,
  3660. },
  3661. },
  3662. [SAA7134_BOARD_CINERGY_HT_PCI] = {
  3663. .name = "Terratec Cinergy HT PCI",
  3664. .audio_clock = 0x00187de7,
  3665. .tuner_type = TUNER_PHILIPS_TDA8290,
  3666. .radio_type = UNSET,
  3667. .tuner_addr = ADDR_UNSET,
  3668. .radio_addr = ADDR_UNSET,
  3669. .mpeg = SAA7134_MPEG_DVB,
  3670. .inputs = {{
  3671. .name = name_tv,
  3672. .vmux = 1,
  3673. .amux = TV,
  3674. .tv = 1,
  3675. },{
  3676. .name = name_comp1,
  3677. .vmux = 0,
  3678. .amux = LINE1,
  3679. },{
  3680. .name = name_svideo,
  3681. .vmux = 6,
  3682. .amux = LINE1,
  3683. }},
  3684. },
  3685. [SAA7134_BOARD_PHILIPS_TIGER_S] = {
  3686. .name = "Philips Tiger - S Reference design",
  3687. .audio_clock = 0x00187de7,
  3688. .tuner_type = TUNER_PHILIPS_TDA8290,
  3689. .radio_type = UNSET,
  3690. .tuner_addr = ADDR_UNSET,
  3691. .radio_addr = ADDR_UNSET,
  3692. .tda829x_conf = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  3693. .mpeg = SAA7134_MPEG_DVB,
  3694. .gpiomask = 0x0200000,
  3695. .inputs = {{
  3696. .name = name_tv,
  3697. .vmux = 1,
  3698. .amux = TV,
  3699. .tv = 1,
  3700. },{
  3701. .name = name_comp1,
  3702. .vmux = 3,
  3703. .amux = LINE1,
  3704. },{
  3705. .name = name_svideo,
  3706. .vmux = 8,
  3707. .amux = LINE1,
  3708. }},
  3709. .radio = {
  3710. .name = name_radio,
  3711. .amux = TV,
  3712. .gpio = 0x0200000,
  3713. },
  3714. },
  3715. [SAA7134_BOARD_AVERMEDIA_M102] = {
  3716. .name = "Avermedia M102",
  3717. .audio_clock = 0x00187de7,
  3718. .tuner_type = TUNER_PHILIPS_TDA8290,
  3719. .radio_type = UNSET,
  3720. .tuner_addr = ADDR_UNSET,
  3721. .radio_addr = ADDR_UNSET,
  3722. .gpiomask = 1<<21,
  3723. .inputs = {{
  3724. .name = name_tv,
  3725. .vmux = 1,
  3726. .amux = TV,
  3727. .tv = 1,
  3728. },{
  3729. .name = name_comp1,
  3730. .vmux = 0,
  3731. .amux = LINE2,
  3732. },{
  3733. .name = name_svideo,
  3734. .vmux = 6,
  3735. .amux = LINE2,
  3736. }},
  3737. },
  3738. [SAA7134_BOARD_ASUS_P7131_4871] = {
  3739. .name = "ASUS P7131 4871",
  3740. .audio_clock = 0x00187de7,
  3741. .tuner_type = TUNER_PHILIPS_TDA8290,
  3742. .radio_type = UNSET,
  3743. .tuner_addr = ADDR_UNSET,
  3744. .radio_addr = ADDR_UNSET,
  3745. .tda829x_conf = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  3746. .mpeg = SAA7134_MPEG_DVB,
  3747. .gpiomask = 0x0200000,
  3748. .inputs = {{
  3749. .name = name_tv,
  3750. .vmux = 1,
  3751. .amux = TV,
  3752. .tv = 1,
  3753. .gpio = 0x0200000,
  3754. }},
  3755. },
  3756. [SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA] = {
  3757. .name = "ASUSTeK P7131 Hybrid",
  3758. .audio_clock = 0x00187de7,
  3759. .tuner_type = TUNER_PHILIPS_TDA8290,
  3760. .radio_type = UNSET,
  3761. .tuner_addr = ADDR_UNSET,
  3762. .radio_addr = ADDR_UNSET,
  3763. .tda829x_conf = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  3764. .gpiomask = 1 << 21,
  3765. .mpeg = SAA7134_MPEG_DVB,
  3766. .inputs = {{
  3767. .name = name_tv,
  3768. .vmux = 1,
  3769. .amux = TV,
  3770. .tv = 1,
  3771. .gpio = 0x0000000,
  3772. },{
  3773. .name = name_comp1,
  3774. .vmux = 3,
  3775. .amux = LINE2,
  3776. .gpio = 0x0200000,
  3777. },{
  3778. .name = name_comp2,
  3779. .vmux = 0,
  3780. .amux = LINE2,
  3781. .gpio = 0x0200000,
  3782. },{
  3783. .name = name_svideo,
  3784. .vmux = 8,
  3785. .amux = LINE2,
  3786. .gpio = 0x0200000,
  3787. }},
  3788. .radio = {
  3789. .name = name_radio,
  3790. .amux = TV,
  3791. .gpio = 0x0200000,
  3792. },
  3793. },
  3794. [SAA7134_BOARD_ASUSTeK_P7131_ANALOG] = {
  3795. .name = "ASUSTeK P7131 Analog",
  3796. .audio_clock = 0x00187de7,
  3797. .tuner_type = TUNER_PHILIPS_TDA8290,
  3798. .radio_type = UNSET,
  3799. .tuner_addr = ADDR_UNSET,
  3800. .radio_addr = ADDR_UNSET,
  3801. .gpiomask = 1 << 21,
  3802. .inputs = {{
  3803. .name = name_tv,
  3804. .vmux = 1,
  3805. .amux = TV,
  3806. .tv = 1,
  3807. .gpio = 0x0000000,
  3808. }, {
  3809. .name = name_comp1,
  3810. .vmux = 3,
  3811. .amux = LINE2,
  3812. }, {
  3813. .name = name_comp2,
  3814. .vmux = 0,
  3815. .amux = LINE2,
  3816. }, {
  3817. .name = name_svideo,
  3818. .vmux = 8,
  3819. .amux = LINE2,
  3820. } },
  3821. .radio = {
  3822. .name = name_radio,
  3823. .amux = TV,
  3824. .gpio = 0x0200000,
  3825. },
  3826. },
  3827. [SAA7134_BOARD_SABRENT_TV_PCB05] = {
  3828. .name = "Sabrent PCMCIA TV-PCB05",
  3829. .audio_clock = 0x00187de7,
  3830. .tuner_type = TUNER_PHILIPS_TDA8290,
  3831. .radio_type = UNSET,
  3832. .tuner_addr = ADDR_UNSET,
  3833. .radio_addr = ADDR_UNSET,
  3834. .inputs = {{
  3835. .name = name_tv,
  3836. .vmux = 1,
  3837. .amux = TV,
  3838. .tv = 1,
  3839. },{
  3840. .name = name_comp1,
  3841. .vmux = 3,
  3842. .amux = LINE1,
  3843. },{
  3844. .name = name_comp2,
  3845. .vmux = 0,
  3846. .amux = LINE1,
  3847. },{
  3848. .name = name_svideo,
  3849. .vmux = 8,
  3850. .amux = LINE1,
  3851. }},
  3852. .mute = {
  3853. .name = name_mute,
  3854. .amux = TV,
  3855. },
  3856. },
  3857. [SAA7134_BOARD_10MOONSTVMASTER3] = {
  3858. /* Tony Wan <aloha_cn@hotmail.com> */
  3859. .name = "10MOONS TM300 TV Card",
  3860. .audio_clock = 0x00200000,
  3861. .tuner_type = TUNER_LG_PAL_NEW_TAPC,
  3862. .radio_type = UNSET,
  3863. .tuner_addr = ADDR_UNSET,
  3864. .radio_addr = ADDR_UNSET,
  3865. .gpiomask = 0x7000,
  3866. .inputs = {{
  3867. .name = name_tv,
  3868. .vmux = 1,
  3869. .amux = LINE2,
  3870. .gpio = 0x0000,
  3871. .tv = 1,
  3872. },{
  3873. .name = name_comp1,
  3874. .vmux = 3,
  3875. .amux = LINE1,
  3876. .gpio = 0x2000,
  3877. },{
  3878. .name = name_svideo,
  3879. .vmux = 8,
  3880. .amux = LINE1,
  3881. .gpio = 0x2000,
  3882. }},
  3883. .mute = {
  3884. .name = name_mute,
  3885. .amux = LINE2,
  3886. .gpio = 0x3000,
  3887. },
  3888. },
  3889. [SAA7134_BOARD_AVERMEDIA_SUPER_007] = {
  3890. .name = "Avermedia Super 007",
  3891. .audio_clock = 0x00187de7,
  3892. .tuner_type = TUNER_PHILIPS_TDA8290,
  3893. .radio_type = UNSET,
  3894. .tuner_addr = ADDR_UNSET,
  3895. .radio_addr = ADDR_UNSET,
  3896. .tda829x_conf = { .lna_cfg = TDA8290_LNA_OFF },
  3897. .mpeg = SAA7134_MPEG_DVB,
  3898. .inputs = {{
  3899. .name = name_tv, /* FIXME: analog tv untested */
  3900. .vmux = 1,
  3901. .amux = TV,
  3902. .tv = 1,
  3903. }},
  3904. },
  3905. [SAA7134_BOARD_AVERMEDIA_M135A] = {
  3906. .name = "Avermedia PCI pure analog (M135A)",
  3907. .audio_clock = 0x00187de7,
  3908. .tuner_type = TUNER_PHILIPS_TDA8290,
  3909. .radio_type = UNSET,
  3910. .tuner_addr = ADDR_UNSET,
  3911. .radio_addr = ADDR_UNSET,
  3912. .tda829x_conf = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  3913. .gpiomask = 0x020200000,
  3914. .inputs = {{
  3915. .name = name_tv,
  3916. .vmux = 1,
  3917. .amux = TV,
  3918. .tv = 1,
  3919. }, {
  3920. .name = name_comp1,
  3921. .vmux = 3,
  3922. .amux = LINE1,
  3923. }, {
  3924. .name = name_svideo,
  3925. .vmux = 8,
  3926. .amux = LINE1,
  3927. } },
  3928. .radio = {
  3929. .name = name_radio,
  3930. .amux = TV,
  3931. .gpio = 0x00200000,
  3932. },
  3933. .mute = {
  3934. .name = name_mute,
  3935. .amux = TV,
  3936. .gpio = 0x01,
  3937. },
  3938. },
  3939. [SAA7134_BOARD_AVERMEDIA_M733A] = {
  3940. .name = "Avermedia PCI M733A",
  3941. .audio_clock = 0x00187de7,
  3942. .tuner_type = TUNER_PHILIPS_TDA8290,
  3943. .radio_type = UNSET,
  3944. .tuner_addr = ADDR_UNSET,
  3945. .radio_addr = ADDR_UNSET,
  3946. .tda829x_conf = { .lna_cfg = TDA8290_LNA_OFF },
  3947. .gpiomask = 0x020200000,
  3948. .inputs = {{
  3949. .name = name_tv,
  3950. .vmux = 1,
  3951. .amux = TV,
  3952. .tv = 1,
  3953. }, {
  3954. .name = name_comp1,
  3955. .vmux = 3,
  3956. .amux = LINE1,
  3957. }, {
  3958. .name = name_svideo,
  3959. .vmux = 8,
  3960. .amux = LINE1,
  3961. } },
  3962. .radio = {
  3963. .name = name_radio,
  3964. .amux = TV,
  3965. .gpio = 0x00200000,
  3966. },
  3967. .mute = {
  3968. .name = name_mute,
  3969. .amux = TV,
  3970. .gpio = 0x01,
  3971. },
  3972. },
  3973. [SAA7134_BOARD_BEHOLD_401] = {
  3974. /* Beholder Intl. Ltd. 2008 */
  3975. /*Dmitry Belimov <d.belimov@gmail.com> */
  3976. .name = "Beholder BeholdTV 401",
  3977. .audio_clock = 0x00187de7,
  3978. .tuner_type = TUNER_PHILIPS_FQ1216ME,
  3979. .radio_type = UNSET,
  3980. .tuner_addr = ADDR_UNSET,
  3981. .radio_addr = ADDR_UNSET,
  3982. .gpiomask = 0x00008000,
  3983. .inputs = {{
  3984. .name = name_svideo,
  3985. .vmux = 8,
  3986. .amux = LINE1,
  3987. },{
  3988. .name = name_comp1,
  3989. .vmux = 1,
  3990. .amux = LINE1,
  3991. },{
  3992. .name = name_tv,
  3993. .vmux = 3,
  3994. .amux = LINE2,
  3995. .tv = 1,
  3996. }},
  3997. .mute = {
  3998. .name = name_mute,
  3999. .amux = LINE1,
  4000. },
  4001. },
  4002. [SAA7134_BOARD_BEHOLD_403] = {
  4003. /* Beholder Intl. Ltd. 2008 */
  4004. /*Dmitry Belimov <d.belimov@gmail.com> */
  4005. .name = "Beholder BeholdTV 403",
  4006. .audio_clock = 0x00187de7,
  4007. .tuner_type = TUNER_PHILIPS_FQ1216ME,
  4008. .radio_type = UNSET,
  4009. .tuner_addr = ADDR_UNSET,
  4010. .radio_addr = ADDR_UNSET,
  4011. .gpiomask = 0x00008000,
  4012. .inputs = {{
  4013. .name = name_svideo,
  4014. .vmux = 8,
  4015. .amux = LINE1,
  4016. },{
  4017. .name = name_comp1,
  4018. .vmux = 1,
  4019. .amux = LINE1,
  4020. },{
  4021. .name = name_tv,
  4022. .vmux = 3,
  4023. .amux = LINE2,
  4024. .tv = 1,
  4025. }},
  4026. },
  4027. [SAA7134_BOARD_BEHOLD_403FM] = {
  4028. /* Beholder Intl. Ltd. 2008 */
  4029. /*Dmitry Belimov <d.belimov@gmail.com> */
  4030. .name = "Beholder BeholdTV 403 FM",
  4031. .audio_clock = 0x00187de7,
  4032. .tuner_type = TUNER_PHILIPS_FQ1216ME,
  4033. .radio_type = UNSET,
  4034. .tuner_addr = ADDR_UNSET,
  4035. .radio_addr = ADDR_UNSET,
  4036. .gpiomask = 0x00008000,
  4037. .inputs = {{
  4038. .name = name_svideo,
  4039. .vmux = 8,
  4040. .amux = LINE1,
  4041. },{
  4042. .name = name_comp1,
  4043. .vmux = 1,
  4044. .amux = LINE1,
  4045. },{
  4046. .name = name_tv,
  4047. .vmux = 3,
  4048. .amux = LINE2,
  4049. .tv = 1,
  4050. }},
  4051. .radio = {
  4052. .name = name_radio,
  4053. .amux = LINE2,
  4054. },
  4055. },
  4056. [SAA7134_BOARD_BEHOLD_405] = {
  4057. /* Beholder Intl. Ltd. 2008 */
  4058. /*Dmitry Belimov <d.belimov@gmail.com> */
  4059. .name = "Beholder BeholdTV 405",
  4060. .audio_clock = 0x00187de7,
  4061. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4062. .radio_type = UNSET,
  4063. .tuner_addr = ADDR_UNSET,
  4064. .radio_addr = ADDR_UNSET,
  4065. .tda9887_conf = TDA9887_PRESENT,
  4066. .gpiomask = 0x00008000,
  4067. .inputs = {{
  4068. .name = name_svideo,
  4069. .vmux = 8,
  4070. .amux = LINE1,
  4071. },{
  4072. .name = name_comp1,
  4073. .vmux = 3,
  4074. .amux = LINE1,
  4075. },{
  4076. .name = name_tv,
  4077. .vmux = 3,
  4078. .amux = LINE2,
  4079. .tv = 1,
  4080. }},
  4081. },
  4082. [SAA7134_BOARD_BEHOLD_405FM] = {
  4083. /* Sergey <skiv@orel.ru> */
  4084. /* Beholder Intl. Ltd. 2008 */
  4085. /*Dmitry Belimov <d.belimov@gmail.com> */
  4086. .name = "Beholder BeholdTV 405 FM",
  4087. .audio_clock = 0x00187de7,
  4088. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4089. .radio_type = UNSET,
  4090. .tuner_addr = ADDR_UNSET,
  4091. .radio_addr = ADDR_UNSET,
  4092. .tda9887_conf = TDA9887_PRESENT,
  4093. .gpiomask = 0x00008000,
  4094. .inputs = {{
  4095. .name = name_svideo,
  4096. .vmux = 8,
  4097. .amux = LINE1,
  4098. },{
  4099. .name = name_comp1,
  4100. .vmux = 3,
  4101. .amux = LINE1,
  4102. },{
  4103. .name = name_tv,
  4104. .vmux = 3,
  4105. .amux = LINE2,
  4106. .tv = 1,
  4107. }},
  4108. .radio = {
  4109. .name = name_radio,
  4110. .amux = LINE2,
  4111. },
  4112. },
  4113. [SAA7134_BOARD_BEHOLD_407] = {
  4114. /* Beholder Intl. Ltd. 2008 */
  4115. /*Dmitry Belimov <d.belimov@gmail.com> */
  4116. .name = "Beholder BeholdTV 407",
  4117. .audio_clock = 0x00187de7,
  4118. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4119. .radio_type = UNSET,
  4120. .tuner_addr = ADDR_UNSET,
  4121. .radio_addr = ADDR_UNSET,
  4122. .tda9887_conf = TDA9887_PRESENT,
  4123. .gpiomask = 0x00008000,
  4124. .inputs = {{
  4125. .name = name_svideo,
  4126. .vmux = 8,
  4127. .amux = LINE1,
  4128. .gpio = 0xc0c000,
  4129. },{
  4130. .name = name_comp1,
  4131. .vmux = 1,
  4132. .amux = LINE1,
  4133. .gpio = 0xc0c000,
  4134. },{
  4135. .name = name_tv,
  4136. .vmux = 3,
  4137. .amux = TV,
  4138. .tv = 1,
  4139. .gpio = 0xc0c000,
  4140. }},
  4141. },
  4142. [SAA7134_BOARD_BEHOLD_407FM] = {
  4143. /* Beholder Intl. Ltd. 2008 */
  4144. /*Dmitry Belimov <d.belimov@gmail.com> */
  4145. .name = "Beholder BeholdTV 407 FM",
  4146. .audio_clock = 0x00187de7,
  4147. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4148. .radio_type = UNSET,
  4149. .tuner_addr = ADDR_UNSET,
  4150. .radio_addr = ADDR_UNSET,
  4151. .tda9887_conf = TDA9887_PRESENT,
  4152. .gpiomask = 0x00008000,
  4153. .inputs = {{
  4154. .name = name_svideo,
  4155. .vmux = 8,
  4156. .amux = LINE1,
  4157. .gpio = 0xc0c000,
  4158. },{
  4159. .name = name_comp1,
  4160. .vmux = 1,
  4161. .amux = LINE1,
  4162. .gpio = 0xc0c000,
  4163. },{
  4164. .name = name_tv,
  4165. .vmux = 3,
  4166. .amux = TV,
  4167. .tv = 1,
  4168. .gpio = 0xc0c000,
  4169. }},
  4170. .radio = {
  4171. .name = name_radio,
  4172. .amux = LINE2,
  4173. .gpio = 0xc0c000,
  4174. },
  4175. },
  4176. [SAA7134_BOARD_BEHOLD_409] = {
  4177. /* Beholder Intl. Ltd. 2008 */
  4178. /*Dmitry Belimov <d.belimov@gmail.com> */
  4179. .name = "Beholder BeholdTV 409",
  4180. .audio_clock = 0x00187de7,
  4181. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4182. .radio_type = UNSET,
  4183. .tuner_addr = ADDR_UNSET,
  4184. .radio_addr = ADDR_UNSET,
  4185. .tda9887_conf = TDA9887_PRESENT,
  4186. .gpiomask = 0x00008000,
  4187. .inputs = {{
  4188. .name = name_tv,
  4189. .vmux = 3,
  4190. .amux = TV,
  4191. .tv = 1,
  4192. },{
  4193. .name = name_comp1,
  4194. .vmux = 1,
  4195. .amux = LINE1,
  4196. },{
  4197. .name = name_svideo,
  4198. .vmux = 8,
  4199. .amux = LINE1,
  4200. }},
  4201. },
  4202. [SAA7134_BOARD_BEHOLD_505FM] = {
  4203. /* Beholder Intl. Ltd. 2008 */
  4204. /*Dmitry Belimov <d.belimov@gmail.com> */
  4205. .name = "Beholder BeholdTV 505 FM",
  4206. .audio_clock = 0x00200000,
  4207. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4208. .radio_type = UNSET,
  4209. .tuner_addr = ADDR_UNSET,
  4210. .radio_addr = ADDR_UNSET,
  4211. .tda9887_conf = TDA9887_PRESENT,
  4212. .gpiomask = 0x00008000,
  4213. .inputs = {{
  4214. .name = name_tv,
  4215. .vmux = 3,
  4216. .amux = LINE2,
  4217. .tv = 1,
  4218. }, {
  4219. .name = name_comp1,
  4220. .vmux = 1,
  4221. .amux = LINE1,
  4222. }, {
  4223. .name = name_svideo,
  4224. .vmux = 8,
  4225. .amux = LINE1,
  4226. } },
  4227. .mute = {
  4228. .name = name_mute,
  4229. .amux = LINE1,
  4230. },
  4231. .radio = {
  4232. .name = name_radio,
  4233. .amux = LINE2,
  4234. },
  4235. },
  4236. [SAA7134_BOARD_BEHOLD_505RDS_MK5] = {
  4237. /* Beholder Intl. Ltd. 2008 */
  4238. /*Dmitry Belimov <d.belimov@gmail.com> */
  4239. .name = "Beholder BeholdTV 505 RDS",
  4240. .audio_clock = 0x00200000,
  4241. .tuner_type = TUNER_PHILIPS_FM1216MK5,
  4242. .radio_type = UNSET,
  4243. .tuner_addr = ADDR_UNSET,
  4244. .radio_addr = ADDR_UNSET,
  4245. .rds_addr = 0x10,
  4246. .tda9887_conf = TDA9887_PRESENT,
  4247. .gpiomask = 0x00008000,
  4248. .inputs = {{
  4249. .name = name_tv,
  4250. .vmux = 3,
  4251. .amux = LINE2,
  4252. .tv = 1,
  4253. },{
  4254. .name = name_comp1,
  4255. .vmux = 1,
  4256. .amux = LINE1,
  4257. },{
  4258. .name = name_svideo,
  4259. .vmux = 8,
  4260. .amux = LINE1,
  4261. }},
  4262. .mute = {
  4263. .name = name_mute,
  4264. .amux = LINE1,
  4265. },
  4266. .radio = {
  4267. .name = name_radio,
  4268. .amux = LINE2,
  4269. },
  4270. },
  4271. [SAA7134_BOARD_BEHOLD_507_9FM] = {
  4272. /* Beholder Intl. Ltd. 2008 */
  4273. /*Dmitry Belimov <d.belimov@gmail.com> */
  4274. .name = "Beholder BeholdTV 507 FM / BeholdTV 509 FM",
  4275. .audio_clock = 0x00187de7,
  4276. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4277. .radio_type = UNSET,
  4278. .tuner_addr = ADDR_UNSET,
  4279. .radio_addr = ADDR_UNSET,
  4280. .tda9887_conf = TDA9887_PRESENT,
  4281. .gpiomask = 0x00008000,
  4282. .inputs = {{
  4283. .name = name_tv,
  4284. .vmux = 3,
  4285. .amux = TV,
  4286. .tv = 1,
  4287. },{
  4288. .name = name_comp1,
  4289. .vmux = 1,
  4290. .amux = LINE1,
  4291. },{
  4292. .name = name_svideo,
  4293. .vmux = 8,
  4294. .amux = LINE1,
  4295. }},
  4296. .radio = {
  4297. .name = name_radio,
  4298. .amux = LINE2,
  4299. },
  4300. },
  4301. [SAA7134_BOARD_BEHOLD_507RDS_MK5] = {
  4302. /* Beholder Intl. Ltd. 2008 */
  4303. /*Dmitry Belimov <d.belimov@gmail.com> */
  4304. .name = "Beholder BeholdTV 507 RDS",
  4305. .audio_clock = 0x00187de7,
  4306. .tuner_type = TUNER_PHILIPS_FM1216MK5,
  4307. .radio_type = UNSET,
  4308. .tuner_addr = ADDR_UNSET,
  4309. .radio_addr = ADDR_UNSET,
  4310. .rds_addr = 0x10,
  4311. .tda9887_conf = TDA9887_PRESENT,
  4312. .gpiomask = 0x00008000,
  4313. .inputs = {{
  4314. .name = name_tv,
  4315. .vmux = 3,
  4316. .amux = TV,
  4317. .tv = 1,
  4318. }, {
  4319. .name = name_comp1,
  4320. .vmux = 1,
  4321. .amux = LINE1,
  4322. }, {
  4323. .name = name_svideo,
  4324. .vmux = 8,
  4325. .amux = LINE1,
  4326. } },
  4327. .radio = {
  4328. .name = name_radio,
  4329. .amux = LINE2,
  4330. },
  4331. },
  4332. [SAA7134_BOARD_BEHOLD_507RDS_MK3] = {
  4333. /* Beholder Intl. Ltd. 2008 */
  4334. /*Dmitry Belimov <d.belimov@gmail.com> */
  4335. .name = "Beholder BeholdTV 507 RDS",
  4336. .audio_clock = 0x00187de7,
  4337. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4338. .radio_type = UNSET,
  4339. .tuner_addr = ADDR_UNSET,
  4340. .radio_addr = ADDR_UNSET,
  4341. .rds_addr = 0x10,
  4342. .tda9887_conf = TDA9887_PRESENT,
  4343. .gpiomask = 0x00008000,
  4344. .inputs = {{
  4345. .name = name_tv,
  4346. .vmux = 3,
  4347. .amux = TV,
  4348. .tv = 1,
  4349. }, {
  4350. .name = name_comp1,
  4351. .vmux = 1,
  4352. .amux = LINE1,
  4353. }, {
  4354. .name = name_svideo,
  4355. .vmux = 8,
  4356. .amux = LINE1,
  4357. } },
  4358. .radio = {
  4359. .name = name_radio,
  4360. .amux = LINE2,
  4361. },
  4362. },
  4363. [SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM] = {
  4364. /* Beholder Intl. Ltd. 2008 */
  4365. /* Dmitry Belimov <d.belimov@gmail.com> */
  4366. .name = "Beholder BeholdTV Columbus TV/FM",
  4367. .audio_clock = 0x00187de7,
  4368. .tuner_type = TUNER_ALPS_TSBE5_PAL,
  4369. .radio_type = TUNER_TEA5767,
  4370. .tuner_addr = 0xc2 >> 1,
  4371. .radio_addr = 0xc0 >> 1,
  4372. .tda9887_conf = TDA9887_PRESENT,
  4373. .gpiomask = 0x000A8004,
  4374. .inputs = {{
  4375. .name = name_tv,
  4376. .vmux = 3,
  4377. .amux = TV,
  4378. .tv = 1,
  4379. .gpio = 0x000A8004,
  4380. }, {
  4381. .name = name_comp1,
  4382. .vmux = 1,
  4383. .amux = LINE1,
  4384. .gpio = 0x000A8000,
  4385. }, {
  4386. .name = name_svideo,
  4387. .vmux = 8,
  4388. .amux = LINE1,
  4389. .gpio = 0x000A8000,
  4390. } },
  4391. .radio = {
  4392. .name = name_radio,
  4393. .amux = LINE2,
  4394. .gpio = 0x000A8000,
  4395. },
  4396. },
  4397. [SAA7134_BOARD_BEHOLD_607FM_MK3] = {
  4398. /* Andrey Melnikoff <temnota@kmv.ru> */
  4399. .name = "Beholder BeholdTV 607 FM",
  4400. .audio_clock = 0x00187de7,
  4401. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4402. .radio_type = UNSET,
  4403. .tuner_addr = ADDR_UNSET,
  4404. .radio_addr = ADDR_UNSET,
  4405. .tda9887_conf = TDA9887_PRESENT,
  4406. .inputs = {{
  4407. .name = name_tv,
  4408. .vmux = 3,
  4409. .amux = TV,
  4410. .tv = 1,
  4411. }, {
  4412. .name = name_comp1,
  4413. .vmux = 1,
  4414. .amux = LINE1,
  4415. }, {
  4416. .name = name_svideo,
  4417. .vmux = 8,
  4418. .amux = LINE1,
  4419. } },
  4420. .radio = {
  4421. .name = name_radio,
  4422. .amux = LINE2,
  4423. },
  4424. },
  4425. [SAA7134_BOARD_BEHOLD_609FM_MK3] = {
  4426. /* Andrey Melnikoff <temnota@kmv.ru> */
  4427. .name = "Beholder BeholdTV 609 FM",
  4428. .audio_clock = 0x00187de7,
  4429. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4430. .radio_type = UNSET,
  4431. .tuner_addr = ADDR_UNSET,
  4432. .radio_addr = ADDR_UNSET,
  4433. .tda9887_conf = TDA9887_PRESENT,
  4434. .inputs = {{
  4435. .name = name_tv,
  4436. .vmux = 3,
  4437. .amux = TV,
  4438. .tv = 1,
  4439. }, {
  4440. .name = name_comp1,
  4441. .vmux = 1,
  4442. .amux = LINE1,
  4443. }, {
  4444. .name = name_svideo,
  4445. .vmux = 8,
  4446. .amux = LINE1,
  4447. } },
  4448. .radio = {
  4449. .name = name_radio,
  4450. .amux = LINE2,
  4451. },
  4452. },
  4453. [SAA7134_BOARD_BEHOLD_607FM_MK5] = {
  4454. /* Andrey Melnikoff <temnota@kmv.ru> */
  4455. .name = "Beholder BeholdTV 607 FM",
  4456. .audio_clock = 0x00187de7,
  4457. .tuner_type = TUNER_PHILIPS_FM1216MK5,
  4458. .radio_type = UNSET,
  4459. .tuner_addr = ADDR_UNSET,
  4460. .radio_addr = ADDR_UNSET,
  4461. .tda9887_conf = TDA9887_PRESENT,
  4462. .inputs = {{
  4463. .name = name_tv,
  4464. .vmux = 3,
  4465. .amux = TV,
  4466. .tv = 1,
  4467. }, {
  4468. .name = name_comp1,
  4469. .vmux = 1,
  4470. .amux = LINE1,
  4471. }, {
  4472. .name = name_svideo,
  4473. .vmux = 8,
  4474. .amux = LINE1,
  4475. } },
  4476. .radio = {
  4477. .name = name_radio,
  4478. .amux = LINE2,
  4479. },
  4480. },
  4481. [SAA7134_BOARD_BEHOLD_609FM_MK5] = {
  4482. /* Andrey Melnikoff <temnota@kmv.ru> */
  4483. .name = "Beholder BeholdTV 609 FM",
  4484. .audio_clock = 0x00187de7,
  4485. .tuner_type = TUNER_PHILIPS_FM1216MK5,
  4486. .radio_type = UNSET,
  4487. .tuner_addr = ADDR_UNSET,
  4488. .radio_addr = ADDR_UNSET,
  4489. .tda9887_conf = TDA9887_PRESENT,
  4490. .inputs = {{
  4491. .name = name_tv,
  4492. .vmux = 3,
  4493. .amux = TV,
  4494. .tv = 1,
  4495. }, {
  4496. .name = name_comp1,
  4497. .vmux = 1,
  4498. .amux = LINE1,
  4499. }, {
  4500. .name = name_svideo,
  4501. .vmux = 8,
  4502. .amux = LINE1,
  4503. } },
  4504. .radio = {
  4505. .name = name_radio,
  4506. .amux = LINE2,
  4507. },
  4508. },
  4509. [SAA7134_BOARD_BEHOLD_607RDS_MK3] = {
  4510. /* Andrey Melnikoff <temnota@kmv.ru> */
  4511. .name = "Beholder BeholdTV 607 RDS",
  4512. .audio_clock = 0x00187de7,
  4513. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4514. .radio_type = UNSET,
  4515. .tuner_addr = ADDR_UNSET,
  4516. .radio_addr = ADDR_UNSET,
  4517. .rds_addr = 0x10,
  4518. .tda9887_conf = TDA9887_PRESENT,
  4519. .inputs = {{
  4520. .name = name_tv,
  4521. .vmux = 3,
  4522. .amux = TV,
  4523. .tv = 1,
  4524. }, {
  4525. .name = name_comp1,
  4526. .vmux = 1,
  4527. .amux = LINE1,
  4528. }, {
  4529. .name = name_svideo,
  4530. .vmux = 8,
  4531. .amux = LINE1,
  4532. } },
  4533. .radio = {
  4534. .name = name_radio,
  4535. .amux = LINE2,
  4536. },
  4537. },
  4538. [SAA7134_BOARD_BEHOLD_609RDS_MK3] = {
  4539. /* Andrey Melnikoff <temnota@kmv.ru> */
  4540. .name = "Beholder BeholdTV 609 RDS",
  4541. .audio_clock = 0x00187de7,
  4542. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4543. .radio_type = UNSET,
  4544. .tuner_addr = ADDR_UNSET,
  4545. .radio_addr = ADDR_UNSET,
  4546. .rds_addr = 0x10,
  4547. .tda9887_conf = TDA9887_PRESENT,
  4548. .inputs = {{
  4549. .name = name_tv,
  4550. .vmux = 3,
  4551. .amux = TV,
  4552. .tv = 1,
  4553. }, {
  4554. .name = name_comp1,
  4555. .vmux = 1,
  4556. .amux = LINE1,
  4557. }, {
  4558. .name = name_svideo,
  4559. .vmux = 8,
  4560. .amux = LINE1,
  4561. } },
  4562. .radio = {
  4563. .name = name_radio,
  4564. .amux = LINE2,
  4565. },
  4566. },
  4567. [SAA7134_BOARD_BEHOLD_607RDS_MK5] = {
  4568. /* Andrey Melnikoff <temnota@kmv.ru> */
  4569. .name = "Beholder BeholdTV 607 RDS",
  4570. .audio_clock = 0x00187de7,
  4571. .tuner_type = TUNER_PHILIPS_FM1216MK5,
  4572. .radio_type = UNSET,
  4573. .tuner_addr = ADDR_UNSET,
  4574. .radio_addr = ADDR_UNSET,
  4575. .rds_addr = 0x10,
  4576. .tda9887_conf = TDA9887_PRESENT,
  4577. .inputs = {{
  4578. .name = name_tv,
  4579. .vmux = 3,
  4580. .amux = TV,
  4581. .tv = 1,
  4582. }, {
  4583. .name = name_comp1,
  4584. .vmux = 1,
  4585. .amux = LINE1,
  4586. }, {
  4587. .name = name_svideo,
  4588. .vmux = 8,
  4589. .amux = LINE1,
  4590. } },
  4591. .radio = {
  4592. .name = name_radio,
  4593. .amux = LINE2,
  4594. },
  4595. },
  4596. [SAA7134_BOARD_BEHOLD_609RDS_MK5] = {
  4597. /* Andrey Melnikoff <temnota@kmv.ru> */
  4598. .name = "Beholder BeholdTV 609 RDS",
  4599. .audio_clock = 0x00187de7,
  4600. .tuner_type = TUNER_PHILIPS_FM1216MK5,
  4601. .radio_type = UNSET,
  4602. .tuner_addr = ADDR_UNSET,
  4603. .radio_addr = ADDR_UNSET,
  4604. .rds_addr = 0x10,
  4605. .tda9887_conf = TDA9887_PRESENT,
  4606. .inputs = {{
  4607. .name = name_tv,
  4608. .vmux = 3,
  4609. .amux = TV,
  4610. .tv = 1,
  4611. },{
  4612. .name = name_comp1,
  4613. .vmux = 1,
  4614. .amux = LINE1,
  4615. },{
  4616. .name = name_svideo,
  4617. .vmux = 8,
  4618. .amux = LINE1,
  4619. }},
  4620. .radio = {
  4621. .name = name_radio,
  4622. .amux = LINE2,
  4623. },
  4624. },
  4625. [SAA7134_BOARD_BEHOLD_M6] = {
  4626. /* Igor Kuznetsov <igk@igk.ru> */
  4627. /* Andrey Melnikoff <temnota@kmv.ru> */
  4628. /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  4629. /* Alexey Osipov <lion-simba@pridelands.ru> */
  4630. .name = "Beholder BeholdTV M6",
  4631. .audio_clock = 0x00187de7,
  4632. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4633. .radio_type = UNSET,
  4634. .tuner_addr = ADDR_UNSET,
  4635. .radio_addr = ADDR_UNSET,
  4636. .empress_addr = 0x20,
  4637. .tda9887_conf = TDA9887_PRESENT,
  4638. .inputs = { {
  4639. .name = name_tv,
  4640. .vmux = 3,
  4641. .amux = TV,
  4642. .tv = 1,
  4643. }, {
  4644. .name = name_comp1,
  4645. .vmux = 1,
  4646. .amux = LINE1,
  4647. }, {
  4648. .name = name_svideo,
  4649. .vmux = 8,
  4650. .amux = LINE1,
  4651. } },
  4652. .radio = {
  4653. .name = name_radio,
  4654. .amux = LINE2,
  4655. },
  4656. .mpeg = SAA7134_MPEG_EMPRESS,
  4657. .video_out = CCIR656,
  4658. .vid_port_opts = (SET_T_CODE_POLARITY_NON_INVERTED |
  4659. SET_CLOCK_NOT_DELAYED |
  4660. SET_CLOCK_INVERTED |
  4661. SET_VSYNC_OFF),
  4662. },
  4663. [SAA7134_BOARD_BEHOLD_M63] = {
  4664. /* Igor Kuznetsov <igk@igk.ru> */
  4665. /* Andrey Melnikoff <temnota@kmv.ru> */
  4666. /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  4667. .name = "Beholder BeholdTV M63",
  4668. .audio_clock = 0x00187de7,
  4669. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  4670. .radio_type = UNSET,
  4671. .tuner_addr = ADDR_UNSET,
  4672. .radio_addr = ADDR_UNSET,
  4673. .empress_addr = 0x20,
  4674. .tda9887_conf = TDA9887_PRESENT,
  4675. .inputs = { {
  4676. .name = name_tv,
  4677. .vmux = 3,
  4678. .amux = TV,
  4679. .tv = 1,
  4680. }, {
  4681. .name = name_comp1,
  4682. .vmux = 1,
  4683. .amux = LINE1,
  4684. }, {
  4685. .name = name_svideo,
  4686. .vmux = 8,
  4687. .amux = LINE1,
  4688. } },
  4689. .radio = {
  4690. .name = name_radio,
  4691. .amux = LINE2,
  4692. },
  4693. .mpeg = SAA7134_MPEG_EMPRESS,
  4694. .video_out = CCIR656,
  4695. .vid_port_opts = (SET_T_CODE_POLARITY_NON_INVERTED |
  4696. SET_CLOCK_NOT_DELAYED |
  4697. SET_CLOCK_INVERTED |
  4698. SET_VSYNC_OFF),
  4699. },
  4700. [SAA7134_BOARD_BEHOLD_M6_EXTRA] = {
  4701. /* Igor Kuznetsov <igk@igk.ru> */
  4702. /* Andrey Melnikoff <temnota@kmv.ru> */
  4703. /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  4704. /* Alexey Osipov <lion-simba@pridelands.ru> */
  4705. .name = "Beholder BeholdTV M6 Extra",
  4706. .audio_clock = 0x00187de7,
  4707. .tuner_type = TUNER_PHILIPS_FM1216MK5,
  4708. .radio_type = UNSET,
  4709. .tuner_addr = ADDR_UNSET,
  4710. .radio_addr = ADDR_UNSET,
  4711. .rds_addr = 0x10,
  4712. .empress_addr = 0x20,
  4713. .tda9887_conf = TDA9887_PRESENT,
  4714. .inputs = { {
  4715. .name = name_tv,
  4716. .vmux = 3,
  4717. .amux = TV,
  4718. .tv = 1,
  4719. }, {
  4720. .name = name_comp1,
  4721. .vmux = 1,
  4722. .amux = LINE1,
  4723. }, {
  4724. .name = name_svideo,
  4725. .vmux = 8,
  4726. .amux = LINE1,
  4727. } },
  4728. .radio = {
  4729. .name = name_radio,
  4730. .amux = LINE2,
  4731. },
  4732. .mpeg = SAA7134_MPEG_EMPRESS,
  4733. .video_out = CCIR656,
  4734. .vid_port_opts = (SET_T_CODE_POLARITY_NON_INVERTED |
  4735. SET_CLOCK_NOT_DELAYED |
  4736. SET_CLOCK_INVERTED |
  4737. SET_VSYNC_OFF),
  4738. },
  4739. [SAA7134_BOARD_TWINHAN_DTV_DVB_3056] = {
  4740. .name = "Twinhan Hybrid DTV-DVB 3056 PCI",
  4741. .audio_clock = 0x00187de7,
  4742. .tuner_type = TUNER_PHILIPS_TDA8290,
  4743. .radio_type = UNSET,
  4744. .tuner_addr = ADDR_UNSET,
  4745. .radio_addr = ADDR_UNSET,
  4746. .tda829x_conf = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  4747. .mpeg = SAA7134_MPEG_DVB,
  4748. .gpiomask = 0x0200000,
  4749. .inputs = {{
  4750. .name = name_tv,
  4751. .vmux = 1,
  4752. .amux = TV,
  4753. .tv = 1,
  4754. }, {
  4755. .name = name_comp1,
  4756. .vmux = 3,
  4757. .amux = LINE1,
  4758. }, {
  4759. .name = name_svideo,
  4760. .vmux = 8, /* untested */
  4761. .amux = LINE1,
  4762. } },
  4763. .radio = {
  4764. .name = name_radio,
  4765. .amux = TV,
  4766. .gpio = 0x0200000,
  4767. },
  4768. },
  4769. [SAA7134_BOARD_GENIUS_TVGO_A11MCE] = {
  4770. /* Adrian Pardini <pardo.bsso@gmail.com> */
  4771. .name = "Genius TVGO AM11MCE",
  4772. .audio_clock = 0x00200000,
  4773. .tuner_type = TUNER_TNF_5335MF,
  4774. .radio_type = UNSET,
  4775. .tuner_addr = ADDR_UNSET,
  4776. .radio_addr = ADDR_UNSET,
  4777. .gpiomask = 0xf000,
  4778. .inputs = {{
  4779. .name = name_tv_mono,
  4780. .vmux = 1,
  4781. .amux = LINE2,
  4782. .gpio = 0x0000,
  4783. .tv = 1,
  4784. }, {
  4785. .name = name_comp1,
  4786. .vmux = 3,
  4787. .amux = LINE1,
  4788. .gpio = 0x2000,
  4789. .tv = 1
  4790. }, {
  4791. .name = name_svideo,
  4792. .vmux = 8,
  4793. .amux = LINE1,
  4794. .gpio = 0x2000,
  4795. } },
  4796. .radio = {
  4797. .name = name_radio,
  4798. .amux = LINE2,
  4799. .gpio = 0x1000,
  4800. },
  4801. .mute = {
  4802. .name = name_mute,
  4803. .amux = LINE2,
  4804. .gpio = 0x6000,
  4805. },
  4806. },
  4807. [SAA7134_BOARD_PHILIPS_SNAKE] = {
  4808. .name = "NXP Snake DVB-S reference design",
  4809. .audio_clock = 0x00200000,
  4810. .tuner_type = TUNER_ABSENT,
  4811. .radio_type = UNSET,
  4812. .tuner_addr = ADDR_UNSET,
  4813. .radio_addr = ADDR_UNSET,
  4814. .mpeg = SAA7134_MPEG_DVB,
  4815. .inputs = {{
  4816. .name = name_comp1,
  4817. .vmux = 3,
  4818. .amux = LINE1,
  4819. }, {
  4820. .name = name_svideo,
  4821. .vmux = 8,
  4822. .amux = LINE1,
  4823. } },
  4824. },
  4825. [SAA7134_BOARD_CREATIX_CTX953] = {
  4826. .name = "Medion/Creatix CTX953 Hybrid",
  4827. .audio_clock = 0x00187de7,
  4828. .tuner_type = TUNER_PHILIPS_TDA8290,
  4829. .radio_type = UNSET,
  4830. .tuner_addr = ADDR_UNSET,
  4831. .radio_addr = ADDR_UNSET,
  4832. .tda829x_conf = { .lna_cfg = TDA8290_LNA_OFF },
  4833. .mpeg = SAA7134_MPEG_DVB,
  4834. .inputs = {{
  4835. .name = name_tv,
  4836. .vmux = 1,
  4837. .amux = TV,
  4838. .tv = 1,
  4839. }, {
  4840. .name = name_comp1,
  4841. .vmux = 0,
  4842. .amux = LINE1,
  4843. }, {
  4844. .name = name_svideo,
  4845. .vmux = 8,
  4846. .amux = LINE1,
  4847. } },
  4848. },
  4849. [SAA7134_BOARD_MSI_TVANYWHERE_AD11] = {
  4850. .name = "MSI TV@nywhere A/D v1.1",
  4851. .audio_clock = 0x00187de7,
  4852. .tuner_type = TUNER_PHILIPS_TDA8290,
  4853. .radio_type = UNSET,
  4854. .tuner_addr = ADDR_UNSET,
  4855. .radio_addr = ADDR_UNSET,
  4856. .tda829x_conf = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  4857. .mpeg = SAA7134_MPEG_DVB,
  4858. .gpiomask = 0x0200000,
  4859. .inputs = { {
  4860. .name = name_tv,
  4861. .vmux = 1,
  4862. .amux = TV,
  4863. .tv = 1,
  4864. }, {
  4865. .name = name_comp1,
  4866. .vmux = 3,
  4867. .amux = LINE1,
  4868. }, {
  4869. .name = name_svideo,
  4870. .vmux = 8,
  4871. .amux = LINE1,
  4872. } },
  4873. .radio = {
  4874. .name = name_radio,
  4875. .amux = TV,
  4876. .gpio = 0x0200000,
  4877. },
  4878. },
  4879. [SAA7134_BOARD_AVERMEDIA_CARDBUS_506] = {
  4880. .name = "AVerMedia Cardbus TV/Radio (E506R)",
  4881. .audio_clock = 0x187de7,
  4882. .tuner_type = TUNER_XC2028,
  4883. .radio_type = UNSET,
  4884. .tuner_addr = ADDR_UNSET,
  4885. .radio_addr = ADDR_UNSET,
  4886. .mpeg = SAA7134_MPEG_DVB,
  4887. .inputs = {{
  4888. .name = name_tv,
  4889. .vmux = 1,
  4890. .amux = TV,
  4891. .tv = 1,
  4892. }, {
  4893. .name = name_comp1,
  4894. .vmux = 3,
  4895. .amux = LINE1,
  4896. }, {
  4897. .name = name_svideo,
  4898. .vmux = 8,
  4899. .amux = LINE2,
  4900. } },
  4901. .radio = {
  4902. .name = name_radio,
  4903. .amux = TV,
  4904. },
  4905. },
  4906. [SAA7134_BOARD_AVERMEDIA_A16D] = {
  4907. .name = "AVerMedia Hybrid TV/Radio (A16D)",
  4908. .audio_clock = 0x187de7,
  4909. .tuner_type = TUNER_XC2028,
  4910. .radio_type = UNSET,
  4911. .tuner_addr = ADDR_UNSET,
  4912. .radio_addr = ADDR_UNSET,
  4913. .mpeg = SAA7134_MPEG_DVB,
  4914. .inputs = {{
  4915. .name = name_tv,
  4916. .vmux = 1,
  4917. .amux = TV,
  4918. .tv = 1,
  4919. }, {
  4920. .name = name_svideo,
  4921. .vmux = 8,
  4922. .amux = LINE1,
  4923. }, {
  4924. .name = name_comp,
  4925. .vmux = 0,
  4926. .amux = LINE1,
  4927. } },
  4928. .radio = {
  4929. .name = name_radio,
  4930. .amux = TV,
  4931. },
  4932. },
  4933. [SAA7134_BOARD_AVERMEDIA_M115] = {
  4934. .name = "Avermedia M115",
  4935. .audio_clock = 0x187de7,
  4936. .tuner_type = TUNER_XC2028,
  4937. .radio_type = UNSET,
  4938. .tuner_addr = ADDR_UNSET,
  4939. .radio_addr = ADDR_UNSET,
  4940. .inputs = {{
  4941. .name = name_tv,
  4942. .vmux = 1,
  4943. .amux = TV,
  4944. .tv = 1,
  4945. }, {
  4946. .name = name_comp1,
  4947. .vmux = 3,
  4948. .amux = LINE1,
  4949. }, {
  4950. .name = name_svideo,
  4951. .vmux = 8,
  4952. .amux = LINE2,
  4953. } },
  4954. },
  4955. [SAA7134_BOARD_VIDEOMATE_T750] = {
  4956. /* John Newbigin <jn@it.swin.edu.au> */
  4957. .name = "Compro VideoMate T750",
  4958. .audio_clock = 0x00187de7,
  4959. .tuner_type = TUNER_XC2028,
  4960. .radio_type = UNSET,
  4961. .tuner_addr = 0x61,
  4962. .radio_addr = ADDR_UNSET,
  4963. .mpeg = SAA7134_MPEG_DVB,
  4964. .inputs = {{
  4965. .name = name_tv,
  4966. .vmux = 3,
  4967. .amux = TV,
  4968. .tv = 1,
  4969. }, {
  4970. .name = name_comp1,
  4971. .vmux = 1,
  4972. .amux = LINE2,
  4973. }, {
  4974. .name = name_svideo,
  4975. .vmux = 8,
  4976. .amux = LINE2,
  4977. } },
  4978. .radio = {
  4979. .name = name_radio,
  4980. .amux = TV,
  4981. }
  4982. },
  4983. [SAA7134_BOARD_AVERMEDIA_A700_PRO] = {
  4984. /* Matthias Schwarzott <zzam@gentoo.org> */
  4985. .name = "Avermedia DVB-S Pro A700",
  4986. .audio_clock = 0x00187de7,
  4987. .tuner_type = TUNER_ABSENT,
  4988. .radio_type = UNSET,
  4989. .tuner_addr = ADDR_UNSET,
  4990. .radio_addr = ADDR_UNSET,
  4991. .mpeg = SAA7134_MPEG_DVB,
  4992. .inputs = { {
  4993. .name = name_comp,
  4994. .vmux = 1,
  4995. .amux = LINE1,
  4996. }, {
  4997. .name = name_svideo,
  4998. .vmux = 6,
  4999. .amux = LINE1,
  5000. } },
  5001. },
  5002. [SAA7134_BOARD_AVERMEDIA_A700_HYBRID] = {
  5003. /* Matthias Schwarzott <zzam@gentoo.org> */
  5004. .name = "Avermedia DVB-S Hybrid+FM A700",
  5005. .audio_clock = 0x00187de7,
  5006. .tuner_type = TUNER_XC2028,
  5007. .radio_type = UNSET,
  5008. .tuner_addr = ADDR_UNSET,
  5009. .radio_addr = ADDR_UNSET,
  5010. .mpeg = SAA7134_MPEG_DVB,
  5011. .inputs = { {
  5012. .name = name_tv,
  5013. .vmux = 4,
  5014. .amux = TV,
  5015. .tv = 1,
  5016. }, {
  5017. .name = name_comp,
  5018. .vmux = 1,
  5019. .amux = LINE1,
  5020. }, {
  5021. .name = name_svideo,
  5022. .vmux = 6,
  5023. .amux = LINE1,
  5024. } },
  5025. .radio = {
  5026. .name = name_radio,
  5027. .amux = TV,
  5028. },
  5029. },
  5030. [SAA7134_BOARD_BEHOLD_H6] = {
  5031. /* Igor Kuznetsov <igk@igk.ru> */
  5032. .name = "Beholder BeholdTV H6",
  5033. .audio_clock = 0x00187de7,
  5034. .tuner_type = TUNER_PHILIPS_FMD1216MEX_MK3,
  5035. .radio_type = UNSET,
  5036. .tuner_addr = ADDR_UNSET,
  5037. .radio_addr = ADDR_UNSET,
  5038. .tda9887_conf = TDA9887_PRESENT,
  5039. .mpeg = SAA7134_MPEG_DVB,
  5040. .inputs = {{
  5041. .name = name_tv,
  5042. .vmux = 3,
  5043. .amux = TV,
  5044. .tv = 1,
  5045. }, {
  5046. .name = name_comp1,
  5047. .vmux = 1,
  5048. .amux = LINE1,
  5049. }, {
  5050. .name = name_svideo,
  5051. .vmux = 8,
  5052. .amux = LINE1,
  5053. } },
  5054. .radio = {
  5055. .name = name_radio,
  5056. .amux = LINE2,
  5057. },
  5058. },
  5059. [SAA7134_BOARD_ASUSTeK_TIGER_3IN1] = {
  5060. .name = "Asus Tiger 3in1",
  5061. .audio_clock = 0x00187de7,
  5062. .tuner_type = TUNER_PHILIPS_TDA8290,
  5063. .radio_type = UNSET,
  5064. .tuner_addr = ADDR_UNSET,
  5065. .radio_addr = ADDR_UNSET,
  5066. .tda829x_conf = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  5067. .gpiomask = 1 << 21,
  5068. .mpeg = SAA7134_MPEG_DVB,
  5069. .inputs = {{
  5070. .name = name_tv,
  5071. .vmux = 1,
  5072. .amux = TV,
  5073. .tv = 1,
  5074. }, {
  5075. .name = name_comp,
  5076. .vmux = 0,
  5077. .amux = LINE2,
  5078. }, {
  5079. .name = name_svideo,
  5080. .vmux = 8,
  5081. .amux = LINE2,
  5082. } },
  5083. .radio = {
  5084. .name = name_radio,
  5085. .amux = TV,
  5086. .gpio = 0x0200000,
  5087. },
  5088. },
  5089. [SAA7134_BOARD_ASUSTeK_PS3_100] = {
  5090. .name = "Asus My Cinema PS3-100",
  5091. .audio_clock = 0x00187de7,
  5092. .tuner_type = TUNER_PHILIPS_TDA8290,
  5093. .radio_type = UNSET,
  5094. .tuner_addr = ADDR_UNSET,
  5095. .radio_addr = ADDR_UNSET,
  5096. .tda829x_conf = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  5097. .gpiomask = 1 << 21,
  5098. .mpeg = SAA7134_MPEG_DVB,
  5099. .inputs = {{
  5100. .name = name_tv,
  5101. .vmux = 1,
  5102. .amux = TV,
  5103. .tv = 1,
  5104. }, {
  5105. .name = name_comp,
  5106. .vmux = 0,
  5107. .amux = LINE2,
  5108. }, {
  5109. .name = name_svideo,
  5110. .vmux = 8,
  5111. .amux = LINE2,
  5112. } },
  5113. .radio = {
  5114. .name = name_radio,
  5115. .amux = TV,
  5116. .gpio = 0x0200000,
  5117. },
  5118. },
  5119. [SAA7134_BOARD_REAL_ANGEL_220] = {
  5120. .name = "Zogis Real Angel 220",
  5121. .audio_clock = 0x00187de7,
  5122. .tuner_type = TUNER_TNF_5335MF,
  5123. .radio_type = UNSET,
  5124. .tuner_addr = ADDR_UNSET,
  5125. .radio_addr = ADDR_UNSET,
  5126. .gpiomask = 0x801a8087,
  5127. .inputs = { {
  5128. .name = name_tv,
  5129. .vmux = 3,
  5130. .amux = LINE2,
  5131. .tv = 1,
  5132. .gpio = 0x624000,
  5133. }, {
  5134. .name = name_comp1,
  5135. .vmux = 1,
  5136. .amux = LINE1,
  5137. .gpio = 0x624000,
  5138. }, {
  5139. .name = name_svideo,
  5140. .vmux = 1,
  5141. .amux = LINE1,
  5142. .gpio = 0x624000,
  5143. } },
  5144. .radio = {
  5145. .name = name_radio,
  5146. .amux = LINE2,
  5147. .gpio = 0x624001,
  5148. },
  5149. .mute = {
  5150. .name = name_mute,
  5151. .amux = TV,
  5152. },
  5153. },
  5154. [SAA7134_BOARD_ADS_INSTANT_HDTV_PCI] = {
  5155. .name = "ADS Tech Instant HDTV",
  5156. .audio_clock = 0x00187de7,
  5157. .tuner_type = TUNER_PHILIPS_TUV1236D,
  5158. .radio_type = UNSET,
  5159. .tuner_addr = ADDR_UNSET,
  5160. .radio_addr = ADDR_UNSET,
  5161. .tda9887_conf = TDA9887_PRESENT,
  5162. .mpeg = SAA7134_MPEG_DVB,
  5163. .inputs = { {
  5164. .name = name_tv,
  5165. .vmux = 1,
  5166. .amux = TV,
  5167. .tv = 1,
  5168. }, {
  5169. .name = name_comp,
  5170. .vmux = 4,
  5171. .amux = LINE1,
  5172. }, {
  5173. .name = name_svideo,
  5174. .vmux = 8,
  5175. .amux = LINE1,
  5176. } },
  5177. },
  5178. [SAA7134_BOARD_ASUSTeK_TIGER] = {
  5179. .name = "Asus Tiger Rev:1.00",
  5180. .audio_clock = 0x00187de7,
  5181. .tuner_type = TUNER_PHILIPS_TDA8290,
  5182. .radio_type = UNSET,
  5183. .tuner_addr = ADDR_UNSET,
  5184. .radio_addr = ADDR_UNSET,
  5185. .tda829x_conf = { .lna_cfg = TDA8290_LNA_OFF },
  5186. .mpeg = SAA7134_MPEG_DVB,
  5187. .gpiomask = 0x0200000,
  5188. .inputs = { {
  5189. .name = name_tv,
  5190. .vmux = 1,
  5191. .amux = TV,
  5192. .tv = 1,
  5193. }, {
  5194. .name = name_comp1,
  5195. .vmux = 3,
  5196. .amux = LINE2,
  5197. }, {
  5198. .name = name_comp2,
  5199. .vmux = 0,
  5200. .amux = LINE2,
  5201. }, {
  5202. .name = name_svideo,
  5203. .vmux = 8,
  5204. .amux = LINE2,
  5205. } },
  5206. .radio = {
  5207. .name = name_radio,
  5208. .amux = TV,
  5209. .gpio = 0x0200000,
  5210. },
  5211. },
  5212. [SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG] = {
  5213. .name = "Kworld Plus TV Analog Lite PCI",
  5214. .audio_clock = 0x00187de7,
  5215. .tuner_type = TUNER_YMEC_TVF_5533MF,
  5216. .radio_type = TUNER_TEA5767,
  5217. .tuner_addr = ADDR_UNSET,
  5218. .radio_addr = 0x60,
  5219. .gpiomask = 0x80000700,
  5220. .inputs = { {
  5221. .name = name_tv,
  5222. .vmux = 1,
  5223. .amux = LINE2,
  5224. .tv = 1,
  5225. .gpio = 0x100,
  5226. }, {
  5227. .name = name_comp1,
  5228. .vmux = 3,
  5229. .amux = LINE1,
  5230. .gpio = 0x200,
  5231. }, {
  5232. .name = name_svideo,
  5233. .vmux = 8,
  5234. .amux = LINE1,
  5235. .gpio = 0x200,
  5236. } },
  5237. .radio = {
  5238. .name = name_radio,
  5239. .vmux = 1,
  5240. .amux = LINE1,
  5241. .gpio = 0x100,
  5242. },
  5243. .mute = {
  5244. .name = name_mute,
  5245. .vmux = 8,
  5246. .amux = 2,
  5247. },
  5248. },
  5249. [SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG] = {
  5250. .name = "Kworld PCI SBTVD/ISDB-T Full-Seg Hybrid",
  5251. .audio_clock = 0x00187de7,
  5252. .tuner_type = TUNER_PHILIPS_TDA8290,
  5253. .tuner_addr = ADDR_UNSET,
  5254. .radio_type = UNSET,
  5255. .radio_addr = ADDR_UNSET,
  5256. .gpiomask = 0x8e054000,
  5257. .mpeg = SAA7134_MPEG_DVB,
  5258. .ts_type = SAA7134_MPEG_TS_PARALLEL,
  5259. .inputs = { {
  5260. .name = name_tv,
  5261. .vmux = 1,
  5262. .amux = TV,
  5263. .tv = 1,
  5264. #if 0 /* FIXME */
  5265. }, {
  5266. .name = name_comp1,
  5267. .vmux = 3,
  5268. .amux = LINE1,
  5269. .gpio = 0x200,
  5270. }, {
  5271. .name = name_svideo,
  5272. .vmux = 8,
  5273. .amux = LINE1,
  5274. .gpio = 0x200,
  5275. #endif
  5276. } },
  5277. #if 0
  5278. .radio = {
  5279. .name = name_radio,
  5280. .vmux = 1,
  5281. .amux = LINE1,
  5282. .gpio = 0x100,
  5283. },
  5284. #endif
  5285. .mute = {
  5286. .name = name_mute,
  5287. .vmux = 0,
  5288. .amux = TV,
  5289. },
  5290. },
  5291. [SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS] = {
  5292. .name = "Avermedia AVerTV GO 007 FM Plus",
  5293. .audio_clock = 0x00187de7,
  5294. .tuner_type = TUNER_PHILIPS_TDA8290,
  5295. .radio_type = UNSET,
  5296. .tuner_addr = ADDR_UNSET,
  5297. .radio_addr = ADDR_UNSET,
  5298. .gpiomask = 0x00300003,
  5299. /* .gpiomask = 0x8c240003, */
  5300. .inputs = { {
  5301. .name = name_tv,
  5302. .vmux = 1,
  5303. .amux = TV,
  5304. .tv = 1,
  5305. .gpio = 0x01,
  5306. }, {
  5307. .name = name_svideo,
  5308. .vmux = 6,
  5309. .amux = LINE1,
  5310. .gpio = 0x02,
  5311. } },
  5312. .radio = {
  5313. .name = name_radio,
  5314. .amux = TV,
  5315. .gpio = 0x00300001,
  5316. },
  5317. .mute = {
  5318. .name = name_mute,
  5319. .amux = TV,
  5320. .gpio = 0x01,
  5321. },
  5322. },
  5323. [SAA7134_BOARD_AVERMEDIA_STUDIO_507UA] = {
  5324. /* Andy Shevchenko <andy@smile.org.ua> */
  5325. .name = "Avermedia AVerTV Studio 507UA",
  5326. .audio_clock = 0x00187de7,
  5327. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, /* Should be MK5 */
  5328. .radio_type = UNSET,
  5329. .tuner_addr = ADDR_UNSET,
  5330. .radio_addr = ADDR_UNSET,
  5331. .tda9887_conf = TDA9887_PRESENT,
  5332. .gpiomask = 0x03,
  5333. .inputs = { {
  5334. .name = name_tv,
  5335. .vmux = 1,
  5336. .amux = TV,
  5337. .tv = 1,
  5338. .gpio = 0x00,
  5339. }, {
  5340. .name = name_comp1,
  5341. .vmux = 3,
  5342. .amux = LINE1,
  5343. .gpio = 0x00,
  5344. }, {
  5345. .name = name_svideo,
  5346. .vmux = 8,
  5347. .amux = LINE1,
  5348. .gpio = 0x00,
  5349. } },
  5350. .radio = {
  5351. .name = name_radio,
  5352. .amux = LINE2,
  5353. .gpio = 0x01,
  5354. },
  5355. .mute = {
  5356. .name = name_mute,
  5357. .amux = LINE1,
  5358. .gpio = 0x00,
  5359. },
  5360. },
  5361. [SAA7134_BOARD_VIDEOMATE_S350] = {
  5362. /* Jan D. Louw <jd.louw@mweb.co.za */
  5363. .name = "Compro VideoMate S350/S300",
  5364. .audio_clock = 0x00187de7,
  5365. .tuner_type = TUNER_ABSENT,
  5366. .radio_type = UNSET,
  5367. .tuner_addr = ADDR_UNSET,
  5368. .radio_addr = ADDR_UNSET,
  5369. .mpeg = SAA7134_MPEG_DVB,
  5370. .inputs = { {
  5371. .name = name_comp1,
  5372. .vmux = 0,
  5373. .amux = LINE1,
  5374. }, {
  5375. .name = name_svideo,
  5376. .vmux = 8, /* Not tested */
  5377. .amux = LINE1
  5378. } },
  5379. },
  5380. [SAA7134_BOARD_BEHOLD_X7] = {
  5381. /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  5382. .name = "Beholder BeholdTV X7",
  5383. .audio_clock = 0x00187de7,
  5384. .tuner_type = TUNER_XC5000,
  5385. .radio_type = UNSET,
  5386. .tuner_addr = ADDR_UNSET,
  5387. .radio_addr = ADDR_UNSET,
  5388. .mpeg = SAA7134_MPEG_DVB,
  5389. .inputs = { {
  5390. .name = name_tv,
  5391. .vmux = 2,
  5392. .amux = TV,
  5393. .tv = 1,
  5394. }, {
  5395. .name = name_comp1,
  5396. .vmux = 0,
  5397. .amux = LINE1,
  5398. }, {
  5399. .name = name_svideo,
  5400. .vmux = 9,
  5401. .amux = LINE1,
  5402. } },
  5403. .radio = {
  5404. .name = name_radio,
  5405. .amux = TV,
  5406. },
  5407. },
  5408. [SAA7134_BOARD_ZOLID_HYBRID_PCI] = {
  5409. .name = "Zolid Hybrid TV Tuner PCI",
  5410. .audio_clock = 0x00187de7,
  5411. .tuner_type = TUNER_PHILIPS_TDA8290,
  5412. .radio_type = UNSET,
  5413. .tuner_addr = ADDR_UNSET,
  5414. .radio_addr = ADDR_UNSET,
  5415. .tda829x_conf = { .lna_cfg = TDA8290_LNA_OFF },
  5416. .mpeg = SAA7134_MPEG_DVB,
  5417. .ts_type = SAA7134_MPEG_TS_PARALLEL,
  5418. .inputs = {{
  5419. .name = name_tv,
  5420. .vmux = 1,
  5421. .amux = TV,
  5422. .tv = 1,
  5423. } },
  5424. .radio = { /* untested */
  5425. .name = name_radio,
  5426. .amux = TV,
  5427. },
  5428. },
  5429. [SAA7134_BOARD_ASUS_EUROPA_HYBRID] = {
  5430. .name = "Asus Europa Hybrid OEM",
  5431. .audio_clock = 0x00187de7,
  5432. .tuner_type = TUNER_PHILIPS_TD1316,
  5433. .radio_type = UNSET,
  5434. .tuner_addr = 0x61,
  5435. .radio_addr = ADDR_UNSET,
  5436. .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
  5437. .mpeg = SAA7134_MPEG_DVB,
  5438. .inputs = { {
  5439. .name = name_tv,
  5440. .vmux = 3,
  5441. .amux = TV,
  5442. .tv = 1,
  5443. }, {
  5444. .name = name_comp1,
  5445. .vmux = 4,
  5446. .amux = LINE2,
  5447. }, {
  5448. .name = name_svideo,
  5449. .vmux = 8,
  5450. .amux = LINE2,
  5451. } },
  5452. },
  5453. [SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S] = {
  5454. .name = "Leadtek Winfast DTV1000S",
  5455. .audio_clock = 0x00187de7,
  5456. .tuner_type = TUNER_PHILIPS_TDA8290,
  5457. .radio_type = UNSET,
  5458. .tuner_addr = ADDR_UNSET,
  5459. .radio_addr = ADDR_UNSET,
  5460. .mpeg = SAA7134_MPEG_DVB,
  5461. .inputs = { {
  5462. .name = name_comp1,
  5463. .vmux = 3,
  5464. }, {
  5465. .name = name_svideo,
  5466. .vmux = 8,
  5467. } },
  5468. },
  5469. [SAA7134_BOARD_BEHOLD_505RDS_MK3] = {
  5470. /* Beholder Intl. Ltd. 2008 */
  5471. /*Dmitry Belimov <d.belimov@gmail.com> */
  5472. .name = "Beholder BeholdTV 505 RDS",
  5473. .audio_clock = 0x00200000,
  5474. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  5475. .radio_type = UNSET,
  5476. .tuner_addr = ADDR_UNSET,
  5477. .radio_addr = ADDR_UNSET,
  5478. .rds_addr = 0x10,
  5479. .tda9887_conf = TDA9887_PRESENT,
  5480. .gpiomask = 0x00008000,
  5481. .inputs = {{
  5482. .name = name_tv,
  5483. .vmux = 3,
  5484. .amux = LINE2,
  5485. .tv = 1,
  5486. }, {
  5487. .name = name_comp1,
  5488. .vmux = 1,
  5489. .amux = LINE1,
  5490. }, {
  5491. .name = name_svideo,
  5492. .vmux = 8,
  5493. .amux = LINE1,
  5494. } },
  5495. .mute = {
  5496. .name = name_mute,
  5497. .amux = LINE1,
  5498. },
  5499. .radio = {
  5500. .name = name_radio,
  5501. .amux = LINE2,
  5502. },
  5503. },
  5504. [SAA7134_BOARD_HAWELL_HW_404M7] = {
  5505. /* Hawell HW-404M7 & Hawell HW-808M7 */
  5506. /* Bogoslovskiy Viktor <bogovic@bk.ru> */
  5507. .name = "Hawell HW-404M7",
  5508. .audio_clock = 0x00200000,
  5509. .tuner_type = UNSET,
  5510. .radio_type = UNSET,
  5511. .tuner_addr = ADDR_UNSET,
  5512. .radio_addr = ADDR_UNSET,
  5513. .gpiomask = 0x389c00,
  5514. .inputs = {{
  5515. .name = name_comp1,
  5516. .vmux = 3,
  5517. .amux = LINE1,
  5518. .gpio = 0x01fc00,
  5519. } },
  5520. },
  5521. [SAA7134_BOARD_BEHOLD_H7] = {
  5522. /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  5523. .name = "Beholder BeholdTV H7",
  5524. .audio_clock = 0x00187de7,
  5525. .tuner_type = TUNER_XC5000,
  5526. .radio_type = UNSET,
  5527. .tuner_addr = ADDR_UNSET,
  5528. .radio_addr = ADDR_UNSET,
  5529. .mpeg = SAA7134_MPEG_DVB,
  5530. .ts_type = SAA7134_MPEG_TS_PARALLEL,
  5531. .inputs = { {
  5532. .name = name_tv,
  5533. .vmux = 2,
  5534. .amux = TV,
  5535. .tv = 1,
  5536. }, {
  5537. .name = name_comp1,
  5538. .vmux = 0,
  5539. .amux = LINE1,
  5540. }, {
  5541. .name = name_svideo,
  5542. .vmux = 9,
  5543. .amux = LINE1,
  5544. } },
  5545. .radio = {
  5546. .name = name_radio,
  5547. .amux = TV,
  5548. },
  5549. },
  5550. [SAA7134_BOARD_BEHOLD_A7] = {
  5551. /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  5552. .name = "Beholder BeholdTV A7",
  5553. .audio_clock = 0x00187de7,
  5554. .tuner_type = TUNER_XC5000,
  5555. .radio_type = UNSET,
  5556. .tuner_addr = ADDR_UNSET,
  5557. .radio_addr = ADDR_UNSET,
  5558. .inputs = { {
  5559. .name = name_tv,
  5560. .vmux = 2,
  5561. .amux = TV,
  5562. .tv = 1,
  5563. }, {
  5564. .name = name_comp1,
  5565. .vmux = 0,
  5566. .amux = LINE1,
  5567. }, {
  5568. .name = name_svideo,
  5569. .vmux = 9,
  5570. .amux = LINE1,
  5571. } },
  5572. .radio = {
  5573. .name = name_radio,
  5574. .amux = TV,
  5575. },
  5576. },
  5577. [SAA7134_BOARD_TECHNOTREND_BUDGET_T3000] = {
  5578. .name = "TechoTrend TT-budget T-3000",
  5579. .tuner_type = TUNER_PHILIPS_TD1316,
  5580. .audio_clock = 0x00187de7,
  5581. .radio_type = UNSET,
  5582. .tuner_addr = 0x63,
  5583. .radio_addr = ADDR_UNSET,
  5584. .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
  5585. .mpeg = SAA7134_MPEG_DVB,
  5586. .inputs = {{
  5587. .name = name_tv,
  5588. .vmux = 3,
  5589. .amux = TV,
  5590. .tv = 1,
  5591. }, {
  5592. .name = name_comp1,
  5593. .vmux = 0,
  5594. .amux = LINE2,
  5595. }, {
  5596. .name = name_svideo,
  5597. .vmux = 8,
  5598. .amux = LINE2,
  5599. } },
  5600. },
  5601. [SAA7134_BOARD_VIDEOMATE_M1F] = {
  5602. /* Pavel Osnova <pvosnova@gmail.com> */
  5603. .name = "Compro VideoMate Vista M1F",
  5604. .audio_clock = 0x00187de7,
  5605. .tuner_type = TUNER_LG_PAL_NEW_TAPC,
  5606. .radio_type = TUNER_TEA5767,
  5607. .tuner_addr = ADDR_UNSET,
  5608. .radio_addr = 0x60,
  5609. .inputs = { {
  5610. .name = name_tv,
  5611. .vmux = 1,
  5612. .amux = TV,
  5613. .tv = 1,
  5614. }, {
  5615. .name = name_comp1,
  5616. .vmux = 3,
  5617. .amux = LINE2,
  5618. }, {
  5619. .name = name_svideo,
  5620. .vmux = 8,
  5621. .amux = LINE2,
  5622. } },
  5623. .radio = {
  5624. .name = name_radio,
  5625. .amux = LINE1,
  5626. },
  5627. .mute = {
  5628. .name = name_mute,
  5629. .amux = TV,
  5630. },
  5631. },
  5632. [SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2] = {
  5633. /* Timothy Lee <timothy.lee@siriushk.com> */
  5634. .name = "MagicPro ProHDTV Pro2 DMB-TH/Hybrid",
  5635. .audio_clock = 0x00187de7,
  5636. .tuner_type = TUNER_PHILIPS_TDA8290,
  5637. .radio_type = UNSET,
  5638. .tda829x_conf = { .lna_cfg = TDA8290_LNA_ON_BRIDGE },
  5639. .tuner_addr = ADDR_UNSET,
  5640. .radio_addr = ADDR_UNSET,
  5641. .gpiomask = 0x02050000,
  5642. .mpeg = SAA7134_MPEG_DVB,
  5643. .ts_type = SAA7134_MPEG_TS_PARALLEL,
  5644. .inputs = { {
  5645. .name = name_tv,
  5646. .vmux = 1,
  5647. .amux = TV,
  5648. .tv = 1,
  5649. .gpio = 0x00050000,
  5650. }, {
  5651. .name = name_comp1,
  5652. .vmux = 3,
  5653. .amux = LINE1,
  5654. .gpio = 0x00050000,
  5655. }, {
  5656. .name = name_svideo,
  5657. .vmux = 8,
  5658. .amux = LINE1,
  5659. .gpio = 0x00050000,
  5660. } },
  5661. .radio = {
  5662. .name = name_radio,
  5663. .amux = TV,
  5664. .gpio = 0x00050000,
  5665. },
  5666. .mute = {
  5667. .name = name_mute,
  5668. .vmux = 0,
  5669. .amux = TV,
  5670. .gpio = 0x00050000,
  5671. },
  5672. },
  5673. [SAA7134_BOARD_BEHOLD_501] = {
  5674. /* Beholder Intl. Ltd. 2010 */
  5675. /* Dmitry Belimov <d.belimov@gmail.com> */
  5676. .name = "Beholder BeholdTV 501",
  5677. .audio_clock = 0x00200000,
  5678. .tuner_type = TUNER_ABSENT,
  5679. .radio_type = UNSET,
  5680. .tuner_addr = ADDR_UNSET,
  5681. .radio_addr = ADDR_UNSET,
  5682. .gpiomask = 0x00008000,
  5683. .inputs = { {
  5684. .name = name_tv,
  5685. .vmux = 3,
  5686. .amux = LINE2,
  5687. .tv = 1,
  5688. }, {
  5689. .name = name_comp1,
  5690. .vmux = 1,
  5691. .amux = LINE1,
  5692. }, {
  5693. .name = name_svideo,
  5694. .vmux = 8,
  5695. .amux = LINE1,
  5696. } },
  5697. .mute = {
  5698. .name = name_mute,
  5699. .amux = LINE1,
  5700. },
  5701. },
  5702. [SAA7134_BOARD_BEHOLD_503FM] = {
  5703. /* Beholder Intl. Ltd. 2010 */
  5704. /* Dmitry Belimov <d.belimov@gmail.com> */
  5705. .name = "Beholder BeholdTV 503 FM",
  5706. .audio_clock = 0x00200000,
  5707. .tuner_type = TUNER_ABSENT,
  5708. .radio_type = UNSET,
  5709. .tuner_addr = ADDR_UNSET,
  5710. .radio_addr = ADDR_UNSET,
  5711. .gpiomask = 0x00008000,
  5712. .inputs = { {
  5713. .name = name_tv,
  5714. .vmux = 3,
  5715. .amux = LINE2,
  5716. .tv = 1,
  5717. }, {
  5718. .name = name_comp1,
  5719. .vmux = 1,
  5720. .amux = LINE1,
  5721. }, {
  5722. .name = name_svideo,
  5723. .vmux = 8,
  5724. .amux = LINE1,
  5725. } },
  5726. .mute = {
  5727. .name = name_mute,
  5728. .amux = LINE1,
  5729. },
  5730. },
  5731. [SAA7134_BOARD_SENSORAY811_911] = {
  5732. .name = "Sensoray 811/911",
  5733. .audio_clock = 0x00200000,
  5734. .tuner_type = TUNER_ABSENT,
  5735. .radio_type = UNSET,
  5736. .tuner_addr = ADDR_UNSET,
  5737. .radio_addr = ADDR_UNSET,
  5738. .inputs = {{
  5739. .name = name_comp1,
  5740. .vmux = 0,
  5741. .amux = LINE1,
  5742. }, {
  5743. .name = name_comp3,
  5744. .vmux = 2,
  5745. .amux = LINE1,
  5746. }, {
  5747. .name = name_svideo,
  5748. .vmux = 8,
  5749. .amux = LINE1,
  5750. } },
  5751. },
  5752. [SAA7134_BOARD_KWORLD_PC150U] = {
  5753. .name = "Kworld PC150-U",
  5754. .audio_clock = 0x00187de7,
  5755. .tuner_type = TUNER_PHILIPS_TDA8290,
  5756. .radio_type = UNSET,
  5757. .tuner_addr = ADDR_UNSET,
  5758. .radio_addr = ADDR_UNSET,
  5759. .mpeg = SAA7134_MPEG_DVB,
  5760. .gpiomask = 1 << 21,
  5761. .ts_type = SAA7134_MPEG_TS_PARALLEL,
  5762. .inputs = { {
  5763. .name = name_tv,
  5764. .vmux = 1,
  5765. .amux = TV,
  5766. .tv = 1,
  5767. }, {
  5768. .name = name_comp,
  5769. .vmux = 3,
  5770. .amux = LINE1,
  5771. }, {
  5772. .name = name_svideo,
  5773. .vmux = 8,
  5774. .amux = LINE2,
  5775. } },
  5776. .radio = {
  5777. .name = name_radio,
  5778. .amux = TV,
  5779. .gpio = 0x0000000,
  5780. },
  5781. },
  5782. [SAA7134_BOARD_HAWELL_HW_9004V1] = {
  5783. /* Hawell HW-9004V1 */
  5784. /* Vadim Frolov <fralik@gmail.com> */
  5785. .name = "Hawell HW-9004V1",
  5786. .audio_clock = 0x00200000,
  5787. .tuner_type = UNSET,
  5788. .radio_type = UNSET,
  5789. .tuner_addr = ADDR_UNSET,
  5790. .radio_addr = ADDR_UNSET,
  5791. .gpiomask = 0x618E700,
  5792. .inputs = {{
  5793. .name = name_comp1,
  5794. .vmux = 3,
  5795. .amux = LINE1,
  5796. .gpio = 0x6010000,
  5797. } },
  5798. },
  5799. [SAA7134_BOARD_AVERMEDIA_A706] = {
  5800. .name = "AverMedia AverTV Satellite Hybrid+FM A706",
  5801. .audio_clock = 0x00187de7,
  5802. .tuner_type = TUNER_PHILIPS_TDA8290,
  5803. .radio_type = UNSET,
  5804. .tuner_addr = ADDR_UNSET,
  5805. .radio_addr = ADDR_UNSET,
  5806. .tda829x_conf = { .lna_cfg = TDA8290_LNA_OFF,
  5807. .no_i2c_gate = 1,
  5808. .tda18271_std_map = &aver_a706_std_map },
  5809. .gpiomask = 1 << 11,
  5810. .mpeg = SAA7134_MPEG_DVB,
  5811. .inputs = {{
  5812. .name = name_tv,
  5813. .vmux = 1,
  5814. .amux = TV,
  5815. .tv = 1,
  5816. }, {
  5817. .name = name_comp,
  5818. .vmux = 4,
  5819. .amux = LINE1,
  5820. }, {
  5821. .name = name_svideo,
  5822. .vmux = 8,
  5823. .amux = LINE1,
  5824. } },
  5825. .radio = {
  5826. .name = name_radio,
  5827. .amux = TV,
  5828. .gpio = 0x0000800,
  5829. },
  5830. },
  5831. [SAA7134_BOARD_WIS_VOYAGER] = {
  5832. .name = "WIS Voyager or compatible",
  5833. .audio_clock = 0x00200000,
  5834. .tuner_type = TUNER_PHILIPS_TDA8290,
  5835. .radio_type = UNSET,
  5836. .tuner_addr = ADDR_UNSET,
  5837. .radio_addr = ADDR_UNSET,
  5838. .mpeg = SAA7134_MPEG_GO7007,
  5839. .inputs = { {
  5840. .name = name_comp1,
  5841. .vmux = 0,
  5842. .amux = LINE2,
  5843. }, {
  5844. .name = name_tv,
  5845. .vmux = 3,
  5846. .amux = TV,
  5847. .tv = 1,
  5848. }, {
  5849. .name = name_svideo,
  5850. .vmux = 6,
  5851. .amux = LINE1,
  5852. } },
  5853. },
  5854. [SAA7134_BOARD_AVERMEDIA_505] = {
  5855. /* much like the "studio" version but without radio
  5856. * and another tuner (dbaryshkov@gmail.com) */
  5857. .name = "AverMedia AverTV/505",
  5858. .audio_clock = 0x00187de7,
  5859. .tuner_type = TUNER_PHILIPS_FQ1216ME,
  5860. .radio_type = UNSET,
  5861. .tuner_addr = ADDR_UNSET,
  5862. .radio_addr = ADDR_UNSET,
  5863. .tda9887_conf = TDA9887_PRESENT,
  5864. .inputs = {{
  5865. .name = name_tv,
  5866. .vmux = 1,
  5867. .amux = LINE2,
  5868. .tv = 1,
  5869. }, {
  5870. .name = name_comp1,
  5871. .vmux = 0,
  5872. .amux = LINE2,
  5873. }, {
  5874. .name = name_comp2,
  5875. .vmux = 3,
  5876. .amux = LINE2,
  5877. }, {
  5878. .name = name_svideo,
  5879. .vmux = 8,
  5880. .amux = LINE2,
  5881. } },
  5882. .mute = {
  5883. .name = name_mute,
  5884. .amux = LINE1,
  5885. },
  5886. },
  5887.  
  5888. [SAA7134_BOARD_LEADTEK_WINFAST_TV2100FM] = {
  5889. .name = "Leadtek Winfast 2100FM",
  5890. .audio_clock = 0x00200000,
  5891. .tuner_type = TUNER_TNF_5335MF,
  5892. .radio_type = UNSET,
  5893. .tuner_addr = ADDR_UNSET,
  5894. .radio_addr = ADDR_UNSET,
  5895. .gpiomask = 0xe0d,
  5896. .inputs = {{
  5897. .name = name_tv,
  5898. .vmux = 1,
  5899. .amux = LINE2,
  5900. .gpio = 0x00,
  5901. .tv = 1,
  5902. }, {
  5903. .name = name_comp1,
  5904. .vmux = 0,
  5905. .amux = LINE2,
  5906. .gpio = 0x08,
  5907. }, {
  5908. .name = name_comp2,
  5909. .vmux = 3,
  5910. .amux = LINE2,
  5911. .gpio = 0x08,
  5912. }, {
  5913. .name = name_svideo,
  5914. .vmux = 8,
  5915. .amux = LINE2,
  5916. .gpio = 0x08,
  5917. } },
  5918. .radio = {
  5919. .name = name_radio,
  5920. .amux = LINE2,
  5921. .gpio = 0x04,
  5922. },
  5923. .mute = {
  5924. .name = name_mute,
  5925. .amux = LINE2,
  5926. .gpio = 0x08,
  5927. },
  5928. },
  5929. };
  5930.  
  5931. };
  5932.  
  5933.  
  5934.  
  5935.  
  5936. const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
  5937.  
  5938. /* ------------------------------------------------------------------ */
  5939. /* PCI ids + subsystem IDs */
  5940.  
  5941. struct pci_device_id saa7134_pci_tbl[] = {
  5942. {
  5943. .vendor = PCI_VENDOR_ID_PHILIPS,
  5944. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  5945. .subvendor = PCI_VENDOR_ID_PHILIPS,
  5946. .subdevice = 0x2001,
  5947. .driver_data = SAA7134_BOARD_PROTEUS_PRO,
  5948. },{
  5949. .vendor = PCI_VENDOR_ID_PHILIPS,
  5950. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  5951. .subvendor = PCI_VENDOR_ID_PHILIPS,
  5952. .subdevice = 0x2001,
  5953. .driver_data = SAA7134_BOARD_PROTEUS_PRO,
  5954. },{
  5955. .vendor = PCI_VENDOR_ID_PHILIPS,
  5956. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  5957. .subvendor = PCI_VENDOR_ID_PHILIPS,
  5958. .subdevice = 0x6752,
  5959. .driver_data = SAA7134_BOARD_EMPRESS,
  5960. },{
  5961. .vendor = PCI_VENDOR_ID_PHILIPS,
  5962. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  5963. .subvendor = 0x1131,
  5964. .subdevice = 0x4e85,
  5965. .driver_data = SAA7134_BOARD_MONSTERTV,
  5966. },{
  5967. .vendor = PCI_VENDOR_ID_PHILIPS,
  5968. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  5969. .subvendor = 0x153b,
  5970. .subdevice = 0x1142,
  5971. .driver_data = SAA7134_BOARD_CINERGY400,
  5972. },{
  5973. .vendor = PCI_VENDOR_ID_PHILIPS,
  5974. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  5975. .subvendor = 0x153b,
  5976. .subdevice = 0x1143,
  5977. .driver_data = SAA7134_BOARD_CINERGY600,
  5978. },{
  5979. .vendor = PCI_VENDOR_ID_PHILIPS,
  5980. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  5981. .subvendor = 0x153b,
  5982. .subdevice = 0x1158,
  5983. .driver_data = SAA7134_BOARD_CINERGY600_MK3,
  5984. },{
  5985. .vendor = PCI_VENDOR_ID_PHILIPS,
  5986. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  5987. .subvendor = 0x153b,
  5988. .subdevice = 0x1162,
  5989. .driver_data = SAA7134_BOARD_CINERGY400_CARDBUS,
  5990. },{
  5991. .vendor = PCI_VENDOR_ID_PHILIPS,
  5992. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  5993. .subvendor = 0x5169,
  5994. .subdevice = 0x0138,
  5995. .driver_data = SAA7134_BOARD_FLYVIDEO3000_NTSC,
  5996. },{
  5997. .vendor = PCI_VENDOR_ID_PHILIPS,
  5998. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  5999. .subvendor = 0x5168,
  6000. .subdevice = 0x0138,
  6001. .driver_data = SAA7134_BOARD_FLYVIDEO3000,
  6002. },{
  6003. .vendor = PCI_VENDOR_ID_PHILIPS,
  6004. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6005. .subvendor = 0x4e42, /* "Typhoon PCI Capture TV Card" Art.No. 50673 */
  6006. .subdevice = 0x0138,
  6007. .driver_data = SAA7134_BOARD_FLYVIDEO3000,
  6008. },{
  6009. .vendor = PCI_VENDOR_ID_PHILIPS,
  6010. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6011. .subvendor = 0x5168,
  6012. .subdevice = 0x0138,
  6013. .driver_data = SAA7134_BOARD_FLYVIDEO2000,
  6014. },{
  6015. .vendor = PCI_VENDOR_ID_PHILIPS,
  6016. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6017. .subvendor = 0x4e42, /* Typhoon */
  6018. .subdevice = 0x0138, /* LifeView FlyTV Prime30 OEM */
  6019. .driver_data = SAA7134_BOARD_FLYVIDEO2000,
  6020. },{
  6021. .vendor = PCI_VENDOR_ID_PHILIPS,
  6022. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6023. .subvendor = 0x5168,
  6024. .subdevice = 0x0212, /* minipci, LR212 */
  6025. .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI,
  6026. },{
  6027. .vendor = PCI_VENDOR_ID_PHILIPS,
  6028. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6029. .subvendor = 0x14c0,
  6030. .subdevice = 0x1212, /* minipci, LR1212 */
  6031. .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI2,
  6032. },{
  6033. .vendor = PCI_VENDOR_ID_PHILIPS,
  6034. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6035. .subvendor = 0x4e42,
  6036. .subdevice = 0x0212, /* OEM minipci, LR212 */
  6037. .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI,
  6038. },{
  6039. .vendor = PCI_VENDOR_ID_PHILIPS,
  6040. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6041. .subvendor = 0x5168, /* Animation Technologies (LifeView) */
  6042. .subdevice = 0x0214, /* Standard PCI, LR214 Rev E and earlier (SAA7135) */
  6043. .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
  6044. },{
  6045. .vendor = PCI_VENDOR_ID_PHILIPS,
  6046. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6047. .subvendor = 0x5168, /* Animation Technologies (LifeView) */
  6048. .subdevice = 0x5214, /* Standard PCI, LR214 Rev F onwards (SAA7131) */
  6049. .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
  6050. },{
  6051. .vendor = PCI_VENDOR_ID_PHILIPS,
  6052. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6053. .subvendor = 0x1489, /* KYE */
  6054. .subdevice = 0x0214, /* Genius VideoWonder ProTV */
  6055. .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */
  6056. },{
  6057. .vendor = PCI_VENDOR_ID_PHILIPS,
  6058. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6059. .subvendor = 0x16be,
  6060. .subdevice = 0x0003,
  6061. .driver_data = SAA7134_BOARD_MD7134,
  6062. },{
  6063. .vendor = PCI_VENDOR_ID_PHILIPS,
  6064. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6065. .subvendor = 0x16be, /* CTX946 analog TV, HW mpeg, DVB-T */
  6066. .subdevice = 0x5000, /* only analog TV and DVB-T for now */
  6067. .driver_data = SAA7134_BOARD_MD7134,
  6068. }, {
  6069. .vendor = PCI_VENDOR_ID_PHILIPS,
  6070. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6071. .subvendor = 0x1048,
  6072. .subdevice = 0x226b,
  6073. .driver_data = SAA7134_BOARD_ELSA,
  6074. },{
  6075. .vendor = PCI_VENDOR_ID_PHILIPS,
  6076. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6077. .subvendor = 0x1048,
  6078. .subdevice = 0x226a,
  6079. .driver_data = SAA7134_BOARD_ELSA_500TV,
  6080. },{
  6081. .vendor = PCI_VENDOR_ID_PHILIPS,
  6082. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6083. .subvendor = 0x1048,
  6084. .subdevice = 0x226c,
  6085. .driver_data = SAA7134_BOARD_ELSA_700TV,
  6086. },{
  6087. .vendor = PCI_VENDOR_ID_PHILIPS,
  6088. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6089. .subvendor = PCI_VENDOR_ID_ASUSTEK,
  6090. .subdevice = 0x4842,
  6091. .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
  6092. },{
  6093. .vendor = PCI_VENDOR_ID_PHILIPS,
  6094. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6095. .subvendor = PCI_VENDOR_ID_ASUSTEK,
  6096. .subdevice = 0x4845,
  6097. .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7135,
  6098. },{
  6099. .vendor = PCI_VENDOR_ID_PHILIPS,
  6100. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6101. .subvendor = PCI_VENDOR_ID_ASUSTEK,
  6102. .subdevice = 0x4830,
  6103. .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
  6104. },{
  6105. .vendor = PCI_VENDOR_ID_PHILIPS,
  6106. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6107. .subvendor = PCI_VENDOR_ID_ASUSTEK,
  6108. .subdevice = 0x4843,
  6109. .driver_data = SAA7134_BOARD_ASUSTEK_TVFM7133,
  6110. },{
  6111. .vendor = PCI_VENDOR_ID_PHILIPS,
  6112. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6113. .subvendor = PCI_VENDOR_ID_ASUSTEK,
  6114. .subdevice = 0x4840,
  6115. .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
  6116. },{
  6117. .vendor = PCI_VENDOR_ID_PHILIPS,
  6118. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6119. .subvendor = PCI_VENDOR_ID_PHILIPS,
  6120. .subdevice = 0xfe01,
  6121. .driver_data = SAA7134_BOARD_TVSTATION_RDS,
  6122. },{
  6123. .vendor = PCI_VENDOR_ID_PHILIPS,
  6124. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6125. .subvendor = 0x1894,
  6126. .subdevice = 0xfe01,
  6127. .driver_data = SAA7134_BOARD_TVSTATION_RDS,
  6128. },{
  6129. .vendor = PCI_VENDOR_ID_PHILIPS,
  6130. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6131. .subvendor = 0x1894,
  6132. .subdevice = 0xa006,
  6133. .driver_data = SAA7134_BOARD_TVSTATION_DVR,
  6134. },{
  6135. .vendor = PCI_VENDOR_ID_PHILIPS,
  6136. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6137. .subvendor = 0x1131,
  6138. .subdevice = 0x7133,
  6139. .driver_data = SAA7134_BOARD_VA1000POWER,
  6140. },{
  6141. .vendor = PCI_VENDOR_ID_PHILIPS,
  6142. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6143. .subvendor = PCI_VENDOR_ID_PHILIPS,
  6144. .subdevice = 0x2001,
  6145. .driver_data = SAA7134_BOARD_10MOONSTVMASTER,
  6146. },{
  6147. .vendor = PCI_VENDOR_ID_PHILIPS,
  6148. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6149. .subvendor = 0x185b,
  6150. .subdevice = 0xc100,
  6151. .driver_data = SAA7134_BOARD_VIDEOMATE_TV,
  6152. },{
  6153. .vendor = PCI_VENDOR_ID_PHILIPS,
  6154. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6155. .subvendor = 0x185b,
  6156. .subdevice = 0xc100,
  6157. .driver_data = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
  6158. },{
  6159. .vendor = PCI_VENDOR_ID_PHILIPS,
  6160. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6161. .subvendor = PCI_VENDOR_ID_MATROX,
  6162. .subdevice = 0x48d0,
  6163. .driver_data = SAA7134_BOARD_CRONOS_PLUS,
  6164. },{
  6165. .vendor = PCI_VENDOR_ID_PHILIPS,
  6166. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6167. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6168. .subdevice = 0xa70b,
  6169. .driver_data = SAA7134_BOARD_MD2819,
  6170. },{
  6171. .vendor = PCI_VENDOR_ID_PHILIPS,
  6172. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6173. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6174. .subdevice = 0xa7a1,
  6175. .driver_data = SAA7134_BOARD_AVERMEDIA_A700_PRO,
  6176. }, {
  6177. .vendor = PCI_VENDOR_ID_PHILIPS,
  6178. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6179. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6180. .subdevice = 0xa7a2,
  6181. .driver_data = SAA7134_BOARD_AVERMEDIA_A700_HYBRID,
  6182. }, {
  6183. .vendor = PCI_VENDOR_ID_PHILIPS,
  6184. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6185. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6186. .subdevice = 0x2115,
  6187. .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
  6188. },{
  6189. .vendor = PCI_VENDOR_ID_PHILIPS,
  6190. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6191. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6192. .subdevice = 0xa115,
  6193. .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_505,
  6194. }, {
  6195. .vendor = PCI_VENDOR_ID_PHILIPS,
  6196. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6197. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6198. .subdevice = 0x2108,
  6199. .driver_data = SAA7134_BOARD_AVERMEDIA_305,
  6200. },{
  6201. .vendor = PCI_VENDOR_ID_PHILIPS,
  6202. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6203. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6204. .subdevice = 0x10ff,
  6205. .driver_data = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
  6206. },{
  6207. /* AVerMedia CardBus */
  6208. .vendor = PCI_VENDOR_ID_PHILIPS,
  6209. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6210. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6211. .subdevice = 0xd6ee,
  6212. .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS,
  6213. },{
  6214. /* AVerMedia CardBus */
  6215. .vendor = PCI_VENDOR_ID_PHILIPS,
  6216. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6217. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6218. .subdevice = 0xb7e9,
  6219. .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS_501,
  6220. }, {
  6221. /* TransGear 3000TV */
  6222. .vendor = PCI_VENDOR_ID_PHILIPS,
  6223. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6224. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6225. .subdevice = 0x050c,
  6226. .driver_data = SAA7134_BOARD_TG3000TV,
  6227. },{
  6228. .vendor = PCI_VENDOR_ID_PHILIPS,
  6229. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6230. .subvendor = 0x11bd,
  6231. .subdevice = 0x002b,
  6232. .driver_data = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
  6233. },{
  6234. .vendor = PCI_VENDOR_ID_PHILIPS,
  6235. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6236. .subvendor = 0x11bd,
  6237. .subdevice = 0x002d,
  6238. .driver_data = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
  6239. },{
  6240. .vendor = PCI_VENDOR_ID_PHILIPS,
  6241. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6242. .subvendor = 0x1019,
  6243. .subdevice = 0x4cb4,
  6244. .driver_data = SAA7134_BOARD_ECS_TVP3XP,
  6245. },{
  6246. .vendor = PCI_VENDOR_ID_PHILIPS,
  6247. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6248. .subvendor = 0x1019,
  6249. .subdevice = 0x4cb5,
  6250. .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB5,
  6251. },{
  6252. .vendor = PCI_VENDOR_ID_PHILIPS,
  6253. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6254. .subvendor = 0x1019,
  6255. .subdevice = 0x4cb6,
  6256. .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB6,
  6257. },{
  6258. .vendor = PCI_VENDOR_ID_PHILIPS,
  6259. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6260. .subvendor = 0x12ab,
  6261. .subdevice = 0x0800,
  6262. .driver_data = SAA7134_BOARD_UPMOST_PURPLE_TV,
  6263. },{
  6264. .vendor = PCI_VENDOR_ID_PHILIPS,
  6265. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6266. .subvendor = 0x153b,
  6267. .subdevice = 0x1152,
  6268. .driver_data = SAA7134_BOARD_CINERGY200,
  6269. },{
  6270. .vendor = PCI_VENDOR_ID_PHILIPS,
  6271. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6272. .subvendor = 0x185b,
  6273. .subdevice = 0xc100,
  6274. .driver_data = SAA7134_BOARD_VIDEOMATE_TV_PVR,
  6275. },{
  6276. .vendor = PCI_VENDOR_ID_PHILIPS,
  6277. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6278. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6279. .subdevice = 0x9715,
  6280. .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_307,
  6281. },{
  6282. .vendor = PCI_VENDOR_ID_PHILIPS,
  6283. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6284. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6285. .subdevice = 0xa70a,
  6286. .driver_data = SAA7134_BOARD_AVERMEDIA_307,
  6287. },{
  6288. .vendor = PCI_VENDOR_ID_PHILIPS,
  6289. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6290. .subvendor = 0x185b,
  6291. .subdevice = 0xc200,
  6292. .driver_data = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
  6293. },{
  6294. .vendor = PCI_VENDOR_ID_PHILIPS,
  6295. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6296. .subvendor = 0x1540,
  6297. .subdevice = 0x9524,
  6298. .driver_data = SAA7134_BOARD_PROVIDEO_PV952,
  6299.  
  6300. },{
  6301. .vendor = PCI_VENDOR_ID_PHILIPS,
  6302. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6303. .subvendor = 0x5168,
  6304. .subdevice = 0x0502, /* Cardbus version */
  6305. .driver_data = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
  6306. },{
  6307. .vendor = PCI_VENDOR_ID_PHILIPS,
  6308. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6309. .subvendor = 0x5168,
  6310. .subdevice = 0x0306, /* PCI version */
  6311. .driver_data = SAA7134_BOARD_FLYDVBTDUO,
  6312. },{
  6313. .vendor = PCI_VENDOR_ID_PHILIPS,
  6314. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6315. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6316. .subdevice = 0xf31f,
  6317. .driver_data = SAA7134_BOARD_AVERMEDIA_GO_007_FM,
  6318.  
  6319. },{
  6320. .vendor = PCI_VENDOR_ID_PHILIPS,
  6321. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6322. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6323. .subdevice = 0xf11d,
  6324. .driver_data = SAA7134_BOARD_AVERMEDIA_M135A,
  6325. }, {
  6326. .vendor = PCI_VENDOR_ID_PHILIPS,
  6327. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6328. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6329. .subdevice = 0x4155,
  6330. .driver_data = SAA7134_BOARD_AVERMEDIA_M733A,
  6331. }, {
  6332. .vendor = PCI_VENDOR_ID_PHILIPS,
  6333. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6334. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6335. .subdevice = 0x4255,
  6336. .driver_data = SAA7134_BOARD_AVERMEDIA_M733A,
  6337. }, {
  6338. .vendor = PCI_VENDOR_ID_PHILIPS,
  6339. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6340. .subvendor = PCI_VENDOR_ID_PHILIPS,
  6341. .subdevice = 0x2004,
  6342. .driver_data = SAA7134_BOARD_PHILIPS_TOUGH,
  6343. },{
  6344. .vendor = PCI_VENDOR_ID_PHILIPS,
  6345. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6346. .subvendor = 0x1421,
  6347. .subdevice = 0x0350, /* PCI version */
  6348. .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
  6349. },{
  6350. .vendor = PCI_VENDOR_ID_PHILIPS,
  6351. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6352. .subvendor = 0x1421,
  6353. .subdevice = 0x0351, /* PCI version, new revision */
  6354. .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
  6355. },{
  6356. .vendor = PCI_VENDOR_ID_PHILIPS,
  6357. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6358. .subvendor = 0x1421,
  6359. .subdevice = 0x0370, /* cardbus version */
  6360. .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
  6361. },{
  6362. .vendor = PCI_VENDOR_ID_PHILIPS,
  6363. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6364. .subvendor = 0x1421,
  6365. .subdevice = 0x1370, /* cardbus version */
  6366. .driver_data = SAA7134_BOARD_ADS_INSTANT_TV,
  6367.  
  6368. },{
  6369. .vendor = PCI_VENDOR_ID_PHILIPS,
  6370. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6371. .subvendor = 0x4e42, /* Typhoon */
  6372. .subdevice = 0x0502, /* LifeView LR502 OEM */
  6373. .driver_data = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
  6374. },{
  6375. .vendor = PCI_VENDOR_ID_PHILIPS,
  6376. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6377. .subvendor = 0x1043,
  6378. .subdevice = 0x0210, /* mini pci NTSC version */
  6379. .driver_data = SAA7134_BOARD_FLYTV_DIGIMATRIX,
  6380. },{
  6381. .vendor = PCI_VENDOR_ID_PHILIPS,
  6382. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6383. .subvendor = 0x1043,
  6384. .subdevice = 0x0210, /* mini pci PAL/SECAM version */
  6385. .driver_data = SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV,
  6386.  
  6387. },{
  6388. .vendor = PCI_VENDOR_ID_PHILIPS,
  6389. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6390. .subvendor = 0x0000, /* It shouldn't break anything, since subdevice id seems unique */
  6391. .subdevice = 0x4091,
  6392. .driver_data = SAA7134_BOARD_BEHOLD_409FM,
  6393. },{
  6394. .vendor = PCI_VENDOR_ID_PHILIPS,
  6395. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6396. .subvendor = 0x5456, /* GoTView */
  6397. .subdevice = 0x7135,
  6398. .driver_data = SAA7134_BOARD_GOTVIEW_7135,
  6399. },{
  6400. .vendor = PCI_VENDOR_ID_PHILIPS,
  6401. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6402. .subvendor = PCI_VENDOR_ID_PHILIPS,
  6403. .subdevice = 0x2004,
  6404. .driver_data = SAA7134_BOARD_PHILIPS_EUROPA,
  6405. },{
  6406. .vendor = PCI_VENDOR_ID_PHILIPS,
  6407. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6408. .subvendor = 0x185b,
  6409. .subdevice = 0xc900,
  6410. .driver_data = SAA7134_BOARD_VIDEOMATE_DVBT_300,
  6411. },{
  6412. .vendor = PCI_VENDOR_ID_PHILIPS,
  6413. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6414. .subvendor = 0x185b,
  6415. .subdevice = 0xc901,
  6416. .driver_data = SAA7134_BOARD_VIDEOMATE_DVBT_200,
  6417. },{
  6418. .vendor = PCI_VENDOR_ID_PHILIPS,
  6419. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6420. .subvendor = 0x1435,
  6421. .subdevice = 0x7350,
  6422. .driver_data = SAA7134_BOARD_RTD_VFG7350,
  6423. },{
  6424. .vendor = PCI_VENDOR_ID_PHILIPS,
  6425. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6426. .subvendor = 0x1435,
  6427. .subdevice = 0x7330,
  6428. .driver_data = SAA7134_BOARD_RTD_VFG7330,
  6429. },{
  6430. .vendor = PCI_VENDOR_ID_PHILIPS,
  6431. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6432. .subvendor = 0x1461,
  6433. .subdevice = 0x1044,
  6434. .driver_data = SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180,
  6435. },{
  6436. .vendor = PCI_VENDOR_ID_PHILIPS,
  6437. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6438. .subvendor = 0x1131,
  6439. .subdevice = 0x4ee9,
  6440. .driver_data = SAA7134_BOARD_MONSTERTV_MOBILE,
  6441. },{
  6442. .vendor = PCI_VENDOR_ID_PHILIPS,
  6443. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6444. .subvendor = 0x11bd,
  6445. .subdevice = 0x002e,
  6446. .driver_data = SAA7134_BOARD_PINNACLE_PCTV_110i,
  6447. },{
  6448. .vendor = PCI_VENDOR_ID_PHILIPS,
  6449. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6450. .subvendor = 0x1043,
  6451. .subdevice = 0x4862,
  6452. .driver_data = SAA7134_BOARD_ASUSTeK_P7131_DUAL,
  6453. },{
  6454. .vendor = PCI_VENDOR_ID_PHILIPS,
  6455. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6456. .subvendor = PCI_VENDOR_ID_PHILIPS,
  6457. .subdevice = 0x2018,
  6458. .driver_data = SAA7134_BOARD_PHILIPS_TIGER,
  6459. },{
  6460. .vendor = PCI_VENDOR_ID_PHILIPS,
  6461. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6462. .subvendor = 0x1462,
  6463. .subdevice = 0x6231, /* tda8275a, ks003 IR */
  6464. .driver_data = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
  6465. },{
  6466. .vendor = PCI_VENDOR_ID_PHILIPS,
  6467. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6468. .subvendor = 0x1462,
  6469. .subdevice = 0x8624, /* tda8275, ks003 IR */
  6470. .driver_data = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
  6471. },{
  6472. .vendor = PCI_VENDOR_ID_PHILIPS,
  6473. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6474. .subvendor = 0x153b,
  6475. .subdevice = 0x1160,
  6476. .driver_data = SAA7134_BOARD_CINERGY250PCI,
  6477. },{
  6478. .vendor = PCI_VENDOR_ID_PHILIPS,
  6479. .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA 7131E */
  6480. .subvendor = 0x5168,
  6481. .subdevice = 0x0319,
  6482. .driver_data = SAA7134_BOARD_FLYDVB_TRIO,
  6483. },{
  6484. .vendor = PCI_VENDOR_ID_PHILIPS,
  6485. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6486. .subvendor = 0x1461,
  6487. .subdevice = 0x2c05,
  6488. .driver_data = SAA7134_BOARD_AVERMEDIA_777,
  6489. },{
  6490. .vendor = PCI_VENDOR_ID_PHILIPS,
  6491. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6492. .subvendor = 0x5168,
  6493. .subdevice = 0x0301,
  6494. .driver_data = SAA7134_BOARD_FLYDVBT_LR301,
  6495. },{
  6496. .vendor = PCI_VENDOR_ID_PHILIPS,
  6497. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6498. .subvendor = 0x0331,
  6499. .subdevice = 0x1421,
  6500. .driver_data = SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331,
  6501. },{
  6502. .vendor = PCI_VENDOR_ID_PHILIPS,
  6503. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6504. .subvendor = 0x17de,
  6505. .subdevice = 0x7201,
  6506. .driver_data = SAA7134_BOARD_TEVION_DVBT_220RF,
  6507. },{
  6508. .vendor = PCI_VENDOR_ID_PHILIPS,
  6509. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6510. .subvendor = 0x17de,
  6511. .subdevice = 0x7250,
  6512. .driver_data = SAA7134_BOARD_KWORLD_DVBT_210,
  6513. },{
  6514. .vendor = PCI_VENDOR_ID_PHILIPS,
  6515. .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
  6516. .subvendor = 0x17de,
  6517. .subdevice = 0x7350,
  6518. .driver_data = SAA7134_BOARD_KWORLD_ATSC110,
  6519. },{
  6520. .vendor = PCI_VENDOR_ID_PHILIPS,
  6521. .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
  6522. .subvendor = 0x17de,
  6523. .subdevice = 0x7352,
  6524. .driver_data = SAA7134_BOARD_KWORLD_ATSC110, /* ATSC 115 */
  6525. },{
  6526. .vendor = PCI_VENDOR_ID_PHILIPS,
  6527. .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
  6528. .subvendor = 0x17de,
  6529. .subdevice = 0xa134,
  6530. .driver_data = SAA7134_BOARD_KWORLD_PC150U,
  6531. }, {
  6532. .vendor = PCI_VENDOR_ID_PHILIPS,
  6533. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6534. .subvendor = 0x1461,
  6535. .subdevice = 0x7360,
  6536. .driver_data = SAA7134_BOARD_AVERMEDIA_A169_B,
  6537. },{
  6538. .vendor = PCI_VENDOR_ID_PHILIPS,
  6539. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6540. .subvendor = 0x1461,
  6541. .subdevice = 0x6360,
  6542. .driver_data = SAA7134_BOARD_AVERMEDIA_A169_B1,
  6543. },{
  6544. .vendor = PCI_VENDOR_ID_PHILIPS,
  6545. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6546. .subvendor = 0x16be,
  6547. .subdevice = 0x0005,
  6548. .driver_data = SAA7134_BOARD_MD7134_BRIDGE_2,
  6549. },{
  6550. .vendor = PCI_VENDOR_ID_PHILIPS,
  6551. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6552. .subvendor = 0x5168,
  6553. .subdevice = 0x0300,
  6554. .driver_data = SAA7134_BOARD_FLYDVBS_LR300,
  6555. },{
  6556. .vendor = PCI_VENDOR_ID_PHILIPS,
  6557. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6558. .subvendor = 0x4e42,
  6559. .subdevice = 0x0300,/* LR300 */
  6560. .driver_data = SAA7134_BOARD_FLYDVBS_LR300,
  6561. },{
  6562. .vendor = PCI_VENDOR_ID_PHILIPS,
  6563. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6564. .subvendor = 0x1489,
  6565. .subdevice = 0x0301,
  6566. .driver_data = SAA7134_BOARD_FLYDVBT_LR301,
  6567. },{
  6568. .vendor = PCI_VENDOR_ID_PHILIPS,
  6569. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6570. .subvendor = 0x5168, /* Animation Technologies (LifeView) */
  6571. .subdevice = 0x0304,
  6572. .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
  6573. },{
  6574. .vendor = PCI_VENDOR_ID_PHILIPS,
  6575. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6576. .subvendor = 0x5168,
  6577. .subdevice = 0x3306,
  6578. .driver_data = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
  6579. },{
  6580. .vendor = PCI_VENDOR_ID_PHILIPS,
  6581. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6582. .subvendor = 0x5168,
  6583. .subdevice = 0x3502, /* whats the difference to 0x3306 ?*/
  6584. .driver_data = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
  6585. },{
  6586. .vendor = PCI_VENDOR_ID_PHILIPS,
  6587. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6588. .subvendor = 0x5168,
  6589. .subdevice = 0x3307, /* FlyDVB-T Hybrid Mini PCI */
  6590. .driver_data = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
  6591. }, {
  6592. .vendor = PCI_VENDOR_ID_PHILIPS,
  6593. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6594. .subvendor = 0x16be,
  6595. .subdevice = 0x0007,
  6596. .driver_data = SAA7134_BOARD_MEDION_MD8800_QUADRO,
  6597. },{
  6598. .vendor = PCI_VENDOR_ID_PHILIPS,
  6599. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6600. .subvendor = 0x16be,
  6601. .subdevice = 0x0008,
  6602. .driver_data = SAA7134_BOARD_MEDION_MD8800_QUADRO,
  6603. },{
  6604. .vendor = PCI_VENDOR_ID_PHILIPS,
  6605. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6606. .subvendor = 0x16be,
  6607. .subdevice = 0x000d, /* triple CTX948_V1.1.1 */
  6608. .driver_data = SAA7134_BOARD_MEDION_MD8800_QUADRO,
  6609. }, {
  6610. .vendor = PCI_VENDOR_ID_PHILIPS,
  6611. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6612. .subvendor = 0x1461,
  6613. .subdevice = 0x2c05,
  6614. .driver_data = SAA7134_BOARD_AVERMEDIA_777,
  6615. },{
  6616. .vendor = PCI_VENDOR_ID_PHILIPS,
  6617. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6618. .subvendor = 0x1489,
  6619. .subdevice = 0x0502, /* Cardbus version */
  6620. .driver_data = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
  6621. },{
  6622. .vendor = PCI_VENDOR_ID_PHILIPS,
  6623. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6624. .subvendor = 0x0919, /* Philips Proteus PRO 2309 */
  6625. .subdevice = 0x2003,
  6626. .driver_data = SAA7134_BOARD_PROTEUS_2309,
  6627. },{
  6628. .vendor = PCI_VENDOR_ID_PHILIPS,
  6629. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6630. .subvendor = 0x1461,
  6631. .subdevice = 0x2c00,
  6632. .driver_data = SAA7134_BOARD_AVERMEDIA_A16AR,
  6633. },{
  6634. .vendor = PCI_VENDOR_ID_PHILIPS,
  6635. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6636. .subvendor = 0x1043,
  6637. .subdevice = 0x4860,
  6638. .driver_data = SAA7134_BOARD_ASUS_EUROPA2_HYBRID,
  6639. },{
  6640. .vendor = PCI_VENDOR_ID_PHILIPS,
  6641. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6642. .subvendor = 0x11bd,
  6643. .subdevice = 0x002f,
  6644. .driver_data = SAA7134_BOARD_PINNACLE_PCTV_310i,
  6645. },{
  6646. .vendor = PCI_VENDOR_ID_PHILIPS,
  6647. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6648. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6649. .subdevice = 0x9715,
  6650. .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_507,
  6651. },{
  6652. .vendor = PCI_VENDOR_ID_PHILIPS,
  6653. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6654. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6655. .subdevice = 0xa11b,
  6656. .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_507UA,
  6657. }, {
  6658. .vendor = PCI_VENDOR_ID_PHILIPS,
  6659. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6660. .subvendor = 0x1043,
  6661. .subdevice = 0x4876,
  6662. .driver_data = SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA,
  6663. },{
  6664. .vendor = PCI_VENDOR_ID_PHILIPS,
  6665. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6666. .subvendor = 0x0070,
  6667. .subdevice = 0x6700,
  6668. .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
  6669. },{
  6670. .vendor = PCI_VENDOR_ID_PHILIPS,
  6671. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6672. .subvendor = 0x0070,
  6673. .subdevice = 0x6701,
  6674. .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
  6675. },{
  6676. .vendor = PCI_VENDOR_ID_PHILIPS,
  6677. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6678. .subvendor = 0x0070,
  6679. .subdevice = 0x6702,
  6680. .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
  6681. },{
  6682. .vendor = PCI_VENDOR_ID_PHILIPS,
  6683. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6684. .subvendor = 0x0070,
  6685. .subdevice = 0x6703,
  6686. .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
  6687. },{
  6688. .vendor = PCI_VENDOR_ID_PHILIPS,
  6689. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6690. .subvendor = 0x0070,
  6691. .subdevice = 0x6704,
  6692. .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
  6693. },{
  6694. .vendor = PCI_VENDOR_ID_PHILIPS,
  6695. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6696. .subvendor = 0x0070,
  6697. .subdevice = 0x6705,
  6698. .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110,
  6699. },{
  6700. .vendor = PCI_VENDOR_ID_PHILIPS,
  6701. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6702. .subvendor = 0x0070,
  6703. .subdevice = 0x6706,
  6704. .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1150,
  6705. },{
  6706. .vendor = PCI_VENDOR_ID_PHILIPS,
  6707. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6708. .subvendor = 0x0070,
  6709. .subdevice = 0x6707,
  6710. .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1120,
  6711. },{
  6712. .vendor = PCI_VENDOR_ID_PHILIPS,
  6713. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6714. .subvendor = 0x0070,
  6715. .subdevice = 0x6708,
  6716. .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1150,
  6717. },{
  6718. .vendor = PCI_VENDOR_ID_PHILIPS,
  6719. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6720. .subvendor = 0x0070,
  6721. .subdevice = 0x6709,
  6722. .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1120,
  6723. },{
  6724. .vendor = PCI_VENDOR_ID_PHILIPS,
  6725. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6726. .subvendor = 0x0070,
  6727. .subdevice = 0x670a,
  6728. .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1120,
  6729. },{
  6730. .vendor = PCI_VENDOR_ID_PHILIPS,
  6731. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6732. .subvendor = 0x153b,
  6733. .subdevice = 0x1172,
  6734. .driver_data = SAA7134_BOARD_CINERGY_HT_PCMCIA,
  6735. },{
  6736. .vendor = PCI_VENDOR_ID_PHILIPS,
  6737. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6738. .subvendor = PCI_VENDOR_ID_PHILIPS,
  6739. .subdevice = 0x2342,
  6740. .driver_data = SAA7134_BOARD_ENCORE_ENLTV,
  6741. },{
  6742. .vendor = PCI_VENDOR_ID_PHILIPS,
  6743. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6744. .subvendor = 0x1131,
  6745. .subdevice = 0x2341,
  6746. .driver_data = SAA7134_BOARD_ENCORE_ENLTV,
  6747. },{
  6748. .vendor = PCI_VENDOR_ID_PHILIPS,
  6749. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6750. .subvendor = 0x3016,
  6751. .subdevice = 0x2344,
  6752. .driver_data = SAA7134_BOARD_ENCORE_ENLTV,
  6753. },{
  6754. .vendor = PCI_VENDOR_ID_PHILIPS,
  6755. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6756. .subvendor = 0x1131,
  6757. .subdevice = 0x230f,
  6758. .driver_data = SAA7134_BOARD_ENCORE_ENLTV_FM,
  6759. },{
  6760. .vendor = PCI_VENDOR_ID_PHILIPS,
  6761. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6762. .subvendor = 0x1a7f,
  6763. .subdevice = 0x2008,
  6764. .driver_data = SAA7134_BOARD_ENCORE_ENLTV_FM53,
  6765. }, {
  6766. .vendor = PCI_VENDOR_ID_PHILIPS,
  6767. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6768. .subvendor = 0x1a7f,
  6769. .subdevice = 0x2108,
  6770. .driver_data = SAA7134_BOARD_ENCORE_ENLTV_FM3,
  6771. }, {
  6772. .vendor = PCI_VENDOR_ID_PHILIPS,
  6773. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6774. .subvendor = 0x153b,
  6775. .subdevice = 0x1175,
  6776. .driver_data = SAA7134_BOARD_CINERGY_HT_PCI,
  6777. },{
  6778. .vendor = PCI_VENDOR_ID_PHILIPS,
  6779. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6780. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6781. .subdevice = 0xf31e,
  6782. .driver_data = SAA7134_BOARD_AVERMEDIA_M102,
  6783. },{
  6784. .vendor = PCI_VENDOR_ID_PHILIPS,
  6785. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6786. .subvendor = 0x4E42, /* MSI */
  6787. .subdevice = 0x0306, /* TV@nywhere DUO */
  6788. .driver_data = SAA7134_BOARD_FLYDVBTDUO,
  6789. },{
  6790. .vendor = PCI_VENDOR_ID_PHILIPS,
  6791. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6792. .subvendor = 0x1043,
  6793. .subdevice = 0x4871,
  6794. .driver_data = SAA7134_BOARD_ASUS_P7131_4871,
  6795. },{
  6796. .vendor = PCI_VENDOR_ID_PHILIPS,
  6797. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6798. .subvendor = 0x1043,
  6799. .subdevice = 0x4857, /* REV:1.00 */
  6800. .driver_data = SAA7134_BOARD_ASUSTeK_TIGER,
  6801. },{
  6802. .vendor = PCI_VENDOR_ID_PHILIPS,
  6803. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6804. .subvendor = 0x0919, /* SinoVideo PCI 2309 Proteus (7134) */
  6805. .subdevice = 0x2003, /* OEM cardbus */
  6806. .driver_data = SAA7134_BOARD_SABRENT_TV_PCB05,
  6807. },{
  6808. .vendor = PCI_VENDOR_ID_PHILIPS,
  6809. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6810. .subvendor = PCI_VENDOR_ID_PHILIPS,
  6811. .subdevice = 0x2304,
  6812. .driver_data = SAA7134_BOARD_10MOONSTVMASTER3,
  6813. },{
  6814. .vendor = PCI_VENDOR_ID_PHILIPS,
  6815. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6816. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  6817. .subdevice = 0xf01d, /* AVerTV DVB-T Super 007 */
  6818. .driver_data = SAA7134_BOARD_AVERMEDIA_SUPER_007,
  6819. },{
  6820. .vendor = PCI_VENDOR_ID_PHILIPS,
  6821. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6822. .subvendor = 0x0000,
  6823. .subdevice = 0x4016,
  6824. .driver_data = SAA7134_BOARD_BEHOLD_401,
  6825. },{
  6826. .vendor = PCI_VENDOR_ID_PHILIPS,
  6827. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6828. .subvendor = 0x0000,
  6829. .subdevice = 0x4036,
  6830. .driver_data = SAA7134_BOARD_BEHOLD_403,
  6831. },{
  6832. .vendor = PCI_VENDOR_ID_PHILIPS,
  6833. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6834. .subvendor = 0x0000,
  6835. .subdevice = 0x4037,
  6836. .driver_data = SAA7134_BOARD_BEHOLD_403FM,
  6837. },{
  6838. .vendor = PCI_VENDOR_ID_PHILIPS,
  6839. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6840. .subvendor = 0x0000,
  6841. .subdevice = 0x4050,
  6842. .driver_data = SAA7134_BOARD_BEHOLD_405,
  6843. },{
  6844. .vendor = PCI_VENDOR_ID_PHILIPS,
  6845. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6846. .subvendor = 0x0000,
  6847. .subdevice = 0x4051,
  6848. .driver_data = SAA7134_BOARD_BEHOLD_405FM,
  6849. },{
  6850. .vendor = PCI_VENDOR_ID_PHILIPS,
  6851. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6852. .subvendor = 0x0000,
  6853. .subdevice = 0x4070,
  6854. .driver_data = SAA7134_BOARD_BEHOLD_407,
  6855. },{
  6856. .vendor = PCI_VENDOR_ID_PHILIPS,
  6857. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6858. .subvendor = 0x0000,
  6859. .subdevice = 0x4071,
  6860. .driver_data = SAA7134_BOARD_BEHOLD_407FM,
  6861. },{
  6862. .vendor = PCI_VENDOR_ID_PHILIPS,
  6863. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6864. .subvendor = 0x0000,
  6865. .subdevice = 0x4090,
  6866. .driver_data = SAA7134_BOARD_BEHOLD_409,
  6867. },{
  6868. .vendor = PCI_VENDOR_ID_PHILIPS,
  6869. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6870. .subvendor = 0x0000,
  6871. .subdevice = 0x505B,
  6872. .driver_data = SAA7134_BOARD_BEHOLD_505RDS_MK5,
  6873. }, {
  6874. .vendor = PCI_VENDOR_ID_PHILIPS,
  6875. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6876. .subvendor = 0x0000,
  6877. .subdevice = 0x5051,
  6878. .driver_data = SAA7134_BOARD_BEHOLD_505RDS_MK3,
  6879. },{
  6880. .vendor = PCI_VENDOR_ID_PHILIPS,
  6881. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  6882. .subvendor = 0x5ace,
  6883. .subdevice = 0x5050,
  6884. .driver_data = SAA7134_BOARD_BEHOLD_505FM,
  6885. },{
  6886. .vendor = PCI_VENDOR_ID_PHILIPS,
  6887. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6888. .subvendor = 0x0000,
  6889. .subdevice = 0x5071,
  6890. .driver_data = SAA7134_BOARD_BEHOLD_507RDS_MK3,
  6891. },{
  6892. .vendor = PCI_VENDOR_ID_PHILIPS,
  6893. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6894. .subvendor = 0x0000,
  6895. .subdevice = 0x507B,
  6896. .driver_data = SAA7134_BOARD_BEHOLD_507RDS_MK5,
  6897. },{
  6898. .vendor = PCI_VENDOR_ID_PHILIPS,
  6899. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6900. .subvendor = 0x5ace,
  6901. .subdevice = 0x5070,
  6902. .driver_data = SAA7134_BOARD_BEHOLD_507_9FM,
  6903. },{
  6904. .vendor = PCI_VENDOR_ID_PHILIPS,
  6905. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6906. .subvendor = 0x5ace,
  6907. .subdevice = 0x5090,
  6908. .driver_data = SAA7134_BOARD_BEHOLD_507_9FM,
  6909. },{
  6910. .vendor = PCI_VENDOR_ID_PHILIPS,
  6911. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6912. .subvendor = 0x0000,
  6913. .subdevice = 0x5201,
  6914. .driver_data = SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM,
  6915. },{
  6916. .vendor = PCI_VENDOR_ID_PHILIPS,
  6917. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6918. .subvendor = 0x5ace,
  6919. .subdevice = 0x6070,
  6920. .driver_data = SAA7134_BOARD_BEHOLD_607FM_MK3,
  6921. },{
  6922. .vendor = PCI_VENDOR_ID_PHILIPS,
  6923. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6924. .subvendor = 0x5ace,
  6925. .subdevice = 0x6071,
  6926. .driver_data = SAA7134_BOARD_BEHOLD_607FM_MK5,
  6927. },{
  6928. .vendor = PCI_VENDOR_ID_PHILIPS,
  6929. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6930. .subvendor = 0x5ace,
  6931. .subdevice = 0x6072,
  6932. .driver_data = SAA7134_BOARD_BEHOLD_607RDS_MK3,
  6933. },{
  6934. .vendor = PCI_VENDOR_ID_PHILIPS,
  6935. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  6936. .subvendor = 0x5ace,
  6937. .subdevice = 0x6073,
  6938. .driver_data = SAA7134_BOARD_BEHOLD_607RDS_MK5,
  6939. },{
  6940. .vendor = PCI_VENDOR_ID_PHILIPS,
  6941. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6942. .subvendor = 0x5ace,
  6943. .subdevice = 0x6090,
  6944. .driver_data = SAA7134_BOARD_BEHOLD_609FM_MK3,
  6945. },{
  6946. .vendor = PCI_VENDOR_ID_PHILIPS,
  6947. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6948. .subvendor = 0x5ace,
  6949. .subdevice = 0x6091,
  6950. .driver_data = SAA7134_BOARD_BEHOLD_609FM_MK5,
  6951. },{
  6952. .vendor = PCI_VENDOR_ID_PHILIPS,
  6953. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6954. .subvendor = 0x5ace,
  6955. .subdevice = 0x6092,
  6956. .driver_data = SAA7134_BOARD_BEHOLD_609RDS_MK3,
  6957. },{
  6958. .vendor = PCI_VENDOR_ID_PHILIPS,
  6959. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6960. .subvendor = 0x5ace,
  6961. .subdevice = 0x6093,
  6962. .driver_data = SAA7134_BOARD_BEHOLD_609RDS_MK5,
  6963. },{
  6964. .vendor = PCI_VENDOR_ID_PHILIPS,
  6965. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6966. .subvendor = 0x5ace,
  6967. .subdevice = 0x6190,
  6968. .driver_data = SAA7134_BOARD_BEHOLD_M6,
  6969. },{
  6970. .vendor = PCI_VENDOR_ID_PHILIPS,
  6971. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6972. .subvendor = 0x5ace,
  6973. .subdevice = 0x6193,
  6974. .driver_data = SAA7134_BOARD_BEHOLD_M6_EXTRA,
  6975. }, {
  6976. .vendor = PCI_VENDOR_ID_PHILIPS,
  6977. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6978. .subvendor = 0x5ace,
  6979. .subdevice = 0x6191,
  6980. .driver_data = SAA7134_BOARD_BEHOLD_M63,
  6981. },{
  6982. .vendor = PCI_VENDOR_ID_PHILIPS,
  6983. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6984. .subvendor = 0x4e42,
  6985. .subdevice = 0x3502,
  6986. .driver_data = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
  6987. }, {
  6988. .vendor = PCI_VENDOR_ID_PHILIPS,
  6989. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6990. .subvendor = 0x1822, /*Twinhan Technology Co. Ltd*/
  6991. .subdevice = 0x0022,
  6992. .driver_data = SAA7134_BOARD_TWINHAN_DTV_DVB_3056,
  6993. }, {
  6994. .vendor = PCI_VENDOR_ID_PHILIPS,
  6995. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  6996. .subvendor = 0x16be,
  6997. .subdevice = 0x0010, /* Medion version CTX953_V.1.4.3 */
  6998. .driver_data = SAA7134_BOARD_CREATIX_CTX953,
  6999. }, {
  7000. .vendor = PCI_VENDOR_ID_PHILIPS,
  7001. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7002. .subvendor = 0x1462, /* MSI */
  7003. .subdevice = 0x8625, /* TV@nywhere A/D v1.1 */
  7004. .driver_data = SAA7134_BOARD_MSI_TVANYWHERE_AD11,
  7005. },{
  7006. .vendor = PCI_VENDOR_ID_PHILIPS,
  7007. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7008. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  7009. .subdevice = 0xf436,
  7010. .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS_506,
  7011. }, {
  7012. .vendor = PCI_VENDOR_ID_PHILIPS,
  7013. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7014. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  7015. .subdevice = 0xf936,
  7016. .driver_data = SAA7134_BOARD_AVERMEDIA_A16D,
  7017. }, {
  7018. .vendor = PCI_VENDOR_ID_PHILIPS,
  7019. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7020. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  7021. .subdevice = 0xa836,
  7022. .driver_data = SAA7134_BOARD_AVERMEDIA_M115,
  7023. }, {
  7024. .vendor = PCI_VENDOR_ID_PHILIPS,
  7025. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7026. .subvendor = 0x185b,
  7027. .subdevice = 0xc900,
  7028. .driver_data = SAA7134_BOARD_VIDEOMATE_T750,
  7029. }, {
  7030. .vendor = PCI_VENDOR_ID_PHILIPS,
  7031. .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
  7032. .subvendor = 0x1421,
  7033. .subdevice = 0x0380,
  7034. .driver_data = SAA7134_BOARD_ADS_INSTANT_HDTV_PCI,
  7035. }, {
  7036. .vendor = PCI_VENDOR_ID_PHILIPS,
  7037. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7038. .subvendor = 0x5169,
  7039. .subdevice = 0x1502,
  7040. .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI,
  7041. }, {
  7042. .vendor = PCI_VENDOR_ID_PHILIPS,
  7043. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7044. .subvendor = 0x5ace,
  7045. .subdevice = 0x6290,
  7046. .driver_data = SAA7134_BOARD_BEHOLD_H6,
  7047. }, {
  7048. .vendor = PCI_VENDOR_ID_PHILIPS,
  7049. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7050. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  7051. .subdevice = 0xf636,
  7052. .driver_data = SAA7134_BOARD_AVERMEDIA_M103,
  7053. }, {
  7054. .vendor = PCI_VENDOR_ID_PHILIPS,
  7055. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7056. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  7057. .subdevice = 0xf736,
  7058. .driver_data = SAA7134_BOARD_AVERMEDIA_M103,
  7059. }, {
  7060. .vendor = PCI_VENDOR_ID_PHILIPS,
  7061. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7062. .subvendor = 0x1043,
  7063. .subdevice = 0x4878, /* REV:1.02G */
  7064. .driver_data = SAA7134_BOARD_ASUSTeK_TIGER_3IN1,
  7065. }, {
  7066. .vendor = PCI_VENDOR_ID_PHILIPS,
  7067. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7068. .subvendor = 0x1043,
  7069. .subdevice = 0x48cd,
  7070. .driver_data = SAA7134_BOARD_ASUSTeK_PS3_100,
  7071. }, {
  7072. .vendor = PCI_VENDOR_ID_PHILIPS,
  7073. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  7074. .subvendor = 0x17de,
  7075. .subdevice = 0x7128,
  7076. .driver_data = SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG,
  7077. }, {
  7078. .vendor = PCI_VENDOR_ID_PHILIPS,
  7079. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7080. .subvendor = 0x17de,
  7081. .subdevice = 0xb136,
  7082. .driver_data = SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG,
  7083. }, {
  7084. .vendor = PCI_VENDOR_ID_PHILIPS,
  7085. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7086. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  7087. .subdevice = 0xf31d,
  7088. .driver_data = SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS,
  7089. }, {
  7090. .vendor = PCI_VENDOR_ID_PHILIPS,
  7091. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  7092. .subvendor = 0x185b,
  7093. .subdevice = 0xc900,
  7094. .driver_data = SAA7134_BOARD_VIDEOMATE_S350,
  7095. }, {
  7096. .vendor = PCI_VENDOR_ID_PHILIPS,
  7097. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7098. .subvendor = 0x5ace, /* Beholder Intl. Ltd. */
  7099. .subdevice = 0x7595,
  7100. .driver_data = SAA7134_BOARD_BEHOLD_X7,
  7101. }, {
  7102. .vendor = PCI_VENDOR_ID_PHILIPS,
  7103. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  7104. .subvendor = 0x19d1, /* RoverMedia */
  7105. .subdevice = 0x0138, /* LifeView FlyTV Prime30 OEM */
  7106. .driver_data = SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM,
  7107. }, {
  7108. .vendor = PCI_VENDOR_ID_PHILIPS,
  7109. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7110. .subvendor = PCI_VENDOR_ID_PHILIPS,
  7111. .subdevice = 0x2004,
  7112. .driver_data = SAA7134_BOARD_ZOLID_HYBRID_PCI,
  7113. }, {
  7114. .vendor = PCI_VENDOR_ID_PHILIPS,
  7115. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  7116. .subvendor = 0x1043,
  7117. .subdevice = 0x4847,
  7118. .driver_data = SAA7134_BOARD_ASUS_EUROPA_HYBRID,
  7119. }, {
  7120. .vendor = PCI_VENDOR_ID_PHILIPS,
  7121. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  7122. .subvendor = 0x107d,
  7123. .subdevice = 0x6655,
  7124. .driver_data = SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S,
  7125.  
  7126. }, {
  7127. .vendor = PCI_VENDOR_ID_PHILIPS,
  7128. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  7129. .subvendor = 0x107d,
  7130. .subdevice = 0x6f3a,
  7131. .driver_data = SAA7134_BOARD_LEADTEK_WINFAST_TV2100FM,
  7132.  
  7133. }, {
  7134. .vendor = PCI_VENDOR_ID_PHILIPS,
  7135. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7136. .subvendor = 0x13c2,
  7137. .subdevice = 0x2804,
  7138. .driver_data = SAA7134_BOARD_TECHNOTREND_BUDGET_T3000,
  7139. }, {
  7140. .vendor = PCI_VENDOR_ID_PHILIPS,
  7141. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7142. .subvendor = 0x5ace, /* Beholder Intl. Ltd. */
  7143. .subdevice = 0x7190,
  7144. .driver_data = SAA7134_BOARD_BEHOLD_H7,
  7145. }, {
  7146. .vendor = PCI_VENDOR_ID_PHILIPS,
  7147. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7148. .subvendor = 0x5ace, /* Beholder Intl. Ltd. */
  7149. .subdevice = 0x7090,
  7150. .driver_data = SAA7134_BOARD_BEHOLD_A7,
  7151. }, {
  7152. .vendor = PCI_VENDOR_ID_PHILIPS,
  7153. .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
  7154. .subvendor = 0x185b,
  7155. .subdevice = 0xc900,
  7156. .driver_data = SAA7134_BOARD_VIDEOMATE_M1F,
  7157. }, {
  7158. .vendor = PCI_VENDOR_ID_PHILIPS,
  7159. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7160. .subvendor = 0x5ace,
  7161. .subdevice = 0x5030,
  7162. .driver_data = SAA7134_BOARD_BEHOLD_503FM,
  7163. }, {
  7164. .vendor = PCI_VENDOR_ID_PHILIPS,
  7165. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  7166. .subvendor = 0x5ace,
  7167. .subdevice = 0x5010,
  7168. .driver_data = SAA7134_BOARD_BEHOLD_501,
  7169. }, {
  7170. .vendor = PCI_VENDOR_ID_PHILIPS,
  7171. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  7172. .subvendor = 0x17de,
  7173. .subdevice = 0xd136,
  7174. .driver_data = SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2,
  7175. }, {
  7176. .vendor = PCI_VENDOR_ID_PHILIPS,
  7177. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7178. .subvendor = 0x6000,
  7179. .subdevice = 0x0811,
  7180. .driver_data = SAA7134_BOARD_SENSORAY811_911,
  7181. }, {
  7182. .vendor = PCI_VENDOR_ID_PHILIPS,
  7183. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7184. .subvendor = 0x6000,
  7185. .subdevice = 0x0911,
  7186. .driver_data = SAA7134_BOARD_SENSORAY811_911,
  7187. }, {
  7188. .vendor = PCI_VENDOR_ID_PHILIPS,
  7189. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7190. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  7191. .subdevice = 0x2055, /* AverTV Satellite Hybrid+FM A706 */
  7192. .driver_data = SAA7134_BOARD_AVERMEDIA_A706,
  7193. }, {
  7194. .vendor = PCI_VENDOR_ID_PHILIPS,
  7195. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7196. .subvendor = 0x1905, /* WIS */
  7197. .subdevice = 0x7007,
  7198. .driver_data = SAA7134_BOARD_WIS_VOYAGER,
  7199. }, {
  7200. .vendor = PCI_VENDOR_ID_PHILIPS,
  7201. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  7202. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  7203. .subdevice = 0xa10a,
  7204. .driver_data = SAA7134_BOARD_AVERMEDIA_505,
  7205. }, {
  7206. /* --- boards without eeprom + subsystem ID --- */
  7207. .vendor = PCI_VENDOR_ID_PHILIPS,
  7208. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  7209. .subvendor = PCI_VENDOR_ID_PHILIPS,
  7210. .subdevice = 0,
  7211. .driver_data = SAA7134_BOARD_NOAUTO,
  7212. },{
  7213. .vendor = PCI_VENDOR_ID_PHILIPS,
  7214. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  7215. .subvendor = PCI_VENDOR_ID_PHILIPS,
  7216. .subdevice = 0,
  7217. .driver_data = SAA7134_BOARD_NOAUTO,
  7218. },{
  7219. /* --- default catch --- */
  7220. .vendor = PCI_VENDOR_ID_PHILIPS,
  7221. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  7222. .subvendor = PCI_ANY_ID,
  7223. .subdevice = PCI_ANY_ID,
  7224. .driver_data = SAA7134_BOARD_UNKNOWN,
  7225. },{
  7226. .vendor = PCI_VENDOR_ID_PHILIPS,
  7227. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  7228. .subvendor = PCI_ANY_ID,
  7229. .subdevice = PCI_ANY_ID,
  7230. .driver_data = SAA7134_BOARD_UNKNOWN,
  7231. },{
  7232. .vendor = PCI_VENDOR_ID_PHILIPS,
  7233. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  7234. .subvendor = PCI_ANY_ID,
  7235. .subdevice = PCI_ANY_ID,
  7236. .driver_data = SAA7134_BOARD_UNKNOWN,
  7237. },{
  7238. .vendor = PCI_VENDOR_ID_PHILIPS,
  7239. .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
  7240. .subvendor = PCI_ANY_ID,
  7241. .subdevice = PCI_ANY_ID,
  7242. .driver_data = SAA7134_BOARD_UNKNOWN,
  7243. },{
  7244. /* --- end of list --- */
  7245. }
  7246. };
  7247. MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
  7248.  
  7249. /* ----------------------------------------------------------- */
  7250. /* flyvideo tweaks */
  7251.  
  7252.  
  7253. static void board_flyvideo(struct saa7134_dev *dev)
  7254. {
  7255. pr_warn("%s: there are different flyvideo cards with different tuners\n"
  7256. "%s: out there, you might have to use the tuner=<nr> insmod\n"
  7257. "%s: option to override the default value.\n",
  7258. dev->name, dev->name, dev->name);
  7259. }
  7260.  
  7261. static int saa7134_xc2028_callback(struct saa7134_dev *dev,
  7262. int command, int arg)
  7263. {
  7264. switch (command) {
  7265. case XC2028_TUNER_RESET:
  7266. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00000000);
  7267. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000);
  7268. switch (dev->board) {
  7269. case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
  7270. case SAA7134_BOARD_AVERMEDIA_M103:
  7271. saa7134_set_gpio(dev, 23, 0);
  7272. msleep(10);
  7273. saa7134_set_gpio(dev, 23, 1);
  7274. break;
  7275. case SAA7134_BOARD_AVERMEDIA_A16D:
  7276. saa7134_set_gpio(dev, 21, 0);
  7277. msleep(10);
  7278. saa7134_set_gpio(dev, 21, 1);
  7279. break;
  7280. case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
  7281. saa7134_set_gpio(dev, 18, 0);
  7282. msleep(10);
  7283. saa7134_set_gpio(dev, 18, 1);
  7284. break;
  7285. case SAA7134_BOARD_VIDEOMATE_T750:
  7286. saa7134_set_gpio(dev, 20, 0);
  7287. msleep(10);
  7288. saa7134_set_gpio(dev, 20, 1);
  7289. break;
  7290. }
  7291. return 0;
  7292. }
  7293. return -EINVAL;
  7294. }
  7295.  
  7296. static int saa7134_xc5000_callback(struct saa7134_dev *dev,
  7297. int command, int arg)
  7298. {
  7299. switch (dev->board) {
  7300. case SAA7134_BOARD_BEHOLD_X7:
  7301. case SAA7134_BOARD_BEHOLD_H7:
  7302. case SAA7134_BOARD_BEHOLD_A7:
  7303. if (command == XC5000_TUNER_RESET) {
  7304. /* Down and UP pheripherial RESET pin for reset all chips */
  7305. saa_writeb(SAA7134_SPECIAL_MODE, 0x00);
  7306. msleep(10);
  7307. saa_writeb(SAA7134_SPECIAL_MODE, 0x01);
  7308. msleep(10);
  7309. }
  7310. break;
  7311. default:
  7312. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x06e20000, 0x06e20000);
  7313. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x06a20000, 0x06a20000);
  7314. saa_andorl(SAA7133_ANALOG_IO_SELECT >> 2, 0x02, 0x02);
  7315. saa_andorl(SAA7134_ANALOG_IN_CTRL1 >> 2, 0x81, 0x81);
  7316. saa_andorl(SAA7134_AUDIO_CLOCK0 >> 2, 0x03187de7, 0x03187de7);
  7317. saa_andorl(SAA7134_AUDIO_PLL_CTRL >> 2, 0x03, 0x03);
  7318. saa_andorl(SAA7134_AUDIO_CLOCKS_PER_FIELD0 >> 2,
  7319. 0x0001e000, 0x0001e000);
  7320. break;
  7321. }
  7322. return 0;
  7323. }
  7324.  
  7325. static int saa7134_tda8290_827x_callback(struct saa7134_dev *dev,
  7326. int command, int arg)
  7327. {
  7328. u8 sync_control;
  7329.  
  7330. switch (command) {
  7331. case 0: /* switch LNA gain through GPIO 22*/
  7332. saa7134_set_gpio(dev, 22, arg) ;
  7333. break;
  7334. case 1: /* vsync output at GPIO22. 50 / 60Hz */
  7335. saa_andorb(SAA7134_VIDEO_PORT_CTRL3, 0x80, 0x80);
  7336. saa_andorb(SAA7134_VIDEO_PORT_CTRL6, 0x0f, 0x03);
  7337. if (arg == 1)
  7338. sync_control = 11;
  7339. else
  7340. sync_control = 17;
  7341. saa_writeb(SAA7134_VGATE_START, sync_control);
  7342. saa_writeb(SAA7134_VGATE_STOP, sync_control + 1);
  7343. saa_andorb(SAA7134_MISC_VGATE_MSB, 0x03, 0x00);
  7344. break;
  7345. default:
  7346. return -EINVAL;
  7347. }
  7348.  
  7349. return 0;
  7350. }
  7351.  
  7352. static inline int saa7134_tda18271_hvr11x0_toggle_agc(struct saa7134_dev *dev,
  7353. enum tda18271_mode mode)
  7354. {
  7355. /* toggle AGC switch through GPIO 26 */
  7356. switch (mode) {
  7357. case TDA18271_ANALOG:
  7358. saa7134_set_gpio(dev, 26, 0);
  7359. break;
  7360. case TDA18271_DIGITAL:
  7361. saa7134_set_gpio(dev, 26, 1);
  7362. break;
  7363. default:
  7364. return -EINVAL;
  7365. }
  7366. return 0;
  7367. }
  7368.  
  7369. static inline int saa7134_kworld_sbtvd_toggle_agc(struct saa7134_dev *dev,
  7370. enum tda18271_mode mode)
  7371. {
  7372. /* toggle AGC switch through GPIO 27 */
  7373. switch (mode) {
  7374. case TDA18271_ANALOG:
  7375. saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x4000);
  7376. saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x4000);
  7377. msleep(20);
  7378. break;
  7379. case TDA18271_DIGITAL:
  7380. saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x14000);
  7381. saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x14000);
  7382. msleep(20);
  7383. saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x54000);
  7384. saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x54000);
  7385. msleep(30);
  7386. break;
  7387. default:
  7388. return -EINVAL;
  7389. }
  7390. return 0;
  7391. }
  7392.  
  7393. static int saa7134_kworld_pc150u_toggle_agc(struct saa7134_dev *dev,
  7394. enum tda18271_mode mode)
  7395. {
  7396. switch (mode) {
  7397. case TDA18271_ANALOG:
  7398. saa7134_set_gpio(dev, 18, 0);
  7399. break;
  7400. case TDA18271_DIGITAL:
  7401. saa7134_set_gpio(dev, 18, 1);
  7402. msleep(30);
  7403. break;
  7404. default:
  7405. return -EINVAL;
  7406. }
  7407. return 0;
  7408. }
  7409.  
  7410. static int saa7134_tda8290_18271_callback(struct saa7134_dev *dev,
  7411. int command, int arg)
  7412. {
  7413. int ret = 0;
  7414.  
  7415. switch (command) {
  7416. case TDA18271_CALLBACK_CMD_AGC_ENABLE: /* 0 */
  7417. switch (dev->board) {
  7418. case SAA7134_BOARD_HAUPPAUGE_HVR1150:
  7419. case SAA7134_BOARD_HAUPPAUGE_HVR1120:
  7420. case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2:
  7421. ret = saa7134_tda18271_hvr11x0_toggle_agc(dev, arg);
  7422. break;
  7423. case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
  7424. ret = saa7134_kworld_sbtvd_toggle_agc(dev, arg);
  7425. break;
  7426. case SAA7134_BOARD_KWORLD_PC150U:
  7427. ret = saa7134_kworld_pc150u_toggle_agc(dev, arg);
  7428. break;
  7429. default:
  7430. break;
  7431. }
  7432. break;
  7433. default:
  7434. ret = -EINVAL;
  7435. break;
  7436. }
  7437. return ret;
  7438. }
  7439.  
  7440. static int saa7134_tda8290_callback(struct saa7134_dev *dev,
  7441. int command, int arg)
  7442. {
  7443. int ret;
  7444.  
  7445. switch (dev->board) {
  7446. case SAA7134_BOARD_HAUPPAUGE_HVR1150:
  7447. case SAA7134_BOARD_HAUPPAUGE_HVR1120:
  7448. case SAA7134_BOARD_AVERMEDIA_M733A:
  7449. case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
  7450. case SAA7134_BOARD_KWORLD_PC150U:
  7451. case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2:
  7452. /* tda8290 + tda18271 */
  7453. ret = saa7134_tda8290_18271_callback(dev, command, arg);
  7454. break;
  7455. default:
  7456. /* tda8290 + tda827x */
  7457. ret = saa7134_tda8290_827x_callback(dev, command, arg);
  7458. break;
  7459. }
  7460. return ret;
  7461. }
  7462.  
  7463. int saa7134_tuner_callback(void *priv, int component, int command, int arg)
  7464. {
  7465. struct saa7134_dev *dev = priv;
  7466.  
  7467. if (dev != NULL) {
  7468. switch (dev->tuner_type) {
  7469. case TUNER_PHILIPS_TDA8290:
  7470. return saa7134_tda8290_callback(dev, command, arg);
  7471. case TUNER_XC2028:
  7472. return saa7134_xc2028_callback(dev, command, arg);
  7473. case TUNER_XC5000:
  7474. return saa7134_xc5000_callback(dev, command, arg);
  7475. }
  7476. } else {
  7477. pr_err("saa7134: Error - device struct undefined.\n");
  7478. return -EINVAL;
  7479. }
  7480. return -EINVAL;
  7481. }
  7482. EXPORT_SYMBOL(saa7134_tuner_callback);
  7483.  
  7484. /* ----------------------------------------------------------- */
  7485.  
  7486. static void hauppauge_eeprom(struct saa7134_dev *dev, u8 *eeprom_data)
  7487. {
  7488. struct tveeprom tv;
  7489.  
  7490. tveeprom_hauppauge_analog(&dev->i2c_client, &tv, eeprom_data);
  7491.  
  7492. /* Make sure we support the board model */
  7493. switch (tv.model) {
  7494. case 67019: /* WinTV-HVR1110 (Retail, IR Blaster, hybrid, FM, SVid/Comp, 3.5mm audio in) */
  7495. case 67109: /* WinTV-HVR1000 (Retail, IR Receive, analog, no FM, SVid/Comp, 3.5mm audio in) */
  7496. case 67201: /* WinTV-HVR1150 (Retail, IR Receive, hybrid, FM, SVid/Comp, 3.5mm audio in) */
  7497. case 67301: /* WinTV-HVR1000 (Retail, IR Receive, analog, no FM, SVid/Comp, 3.5mm audio in) */
  7498. case 67209: /* WinTV-HVR1110 (Retail, IR Receive, hybrid, FM, SVid/Comp, 3.5mm audio in) */
  7499. case 67559: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
  7500. case 67569: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM) */
  7501. case 67579: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM) */
  7502. case 67589: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
  7503. case 67599: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
  7504. case 67651: /* WinTV-HVR1150 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
  7505. case 67659: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
  7506. break;
  7507. default:
  7508. pr_warn("%s: warning: "
  7509. "unknown hauppauge model #%d\n", dev->name, tv.model);
  7510. break;
  7511. }
  7512.  
  7513. pr_info("%s: hauppauge eeprom: model=%d\n",
  7514. dev->name, tv.model);
  7515. }
  7516.  
  7517. /* ----------------------------------------------------------- */
  7518.  
  7519. int saa7134_board_init1(struct saa7134_dev *dev)
  7520. {
  7521. /* Always print gpio, often manufacturers encode tuner type and other info. */
  7522. saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
  7523. dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
  7524. pr_info("%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
  7525.  
  7526. switch (dev->board) {
  7527. case SAA7134_BOARD_FLYVIDEO2000:
  7528. case SAA7134_BOARD_FLYVIDEO3000:
  7529. case SAA7134_BOARD_FLYVIDEO3000_NTSC:
  7530. dev->has_remote = SAA7134_REMOTE_GPIO;
  7531. board_flyvideo(dev);
  7532. break;
  7533. case SAA7134_BOARD_FLYTVPLATINUM_MINI2:
  7534. case SAA7134_BOARD_FLYTVPLATINUM_FM:
  7535. case SAA7134_BOARD_CINERGY400:
  7536. case SAA7134_BOARD_CINERGY600:
  7537. case SAA7134_BOARD_CINERGY600_MK3:
  7538. case SAA7134_BOARD_ECS_TVP3XP:
  7539. case SAA7134_BOARD_ECS_TVP3XP_4CB5:
  7540. case SAA7134_BOARD_ECS_TVP3XP_4CB6:
  7541. case SAA7134_BOARD_MD2819:
  7542. case SAA7134_BOARD_KWORLD_VSTREAM_XPERT:
  7543. case SAA7134_BOARD_KWORLD_XPERT:
  7544. case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
  7545. case SAA7134_BOARD_AVERMEDIA_305:
  7546. case SAA7134_BOARD_AVERMEDIA_STUDIO_505:
  7547. case SAA7134_BOARD_AVERMEDIA_505:
  7548. case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
  7549. case SAA7134_BOARD_AVERMEDIA_307:
  7550. case SAA7134_BOARD_AVERMEDIA_STUDIO_507:
  7551. case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
  7552. case SAA7134_BOARD_AVERMEDIA_777:
  7553. case SAA7134_BOARD_AVERMEDIA_M135A:
  7554. /* case SAA7134_BOARD_SABRENT_SBTTVFM: */ /* not finished yet */
  7555. case SAA7134_BOARD_VIDEOMATE_TV_PVR:
  7556. case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS:
  7557. case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII:
  7558. case SAA7134_BOARD_VIDEOMATE_M1F:
  7559. case SAA7134_BOARD_VIDEOMATE_DVBT_300:
  7560. case SAA7134_BOARD_VIDEOMATE_DVBT_200:
  7561. case SAA7134_BOARD_VIDEOMATE_DVBT_200A:
  7562. case SAA7134_BOARD_MANLI_MTV001:
  7563. case SAA7134_BOARD_MANLI_MTV002:
  7564. case SAA7134_BOARD_BEHOLD_409FM:
  7565. case SAA7134_BOARD_AVACSSMARTTV:
  7566. case SAA7134_BOARD_GOTVIEW_7135:
  7567. case SAA7134_BOARD_KWORLD_TERMINATOR:
  7568. case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS:
  7569. case SAA7134_BOARD_FLYDVBT_LR301:
  7570. case SAA7134_BOARD_ASUSTeK_PS3_100:
  7571. case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
  7572. case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
  7573. case SAA7134_BOARD_ASUSTeK_P7131_ANALOG:
  7574. case SAA7134_BOARD_FLYDVBTDUO:
  7575. case SAA7134_BOARD_PROTEUS_2309:
  7576. case SAA7134_BOARD_AVERMEDIA_A16AR:
  7577. case SAA7134_BOARD_ENCORE_ENLTV:
  7578. case SAA7134_BOARD_ENCORE_ENLTV_FM:
  7579. case SAA7134_BOARD_ENCORE_ENLTV_FM53:
  7580. case SAA7134_BOARD_ENCORE_ENLTV_FM3:
  7581. case SAA7134_BOARD_10MOONSTVMASTER3:
  7582. case SAA7134_BOARD_BEHOLD_401:
  7583. case SAA7134_BOARD_BEHOLD_403:
  7584. case SAA7134_BOARD_BEHOLD_403FM:
  7585. case SAA7134_BOARD_BEHOLD_405:
  7586. case SAA7134_BOARD_BEHOLD_405FM:
  7587. case SAA7134_BOARD_BEHOLD_407:
  7588. case SAA7134_BOARD_BEHOLD_407FM:
  7589. case SAA7134_BOARD_BEHOLD_409:
  7590. case SAA7134_BOARD_BEHOLD_505FM:
  7591. case SAA7134_BOARD_BEHOLD_505RDS_MK5:
  7592. case SAA7134_BOARD_BEHOLD_505RDS_MK3:
  7593. case SAA7134_BOARD_BEHOLD_507_9FM:
  7594. case SAA7134_BOARD_BEHOLD_507RDS_MK3:
  7595. case SAA7134_BOARD_BEHOLD_507RDS_MK5:
  7596. case SAA7134_BOARD_GENIUS_TVGO_A11MCE:
  7597. case SAA7134_BOARD_REAL_ANGEL_220:
  7598. case SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG:
  7599. case SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS:
  7600. case SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM:
  7601. case SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S:
  7602. dev->has_remote = SAA7134_REMOTE_GPIO;
  7603. break;
  7604. case SAA7134_BOARD_FLYDVBS_LR300:
  7605. saa_writeb(SAA7134_GPIO_GPMODE3, 0x80);
  7606. saa_writeb(SAA7134_GPIO_GPSTATUS2, 0x40);
  7607. dev->has_remote = SAA7134_REMOTE_GPIO;
  7608. break;
  7609. case SAA7134_BOARD_MD5044:
  7610. pr_warn("%s: seems there are two different versions of the MD5044\n"
  7611. "%s: (with the same ID) out there. If sound doesn't work for\n"
  7612. "%s: you try the audio_clock_override=0x200000 insmod option.\n",
  7613. dev->name, dev->name, dev->name);
  7614. break;
  7615. case SAA7134_BOARD_CINERGY400_CARDBUS:
  7616. /* power-up tuner chip */
  7617. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000);
  7618. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
  7619. break;
  7620. case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL:
  7621. /* this turns the remote control chip off to work around a bug in it */
  7622. saa_writeb(SAA7134_GPIO_GPMODE1, 0x80);
  7623. saa_writeb(SAA7134_GPIO_GPSTATUS1, 0x80);
  7624. break;
  7625. case SAA7134_BOARD_MONSTERTV_MOBILE:
  7626. /* power-up tuner chip */
  7627. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000);
  7628. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000004);
  7629. break;
  7630. case SAA7134_BOARD_FLYDVBT_DUO_CARDBUS:
  7631. /* turn the fan on */
  7632. saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
  7633. saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x06);
  7634. break;
  7635. case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
  7636. case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
  7637. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x08000000, 0x08000000);
  7638. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08000000, 0x00000000);
  7639. break;
  7640. case SAA7134_BOARD_AVERMEDIA_CARDBUS:
  7641. case SAA7134_BOARD_AVERMEDIA_M115:
  7642. /* power-down tuner chip */
  7643. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0);
  7644. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0);
  7645. msleep(10);
  7646. /* power-up tuner chip */
  7647. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff);
  7648. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
  7649. msleep(10);
  7650. break;
  7651. case SAA7134_BOARD_AVERMEDIA_CARDBUS_501:
  7652. /* power-down tuner chip */
  7653. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x08400000, 0x08400000);
  7654. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08400000, 0);
  7655. msleep(10);
  7656. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x08400000, 0x08400000);
  7657. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08400000, 0x08400000);
  7658. msleep(10);
  7659. dev->has_remote = SAA7134_REMOTE_I2C;
  7660. break;
  7661. case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
  7662. saa7134_set_gpio(dev, 23, 0);
  7663. msleep(10);
  7664. saa7134_set_gpio(dev, 23, 1);
  7665. dev->has_remote = SAA7134_REMOTE_I2C;
  7666. break;
  7667. case SAA7134_BOARD_AVERMEDIA_M103:
  7668. saa7134_set_gpio(dev, 23, 0);
  7669. msleep(10);
  7670. saa7134_set_gpio(dev, 23, 1);
  7671. break;
  7672. case SAA7134_BOARD_AVERMEDIA_A16D:
  7673. saa7134_set_gpio(dev, 21, 0);
  7674. msleep(10);
  7675. saa7134_set_gpio(dev, 21, 1);
  7676. msleep(1);
  7677. dev->has_remote = SAA7134_REMOTE_GPIO;
  7678. break;
  7679. case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM:
  7680. /* power-down tuner chip */
  7681. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x000A8004, 0x000A8004);
  7682. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0);
  7683. msleep(10);
  7684. /* power-up tuner chip */
  7685. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x000A8004, 0x000A8004);
  7686. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0x000A8004);
  7687. msleep(10);
  7688. /* remote via GPIO */
  7689. dev->has_remote = SAA7134_REMOTE_GPIO;
  7690. break;
  7691. case SAA7134_BOARD_RTD_VFG7350:
  7692.  
  7693. /*
  7694. * Make sure Production Test Register at offset 0x1D1 is cleared
  7695. * to take chip out of test mode. Clearing bit 4 (TST_EN_AOUT)
  7696. * prevents pin 105 from remaining low; keeping pin 105 low
  7697. * continually resets the SAA6752 chip.
  7698. */
  7699.  
  7700. saa_writeb (SAA7134_PRODUCTION_TEST_MODE, 0x00);
  7701. break;
  7702. case SAA7134_BOARD_HAUPPAUGE_HVR1150:
  7703. case SAA7134_BOARD_HAUPPAUGE_HVR1120:
  7704. dev->has_remote = SAA7134_REMOTE_GPIO;
  7705. /* GPIO 26 high for digital, low for analog */
  7706. saa7134_set_gpio(dev, 26, 0);
  7707. msleep(1);
  7708.  
  7709. saa7134_set_gpio(dev, 22, 0);
  7710. msleep(10);
  7711. saa7134_set_gpio(dev, 22, 1);
  7712. break;
  7713. /* i2c remotes */
  7714. case SAA7134_BOARD_PINNACLE_PCTV_110i:
  7715. case SAA7134_BOARD_PINNACLE_PCTV_310i:
  7716. case SAA7134_BOARD_UPMOST_PURPLE_TV:
  7717. case SAA7134_BOARD_MSI_TVATANYWHERE_PLUS:
  7718. case SAA7134_BOARD_HAUPPAUGE_HVR1110:
  7719. case SAA7134_BOARD_BEHOLD_607FM_MK3:
  7720. case SAA7134_BOARD_BEHOLD_607FM_MK5:
  7721. case SAA7134_BOARD_BEHOLD_609FM_MK3:
  7722. case SAA7134_BOARD_BEHOLD_609FM_MK5:
  7723. case SAA7134_BOARD_BEHOLD_607RDS_MK3:
  7724. case SAA7134_BOARD_BEHOLD_607RDS_MK5:
  7725. case SAA7134_BOARD_BEHOLD_609RDS_MK3:
  7726. case SAA7134_BOARD_BEHOLD_609RDS_MK5:
  7727. case SAA7134_BOARD_BEHOLD_M6:
  7728. case SAA7134_BOARD_BEHOLD_M63:
  7729. case SAA7134_BOARD_BEHOLD_M6_EXTRA:
  7730. case SAA7134_BOARD_BEHOLD_H6:
  7731. case SAA7134_BOARD_BEHOLD_X7:
  7732. case SAA7134_BOARD_BEHOLD_H7:
  7733. case SAA7134_BOARD_BEHOLD_A7:
  7734. case SAA7134_BOARD_KWORLD_PC150U:
  7735. dev->has_remote = SAA7134_REMOTE_I2C;
  7736. break;
  7737. case SAA7134_BOARD_AVERMEDIA_A169_B:
  7738. pr_warn("%s: %s: dual saa713x broadcast decoders\n"
  7739. "%s: Sorry, none of the inputs to this chip are supported yet.\n"
  7740. "%s: Dual decoder functionality is disabled for now, use the other chip.\n",
  7741. dev->name, card(dev).name, dev->name, dev->name);
  7742. break;
  7743. case SAA7134_BOARD_AVERMEDIA_M102:
  7744. /* enable tuner */
  7745. dev->has_remote = SAA7134_REMOTE_GPIO;
  7746. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x8c040007, 0x8c040007);
  7747. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0c0007cd, 0x0c0007cd);
  7748. break;
  7749. case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
  7750. case SAA7134_BOARD_AVERMEDIA_A700_PRO:
  7751. /* write windows gpio values */
  7752. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x80040100, 0x80040100);
  7753. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x80040100, 0x00040100);
  7754. break;
  7755. case SAA7134_BOARD_AVERMEDIA_A706:
  7756. /* radio antenna select: tristate both as in Windows driver */
  7757. saa7134_set_gpio(dev, 12, 3); /* TV antenna */
  7758. saa7134_set_gpio(dev, 13, 3); /* FM antenna */
  7759. dev->has_remote = SAA7134_REMOTE_I2C;
  7760. /*
  7761. * Disable CE5039 DVB-S tuner now (SLEEP pin high) to prevent
  7762. * it from interfering with analog tuner detection
  7763. */
  7764. saa7134_set_gpio(dev, 23, 1);
  7765. break;
  7766. case SAA7134_BOARD_VIDEOMATE_S350:
  7767. dev->has_remote = SAA7134_REMOTE_GPIO;
  7768. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x0000C000, 0x0000C000);
  7769. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0000C000, 0x0000C000);
  7770. break;
  7771. case SAA7134_BOARD_AVERMEDIA_M733A:
  7772. saa7134_set_gpio(dev, 1, 1);
  7773. msleep(10);
  7774. saa7134_set_gpio(dev, 1, 0);
  7775. msleep(10);
  7776. saa7134_set_gpio(dev, 1, 1);
  7777. dev->has_remote = SAA7134_REMOTE_GPIO;
  7778. break;
  7779. case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2:
  7780. /* enable LGS-8G75 */
  7781. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x0e050000, 0x0c050000);
  7782. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0e050000, 0x0c050000);
  7783. break;
  7784. case SAA7134_BOARD_VIDEOMATE_T750:
  7785. /* enable the analog tuner */
  7786. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00008000, 0x00008000);
  7787. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000);
  7788. break;
  7789. }
  7790. return 0;
  7791. }
  7792.  
  7793. static void saa7134_tuner_setup(struct saa7134_dev *dev)
  7794. {
  7795. struct tuner_setup tun_setup;
  7796. unsigned int mode_mask = T_RADIO | T_ANALOG_TV;
  7797.  
  7798. memset(&tun_setup, 0, sizeof(tun_setup));
  7799. tun_setup.tuner_callback = saa7134_tuner_callback;
  7800.  
  7801. if (saa7134_boards[dev->board].radio_type != UNSET) {
  7802. tun_setup.type = saa7134_boards[dev->board].radio_type;
  7803. tun_setup.addr = saa7134_boards[dev->board].radio_addr;
  7804.  
  7805. tun_setup.mode_mask = T_RADIO;
  7806.  
  7807. saa_call_all(dev, tuner, s_type_addr, &tun_setup);
  7808. mode_mask &= ~T_RADIO;
  7809. }
  7810.  
  7811. if ((dev->tuner_type != TUNER_ABSENT) && (dev->tuner_type != UNSET)) {
  7812. tun_setup.type = dev->tuner_type;
  7813. tun_setup.addr = dev->tuner_addr;
  7814. tun_setup.config = &saa7134_boards[dev->board].tda829x_conf;
  7815. tun_setup.tuner_callback = saa7134_tuner_callback;
  7816.  
  7817. tun_setup.mode_mask = mode_mask;
  7818.  
  7819. saa_call_all(dev, tuner, s_type_addr, &tun_setup);
  7820. }
  7821.  
  7822. if (dev->tda9887_conf) {
  7823. struct v4l2_priv_tun_config tda9887_cfg;
  7824.  
  7825. tda9887_cfg.tuner = TUNER_TDA9887;
  7826. tda9887_cfg.priv = &dev->tda9887_conf;
  7827.  
  7828. saa_call_all(dev, tuner, s_config, &tda9887_cfg);
  7829. }
  7830.  
  7831. if (dev->tuner_type == TUNER_XC2028) {
  7832. struct v4l2_priv_tun_config xc2028_cfg;
  7833. struct xc2028_ctrl ctl;
  7834.  
  7835. memset(&xc2028_cfg, 0, sizeof(xc2028_cfg));
  7836. memset(&ctl, 0, sizeof(ctl));
  7837.  
  7838. ctl.fname = XC2028_DEFAULT_FIRMWARE;
  7839. ctl.max_len = 64;
  7840.  
  7841. switch (dev->board) {
  7842. case SAA7134_BOARD_AVERMEDIA_A16D:
  7843. case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
  7844. case SAA7134_BOARD_AVERMEDIA_M103:
  7845. case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
  7846. ctl.demod = XC3028_FE_ZARLINK456;
  7847. break;
  7848. default:
  7849. ctl.demod = XC3028_FE_OREN538;
  7850. ctl.mts = 1;
  7851. }
  7852.  
  7853. xc2028_cfg.tuner = TUNER_XC2028;
  7854. xc2028_cfg.priv = &ctl;
  7855.  
  7856. saa_call_all(dev, tuner, s_config, &xc2028_cfg);
  7857. }
  7858. }
  7859.  
  7860. /* stuff which needs working i2c */
  7861. int saa7134_board_init2(struct saa7134_dev *dev)
  7862. {
  7863. unsigned char buf;
  7864. int board;
  7865.  
  7866. /* Put here the code that enables the chips that are needed
  7867. for analog mode and doesn't depend on the tuner attachment.
  7868. It is also a good idea to get tuner type from eeprom, etc before
  7869. initializing tuner, since we can avoid loading tuner driver
  7870. on devices that has TUNER_ABSENT
  7871. */
  7872. switch (dev->board) {
  7873. case SAA7134_BOARD_BMK_MPEX_NOTUNER:
  7874. case SAA7134_BOARD_BMK_MPEX_TUNER:
  7875. /* Checks if the device has a tuner at 0x60 addr
  7876. If the device doesn't have a tuner, TUNER_ABSENT
  7877. will be used at tuner_type, avoiding loading tuner
  7878. without needing it
  7879. */
  7880. dev->i2c_client.addr = 0x60;
  7881. board = (i2c_master_recv(&dev->i2c_client, &buf, 0) < 0)
  7882. ? SAA7134_BOARD_BMK_MPEX_NOTUNER
  7883. : SAA7134_BOARD_BMK_MPEX_TUNER;
  7884. if (board == dev->board)
  7885. break;
  7886. dev->board = board;
  7887. pr_warn("%s: board type fixup: %s\n", dev->name,
  7888. saa7134_boards[dev->board].name);
  7889. dev->tuner_type = saa7134_boards[dev->board].tuner_type;
  7890.  
  7891. break;
  7892. case SAA7134_BOARD_MD7134:
  7893. {
  7894. u8 subaddr;
  7895. u8 data[3], data1[] = { 0x09, 0x9f, 0x86, 0x11};
  7896. int ret, tuner_t;
  7897. struct i2c_msg msg[] = {{.addr = 0x50, .flags = 0, .buf = &subaddr, .len = 1},
  7898. {.addr = 0x50, .flags = I2C_M_RD, .buf = data, .len = 3}},
  7899. msg1 = {.addr = 0x61, .flags = 0, .buf = data1, .len = sizeof(data1)};
  7900.  
  7901. subaddr= 0x14;
  7902. tuner_t = 0;
  7903.  
  7904. /* Retrieve device data from eeprom, checking for the
  7905. proper tuner_type.
  7906. */
  7907. ret = i2c_transfer(&dev->i2c_adap, msg, 2);
  7908. if (ret != 2) {
  7909. pr_err("EEPROM read failure\n");
  7910. } else if ((data[0] != 0) && (data[0] != 0xff)) {
  7911. /* old config structure */
  7912. subaddr = data[0] + 2;
  7913. msg[1].len = 2;
  7914. i2c_transfer(&dev->i2c_adap, msg, 2);
  7915. tuner_t = (data[0] << 8) + data[1];
  7916. switch (tuner_t){
  7917. case 0x0103:
  7918. dev->tuner_type = TUNER_PHILIPS_PAL;
  7919. break;
  7920. case 0x010C:
  7921. dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
  7922. break;
  7923. default:
  7924. pr_err("%s Can't determine tuner type %x from EEPROM\n",
  7925. dev->name, tuner_t);
  7926. }
  7927. } else if ((data[1] != 0) && (data[1] != 0xff)) {
  7928. /* new config structure */
  7929. subaddr = data[1] + 1;
  7930. msg[1].len = 1;
  7931. i2c_transfer(&dev->i2c_adap, msg, 2);
  7932. subaddr = data[0] + 1;
  7933. msg[1].len = 2;
  7934. i2c_transfer(&dev->i2c_adap, msg, 2);
  7935. tuner_t = (data[1] << 8) + data[0];
  7936. switch (tuner_t) {
  7937. case 0x0005:
  7938. dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
  7939. break;
  7940. case 0x001d:
  7941. dev->tuner_type = TUNER_PHILIPS_FMD1216ME_MK3;
  7942. pr_info("%s Board has DVB-T\n",
  7943. dev->name);
  7944. break;
  7945. default:
  7946. pr_err("%s Can't determine tuner type %x from EEPROM\n",
  7947. dev->name, tuner_t);
  7948. }
  7949. } else {
  7950. pr_err("%s unexpected config structure\n", dev->name);
  7951. }
  7952.  
  7953. pr_info("%s Tuner type is %d\n", dev->name, dev->tuner_type);
  7954.  
  7955. /* The tuner TUNER_PHILIPS_FMD1216ME_MK3 after hardware */
  7956. /* start has disabled IF and enabled DVB-T. When saa7134 */
  7957. /* scan I2C devices it will not detect IF tda9887 and can`t*/
  7958. /* watch TV without software reboot. To solve this problem */
  7959. /* switch the tuner to analog TV mode manually. */
  7960. if (dev->tuner_type == TUNER_PHILIPS_FMD1216ME_MK3) {
  7961. if (i2c_transfer(&dev->i2c_adap, &msg1, 1) != 1)
  7962. printk(KERN_WARNING "%s: Unable to enable IF of the tuner.\n", dev->name);
  7963. }
  7964. break;
  7965. }
  7966. case SAA7134_BOARD_PHILIPS_EUROPA:
  7967. if (dev->autodetected && (dev->eedata[0x41] == 0x1c)) {
  7968. /* Reconfigure board as Snake reference design */
  7969. dev->board = SAA7134_BOARD_PHILIPS_SNAKE;
  7970. dev->tuner_type = saa7134_boards[dev->board].tuner_type;
  7971. pr_info("%s: Reconfigured board as %s\n",
  7972. dev->name, saa7134_boards[dev->board].name);
  7973. break;
  7974. }
  7975. /* break intentionally omitted */
  7976. case SAA7134_BOARD_VIDEOMATE_DVBT_300:
  7977. case SAA7134_BOARD_ASUS_EUROPA2_HYBRID:
  7978. case SAA7134_BOARD_ASUS_EUROPA_HYBRID:
  7979. case SAA7134_BOARD_TECHNOTREND_BUDGET_T3000:
  7980. {
  7981.  
  7982. /* The Philips EUROPA based hybrid boards have the tuner
  7983. connected through the channel decoder. We have to make it
  7984. transparent to find it
  7985. */
  7986. u8 data[] = { 0x07, 0x02};
  7987. struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
  7988. i2c_transfer(&dev->i2c_adap, &msg, 1);
  7989.  
  7990. break;
  7991. }
  7992. case SAA7134_BOARD_PHILIPS_TIGER:
  7993. case SAA7134_BOARD_PHILIPS_TIGER_S:
  7994. {
  7995. u8 data[] = { 0x3c, 0x33, 0x60};
  7996. struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
  7997. if (dev->autodetected && (dev->eedata[0x49] == 0x50)) {
  7998. dev->board = SAA7134_BOARD_PHILIPS_TIGER_S;
  7999. pr_info("%s: Reconfigured board as %s\n",
  8000. dev->name, saa7134_boards[dev->board].name);
  8001. }
  8002. if (dev->board == SAA7134_BOARD_PHILIPS_TIGER_S) {
  8003. dev->tuner_type = TUNER_PHILIPS_TDA8290;
  8004.  
  8005. data[2] = 0x68;
  8006. i2c_transfer(&dev->i2c_adap, &msg, 1);
  8007. break;
  8008. }
  8009. i2c_transfer(&dev->i2c_adap, &msg, 1);
  8010. break;
  8011. }
  8012. case SAA7134_BOARD_ASUSTeK_TVFM7135:
  8013. /* The card below is detected as card=53, but is different */
  8014. if (dev->autodetected && (dev->eedata[0x27] == 0x03)) {
  8015. dev->board = SAA7134_BOARD_ASUSTeK_P7131_ANALOG;
  8016. pr_info("%s: P7131 analog only, using entry of %s\n",
  8017. dev->name, saa7134_boards[dev->board].name);
  8018.  
  8019. /*
  8020. * IR init has already happened for other cards, so
  8021. * we have to catch up.
  8022. */
  8023. dev->has_remote = SAA7134_REMOTE_GPIO;
  8024. saa7134_input_init1(dev);
  8025. }
  8026. break;
  8027. case SAA7134_BOARD_HAUPPAUGE_HVR1150:
  8028. case SAA7134_BOARD_HAUPPAUGE_HVR1120:
  8029. hauppauge_eeprom(dev, dev->eedata+0x80);
  8030. break;
  8031. case SAA7134_BOARD_HAUPPAUGE_HVR1110:
  8032. hauppauge_eeprom(dev, dev->eedata+0x80);
  8033. /* break intentionally omitted */
  8034. case SAA7134_BOARD_PINNACLE_PCTV_310i:
  8035. case SAA7134_BOARD_KWORLD_DVBT_210:
  8036. case SAA7134_BOARD_TEVION_DVBT_220RF:
  8037. case SAA7134_BOARD_ASUSTeK_TIGER:
  8038. case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
  8039. case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
  8040. case SAA7134_BOARD_MEDION_MD8800_QUADRO:
  8041. case SAA7134_BOARD_AVERMEDIA_SUPER_007:
  8042. case SAA7134_BOARD_TWINHAN_DTV_DVB_3056:
  8043. case SAA7134_BOARD_CREATIX_CTX953:
  8044. {
  8045. /* this is a hybrid board, initialize to analog mode
  8046. * and configure firmware eeprom address
  8047. */
  8048. u8 data[] = { 0x3c, 0x33, 0x60};
  8049. struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
  8050. i2c_transfer(&dev->i2c_adap, &msg, 1);
  8051. break;
  8052. }
  8053. case SAA7134_BOARD_ASUSTeK_TIGER_3IN1:
  8054. {
  8055. u8 data[] = { 0x3c, 0x33, 0x60};
  8056. struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data,
  8057. .len = sizeof(data)};
  8058. i2c_transfer(&dev->i2c_adap, &msg, 1);
  8059. break;
  8060. }
  8061. case SAA7134_BOARD_ASUSTeK_PS3_100:
  8062. {
  8063. u8 data[] = { 0x3c, 0x33, 0x60};
  8064. struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data,
  8065. .len = sizeof(data)};
  8066. i2c_transfer(&dev->i2c_adap, &msg, 1);
  8067. break;
  8068. }
  8069. case SAA7134_BOARD_FLYDVB_TRIO:
  8070. {
  8071. u8 temp = 0;
  8072. int rc;
  8073. u8 data[] = { 0x3c, 0x33, 0x62};
  8074. struct i2c_msg msg = {.addr=0x09, .flags=0, .buf=data, .len = sizeof(data)};
  8075. i2c_transfer(&dev->i2c_adap, &msg, 1);
  8076.  
  8077. /*
  8078. * send weak up message to pic16C505 chip
  8079. * @ LifeView FlyDVB Trio
  8080. */
  8081. msg.buf = &temp;
  8082. msg.addr = 0x0b;
  8083. msg.len = 1;
  8084. if (1 != i2c_transfer(&dev->i2c_adap, &msg, 1)) {
  8085. pr_warn("%s: send wake up byte to pic16C505"
  8086. "(IR chip) failed\n", dev->name);
  8087. } else {
  8088. msg.flags = I2C_M_RD;
  8089. rc = i2c_transfer(&dev->i2c_adap, &msg, 1);
  8090. pr_info("%s: probe IR chip @ i2c 0x%02x: %s\n",
  8091. dev->name, msg.addr,
  8092. (1 == rc) ? "yes" : "no");
  8093. if (rc == 1)
  8094. dev->has_remote = SAA7134_REMOTE_I2C;
  8095. }
  8096. break;
  8097. }
  8098. case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
  8099. case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
  8100. {
  8101. /* initialize analog mode */
  8102. u8 data[] = { 0x3c, 0x33, 0x6a};
  8103. struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
  8104. i2c_transfer(&dev->i2c_adap, &msg, 1);
  8105. break;
  8106. }
  8107. case SAA7134_BOARD_CINERGY_HT_PCMCIA:
  8108. case SAA7134_BOARD_CINERGY_HT_PCI:
  8109. {
  8110. /* initialize analog mode */
  8111. u8 data[] = { 0x3c, 0x33, 0x68};
  8112. struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
  8113. i2c_transfer(&dev->i2c_adap, &msg, 1);
  8114. break;
  8115. }
  8116. case SAA7134_BOARD_VIDEOMATE_DVBT_200:
  8117. case SAA7134_BOARD_VIDEOMATE_DVBT_200A:
  8118. /* The T200 and the T200A share the same pci id. Consequently,
  8119. * we are going to query eeprom to try to find out which one we
  8120. * are actually looking at. */
  8121.  
  8122. /* Don't do this if the board was specifically selected with an
  8123. * insmod option or if we have the default configuration T200*/
  8124. if (!dev->autodetected || (dev->eedata[0x41] == 0xd0))
  8125. break;
  8126. if (dev->eedata[0x41] == 0x02) {
  8127. /* Reconfigure board as T200A */
  8128. dev->board = SAA7134_BOARD_VIDEOMATE_DVBT_200A;
  8129. dev->tuner_type = saa7134_boards[dev->board].tuner_type;
  8130. dev->tda9887_conf = saa7134_boards[dev->board].tda9887_conf;
  8131. pr_info("%s: Reconfigured board as %s\n",
  8132. dev->name, saa7134_boards[dev->board].name);
  8133. } else {
  8134. pr_warn("%s: Unexpected tuner type info: %x in eeprom\n",
  8135. dev->name, dev->eedata[0x41]);
  8136. break;
  8137. }
  8138. break;
  8139. case SAA7134_BOARD_ADS_INSTANT_HDTV_PCI:
  8140. case SAA7134_BOARD_KWORLD_ATSC110:
  8141. {
  8142. struct i2c_msg msg = { .addr = 0x0a, .flags = 0 };
  8143. int i;
  8144. static u8 buffer[][2] = {
  8145. { 0x10, 0x12 },
  8146. { 0x13, 0x04 },
  8147. { 0x16, 0x00 },
  8148. { 0x14, 0x04 },
  8149. { 0x17, 0x00 },
  8150. };
  8151.  
  8152. for (i = 0; i < ARRAY_SIZE(buffer); i++) {
  8153. msg.buf = &buffer[i][0];
  8154. msg.len = ARRAY_SIZE(buffer[0]);
  8155. if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
  8156. pr_warn("%s: Unable to enable tuner(%i).\n",
  8157. dev->name, i);
  8158. }
  8159. break;
  8160. }
  8161. case SAA7134_BOARD_BEHOLD_H6:
  8162. {
  8163. u8 data[] = { 0x09, 0x9f, 0x86, 0x11};
  8164. struct i2c_msg msg = {.addr = 0x61, .flags = 0, .buf = data,
  8165. .len = sizeof(data)};
  8166.  
  8167. /* The tuner TUNER_PHILIPS_FMD1216MEX_MK3 after hardware */
  8168. /* start has disabled IF and enabled DVB-T. When saa7134 */
  8169. /* scan I2C devices it not detect IF tda9887 and can`t */
  8170. /* watch TV without software reboot. For solve this problem */
  8171. /* switch the tuner to analog TV mode manually. */
  8172. if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
  8173. pr_warn("%s: Unable to enable IF of the tuner.\n",
  8174. dev->name);
  8175. break;
  8176. }
  8177. case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
  8178. saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x4000);
  8179. saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x4000);
  8180.  
  8181. saa7134_set_gpio(dev, 27, 0);
  8182. break;
  8183. } /* switch() */
  8184.  
  8185. /* initialize tuner (don't do this when resuming) */
  8186. if (!dev->insuspend && TUNER_ABSENT != dev->tuner_type) {
  8187. int has_demod = (dev->tda9887_conf & TDA9887_PRESENT);
  8188.  
  8189. /* Note: radio tuner address is always filled in,
  8190. so we do not need to probe for a radio tuner device. */
  8191. if (dev->radio_type != UNSET)
  8192. v4l2_i2c_new_subdev(&dev->v4l2_dev,
  8193. &dev->i2c_adap, "tuner",
  8194. dev->radio_addr, NULL);
  8195. if (has_demod)
  8196. v4l2_i2c_new_subdev(&dev->v4l2_dev,
  8197. &dev->i2c_adap, "tuner",
  8198. 0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD));
  8199. if (dev->tuner_addr == ADDR_UNSET) {
  8200. enum v4l2_i2c_tuner_type type =
  8201. has_demod ? ADDRS_TV_WITH_DEMOD : ADDRS_TV;
  8202.  
  8203. v4l2_i2c_new_subdev(&dev->v4l2_dev,
  8204. &dev->i2c_adap, "tuner",
  8205. 0, v4l2_i2c_tuner_addrs(type));
  8206. } else {
  8207. v4l2_i2c_new_subdev(&dev->v4l2_dev,
  8208. &dev->i2c_adap, "tuner",
  8209. dev->tuner_addr, NULL);
  8210. }
  8211. }
  8212.  
  8213. saa7134_tuner_setup(dev);
  8214.  
  8215. switch (dev->board) {
  8216. case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM:
  8217. case SAA7134_BOARD_AVERMEDIA_CARDBUS_501:
  8218. {
  8219. struct v4l2_priv_tun_config tea5767_cfg;
  8220. struct tea5767_ctrl ctl;
  8221.  
  8222. dev->i2c_client.addr = 0xC0;
  8223. /* set TEA5767(analog FM) defines */
  8224. memset(&ctl, 0, sizeof(ctl));
  8225. ctl.xtal_freq = TEA5767_HIGH_LO_13MHz;
  8226. tea5767_cfg.tuner = TUNER_TEA5767;
  8227. tea5767_cfg.priv = &ctl;
  8228. saa_call_all(dev, tuner, s_config, &tea5767_cfg);
  8229. break;
  8230. }
  8231. } /* switch() */
  8232.  
  8233. return 0;
  8234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement