saa7134-cards.c 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019
  1. /*
  2. * $Id: saa7134-cards.c,v 1.54 2005/03/07 12:01:51 kraxel Exp $
  3. *
  4. * device driver for philips saa7134 based TV cards
  5. * card-specific stuff.
  6. *
  7. * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
  8. *
  9. * This program is free software; you can redistribute it and/or modify
  10. * it under the terms of the GNU General Public License as published by
  11. * the Free Software Foundation; either version 2 of the License, or
  12. * (at your option) any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU General Public License
  20. * along with this program; if not, write to the Free Software
  21. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22. */
  23. #include <linux/init.h>
  24. #include <linux/module.h>
  25. #include "saa7134-reg.h"
  26. #include "saa7134.h"
  27. /* commly used strings */
  28. static char name_mute[] = "mute";
  29. static char name_radio[] = "Radio";
  30. static char name_tv[] = "Television";
  31. static char name_tv_mono[] = "TV (mono only)";
  32. static char name_comp1[] = "Composite1";
  33. static char name_comp2[] = "Composite2";
  34. static char name_comp3[] = "Composite3";
  35. static char name_comp4[] = "Composite4";
  36. static char name_svideo[] = "S-Video";
  37. /* ------------------------------------------------------------------ */
  38. /* board config info */
  39. struct saa7134_board saa7134_boards[] = {
  40. [SAA7134_BOARD_UNKNOWN] = {
  41. .name = "UNKNOWN/GENERIC",
  42. .audio_clock = 0x00187de7,
  43. .tuner_type = TUNER_ABSENT,
  44. .inputs = {{
  45. .name = "default",
  46. .vmux = 0,
  47. .amux = LINE1,
  48. }},
  49. },
  50. [SAA7134_BOARD_PROTEUS_PRO] = {
  51. /* /me */
  52. .name = "Proteus Pro [philips reference design]",
  53. .audio_clock = 0x00187de7,
  54. .tuner_type = TUNER_PHILIPS_PAL,
  55. .inputs = {{
  56. .name = name_comp1,
  57. .vmux = 0,
  58. .amux = LINE1,
  59. },{
  60. .name = name_tv,
  61. .vmux = 1,
  62. .amux = TV,
  63. .tv = 1,
  64. },{
  65. .name = name_tv_mono,
  66. .vmux = 1,
  67. .amux = LINE2,
  68. .tv = 1,
  69. }},
  70. .radio = {
  71. .name = name_radio,
  72. .amux = LINE2,
  73. },
  74. },
  75. [SAA7134_BOARD_FLYVIDEO3000] = {
  76. /* "Marco d'Itri" <md@Linux.IT> */
  77. .name = "LifeView FlyVIDEO3000",
  78. .audio_clock = 0x00200000,
  79. .tuner_type = TUNER_PHILIPS_PAL,
  80. .gpiomask = 0xe000,
  81. .inputs = {{
  82. .name = name_tv,
  83. .vmux = 1,
  84. .amux = TV,
  85. .gpio = 0x8000,
  86. .tv = 1,
  87. },{
  88. .name = name_tv_mono,
  89. .vmux = 1,
  90. .amux = LINE2,
  91. .gpio = 0x0000,
  92. .tv = 1,
  93. },{
  94. .name = name_comp1,
  95. .vmux = 0,
  96. .amux = LINE2,
  97. .gpio = 0x4000,
  98. },{
  99. .name = name_comp2,
  100. .vmux = 3,
  101. .amux = LINE2,
  102. .gpio = 0x4000,
  103. },{
  104. .name = name_svideo,
  105. .vmux = 8,
  106. .amux = LINE2,
  107. .gpio = 0x4000,
  108. }},
  109. .radio = {
  110. .name = name_radio,
  111. .amux = LINE2,
  112. .gpio = 0x2000,
  113. },
  114. },
  115. [SAA7134_BOARD_FLYVIDEO2000] = {
  116. /* "TC Wan" <tcwan@cs.usm.my> */
  117. .name = "LifeView FlyVIDEO2000",
  118. .audio_clock = 0x00200000,
  119. .tuner_type = TUNER_LG_PAL_NEW_TAPC,
  120. .gpiomask = 0xe000,
  121. .inputs = {{
  122. .name = name_tv,
  123. .vmux = 1,
  124. .amux = LINE2,
  125. .gpio = 0x0000,
  126. .tv = 1,
  127. },{
  128. .name = name_comp1,
  129. .vmux = 0,
  130. .amux = LINE2,
  131. .gpio = 0x4000,
  132. },{
  133. .name = name_comp2,
  134. .vmux = 3,
  135. .amux = LINE2,
  136. .gpio = 0x4000,
  137. },{
  138. .name = name_svideo,
  139. .vmux = 8,
  140. .amux = LINE2,
  141. .gpio = 0x4000,
  142. }},
  143. .radio = {
  144. .name = name_radio,
  145. .amux = LINE2,
  146. .gpio = 0x2000,
  147. },
  148. .mute = {
  149. .name = name_mute,
  150. .amux = LINE2,
  151. .gpio = 0x8000,
  152. },
  153. },
  154. [SAA7134_BOARD_FLYTVPLATINUM_MINI] = {
  155. /* "Arnaud Quette" <aquette@free.fr> */
  156. .name = "LifeView FlyTV Platinum Mini",
  157. .audio_clock = 0x00200000,
  158. .tuner_type = TUNER_PHILIPS_TDA8290,
  159. .inputs = {{
  160. .name = name_tv,
  161. .vmux = 1,
  162. .amux = LINE2,
  163. .tv = 1,
  164. },{
  165. .name = name_comp1,
  166. .vmux = 0,
  167. .amux = LINE2,
  168. },{
  169. .name = name_svideo,
  170. .vmux = 8,
  171. .amux = LINE2,
  172. }},
  173. },
  174. [SAA7134_BOARD_FLYTVPLATINUM_FM] = {
  175. /* LifeView FlyTV Platinum FM (LR214WF) */
  176. /* "Peter Missel <peter.missel@onlinehome.de> */
  177. .name = "LifeView FlyTV Platinum FM",
  178. .audio_clock = 0x00200000,
  179. .tuner_type = TUNER_PHILIPS_TDA8290,
  180. .gpiomask = 0x1E000, /* Set GP16 and unused 15,14,13 to Output */
  181. .inputs = {{
  182. .name = name_tv,
  183. .vmux = 1,
  184. .amux = TV,
  185. .gpio = 0x10000, /* GP16=1 selects TV input */
  186. .tv = 1,
  187. },{
  188. /* .name = name_tv_mono,
  189. .vmux = 1,
  190. .amux = LINE2,
  191. .gpio = 0x0000,
  192. .tv = 1,
  193. },{
  194. */ .name = name_comp1, /* Composite signal on S-Video input */
  195. .vmux = 0,
  196. .amux = LINE2,
  197. // .gpio = 0x4000,
  198. },{
  199. .name = name_comp2, /* Composite input */
  200. .vmux = 3,
  201. .amux = LINE2,
  202. // .gpio = 0x4000,
  203. },{
  204. .name = name_svideo, /* S-Video signal on S-Video input */
  205. .vmux = 8,
  206. .amux = LINE2,
  207. // .gpio = 0x4000,
  208. }},
  209. .radio = {
  210. .name = name_radio,
  211. .amux = TV,
  212. .gpio = 0x00000, /* GP16=0 selects FM radio antenna */
  213. },
  214. },
  215. [SAA7134_BOARD_EMPRESS] = {
  216. /* "Gert Vervoort" <gert.vervoort@philips.com> */
  217. .name = "EMPRESS",
  218. .audio_clock = 0x00187de7,
  219. .tuner_type = TUNER_PHILIPS_PAL,
  220. .inputs = {{
  221. .name = name_comp1,
  222. .vmux = 0,
  223. .amux = LINE1,
  224. },{
  225. .name = name_svideo,
  226. .vmux = 8,
  227. .amux = LINE1,
  228. },{
  229. .name = name_tv,
  230. .vmux = 1,
  231. .amux = LINE2,
  232. .tv = 1,
  233. }},
  234. .radio = {
  235. .name = name_radio,
  236. .amux = LINE2,
  237. },
  238. .mpeg = SAA7134_MPEG_EMPRESS,
  239. .video_out = CCIR656,
  240. },
  241. [SAA7134_BOARD_MONSTERTV] = {
  242. /* "K.Ohta" <alpha292@bremen.or.jp> */
  243. .name = "SKNet Monster TV",
  244. .audio_clock = 0x00187de7,
  245. .tuner_type = TUNER_PHILIPS_NTSC_M,
  246. .inputs = {{
  247. .name = name_tv,
  248. .vmux = 1,
  249. .amux = TV,
  250. .tv = 1,
  251. },{
  252. .name = name_comp1,
  253. .vmux = 0,
  254. .amux = LINE1,
  255. },{
  256. .name = name_svideo,
  257. .vmux = 8,
  258. .amux = LINE1,
  259. }},
  260. .radio = {
  261. .name = name_radio,
  262. .amux = LINE2,
  263. },
  264. },
  265. [SAA7134_BOARD_MD9717] = {
  266. .name = "Tevion MD 9717",
  267. .audio_clock = 0x00200000,
  268. .tuner_type = TUNER_PHILIPS_PAL,
  269. .inputs = {{
  270. .name = name_tv,
  271. .vmux = 1,
  272. .amux = TV,
  273. .tv = 1,
  274. },{
  275. /* workaround for problems with normal TV sound */
  276. .name = name_tv_mono,
  277. .vmux = 1,
  278. .amux = LINE2,
  279. .tv = 1,
  280. },{
  281. .name = name_comp1,
  282. .vmux = 2,
  283. .amux = LINE1,
  284. },{
  285. .name = name_comp2,
  286. .vmux = 3,
  287. .amux = LINE1,
  288. },{
  289. .name = name_svideo,
  290. .vmux = 8,
  291. .amux = LINE1,
  292. }},
  293. .radio = {
  294. .name = name_radio,
  295. .amux = LINE2,
  296. },
  297. },
  298. [SAA7134_BOARD_TVSTATION_RDS] = {
  299. /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
  300. .name = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
  301. .audio_clock = 0x00200000,
  302. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  303. .tda9887_conf = TDA9887_PRESENT,
  304. .inputs = {{
  305. .name = name_tv,
  306. .vmux = 1,
  307. .amux = TV,
  308. .tv = 1,
  309. },{
  310. .name = name_tv_mono,
  311. .vmux = 1,
  312. .amux = LINE2,
  313. .tv = 1,
  314. },{
  315. .name = name_svideo,
  316. .vmux = 8,
  317. .amux = LINE1,
  318. },{
  319. .name = name_comp1,
  320. .vmux = 3,
  321. .amux = LINE1,
  322. },{
  323. .name = "CVid over SVid",
  324. .vmux = 0,
  325. .amux = LINE1,
  326. }},
  327. .radio = {
  328. .name = name_radio,
  329. .amux = LINE2,
  330. },
  331. },
  332. [SAA7134_BOARD_TVSTATION_DVR] = {
  333. .name = "KNC One TV-Station DVR",
  334. .audio_clock = 0x00200000,
  335. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  336. .tda9887_conf = TDA9887_PRESENT,
  337. .gpiomask = 0x820000,
  338. .inputs = {{
  339. .name = name_tv,
  340. .vmux = 1,
  341. .amux = LINE2,
  342. .tv = 1,
  343. .gpio = 0x20000,
  344. },{
  345. .name = name_svideo,
  346. .vmux = 8,
  347. .amux = LINE1,
  348. .gpio = 0x20000,
  349. },{
  350. .name = name_comp1,
  351. .vmux = 3,
  352. .amux = LINE1,
  353. .gpio = 0x20000,
  354. }},
  355. .radio = {
  356. .name = name_radio,
  357. .amux = LINE2,
  358. .gpio = 0x20000,
  359. },
  360. .mpeg = SAA7134_MPEG_EMPRESS,
  361. .video_out = CCIR656,
  362. },
  363. [SAA7134_BOARD_CINERGY400] = {
  364. .name = "Terratec Cinergy 400 TV",
  365. .audio_clock = 0x00200000,
  366. .tuner_type = TUNER_PHILIPS_PAL,
  367. .inputs = {{
  368. .name = name_tv,
  369. .vmux = 1,
  370. .amux = TV,
  371. .tv = 1,
  372. },{
  373. .name = name_comp1,
  374. .vmux = 4,
  375. .amux = LINE1,
  376. },{
  377. .name = name_svideo,
  378. .vmux = 8,
  379. .amux = LINE1,
  380. },{
  381. .name = name_comp2, // CVideo over SVideo Connector
  382. .vmux = 0,
  383. .amux = LINE1,
  384. }}
  385. },
  386. [SAA7134_BOARD_MD5044] = {
  387. .name = "Medion 5044",
  388. .audio_clock = 0x00187de7, // was: 0x00200000,
  389. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  390. .tda9887_conf = TDA9887_PRESENT,
  391. .inputs = {{
  392. .name = name_tv,
  393. .vmux = 1,
  394. .amux = TV,
  395. .tv = 1,
  396. },{
  397. /* workaround for problems with normal TV sound */
  398. .name = name_tv_mono,
  399. .vmux = 1,
  400. .amux = LINE2,
  401. .tv = 1,
  402. },{
  403. .name = name_comp1,
  404. .vmux = 0,
  405. .amux = LINE2,
  406. },{
  407. .name = name_comp2,
  408. .vmux = 3,
  409. .amux = LINE2,
  410. },{
  411. .name = name_svideo,
  412. .vmux = 8,
  413. .amux = LINE2,
  414. }},
  415. .radio = {
  416. .name = name_radio,
  417. .amux = LINE2,
  418. },
  419. },
  420. [SAA7134_BOARD_KWORLD] = {
  421. .name = "Kworld/KuroutoShikou SAA7130-TVPCI",
  422. .audio_clock = 0x00187de7,
  423. .tuner_type = TUNER_PHILIPS_NTSC_M,
  424. .inputs = {{
  425. .name = name_svideo,
  426. .vmux = 8,
  427. .amux = LINE1,
  428. },{
  429. .name = name_comp1,
  430. .vmux = 3,
  431. .amux = LINE1,
  432. },{
  433. .name = name_tv,
  434. .vmux = 1,
  435. .amux = LINE2,
  436. .tv = 1,
  437. }},
  438. },
  439. [SAA7134_BOARD_CINERGY600] = {
  440. .name = "Terratec Cinergy 600 TV",
  441. .audio_clock = 0x00200000,
  442. .tuner_type = TUNER_PHILIPS_PAL,
  443. .tda9887_conf = TDA9887_PRESENT,
  444. .inputs = {{
  445. .name = name_tv,
  446. .vmux = 1,
  447. .amux = TV,
  448. .tv = 1,
  449. },{
  450. .name = name_comp1,
  451. .vmux = 4,
  452. .amux = LINE1,
  453. },{
  454. .name = name_svideo,
  455. .vmux = 8,
  456. .amux = LINE1,
  457. },{
  458. .name = name_comp2, // CVideo over SVideo Connector
  459. .vmux = 0,
  460. .amux = LINE1,
  461. }},
  462. .radio = {
  463. .name = name_radio,
  464. .amux = LINE2,
  465. },
  466. },
  467. [SAA7134_BOARD_MD7134] = {
  468. .name = "Medion 7134",
  469. //.audio_clock = 0x00200000,
  470. .audio_clock = 0x00187de7,
  471. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  472. .tda9887_conf = TDA9887_PRESENT,
  473. .mpeg = SAA7134_MPEG_DVB,
  474. .inputs = {{
  475. .name = name_tv,
  476. .vmux = 1,
  477. .amux = TV,
  478. .tv = 1,
  479. },{
  480. .name = name_comp1,
  481. .vmux = 0,
  482. .amux = LINE1,
  483. },{
  484. .name = name_svideo,
  485. .vmux = 8,
  486. .amux = LINE1,
  487. }},
  488. .radio = {
  489. .name = name_radio,
  490. .amux = LINE2,
  491. },
  492. },
  493. [SAA7134_BOARD_TYPHOON_90031] = {
  494. /* aka Typhoon "TV+Radio", Art.Nr 90031 */
  495. /* Tom Zoerner <tomzo at users sourceforge net> */
  496. .name = "Typhoon TV+Radio 90031",
  497. .audio_clock = 0x00200000,
  498. .tuner_type = TUNER_PHILIPS_PAL,
  499. .tda9887_conf = TDA9887_PRESENT,
  500. .inputs = {{
  501. .name = name_tv,
  502. .vmux = 1,
  503. .amux = TV,
  504. .tv = 1,
  505. },{
  506. .name = name_comp1,
  507. .vmux = 3,
  508. .amux = LINE1,
  509. },{
  510. .name = name_svideo,
  511. .vmux = 8,
  512. .amux = LINE1,
  513. }},
  514. .radio = {
  515. .name = name_radio,
  516. .amux = LINE2,
  517. },
  518. },
  519. [SAA7134_BOARD_ELSA] = {
  520. .name = "ELSA EX-VISION 300TV",
  521. .audio_clock = 0x00187de7,
  522. .tuner_type = TUNER_HITACHI_NTSC,
  523. .inputs = {{
  524. .name = name_svideo,
  525. .vmux = 8,
  526. .amux = LINE1,
  527. },{
  528. .name = name_comp1,
  529. .vmux = 0,
  530. .amux = LINE1,
  531. },{
  532. .name = name_tv,
  533. .vmux = 4,
  534. .amux = LINE2,
  535. .tv = 1,
  536. }},
  537. },
  538. [SAA7134_BOARD_ELSA_500TV] = {
  539. .name = "ELSA EX-VISION 500TV",
  540. .audio_clock = 0x00187de7,
  541. .tuner_type = TUNER_HITACHI_NTSC,
  542. .inputs = {{
  543. .name = name_svideo,
  544. .vmux = 7,
  545. .amux = LINE1,
  546. },{
  547. .name = name_tv,
  548. .vmux = 8,
  549. .amux = TV,
  550. .tv = 1,
  551. },{
  552. .name = name_tv_mono,
  553. .vmux = 8,
  554. .amux = LINE2,
  555. .tv = 1,
  556. }},
  557. },
  558. [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
  559. .name = "ASUS TV-FM 7134",
  560. .audio_clock = 0x00187de7,
  561. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  562. .tda9887_conf = TDA9887_PRESENT,
  563. .inputs = {{
  564. .name = name_tv,
  565. .vmux = 1,
  566. .amux = TV,
  567. .tv = 1,
  568. },{
  569. .name = name_comp1,
  570. .vmux = 4,
  571. .amux = LINE2,
  572. },{
  573. .name = name_svideo,
  574. .vmux = 6,
  575. .amux = LINE2,
  576. }},
  577. .radio = {
  578. .name = name_radio,
  579. .amux = LINE1,
  580. },
  581. },
  582. [SAA7135_BOARD_ASUSTeK_TVFM7135] = {
  583. .name = "ASUS TV-FM 7135",
  584. .audio_clock = 0x00187de7,
  585. .tuner_type = TUNER_PHILIPS_TDA8290,
  586. .gpiomask = 0x200000,
  587. .inputs = {{
  588. .name = name_tv,
  589. .vmux = 1,
  590. .amux = TV,
  591. .gpio = 0x0000,
  592. .tv = 1,
  593. },{
  594. .name = name_comp1,
  595. .vmux = 4,
  596. .amux = LINE2,
  597. .gpio = 0x0000,
  598. },{
  599. .name = name_svideo,
  600. .vmux = 6,
  601. .amux = LINE2,
  602. .gpio = 0x0000,
  603. }},
  604. .radio = {
  605. .name = name_radio,
  606. .amux = TV,
  607. .gpio = 0x200000,
  608. },
  609. },
  610. [SAA7134_BOARD_VA1000POWER] = {
  611. .name = "AOPEN VA1000 POWER",
  612. .audio_clock = 0x00187de7,
  613. .tuner_type = TUNER_PHILIPS_NTSC,
  614. .inputs = {{
  615. .name = name_svideo,
  616. .vmux = 8,
  617. .amux = LINE1,
  618. },{
  619. .name = name_comp1,
  620. .vmux = 3,
  621. .amux = LINE1,
  622. },{
  623. .name = name_tv,
  624. .vmux = 1,
  625. .amux = LINE2,
  626. .tv = 1,
  627. }},
  628. },
  629. [SAA7134_BOARD_10MOONSTVMASTER] = {
  630. /* "lilicheng" <llc@linuxfans.org> */
  631. .name = "10MOONS PCI TV CAPTURE CARD",
  632. .audio_clock = 0x00200000,
  633. .tuner_type = TUNER_LG_PAL_NEW_TAPC,
  634. .gpiomask = 0xe000,
  635. .inputs = {{
  636. .name = name_tv,
  637. .vmux = 1,
  638. .amux = LINE2,
  639. .gpio = 0x0000,
  640. .tv = 1,
  641. },{
  642. .name = name_comp1,
  643. .vmux = 0,
  644. .amux = LINE2,
  645. .gpio = 0x4000,
  646. },{
  647. .name = name_comp2,
  648. .vmux = 3,
  649. .amux = LINE2,
  650. .gpio = 0x4000,
  651. },{
  652. .name = name_svideo,
  653. .vmux = 8,
  654. .amux = LINE2,
  655. .gpio = 0x4000,
  656. }},
  657. .radio = {
  658. .name = name_radio,
  659. .amux = LINE2,
  660. .gpio = 0x2000,
  661. },
  662. .mute = {
  663. .name = name_mute,
  664. .amux = LINE2,
  665. .gpio = 0x8000,
  666. },
  667. },
  668. [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
  669. /* "Andrew de Quincey" <adq@lidskialf.net> */
  670. .name = "BMK MPEX No Tuner",
  671. .audio_clock = 0x200000,
  672. .tuner_type = TUNER_ABSENT,
  673. .inputs = {{
  674. .name = name_comp1,
  675. .vmux = 4,
  676. .amux = LINE1,
  677. },{
  678. .name = name_comp2,
  679. .vmux = 3,
  680. .amux = LINE1,
  681. },{
  682. .name = name_comp3,
  683. .vmux = 0,
  684. .amux = LINE1,
  685. },{
  686. .name = name_comp4,
  687. .vmux = 1,
  688. .amux = LINE1,
  689. },{
  690. .name = name_svideo,
  691. .vmux = 8,
  692. .amux = LINE1,
  693. }},
  694. .mpeg = SAA7134_MPEG_EMPRESS,
  695. .video_out = CCIR656,
  696. },
  697. [SAA7134_BOARD_VIDEOMATE_TV] = {
  698. .name = "Compro VideoMate TV",
  699. .audio_clock = 0x00187de7,
  700. .tuner_type = TUNER_PHILIPS_NTSC_M,
  701. .inputs = {{
  702. .name = name_svideo,
  703. .vmux = 8,
  704. .amux = LINE1,
  705. },{
  706. .name = name_comp1,
  707. .vmux = 3,
  708. .amux = LINE1,
  709. },{
  710. .name = name_tv,
  711. .vmux = 1,
  712. .amux = LINE2,
  713. .tv = 1,
  714. }},
  715. },
  716. [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS] = {
  717. .name = "Compro VideoMate TV Gold+",
  718. .audio_clock = 0x00187de7,
  719. .tuner_type = TUNER_PHILIPS_NTSC_M,
  720. .gpiomask = 0x800c0000,
  721. .inputs = {{
  722. .name = name_svideo,
  723. .vmux = 8,
  724. .amux = LINE1,
  725. .gpio = 0x06c00012,
  726. },{
  727. .name = name_comp1,
  728. .vmux = 3,
  729. .amux = LINE1,
  730. .gpio = 0x0ac20012,
  731. },{
  732. .name = name_tv,
  733. .vmux = 1,
  734. .amux = LINE2,
  735. .gpio = 0x08c20012,
  736. .tv = 1,
  737. }},
  738. },
  739. [SAA7134_BOARD_CRONOS_PLUS] = {
  740. /* gpio pins:
  741. 0 .. 3 BASE_ID
  742. 4 .. 7 PROTECT_ID
  743. 8 .. 11 USER_OUT
  744. 12 .. 13 USER_IN
  745. 14 .. 15 VIDIN_SEL */
  746. .name = "Matrox CronosPlus",
  747. .tuner_type = TUNER_ABSENT,
  748. .gpiomask = 0xcf00,
  749. .inputs = {{
  750. .name = name_comp1,
  751. .vmux = 0,
  752. .gpio = 2 << 14,
  753. },{
  754. .name = name_comp2,
  755. .vmux = 0,
  756. .gpio = 1 << 14,
  757. },{
  758. .name = name_comp3,
  759. .vmux = 0,
  760. .gpio = 0 << 14,
  761. },{
  762. .name = name_comp4,
  763. .vmux = 0,
  764. .gpio = 3 << 14,
  765. },{
  766. .name = name_svideo,
  767. .vmux = 8,
  768. .gpio = 2 << 14,
  769. }},
  770. },
  771. [SAA7134_BOARD_MD2819] = {
  772. .name = "AverMedia M156 / Medion 2819",
  773. .audio_clock = 0x00187de7,
  774. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  775. .tda9887_conf = TDA9887_PRESENT,
  776. .inputs = {{
  777. .name = name_tv,
  778. .vmux = 1,
  779. .amux = TV,
  780. .tv = 1,
  781. },{
  782. .name = name_comp1,
  783. .vmux = 0,
  784. .amux = LINE2,
  785. },{
  786. .name = name_comp2,
  787. .vmux = 3,
  788. .amux = LINE2,
  789. },{
  790. .name = name_svideo,
  791. .vmux = 8,
  792. .amux = LINE2,
  793. }},
  794. .radio = {
  795. .name = name_radio,
  796. .amux = LINE2,
  797. },
  798. },
  799. [SAA7134_BOARD_BMK_MPEX_TUNER] = {
  800. /* "Greg Wickham <greg.wickham@grangenet.net> */
  801. .name = "BMK MPEX Tuner",
  802. .audio_clock = 0x200000,
  803. .tuner_type = TUNER_PHILIPS_PAL,
  804. .inputs = {{
  805. .name = name_comp1,
  806. .vmux = 1,
  807. .amux = LINE1,
  808. },{
  809. .name = name_svideo,
  810. .vmux = 8,
  811. .amux = LINE1,
  812. },{
  813. .name = name_tv,
  814. .vmux = 3,
  815. .amux = TV,
  816. .tv = 1,
  817. }},
  818. .mpeg = SAA7134_MPEG_EMPRESS,
  819. .video_out = CCIR656,
  820. },
  821. [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
  822. .name = "ASUS TV-FM 7133",
  823. .audio_clock = 0x00187de7,
  824. // probably wrong, the 7133 one is the NTSC version ...
  825. // .tuner_type = TUNER_PHILIPS_FM1236_MK3
  826. .tuner_type = TUNER_LG_NTSC_NEW_TAPC,
  827. .tda9887_conf = TDA9887_PRESENT,
  828. .inputs = {{
  829. .name = name_tv,
  830. .vmux = 1,
  831. .amux = TV,
  832. .tv = 1,
  833. },{
  834. .name = name_comp1,
  835. .vmux = 4,
  836. .amux = LINE2,
  837. },{
  838. .name = name_svideo,
  839. .vmux = 6,
  840. .amux = LINE2,
  841. }},
  842. .radio = {
  843. .name = name_radio,
  844. .amux = LINE1,
  845. },
  846. },
  847. [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
  848. .name = "Pinnacle PCTV Stereo (saa7134)",
  849. .audio_clock = 0x00187de7,
  850. .tuner_type = TUNER_MT2032,
  851. .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER,
  852. .inputs = {{
  853. .name = name_tv,
  854. .vmux = 3,
  855. .amux = TV,
  856. .tv = 1,
  857. },{
  858. .name = name_comp1,
  859. .vmux = 0,
  860. .amux = LINE2,
  861. },{
  862. .name = name_comp2,
  863. .vmux = 1,
  864. .amux = LINE2,
  865. },{
  866. .name = name_svideo,
  867. .vmux = 8,
  868. .amux = LINE2,
  869. }},
  870. },
  871. [SAA7134_BOARD_MANLI_MTV002] = {
  872. /* Ognjen Nastic <ognjen@logosoft.ba> */
  873. .name = "Manli MuchTV M-TV002",
  874. .audio_clock = 0x00200000,
  875. .tuner_type = TUNER_PHILIPS_PAL,
  876. .inputs = {{
  877. .name = name_svideo,
  878. .vmux = 8,
  879. .amux = LINE1,
  880. },{
  881. .name = name_comp1,
  882. .vmux = 1,
  883. .amux = LINE1,
  884. },{
  885. .name = name_tv,
  886. .vmux = 3,
  887. .amux = LINE2,
  888. .tv = 1,
  889. }},
  890. .radio = {
  891. .name = name_radio,
  892. .amux = LINE2,
  893. },
  894. .mute = {
  895. .name = name_mute,
  896. .amux = LINE1,
  897. },
  898. },
  899. [SAA7134_BOARD_MANLI_MTV001] = {
  900. /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
  901. .name = "Manli MuchTV M-TV001",
  902. .audio_clock = 0x00200000,
  903. .tuner_type = TUNER_PHILIPS_PAL,
  904. .inputs = {{
  905. .name = name_svideo,
  906. .vmux = 8,
  907. .amux = LINE1,
  908. },{
  909. .name = name_comp1,
  910. .vmux = 1,
  911. .amux = LINE1,
  912. },{
  913. .name = name_tv,
  914. .vmux = 3,
  915. .amux = LINE2,
  916. .tv = 1,
  917. }},
  918. },
  919. [SAA7134_BOARD_TG3000TV] = {
  920. /* TransGear 3000TV */
  921. .name = "Nagase Sangyo TransGear 3000TV",
  922. .audio_clock = 0x00187de7,
  923. .tuner_type = TUNER_PHILIPS_NTSC_M,
  924. .inputs = {{
  925. .name = name_tv,
  926. .vmux = 1,
  927. .amux = LINE2,
  928. .tv = 1,
  929. },{
  930. .name = name_comp1,
  931. .vmux = 3,
  932. .amux = LINE2,
  933. },{
  934. .name = name_svideo,
  935. .vmux = 8,
  936. .amux = LINE2,
  937. }},
  938. },
  939. [SAA7134_BOARD_ECS_TVP3XP] = {
  940. .name = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
  941. .audio_clock = 0x187de7, // xtal 32.1 MHz
  942. .tuner_type = TUNER_PHILIPS_PAL,
  943. .inputs = {{
  944. .name = name_tv,
  945. .vmux = 1,
  946. .amux = TV,
  947. .tv = 1,
  948. },{
  949. .name = name_tv_mono,
  950. .vmux = 1,
  951. .amux = LINE2,
  952. .tv = 1,
  953. },{
  954. .name = name_comp1,
  955. .vmux = 3,
  956. .amux = LINE1,
  957. },{
  958. .name = name_svideo,
  959. .vmux = 8,
  960. .amux = LINE1,
  961. },{
  962. .name = "CVid over SVid",
  963. .vmux = 0,
  964. .amux = LINE1,
  965. }},
  966. .radio = {
  967. .name = name_radio,
  968. .amux = LINE2,
  969. },
  970. },
  971. [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
  972. .name = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
  973. .audio_clock = 0x187de7,
  974. .tuner_type = TUNER_PHILIPS_NTSC,
  975. .inputs = {{
  976. .name = name_tv,
  977. .vmux = 1,
  978. .amux = TV,
  979. .tv = 1,
  980. },{
  981. .name = name_tv_mono,
  982. .vmux = 1,
  983. .amux = LINE2,
  984. .tv = 1,
  985. },{
  986. .name = name_comp1,
  987. .vmux = 3,
  988. .amux = LINE1,
  989. },{
  990. .name = name_svideo,
  991. .vmux = 8,
  992. .amux = LINE1,
  993. },{
  994. .name = "CVid over SVid",
  995. .vmux = 0,
  996. .amux = LINE1,
  997. }},
  998. .radio = {
  999. .name = name_radio,
  1000. .amux = LINE2,
  1001. },
  1002. },
  1003. [SAA7134_BOARD_AVACSSMARTTV] = {
  1004. /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
  1005. .name = "AVACS SmartTV",
  1006. .audio_clock = 0x00187de7,
  1007. .tuner_type = TUNER_PHILIPS_PAL,
  1008. .inputs = {{
  1009. .name = name_tv,
  1010. .vmux = 1,
  1011. .amux = TV,
  1012. .tv = 1,
  1013. },{
  1014. .name = name_tv_mono,
  1015. .vmux = 1,
  1016. .amux = LINE2,
  1017. .tv = 1,
  1018. },{
  1019. .name = name_comp1,
  1020. .vmux = 0,
  1021. .amux = LINE2,
  1022. },{
  1023. .name = name_comp2,
  1024. .vmux = 3,
  1025. .amux = LINE2,
  1026. },{
  1027. .name = name_svideo,
  1028. .vmux = 8,
  1029. .amux = LINE2,
  1030. }},
  1031. .radio = {
  1032. .name = name_radio,
  1033. .amux = LINE2,
  1034. .gpio = 0x200000,
  1035. },
  1036. },
  1037. [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
  1038. /* Michael Smith <msmith@cbnco.com> */
  1039. .name = "AVerMedia DVD EZMaker",
  1040. .audio_clock = 0x00187de7,
  1041. .tuner_type = TUNER_ABSENT,
  1042. .inputs = {{
  1043. .name = name_comp1,
  1044. .vmux = 3,
  1045. },{
  1046. .name = name_svideo,
  1047. .vmux = 8,
  1048. }},
  1049. },
  1050. [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
  1051. /* toshii@netbsd.org */
  1052. .name = "Noval Prime TV 7133",
  1053. .audio_clock = 0x00200000,
  1054. .tuner_type = TUNER_ALPS_TSBH1_NTSC,
  1055. .inputs = {{
  1056. .name = name_comp1,
  1057. .vmux = 3,
  1058. },{
  1059. .name = name_tv,
  1060. .vmux = 1,
  1061. .amux = TV,
  1062. .tv = 1,
  1063. },{
  1064. .name = name_svideo,
  1065. .vmux = 8,
  1066. }},
  1067. },
  1068. [SAA7134_BOARD_AVERMEDIA_STUDIO_305] = {
  1069. .name = "AverMedia AverTV Studio 305",
  1070. .audio_clock = 0x00187de7,
  1071. .tuner_type = TUNER_PHILIPS_FM1256_IH3,
  1072. .tda9887_conf = TDA9887_PRESENT,
  1073. .gpiomask = 0x3,
  1074. .inputs = {{
  1075. .name = name_tv,
  1076. .vmux = 1,
  1077. .amux = LINE2,
  1078. .tv = 1,
  1079. },{
  1080. .name = name_comp1,
  1081. .vmux = 0,
  1082. .amux = LINE2,
  1083. },{
  1084. .name = name_comp2,
  1085. .vmux = 3,
  1086. .amux = LINE2,
  1087. },{
  1088. .name = name_svideo,
  1089. .vmux = 8,
  1090. .amux = LINE2,
  1091. }},
  1092. .radio = {
  1093. .name = name_radio,
  1094. .amux = LINE2,
  1095. },
  1096. .mute = {
  1097. .name = name_mute,
  1098. .amux = LINE1,
  1099. },
  1100. },
  1101. [SAA7133_BOARD_UPMOST_PURPLE_TV] = {
  1102. .name = "UPMOST PURPLE TV",
  1103. .audio_clock = 0x00187de7,
  1104. .tuner_type = TUNER_PHILIPS_FM1236_MK3,
  1105. .tda9887_conf = TDA9887_PRESENT,
  1106. .inputs = {{
  1107. .name = name_tv,
  1108. .vmux = 7,
  1109. .amux = TV,
  1110. .tv = 1,
  1111. },{
  1112. .name = name_svideo,
  1113. .vmux = 7,
  1114. .amux = LINE1,
  1115. }},
  1116. },
  1117. [SAA7134_BOARD_ITEMS_MTV005] = {
  1118. /* Norman Jonas <normanjonas@arcor.de> */
  1119. .name = "Items MuchTV Plus / IT-005",
  1120. .audio_clock = 0x00187de7,
  1121. .tuner_type = TUNER_PHILIPS_PAL,
  1122. .inputs = {{
  1123. .name = name_tv,
  1124. .vmux = 3,
  1125. .amux = TV,
  1126. .tv = 1,
  1127. },{
  1128. .name = name_comp1,
  1129. .vmux = 1,
  1130. .amux = LINE1,
  1131. },{
  1132. .name = name_svideo,
  1133. .vmux = 8,
  1134. .amux = LINE1,
  1135. }},
  1136. .radio = {
  1137. .name = name_radio,
  1138. .amux = LINE2,
  1139. },
  1140. },
  1141. [SAA7134_BOARD_CINERGY200] = {
  1142. .name = "Terratec Cinergy 200 TV",
  1143. .audio_clock = 0x00200000,
  1144. .tuner_type = TUNER_PHILIPS_PAL,
  1145. .inputs = {{
  1146. .name = name_tv,
  1147. .vmux = 1,
  1148. .amux = LINE2,
  1149. .tv = 1,
  1150. },{
  1151. .name = name_comp1,
  1152. .vmux = 4,
  1153. .amux = LINE1,
  1154. },{
  1155. .name = name_svideo,
  1156. .vmux = 8,
  1157. .amux = LINE1,
  1158. },{
  1159. .name = name_comp2, // CVideo over SVideo Connector
  1160. .vmux = 0,
  1161. .amux = LINE1,
  1162. }},
  1163. .mute = {
  1164. .name = name_mute,
  1165. .amux = LINE2,
  1166. },
  1167. },
  1168. [SAA7134_BOARD_VIDEOMATE_TV_PVR] = {
  1169. /* Alain St-Denis <alain@topaze.homeip.net> */
  1170. .name = "Compro VideoMate TV PVR/FM",
  1171. .audio_clock = 0x00187de7,
  1172. .tuner_type = TUNER_PHILIPS_NTSC_M,
  1173. .gpiomask = 0x808c0080,
  1174. .inputs = {{
  1175. .name = name_svideo,
  1176. .vmux = 8,
  1177. .amux = LINE1,
  1178. .gpio = 0x00080,
  1179. },{
  1180. .name = name_comp1,
  1181. .vmux = 3,
  1182. .amux = LINE1,
  1183. .gpio = 0x00080,
  1184. },{
  1185. .name = name_tv,
  1186. .vmux = 1,
  1187. .amux = LINE2_LEFT,
  1188. .tv = 1,
  1189. .gpio = 0x00080,
  1190. }},
  1191. .radio = {
  1192. .name = name_radio,
  1193. .amux = LINE2,
  1194. .gpio = 0x80000,
  1195. },
  1196. .mute = {
  1197. .name = name_mute,
  1198. .amux = LINE2,
  1199. .gpio = 0x40000,
  1200. },
  1201. },
  1202. [SAA7134_BOARD_SABRENT_SBTTVFM] = {
  1203. /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */
  1204. .name = "Sabrent SBT-TVFM (saa7130)",
  1205. .audio_clock = 0x00187de7,
  1206. .tuner_type = TUNER_PHILIPS_NTSC_M,
  1207. .inputs = {{
  1208. .name = name_comp1,
  1209. .vmux = 1,
  1210. .amux = LINE2,
  1211. },{
  1212. .name = name_tv,
  1213. .vmux = 3,
  1214. .amux = LINE2,
  1215. .tv = 1,
  1216. },{
  1217. .name = name_svideo,
  1218. .vmux = 8,
  1219. .amux = LINE2,
  1220. }},
  1221. .radio = {
  1222. .name = name_radio,
  1223. .amux = LINE2,
  1224. },
  1225. },
  1226. [SAA7134_BOARD_ZOLID_XPERT_TV7134] = {
  1227. /* Helge Jensen <helge.jensen@slog.dk> */
  1228. .name = ":Zolid Xpert TV7134",
  1229. .audio_clock = 0x00187de7,
  1230. .tuner_type = TUNER_PHILIPS_NTSC,
  1231. .inputs = {{
  1232. .name = name_svideo,
  1233. .vmux = 8,
  1234. .amux = LINE1,
  1235. },{
  1236. .name = name_comp1,
  1237. .vmux = 3,
  1238. .amux = LINE1,
  1239. },{
  1240. .name = name_tv,
  1241. .vmux = 1,
  1242. .amux = LINE2,
  1243. .tv = 1,
  1244. }},
  1245. },
  1246. [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE] = {
  1247. /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */
  1248. .name = "Empire PCI TV-Radio LE",
  1249. .audio_clock = 0x00187de7,
  1250. .tuner_type = TUNER_PHILIPS_PAL,
  1251. .gpiomask = 0x4000,
  1252. .inputs = {{
  1253. .name = name_tv_mono,
  1254. .vmux = 1,
  1255. .amux = LINE2,
  1256. .gpio = 0x8000,
  1257. .tv = 1,
  1258. },{
  1259. .name = name_comp1,
  1260. .vmux = 3,
  1261. .amux = LINE1,
  1262. .gpio = 0x8000,
  1263. },{
  1264. .name = name_svideo,
  1265. .vmux = 6,
  1266. .amux = LINE1,
  1267. .gpio = 0x8000,
  1268. }},
  1269. .radio = {
  1270. .name = name_radio,
  1271. .amux = LINE1,
  1272. .gpio = 0x8000,
  1273. },
  1274. .mute = {
  1275. .name = name_mute,
  1276. .amux = TV,
  1277. .gpio =0x8000,
  1278. }
  1279. },
  1280. [SAA7134_BOARD_AVERMEDIA_307] = {
  1281. /*
  1282. Nickolay V. Shmyrev <nshmyrev@yandex.ru>
  1283. Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru>
  1284. */
  1285. .name = "Avermedia AVerTV Studio 307",
  1286. .audio_clock = 0x00187de7,
  1287. .tuner_type = TUNER_PHILIPS_FM1256_IH3,
  1288. .tda9887_conf = TDA9887_PRESENT,
  1289. .gpiomask = 0x03,
  1290. .inputs = {{
  1291. .name = name_tv,
  1292. .vmux = 1,
  1293. .amux = TV,
  1294. .tv = 1,
  1295. .gpio = 0x00,
  1296. },{
  1297. .name = name_comp1,
  1298. .vmux = 0,
  1299. .amux = LINE2,
  1300. .gpio = 0x00,
  1301. },{
  1302. .name = name_comp2,
  1303. .vmux = 3,
  1304. .amux = LINE2,
  1305. .gpio = 0x00,
  1306. },{
  1307. .name = name_svideo,
  1308. .vmux = 8,
  1309. .amux = LINE2,
  1310. .gpio = 0x00,
  1311. }},
  1312. .radio = {
  1313. .name = name_radio,
  1314. .amux = LINE1,
  1315. .gpio = 0x01,
  1316. },
  1317. },
  1318. [SAA7134_BOARD_AVERMEDIA_CARDBUS] = {
  1319. /* Jon Westgate <oryn@oryn.fsck.tv> */
  1320. .name = "AVerMedia Cardbus TV/Radio",
  1321. .audio_clock = 0x00200000,
  1322. .tuner_type = TUNER_PHILIPS_PAL,
  1323. .inputs = {{
  1324. .name = name_tv,
  1325. .vmux = 1,
  1326. .amux = LINE2,
  1327. .tv = 1,
  1328. },{
  1329. .name = name_comp1,
  1330. .vmux = 3,
  1331. .amux = LINE2,
  1332. },{
  1333. .name = name_svideo,
  1334. .vmux = 8,
  1335. .amux = LINE2,
  1336. }},
  1337. .radio = {
  1338. .name = name_radio,
  1339. .amux = LINE1,
  1340. },
  1341. },
  1342. [SAA7134_BOARD_CINERGY400_CARDBUS] = {
  1343. .name = "Terratec Cinergy 400 mobile",
  1344. .audio_clock = 0x187de7,
  1345. .tuner_type = TUNER_ALPS_TSBE5_PAL,
  1346. .tda9887_conf = TDA9887_PRESENT,
  1347. .inputs = {{
  1348. .name = name_tv,
  1349. .vmux = 1,
  1350. .amux = TV,
  1351. .tv = 1,
  1352. },{
  1353. .name = name_tv_mono,
  1354. .vmux = 1,
  1355. .amux = LINE2,
  1356. .tv = 1,
  1357. },{
  1358. .name = name_comp1,
  1359. .vmux = 3,
  1360. .amux = LINE1,
  1361. },{
  1362. .name = name_svideo,
  1363. .vmux = 8,
  1364. .amux = LINE1,
  1365. }},
  1366. },
  1367. [SAA7134_BOARD_CINERGY600_MK3] = {
  1368. .name = "Terratec Cinergy 600 TV MK3",
  1369. .audio_clock = 0x00200000,
  1370. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  1371. .tda9887_conf = TDA9887_PRESENT,
  1372. .inputs = {{
  1373. .name = name_tv,
  1374. .vmux = 1,
  1375. .amux = TV,
  1376. .tv = 1,
  1377. },{
  1378. .name = name_comp1,
  1379. .vmux = 4,
  1380. .amux = LINE1,
  1381. },{
  1382. .name = name_svideo,
  1383. .vmux = 8,
  1384. .amux = LINE1,
  1385. },{
  1386. .name = name_comp2, // CVideo over SVideo Connector
  1387. .vmux = 0,
  1388. .amux = LINE1,
  1389. }},
  1390. .radio = {
  1391. .name = name_radio,
  1392. .amux = LINE2,
  1393. },
  1394. },
  1395. [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS] = {
  1396. /* Dylan Walkden <dylan_walkden@hotmail.com> */
  1397. .name = "Compro VideoMate Gold+ Pal",
  1398. .audio_clock = 0x00187de7,
  1399. .tuner_type = TUNER_PHILIPS_PAL,
  1400. .gpiomask = 0x1ce780,
  1401. .inputs = {{
  1402. .name = name_svideo,
  1403. .vmux = 0, // CVideo over SVideo Connector - ok?
  1404. .amux = LINE1,
  1405. .gpio = 0x008080,
  1406. },{
  1407. .name = name_comp1,
  1408. .vmux = 3,
  1409. .amux = LINE1,
  1410. .gpio = 0x008080,
  1411. },{
  1412. .name = name_tv,
  1413. .vmux = 1,
  1414. .amux = TV,
  1415. .tv = 1,
  1416. .gpio = 0x008080,
  1417. }},
  1418. .radio = {
  1419. .name = name_radio,
  1420. .amux = LINE2,
  1421. .gpio = 0x80000,
  1422. },
  1423. .mute = {
  1424. .name = name_mute,
  1425. .amux = LINE2,
  1426. .gpio = 0x0c8000,
  1427. },
  1428. },
  1429. [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL] = {
  1430. .name = "Pinnacle PCTV 300i DVB-T + PAL",
  1431. .audio_clock = 0x00187de7,
  1432. .tuner_type = TUNER_MT2032,
  1433. .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER,
  1434. .mpeg = SAA7134_MPEG_DVB,
  1435. .inputs = {{
  1436. .name = name_tv,
  1437. .vmux = 3,
  1438. .amux = TV,
  1439. .tv = 1,
  1440. },{
  1441. .name = name_comp1,
  1442. .vmux = 0,
  1443. .amux = LINE2,
  1444. },{
  1445. .name = name_comp2,
  1446. .vmux = 1,
  1447. .amux = LINE2,
  1448. },{
  1449. .name = name_svideo,
  1450. .vmux = 8,
  1451. .amux = LINE2,
  1452. }},
  1453. },
  1454. [SAA7134_BOARD_PROVIDEO_PV952] = {
  1455. /* andreas.kretschmer@web.de */
  1456. .name = "ProVideo PV952",
  1457. .audio_clock = 0x00187de7,
  1458. .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  1459. .tda9887_conf = TDA9887_PRESENT,
  1460. .inputs = {{
  1461. .name = name_comp1,
  1462. .vmux = 0,
  1463. .amux = LINE1,
  1464. },{
  1465. .name = name_tv,
  1466. .vmux = 1,
  1467. .amux = TV,
  1468. .tv = 1,
  1469. },{
  1470. .name = name_tv_mono,
  1471. .vmux = 1,
  1472. .amux = LINE2,
  1473. .tv = 1,
  1474. }},
  1475. .radio = {
  1476. .name = name_radio,
  1477. .amux = LINE2,
  1478. },
  1479. },
  1480. [SAA7134_BOARD_AVERMEDIA_305] = {
  1481. /* much like the "studio" version but without radio
  1482. * and another tuner (sirspiritus@yandex.ru) */
  1483. .name = "AverMedia AverTV/305",
  1484. .audio_clock = 0x00187de7,
  1485. .tuner_type = TUNER_PHILIPS_FQ1216ME,
  1486. .tda9887_conf = TDA9887_PRESENT,
  1487. .gpiomask = 0x3,
  1488. .inputs = {{
  1489. .name = name_tv,
  1490. .vmux = 1,
  1491. .amux = LINE2,
  1492. .tv = 1,
  1493. },{
  1494. .name = name_comp1,
  1495. .vmux = 0,
  1496. .amux = LINE2,
  1497. },{
  1498. .name = name_comp2,
  1499. .vmux = 3,
  1500. .amux = LINE2,
  1501. },{
  1502. .name = name_svideo,
  1503. .vmux = 8,
  1504. .amux = LINE2,
  1505. }},
  1506. .mute = {
  1507. .name = name_mute,
  1508. .amux = LINE1,
  1509. },
  1510. },
  1511. [SAA7134_BOARD_FLYDVBTDUO] = {
  1512. /* LifeView FlyDVB-T DUO */
  1513. /* "Nico Sabbi <nsabbi@tiscali.it> */
  1514. .name = "LifeView FlyDVB-T DUO",
  1515. .audio_clock = 0x00200000,
  1516. .tuner_type = TUNER_PHILIPS_TDA8290,
  1517. // .gpiomask = 0xe000,
  1518. .inputs = {{
  1519. .name = name_tv,
  1520. .vmux = 1,
  1521. .amux = TV,
  1522. // .gpio = 0x0000,
  1523. .tv = 1,
  1524. },{
  1525. .name = name_comp1, /* Composite signal on S-Video input */
  1526. .vmux = 0,
  1527. .amux = LINE2,
  1528. // .gpio = 0x4000,
  1529. },{
  1530. .name = name_comp2, /* Composite input */
  1531. .vmux = 3,
  1532. .amux = LINE2,
  1533. // .gpio = 0x4000,
  1534. },{
  1535. .name = name_svideo, /* S-Video signal on S-Video input */
  1536. .vmux = 8,
  1537. .amux = LINE2,
  1538. // .gpio = 0x4000,
  1539. }},
  1540. },
  1541. };
  1542. const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
  1543. /* ------------------------------------------------------------------ */
  1544. /* PCI ids + subsystem IDs */
  1545. struct pci_device_id saa7134_pci_tbl[] = {
  1546. {
  1547. .vendor = PCI_VENDOR_ID_PHILIPS,
  1548. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1549. .subvendor = PCI_VENDOR_ID_PHILIPS,
  1550. .subdevice = 0x2001,
  1551. .driver_data = SAA7134_BOARD_PROTEUS_PRO,
  1552. },{
  1553. .vendor = PCI_VENDOR_ID_PHILIPS,
  1554. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  1555. .subvendor = PCI_VENDOR_ID_PHILIPS,
  1556. .subdevice = 0x2001,
  1557. .driver_data = SAA7134_BOARD_PROTEUS_PRO,
  1558. },{
  1559. .vendor = PCI_VENDOR_ID_PHILIPS,
  1560. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1561. .subvendor = PCI_VENDOR_ID_PHILIPS,
  1562. .subdevice = 0x6752,
  1563. .driver_data = SAA7134_BOARD_EMPRESS,
  1564. },{
  1565. .vendor = PCI_VENDOR_ID_PHILIPS,
  1566. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1567. .subvendor = 0x1131,
  1568. .subdevice = 0x4e85,
  1569. .driver_data = SAA7134_BOARD_MONSTERTV,
  1570. },{
  1571. .vendor = PCI_VENDOR_ID_PHILIPS,
  1572. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1573. .subvendor = 0x153B,
  1574. .subdevice = 0x1142,
  1575. .driver_data = SAA7134_BOARD_CINERGY400,
  1576. },{
  1577. .vendor = PCI_VENDOR_ID_PHILIPS,
  1578. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1579. .subvendor = 0x153B,
  1580. .subdevice = 0x1143,
  1581. .driver_data = SAA7134_BOARD_CINERGY600,
  1582. },{
  1583. .vendor = PCI_VENDOR_ID_PHILIPS,
  1584. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1585. .subvendor = 0x153B,
  1586. .subdevice = 0x1158,
  1587. .driver_data = SAA7134_BOARD_CINERGY600_MK3,
  1588. },{
  1589. .vendor = PCI_VENDOR_ID_PHILIPS,
  1590. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  1591. .subvendor = 0x153b,
  1592. .subdevice = 0x1162,
  1593. .driver_data = SAA7134_BOARD_CINERGY400_CARDBUS,
  1594. },{
  1595. .vendor = PCI_VENDOR_ID_PHILIPS,
  1596. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1597. .subvendor = 0x5168,
  1598. .subdevice = 0x0138,
  1599. .driver_data = SAA7134_BOARD_FLYVIDEO3000,
  1600. },{
  1601. .vendor = PCI_VENDOR_ID_PHILIPS,
  1602. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1603. .subvendor = 0x4e42, //"Typhoon PCI Capture TV Card" Art.No. 50673
  1604. .subdevice = 0x0138,
  1605. .driver_data = SAA7134_BOARD_FLYVIDEO3000,
  1606. },{
  1607. .vendor = PCI_VENDOR_ID_PHILIPS,
  1608. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1609. .subvendor = 0x5168,
  1610. .subdevice = 0x0138,
  1611. .driver_data = SAA7134_BOARD_FLYVIDEO2000,
  1612. },{
  1613. .vendor = PCI_VENDOR_ID_PHILIPS,
  1614. .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
  1615. .subvendor = 0x5168,
  1616. .subdevice = 0x0212, /* minipci, LR212 */
  1617. .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI,
  1618. },{
  1619. .vendor = PCI_VENDOR_ID_PHILIPS,
  1620. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  1621. .subvendor = 0x5168,
  1622. .subdevice = 0x0214, /* Standard PCI, LR214WF */
  1623. .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
  1624. },{
  1625. .vendor = PCI_VENDOR_ID_PHILIPS,
  1626. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1627. .subvendor = 0x16be,
  1628. .subdevice = 0x0003,
  1629. .driver_data = SAA7134_BOARD_MD7134,
  1630. },{
  1631. .vendor = PCI_VENDOR_ID_PHILIPS,
  1632. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1633. .subvendor = 0x1048,
  1634. .subdevice = 0x226b,
  1635. .driver_data = SAA7134_BOARD_ELSA,
  1636. },{
  1637. .vendor = PCI_VENDOR_ID_PHILIPS,
  1638. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1639. .subvendor = 0x1048,
  1640. .subdevice = 0x226b,
  1641. .driver_data = SAA7134_BOARD_ELSA_500TV,
  1642. },{
  1643. .vendor = PCI_VENDOR_ID_PHILIPS,
  1644. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1645. .subvendor = PCI_VENDOR_ID_ASUSTEK,
  1646. .subdevice = 0x4842,
  1647. .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
  1648. },{
  1649. .vendor = PCI_VENDOR_ID_PHILIPS,
  1650. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  1651. .subvendor = PCI_VENDOR_ID_ASUSTEK,
  1652. .subdevice = 0x4845,
  1653. .driver_data = SAA7135_BOARD_ASUSTeK_TVFM7135,
  1654. },{
  1655. .vendor = PCI_VENDOR_ID_PHILIPS,
  1656. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1657. .subvendor = PCI_VENDOR_ID_ASUSTEK,
  1658. .subdevice = 0x4830,
  1659. .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
  1660. },{
  1661. .vendor = PCI_VENDOR_ID_PHILIPS,
  1662. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  1663. .subvendor = PCI_VENDOR_ID_ASUSTEK,
  1664. .subdevice = 0x4843,
  1665. .driver_data = SAA7134_BOARD_ASUSTEK_TVFM7133,
  1666. },{
  1667. .vendor = PCI_VENDOR_ID_PHILIPS,
  1668. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1669. .subvendor = PCI_VENDOR_ID_ASUSTEK,
  1670. .subdevice = 0x4840,
  1671. .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134,
  1672. },{
  1673. .vendor = PCI_VENDOR_ID_PHILIPS,
  1674. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1675. .subvendor = PCI_VENDOR_ID_PHILIPS,
  1676. .subdevice = 0xfe01,
  1677. .driver_data = SAA7134_BOARD_TVSTATION_RDS,
  1678. },{
  1679. .vendor = PCI_VENDOR_ID_PHILIPS,
  1680. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1681. .subvendor = 0x1894,
  1682. .subdevice = 0xfe01,
  1683. .driver_data = SAA7134_BOARD_TVSTATION_RDS,
  1684. },{
  1685. .vendor = PCI_VENDOR_ID_PHILIPS,
  1686. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1687. .subvendor = 0x1894,
  1688. .subdevice = 0xa006,
  1689. .driver_data = SAA7134_BOARD_TVSTATION_DVR,
  1690. },{
  1691. .vendor = PCI_VENDOR_ID_PHILIPS,
  1692. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1693. .subvendor = 0x1131,
  1694. .subdevice = 0x7133,
  1695. .driver_data = SAA7134_BOARD_VA1000POWER,
  1696. },{
  1697. .vendor = PCI_VENDOR_ID_PHILIPS,
  1698. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1699. .subvendor = PCI_VENDOR_ID_PHILIPS,
  1700. .subdevice = 0x2001,
  1701. .driver_data = SAA7134_BOARD_10MOONSTVMASTER,
  1702. },{
  1703. .vendor = PCI_VENDOR_ID_PHILIPS,
  1704. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  1705. .subvendor = 0x185b,
  1706. .subdevice = 0xc100,
  1707. .driver_data = SAA7134_BOARD_VIDEOMATE_TV,
  1708. },{
  1709. .vendor = PCI_VENDOR_ID_PHILIPS,
  1710. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  1711. .subvendor = 0x185b,
  1712. .subdevice = 0xc100,
  1713. .driver_data = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
  1714. },{
  1715. .vendor = PCI_VENDOR_ID_PHILIPS,
  1716. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1717. .subvendor = PCI_VENDOR_ID_MATROX,
  1718. .subdevice = 0x48d0,
  1719. .driver_data = SAA7134_BOARD_CRONOS_PLUS,
  1720. },{
  1721. .vendor = PCI_VENDOR_ID_PHILIPS,
  1722. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1723. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  1724. .subdevice = 0xa70b,
  1725. .driver_data = SAA7134_BOARD_MD2819,
  1726. },{
  1727. .vendor = PCI_VENDOR_ID_PHILIPS,
  1728. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1729. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  1730. .subdevice = 0x2115,
  1731. .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
  1732. },{
  1733. .vendor = PCI_VENDOR_ID_PHILIPS,
  1734. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1735. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  1736. .subdevice = 0x2108,
  1737. .driver_data = SAA7134_BOARD_AVERMEDIA_305,
  1738. },{
  1739. .vendor = PCI_VENDOR_ID_PHILIPS,
  1740. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1741. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  1742. .subdevice = 0x10ff,
  1743. .driver_data = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
  1744. },{
  1745. /* AVerMedia CardBus */
  1746. .vendor = PCI_VENDOR_ID_PHILIPS,
  1747. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1748. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  1749. .subdevice = 0xd6ee,
  1750. .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS,
  1751. },{
  1752. /* TransGear 3000TV */
  1753. .vendor = PCI_VENDOR_ID_PHILIPS,
  1754. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1755. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  1756. .subdevice = 0x050c,
  1757. .driver_data = SAA7134_BOARD_TG3000TV,
  1758. },{
  1759. .vendor = PCI_VENDOR_ID_PHILIPS,
  1760. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1761. .subvendor = 0x11bd,
  1762. .subdevice = 0x002b,
  1763. .driver_data = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
  1764. },{
  1765. .vendor = PCI_VENDOR_ID_PHILIPS,
  1766. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1767. .subvendor = 0x11bd,
  1768. .subdevice = 0x002d,
  1769. .driver_data = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
  1770. },{
  1771. .vendor = PCI_VENDOR_ID_PHILIPS,
  1772. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1773. .subvendor = 0x1019,
  1774. .subdevice = 0x4cb4,
  1775. .driver_data = SAA7134_BOARD_ECS_TVP3XP,
  1776. },{
  1777. .vendor = PCI_VENDOR_ID_PHILIPS,
  1778. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  1779. .subvendor = 0x1019,
  1780. .subdevice = 0x4cb5,
  1781. .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB5,
  1782. },{
  1783. .vendor = PCI_VENDOR_ID_PHILIPS,
  1784. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  1785. .subvendor = 0x12ab,
  1786. .subdevice = 0x0800,
  1787. .driver_data = SAA7133_BOARD_UPMOST_PURPLE_TV,
  1788. },{
  1789. .vendor = PCI_VENDOR_ID_PHILIPS,
  1790. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1791. .subvendor = 0x153B,
  1792. .subdevice = 0x1152,
  1793. .driver_data = SAA7134_BOARD_CINERGY200,
  1794. },{
  1795. .vendor = PCI_VENDOR_ID_PHILIPS,
  1796. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1797. .subvendor = 0x185b,
  1798. .subdevice = 0xc100,
  1799. .driver_data = SAA7134_BOARD_VIDEOMATE_TV_PVR,
  1800. },{
  1801. .vendor = PCI_VENDOR_ID_PHILIPS,
  1802. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1803. .subvendor = 0x1131,
  1804. .subdevice = 0,
  1805. .driver_data = SAA7134_BOARD_SABRENT_SBTTVFM,
  1806. },{
  1807. .vendor = PCI_VENDOR_ID_PHILIPS,
  1808. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1809. .subvendor = 0x1461, /* Avermedia Technologies Inc */
  1810. .subdevice = 0x9715,
  1811. .driver_data = SAA7134_BOARD_AVERMEDIA_307,
  1812. },{
  1813. .vendor = PCI_VENDOR_ID_PHILIPS,
  1814. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1815. .subvendor = 0x185b,
  1816. .subdevice = 0xc200,
  1817. .driver_data = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
  1818. },{
  1819. .vendor = PCI_VENDOR_ID_PHILIPS,
  1820. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1821. .subvendor = 0x1540,
  1822. .subdevice = 0x9524,
  1823. .driver_data = SAA7134_BOARD_PROVIDEO_PV952,
  1824. },{
  1825. .vendor = PCI_VENDOR_ID_PHILIPS,
  1826. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  1827. .subvendor = 0x5168,
  1828. .subdevice = 0x0306,
  1829. .driver_data = SAA7134_BOARD_FLYDVBTDUO,
  1830. },{
  1831. /* --- boards without eeprom + subsystem ID --- */
  1832. .vendor = PCI_VENDOR_ID_PHILIPS,
  1833. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1834. .subvendor = PCI_VENDOR_ID_PHILIPS,
  1835. .subdevice = 0,
  1836. .driver_data = SAA7134_BOARD_NOAUTO,
  1837. },{
  1838. .vendor = PCI_VENDOR_ID_PHILIPS,
  1839. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1840. .subvendor = PCI_VENDOR_ID_PHILIPS,
  1841. .subdevice = 0,
  1842. .driver_data = SAA7134_BOARD_NOAUTO,
  1843. },{
  1844. /* --- default catch --- */
  1845. .vendor = PCI_VENDOR_ID_PHILIPS,
  1846. .device = PCI_DEVICE_ID_PHILIPS_SAA7130,
  1847. .subvendor = PCI_ANY_ID,
  1848. .subdevice = PCI_ANY_ID,
  1849. .driver_data = SAA7134_BOARD_UNKNOWN,
  1850. },{
  1851. .vendor = PCI_VENDOR_ID_PHILIPS,
  1852. .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  1853. .subvendor = PCI_ANY_ID,
  1854. .subdevice = PCI_ANY_ID,
  1855. .driver_data = SAA7134_BOARD_UNKNOWN,
  1856. },{
  1857. .vendor = PCI_VENDOR_ID_PHILIPS,
  1858. .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  1859. .subvendor = PCI_ANY_ID,
  1860. .subdevice = PCI_ANY_ID,
  1861. .driver_data = SAA7134_BOARD_UNKNOWN,
  1862. },{
  1863. .vendor = PCI_VENDOR_ID_PHILIPS,
  1864. .device = PCI_DEVICE_ID_PHILIPS_SAA7135,
  1865. .subvendor = PCI_ANY_ID,
  1866. .subdevice = PCI_ANY_ID,
  1867. .driver_data = SAA7134_BOARD_UNKNOWN,
  1868. },{
  1869. /* --- end of list --- */
  1870. }
  1871. };
  1872. MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
  1873. /* ----------------------------------------------------------- */
  1874. /* flyvideo tweaks */
  1875. #if 0
  1876. static struct {
  1877. char *model;
  1878. int tuner_type;
  1879. } fly_list[0x20] = {
  1880. /* default catch ... */
  1881. [ 0 ... 0x1f ] = {
  1882. .model = "UNKNOWN",
  1883. .tuner_type = TUNER_ABSENT,
  1884. },
  1885. /* ... the ones known so far */
  1886. [ 0x05 ] = {
  1887. .model = "PAL-BG",
  1888. .tuner_type = TUNER_LG_PAL_NEW_TAPC,
  1889. },
  1890. [ 0x10 ] = {
  1891. .model = "PAL-BG / PAL-DK",
  1892. .tuner_type = TUNER_PHILIPS_PAL,
  1893. },
  1894. [ 0x15 ] = {
  1895. .model = "NTSC",
  1896. .tuner_type = TUNER_ABSENT /* FIXME */,
  1897. },
  1898. };
  1899. #endif
  1900. static void board_flyvideo(struct saa7134_dev *dev)
  1901. {
  1902. #if 0
  1903. /* non-working attempt to detect the correct tuner type ... */
  1904. u32 value;
  1905. int index;
  1906. value = dev->gpio_value;
  1907. index = (value & 0x1f00) >> 8;
  1908. printk(KERN_INFO "%s: flyvideo: gpio is 0x%x [model=%s,tuner=%d]\n",
  1909. dev->name, value, fly_list[index].model,
  1910. fly_list[index].tuner_type);
  1911. dev->tuner_type = fly_list[index].tuner_type;
  1912. #endif
  1913. printk("%s: there are different flyvideo cards with different tuners\n"
  1914. "%s: out there, you might have to use the tuner=<nr> insmod\n"
  1915. "%s: option to override the default value.\n",
  1916. dev->name, dev->name, dev->name);
  1917. }
  1918. /* ----------------------------------------------------------- */
  1919. int saa7134_board_init1(struct saa7134_dev *dev)
  1920. {
  1921. // Always print gpio, often manufacturers encode tuner type and other info.
  1922. saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
  1923. dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
  1924. printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
  1925. switch (dev->board) {
  1926. case SAA7134_BOARD_FLYVIDEO2000:
  1927. case SAA7134_BOARD_FLYVIDEO3000:
  1928. dev->has_remote = 1;
  1929. board_flyvideo(dev);
  1930. break;
  1931. case SAA7134_BOARD_FLYTVPLATINUM_FM:
  1932. case SAA7134_BOARD_CINERGY400:
  1933. case SAA7134_BOARD_CINERGY600:
  1934. case SAA7134_BOARD_CINERGY600_MK3:
  1935. case SAA7134_BOARD_ECS_TVP3XP:
  1936. case SAA7134_BOARD_ECS_TVP3XP_4CB5:
  1937. case SAA7134_BOARD_MD2819:
  1938. case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
  1939. case SAA7134_BOARD_AVERMEDIA_305:
  1940. case SAA7134_BOARD_AVERMEDIA_307:
  1941. // case SAA7134_BOARD_SABRENT_SBTTVFM: /* not finished yet */
  1942. case SAA7134_BOARD_VIDEOMATE_TV_PVR:
  1943. dev->has_remote = 1;
  1944. break;
  1945. case SAA7134_BOARD_AVACSSMARTTV:
  1946. dev->has_remote = 1;
  1947. break;
  1948. case SAA7134_BOARD_MD5044:
  1949. printk("%s: seems there are two different versions of the MD5044\n"
  1950. "%s: (with the same ID) out there. If sound doesn't work for\n"
  1951. "%s: you try the audio_clock_override=0x200000 insmod option.\n",
  1952. dev->name,dev->name,dev->name);
  1953. break;
  1954. case SAA7134_BOARD_CINERGY400_CARDBUS:
  1955. /* power-up tuner chip */
  1956. saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000);
  1957. saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
  1958. msleep(1);
  1959. break;
  1960. }
  1961. if (dev->has_remote)
  1962. dev->irq2_mask |= (SAA7134_IRQ2_INTE_GPIO18 |
  1963. SAA7134_IRQ2_INTE_GPIO18A |
  1964. SAA7134_IRQ2_INTE_GPIO16 );
  1965. return 0;
  1966. }
  1967. /* stuff which needs working i2c */
  1968. int saa7134_board_init2(struct saa7134_dev *dev)
  1969. {
  1970. unsigned char buf;
  1971. int board;
  1972. switch (dev->board) {
  1973. case SAA7134_BOARD_BMK_MPEX_NOTUNER:
  1974. case SAA7134_BOARD_BMK_MPEX_TUNER:
  1975. dev->i2c_client.addr = 0x60;
  1976. board = (i2c_master_recv(&dev->i2c_client,&buf,0) < 0)
  1977. ? SAA7134_BOARD_BMK_MPEX_NOTUNER
  1978. : SAA7134_BOARD_BMK_MPEX_TUNER;
  1979. if (board == dev->board)
  1980. break;
  1981. dev->board = board;
  1982. printk("%s: board type fixup: %s\n", dev->name,
  1983. saa7134_boards[dev->board].name);
  1984. dev->tuner_type = saa7134_boards[dev->board].tuner_type;
  1985. if (TUNER_ABSENT != dev->tuner_type)
  1986. saa7134_i2c_call_clients(dev,TUNER_SET_TYPE,&dev->tuner_type);
  1987. break;
  1988. }
  1989. return 0;
  1990. }
  1991. /* ----------------------------------------------------------- */
  1992. /*
  1993. * Local variables:
  1994. * c-basic-offset: 8
  1995. * End:
  1996. */