tuner-types.c 58 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. *
  4. * i2c tv tuner chip device type database.
  5. *
  6. */
  7. #include <linux/i2c.h>
  8. #include <linux/module.h>
  9. #include <media/tuner.h>
  10. #include <media/tuner-types.h>
  11. /* ---------------------------------------------------------------------- */
  12. /*
  13. * The floats in the tuner struct are computed at compile time
  14. * by gcc and cast back to integers. Thus we don't violate the
  15. * "no float in kernel" rule.
  16. *
  17. * A tuner_range may be referenced by multiple tuner_params structs.
  18. * There are many duplicates in here. Reusing tuner_range structs,
  19. * rather than defining new ones for each tuner, will cut down on
  20. * memory usage, and is preferred when possible.
  21. *
  22. * Each tuner_params array may contain one or more elements, one
  23. * for each video standard.
  24. *
  25. * FIXME: tuner_params struct contains an element, tda988x. We must
  26. * set this for all tuners that contain a tda988x chip, and then we
  27. * can remove this setting from the various card structs.
  28. *
  29. * FIXME: Right now, all tuners are using the first tuner_params[]
  30. * array element for analog mode. In the future, we will be merging
  31. * similar tuner definitions together, such that each tuner definition
  32. * will have a tuner_params struct for each available video standard.
  33. * At that point, the tuner_params[] array element will be chosen
  34. * based on the video standard in use.
  35. */
  36. /* The following was taken from dvb-pll.c: */
  37. /* Set AGC TOP value to 103 dBuV:
  38. * 0x80 = Control Byte
  39. * 0x40 = 250 uA charge pump (irrelevant)
  40. * 0x18 = Aux Byte to follow
  41. * 0x06 = 64.5 kHz divider (irrelevant)
  42. * 0x01 = Disable Vt (aka sleep)
  43. *
  44. * 0x00 = AGC Time constant 2s Iagc = 300 nA (vs 0x80 = 9 nA)
  45. * 0x50 = AGC Take over point = 103 dBuV
  46. */
  47. static u8 tua603x_agc103[] = { 2, 0x80|0x40|0x18|0x06|0x01, 0x00|0x50 };
  48. /* 0x04 = 166.67 kHz divider
  49. *
  50. * 0x80 = AGC Time constant 50ms Iagc = 9 uA
  51. * 0x20 = AGC Take over point = 112 dBuV
  52. */
  53. static u8 tua603x_agc112[] = { 2, 0x80|0x40|0x18|0x04|0x01, 0x80|0x20 };
  54. /* 0-9 */
  55. /* ------------ TUNER_TEMIC_PAL - TEMIC PAL ------------ */
  56. static struct tuner_range tuner_temic_pal_ranges[] = {
  57. { 16 * 140.25 /*MHz*/, 0x8e, 0x02, },
  58. { 16 * 463.25 /*MHz*/, 0x8e, 0x04, },
  59. { 16 * 999.99 , 0x8e, 0x01, },
  60. };
  61. static struct tuner_params tuner_temic_pal_params[] = {
  62. {
  63. .type = TUNER_PARAM_TYPE_PAL,
  64. .ranges = tuner_temic_pal_ranges,
  65. .count = ARRAY_SIZE(tuner_temic_pal_ranges),
  66. },
  67. };
  68. /* ------------ TUNER_PHILIPS_PAL_I - Philips PAL_I ------------ */
  69. static struct tuner_range tuner_philips_pal_i_ranges[] = {
  70. { 16 * 140.25 /*MHz*/, 0x8e, 0xa0, },
  71. { 16 * 463.25 /*MHz*/, 0x8e, 0x90, },
  72. { 16 * 999.99 , 0x8e, 0x30, },
  73. };
  74. static struct tuner_params tuner_philips_pal_i_params[] = {
  75. {
  76. .type = TUNER_PARAM_TYPE_PAL,
  77. .ranges = tuner_philips_pal_i_ranges,
  78. .count = ARRAY_SIZE(tuner_philips_pal_i_ranges),
  79. },
  80. };
  81. /* ------------ TUNER_PHILIPS_NTSC - Philips NTSC ------------ */
  82. static struct tuner_range tuner_philips_ntsc_ranges[] = {
  83. { 16 * 157.25 /*MHz*/, 0x8e, 0xa0, },
  84. { 16 * 451.25 /*MHz*/, 0x8e, 0x90, },
  85. { 16 * 999.99 , 0x8e, 0x30, },
  86. };
  87. static struct tuner_params tuner_philips_ntsc_params[] = {
  88. {
  89. .type = TUNER_PARAM_TYPE_NTSC,
  90. .ranges = tuner_philips_ntsc_ranges,
  91. .count = ARRAY_SIZE(tuner_philips_ntsc_ranges),
  92. .cb_first_if_lower_freq = 1,
  93. },
  94. };
  95. /* ------------ TUNER_PHILIPS_SECAM - Philips SECAM ------------ */
  96. static struct tuner_range tuner_philips_secam_ranges[] = {
  97. { 16 * 168.25 /*MHz*/, 0x8e, 0xa7, },
  98. { 16 * 447.25 /*MHz*/, 0x8e, 0x97, },
  99. { 16 * 999.99 , 0x8e, 0x37, },
  100. };
  101. static struct tuner_params tuner_philips_secam_params[] = {
  102. {
  103. .type = TUNER_PARAM_TYPE_SECAM,
  104. .ranges = tuner_philips_secam_ranges,
  105. .count = ARRAY_SIZE(tuner_philips_secam_ranges),
  106. .cb_first_if_lower_freq = 1,
  107. },
  108. };
  109. /* ------------ TUNER_PHILIPS_PAL - Philips PAL ------------ */
  110. static struct tuner_range tuner_philips_pal_ranges[] = {
  111. { 16 * 168.25 /*MHz*/, 0x8e, 0xa0, },
  112. { 16 * 447.25 /*MHz*/, 0x8e, 0x90, },
  113. { 16 * 999.99 , 0x8e, 0x30, },
  114. };
  115. static struct tuner_params tuner_philips_pal_params[] = {
  116. {
  117. .type = TUNER_PARAM_TYPE_PAL,
  118. .ranges = tuner_philips_pal_ranges,
  119. .count = ARRAY_SIZE(tuner_philips_pal_ranges),
  120. .cb_first_if_lower_freq = 1,
  121. },
  122. };
  123. /* ------------ TUNER_TEMIC_NTSC - TEMIC NTSC ------------ */
  124. static struct tuner_range tuner_temic_ntsc_ranges[] = {
  125. { 16 * 157.25 /*MHz*/, 0x8e, 0x02, },
  126. { 16 * 463.25 /*MHz*/, 0x8e, 0x04, },
  127. { 16 * 999.99 , 0x8e, 0x01, },
  128. };
  129. static struct tuner_params tuner_temic_ntsc_params[] = {
  130. {
  131. .type = TUNER_PARAM_TYPE_NTSC,
  132. .ranges = tuner_temic_ntsc_ranges,
  133. .count = ARRAY_SIZE(tuner_temic_ntsc_ranges),
  134. },
  135. };
  136. /* ------------ TUNER_TEMIC_PAL_I - TEMIC PAL_I ------------ */
  137. static struct tuner_range tuner_temic_pal_i_ranges[] = {
  138. { 16 * 170.00 /*MHz*/, 0x8e, 0x02, },
  139. { 16 * 450.00 /*MHz*/, 0x8e, 0x04, },
  140. { 16 * 999.99 , 0x8e, 0x01, },
  141. };
  142. static struct tuner_params tuner_temic_pal_i_params[] = {
  143. {
  144. .type = TUNER_PARAM_TYPE_PAL,
  145. .ranges = tuner_temic_pal_i_ranges,
  146. .count = ARRAY_SIZE(tuner_temic_pal_i_ranges),
  147. },
  148. };
  149. /* ------------ TUNER_TEMIC_4036FY5_NTSC - TEMIC NTSC ------------ */
  150. static struct tuner_range tuner_temic_4036fy5_ntsc_ranges[] = {
  151. { 16 * 157.25 /*MHz*/, 0x8e, 0xa0, },
  152. { 16 * 463.25 /*MHz*/, 0x8e, 0x90, },
  153. { 16 * 999.99 , 0x8e, 0x30, },
  154. };
  155. static struct tuner_params tuner_temic_4036fy5_ntsc_params[] = {
  156. {
  157. .type = TUNER_PARAM_TYPE_NTSC,
  158. .ranges = tuner_temic_4036fy5_ntsc_ranges,
  159. .count = ARRAY_SIZE(tuner_temic_4036fy5_ntsc_ranges),
  160. },
  161. };
  162. /* ------------ TUNER_ALPS_TSBH1_NTSC - TEMIC NTSC ------------ */
  163. static struct tuner_range tuner_alps_tsb_1_ranges[] = {
  164. { 16 * 137.25 /*MHz*/, 0x8e, 0x01, },
  165. { 16 * 385.25 /*MHz*/, 0x8e, 0x02, },
  166. { 16 * 999.99 , 0x8e, 0x08, },
  167. };
  168. static struct tuner_params tuner_alps_tsbh1_ntsc_params[] = {
  169. {
  170. .type = TUNER_PARAM_TYPE_NTSC,
  171. .ranges = tuner_alps_tsb_1_ranges,
  172. .count = ARRAY_SIZE(tuner_alps_tsb_1_ranges),
  173. },
  174. };
  175. /* 10-19 */
  176. /* ------------ TUNER_ALPS_TSBE1_PAL - TEMIC PAL ------------ */
  177. static struct tuner_params tuner_alps_tsb_1_params[] = {
  178. {
  179. .type = TUNER_PARAM_TYPE_PAL,
  180. .ranges = tuner_alps_tsb_1_ranges,
  181. .count = ARRAY_SIZE(tuner_alps_tsb_1_ranges),
  182. },
  183. };
  184. /* ------------ TUNER_ALPS_TSBB5_PAL_I - Alps PAL_I ------------ */
  185. static struct tuner_range tuner_alps_tsb_5_pal_ranges[] = {
  186. { 16 * 133.25 /*MHz*/, 0x8e, 0x01, },
  187. { 16 * 351.25 /*MHz*/, 0x8e, 0x02, },
  188. { 16 * 999.99 , 0x8e, 0x08, },
  189. };
  190. static struct tuner_params tuner_alps_tsbb5_params[] = {
  191. {
  192. .type = TUNER_PARAM_TYPE_PAL,
  193. .ranges = tuner_alps_tsb_5_pal_ranges,
  194. .count = ARRAY_SIZE(tuner_alps_tsb_5_pal_ranges),
  195. },
  196. };
  197. /* ------------ TUNER_ALPS_TSBE5_PAL - Alps PAL ------------ */
  198. static struct tuner_params tuner_alps_tsbe5_params[] = {
  199. {
  200. .type = TUNER_PARAM_TYPE_PAL,
  201. .ranges = tuner_alps_tsb_5_pal_ranges,
  202. .count = ARRAY_SIZE(tuner_alps_tsb_5_pal_ranges),
  203. },
  204. };
  205. /* ------------ TUNER_ALPS_TSBC5_PAL - Alps PAL ------------ */
  206. static struct tuner_params tuner_alps_tsbc5_params[] = {
  207. {
  208. .type = TUNER_PARAM_TYPE_PAL,
  209. .ranges = tuner_alps_tsb_5_pal_ranges,
  210. .count = ARRAY_SIZE(tuner_alps_tsb_5_pal_ranges),
  211. },
  212. };
  213. /* ------------ TUNER_TEMIC_4006FH5_PAL - TEMIC PAL ------------ */
  214. static struct tuner_range tuner_lg_pal_ranges[] = {
  215. { 16 * 170.00 /*MHz*/, 0x8e, 0xa0, },
  216. { 16 * 450.00 /*MHz*/, 0x8e, 0x90, },
  217. { 16 * 999.99 , 0x8e, 0x30, },
  218. };
  219. static struct tuner_params tuner_temic_4006fh5_params[] = {
  220. {
  221. .type = TUNER_PARAM_TYPE_PAL,
  222. .ranges = tuner_lg_pal_ranges,
  223. .count = ARRAY_SIZE(tuner_lg_pal_ranges),
  224. },
  225. };
  226. /* ------------ TUNER_ALPS_TSHC6_NTSC - Alps NTSC ------------ */
  227. static struct tuner_range tuner_alps_tshc6_ntsc_ranges[] = {
  228. { 16 * 137.25 /*MHz*/, 0x8e, 0x14, },
  229. { 16 * 385.25 /*MHz*/, 0x8e, 0x12, },
  230. { 16 * 999.99 , 0x8e, 0x11, },
  231. };
  232. static struct tuner_params tuner_alps_tshc6_params[] = {
  233. {
  234. .type = TUNER_PARAM_TYPE_NTSC,
  235. .ranges = tuner_alps_tshc6_ntsc_ranges,
  236. .count = ARRAY_SIZE(tuner_alps_tshc6_ntsc_ranges),
  237. },
  238. };
  239. /* ------------ TUNER_TEMIC_PAL_DK - TEMIC PAL ------------ */
  240. static struct tuner_range tuner_temic_pal_dk_ranges[] = {
  241. { 16 * 168.25 /*MHz*/, 0x8e, 0xa0, },
  242. { 16 * 456.25 /*MHz*/, 0x8e, 0x90, },
  243. { 16 * 999.99 , 0x8e, 0x30, },
  244. };
  245. static struct tuner_params tuner_temic_pal_dk_params[] = {
  246. {
  247. .type = TUNER_PARAM_TYPE_PAL,
  248. .ranges = tuner_temic_pal_dk_ranges,
  249. .count = ARRAY_SIZE(tuner_temic_pal_dk_ranges),
  250. },
  251. };
  252. /* ------------ TUNER_PHILIPS_NTSC_M - Philips NTSC ------------ */
  253. static struct tuner_range tuner_philips_ntsc_m_ranges[] = {
  254. { 16 * 160.00 /*MHz*/, 0x8e, 0xa0, },
  255. { 16 * 454.00 /*MHz*/, 0x8e, 0x90, },
  256. { 16 * 999.99 , 0x8e, 0x30, },
  257. };
  258. static struct tuner_params tuner_philips_ntsc_m_params[] = {
  259. {
  260. .type = TUNER_PARAM_TYPE_NTSC,
  261. .ranges = tuner_philips_ntsc_m_ranges,
  262. .count = ARRAY_SIZE(tuner_philips_ntsc_m_ranges),
  263. },
  264. };
  265. /* ------------ TUNER_TEMIC_4066FY5_PAL_I - TEMIC PAL_I ------------ */
  266. static struct tuner_range tuner_temic_40x6f_5_pal_ranges[] = {
  267. { 16 * 169.00 /*MHz*/, 0x8e, 0xa0, },
  268. { 16 * 454.00 /*MHz*/, 0x8e, 0x90, },
  269. { 16 * 999.99 , 0x8e, 0x30, },
  270. };
  271. static struct tuner_params tuner_temic_4066fy5_pal_i_params[] = {
  272. {
  273. .type = TUNER_PARAM_TYPE_PAL,
  274. .ranges = tuner_temic_40x6f_5_pal_ranges,
  275. .count = ARRAY_SIZE(tuner_temic_40x6f_5_pal_ranges),
  276. },
  277. };
  278. /* ------------ TUNER_TEMIC_4006FN5_MULTI_PAL - TEMIC PAL ------------ */
  279. static struct tuner_params tuner_temic_4006fn5_multi_params[] = {
  280. {
  281. .type = TUNER_PARAM_TYPE_PAL,
  282. .ranges = tuner_temic_40x6f_5_pal_ranges,
  283. .count = ARRAY_SIZE(tuner_temic_40x6f_5_pal_ranges),
  284. },
  285. };
  286. /* 20-29 */
  287. /* ------------ TUNER_TEMIC_4009FR5_PAL - TEMIC PAL ------------ */
  288. static struct tuner_range tuner_temic_4009f_5_pal_ranges[] = {
  289. { 16 * 141.00 /*MHz*/, 0x8e, 0xa0, },
  290. { 16 * 464.00 /*MHz*/, 0x8e, 0x90, },
  291. { 16 * 999.99 , 0x8e, 0x30, },
  292. };
  293. static struct tuner_params tuner_temic_4009f_5_params[] = {
  294. {
  295. .type = TUNER_PARAM_TYPE_PAL,
  296. .ranges = tuner_temic_4009f_5_pal_ranges,
  297. .count = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
  298. },
  299. };
  300. /* ------------ TUNER_TEMIC_4039FR5_NTSC - TEMIC NTSC ------------ */
  301. static struct tuner_range tuner_temic_4x3x_f_5_ntsc_ranges[] = {
  302. { 16 * 158.00 /*MHz*/, 0x8e, 0xa0, },
  303. { 16 * 453.00 /*MHz*/, 0x8e, 0x90, },
  304. { 16 * 999.99 , 0x8e, 0x30, },
  305. };
  306. static struct tuner_params tuner_temic_4039fr5_params[] = {
  307. {
  308. .type = TUNER_PARAM_TYPE_NTSC,
  309. .ranges = tuner_temic_4x3x_f_5_ntsc_ranges,
  310. .count = ARRAY_SIZE(tuner_temic_4x3x_f_5_ntsc_ranges),
  311. },
  312. };
  313. /* ------------ TUNER_TEMIC_4046FM5 - TEMIC PAL ------------ */
  314. static struct tuner_params tuner_temic_4046fm5_params[] = {
  315. {
  316. .type = TUNER_PARAM_TYPE_PAL,
  317. .ranges = tuner_temic_40x6f_5_pal_ranges,
  318. .count = ARRAY_SIZE(tuner_temic_40x6f_5_pal_ranges),
  319. },
  320. };
  321. /* ------------ TUNER_PHILIPS_PAL_DK - Philips PAL ------------ */
  322. static struct tuner_params tuner_philips_pal_dk_params[] = {
  323. {
  324. .type = TUNER_PARAM_TYPE_PAL,
  325. .ranges = tuner_lg_pal_ranges,
  326. .count = ARRAY_SIZE(tuner_lg_pal_ranges),
  327. },
  328. };
  329. /* ------------ TUNER_PHILIPS_FQ1216ME - Philips PAL ------------ */
  330. static struct tuner_params tuner_philips_fq1216me_params[] = {
  331. {
  332. .type = TUNER_PARAM_TYPE_PAL,
  333. .ranges = tuner_lg_pal_ranges,
  334. .count = ARRAY_SIZE(tuner_lg_pal_ranges),
  335. .has_tda9887 = 1,
  336. .port1_active = 1,
  337. .port2_active = 1,
  338. .port2_invert_for_secam_lc = 1,
  339. },
  340. };
  341. /* ------------ TUNER_LG_PAL_I_FM - LGINNOTEK PAL_I ------------ */
  342. static struct tuner_params tuner_lg_pal_i_fm_params[] = {
  343. {
  344. .type = TUNER_PARAM_TYPE_PAL,
  345. .ranges = tuner_lg_pal_ranges,
  346. .count = ARRAY_SIZE(tuner_lg_pal_ranges),
  347. },
  348. };
  349. /* ------------ TUNER_LG_PAL_I - LGINNOTEK PAL_I ------------ */
  350. static struct tuner_params tuner_lg_pal_i_params[] = {
  351. {
  352. .type = TUNER_PARAM_TYPE_PAL,
  353. .ranges = tuner_lg_pal_ranges,
  354. .count = ARRAY_SIZE(tuner_lg_pal_ranges),
  355. },
  356. };
  357. /* ------------ TUNER_LG_NTSC_FM - LGINNOTEK NTSC ------------ */
  358. static struct tuner_range tuner_lg_ntsc_fm_ranges[] = {
  359. { 16 * 210.00 /*MHz*/, 0x8e, 0xa0, },
  360. { 16 * 497.00 /*MHz*/, 0x8e, 0x90, },
  361. { 16 * 999.99 , 0x8e, 0x30, },
  362. };
  363. static struct tuner_params tuner_lg_ntsc_fm_params[] = {
  364. {
  365. .type = TUNER_PARAM_TYPE_NTSC,
  366. .ranges = tuner_lg_ntsc_fm_ranges,
  367. .count = ARRAY_SIZE(tuner_lg_ntsc_fm_ranges),
  368. },
  369. };
  370. /* ------------ TUNER_LG_PAL_FM - LGINNOTEK PAL ------------ */
  371. static struct tuner_params tuner_lg_pal_fm_params[] = {
  372. {
  373. .type = TUNER_PARAM_TYPE_PAL,
  374. .ranges = tuner_lg_pal_ranges,
  375. .count = ARRAY_SIZE(tuner_lg_pal_ranges),
  376. },
  377. };
  378. /* ------------ TUNER_LG_PAL - LGINNOTEK PAL ------------ */
  379. static struct tuner_params tuner_lg_pal_params[] = {
  380. {
  381. .type = TUNER_PARAM_TYPE_PAL,
  382. .ranges = tuner_lg_pal_ranges,
  383. .count = ARRAY_SIZE(tuner_lg_pal_ranges),
  384. },
  385. };
  386. /* 30-39 */
  387. /* ------------ TUNER_TEMIC_4009FN5_MULTI_PAL_FM - TEMIC PAL ------------ */
  388. static struct tuner_params tuner_temic_4009_fn5_multi_pal_fm_params[] = {
  389. {
  390. .type = TUNER_PARAM_TYPE_PAL,
  391. .ranges = tuner_temic_4009f_5_pal_ranges,
  392. .count = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
  393. },
  394. };
  395. /* ------------ TUNER_SHARP_2U5JF5540_NTSC - SHARP NTSC ------------ */
  396. static struct tuner_range tuner_sharp_2u5jf5540_ntsc_ranges[] = {
  397. { 16 * 137.25 /*MHz*/, 0x8e, 0x01, },
  398. { 16 * 317.25 /*MHz*/, 0x8e, 0x02, },
  399. { 16 * 999.99 , 0x8e, 0x08, },
  400. };
  401. static struct tuner_params tuner_sharp_2u5jf5540_params[] = {
  402. {
  403. .type = TUNER_PARAM_TYPE_NTSC,
  404. .ranges = tuner_sharp_2u5jf5540_ntsc_ranges,
  405. .count = ARRAY_SIZE(tuner_sharp_2u5jf5540_ntsc_ranges),
  406. },
  407. };
  408. /* ------------ TUNER_Samsung_PAL_TCPM9091PD27 - Samsung PAL ------------ */
  409. static struct tuner_range tuner_samsung_pal_tcpm9091pd27_ranges[] = {
  410. { 16 * 169 /*MHz*/, 0x8e, 0xa0, },
  411. { 16 * 464 /*MHz*/, 0x8e, 0x90, },
  412. { 16 * 999.99 , 0x8e, 0x30, },
  413. };
  414. static struct tuner_params tuner_samsung_pal_tcpm9091pd27_params[] = {
  415. {
  416. .type = TUNER_PARAM_TYPE_PAL,
  417. .ranges = tuner_samsung_pal_tcpm9091pd27_ranges,
  418. .count = ARRAY_SIZE(tuner_samsung_pal_tcpm9091pd27_ranges),
  419. },
  420. };
  421. /* ------------ TUNER_TEMIC_4106FH5 - TEMIC PAL ------------ */
  422. static struct tuner_params tuner_temic_4106fh5_params[] = {
  423. {
  424. .type = TUNER_PARAM_TYPE_PAL,
  425. .ranges = tuner_temic_4009f_5_pal_ranges,
  426. .count = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
  427. },
  428. };
  429. /* ------------ TUNER_TEMIC_4012FY5 - TEMIC PAL ------------ */
  430. static struct tuner_params tuner_temic_4012fy5_params[] = {
  431. {
  432. .type = TUNER_PARAM_TYPE_PAL,
  433. .ranges = tuner_temic_pal_ranges,
  434. .count = ARRAY_SIZE(tuner_temic_pal_ranges),
  435. },
  436. };
  437. /* ------------ TUNER_TEMIC_4136FY5 - TEMIC NTSC ------------ */
  438. static struct tuner_params tuner_temic_4136_fy5_params[] = {
  439. {
  440. .type = TUNER_PARAM_TYPE_NTSC,
  441. .ranges = tuner_temic_4x3x_f_5_ntsc_ranges,
  442. .count = ARRAY_SIZE(tuner_temic_4x3x_f_5_ntsc_ranges),
  443. },
  444. };
  445. /* ------------ TUNER_LG_PAL_NEW_TAPC - LGINNOTEK PAL ------------ */
  446. static struct tuner_range tuner_lg_new_tapc_ranges[] = {
  447. { 16 * 170.00 /*MHz*/, 0x8e, 0x01, },
  448. { 16 * 450.00 /*MHz*/, 0x8e, 0x02, },
  449. { 16 * 999.99 , 0x8e, 0x08, },
  450. };
  451. static struct tuner_params tuner_lg_pal_new_tapc_params[] = {
  452. {
  453. .type = TUNER_PARAM_TYPE_PAL,
  454. .ranges = tuner_lg_new_tapc_ranges,
  455. .count = ARRAY_SIZE(tuner_lg_new_tapc_ranges),
  456. },
  457. };
  458. /* ------------ TUNER_PHILIPS_FM1216ME_MK3 - Philips PAL ------------ */
  459. static struct tuner_range tuner_fm1216me_mk3_pal_ranges[] = {
  460. { 16 * 158.00 /*MHz*/, 0x8e, 0x01, },
  461. { 16 * 442.00 /*MHz*/, 0x8e, 0x02, },
  462. { 16 * 999.99 , 0x8e, 0x04, },
  463. };
  464. static struct tuner_params tuner_fm1216me_mk3_params[] = {
  465. {
  466. .type = TUNER_PARAM_TYPE_PAL,
  467. .ranges = tuner_fm1216me_mk3_pal_ranges,
  468. .count = ARRAY_SIZE(tuner_fm1216me_mk3_pal_ranges),
  469. .cb_first_if_lower_freq = 1,
  470. .has_tda9887 = 1,
  471. .port1_active = 1,
  472. .port2_active = 1,
  473. .port2_invert_for_secam_lc = 1,
  474. .port1_fm_high_sensitivity = 1,
  475. .default_top_mid = -2,
  476. .default_top_secam_mid = -2,
  477. .default_top_secam_high = -2,
  478. },
  479. };
  480. /* ------------ TUNER_PHILIPS_FM1216MK5 - Philips PAL ------------ */
  481. static struct tuner_range tuner_fm1216mk5_pal_ranges[] = {
  482. { 16 * 158.00 /*MHz*/, 0xce, 0x01, },
  483. { 16 * 441.00 /*MHz*/, 0xce, 0x02, },
  484. { 16 * 864.00 , 0xce, 0x04, },
  485. };
  486. static struct tuner_params tuner_fm1216mk5_params[] = {
  487. {
  488. .type = TUNER_PARAM_TYPE_PAL,
  489. .ranges = tuner_fm1216mk5_pal_ranges,
  490. .count = ARRAY_SIZE(tuner_fm1216mk5_pal_ranges),
  491. .cb_first_if_lower_freq = 1,
  492. .has_tda9887 = 1,
  493. .port1_active = 1,
  494. .port2_active = 1,
  495. .port2_invert_for_secam_lc = 1,
  496. .port1_fm_high_sensitivity = 1,
  497. .default_top_mid = -2,
  498. .default_top_secam_mid = -2,
  499. .default_top_secam_high = -2,
  500. },
  501. };
  502. /* ------------ TUNER_LG_NTSC_NEW_TAPC - LGINNOTEK NTSC ------------ */
  503. static struct tuner_params tuner_lg_ntsc_new_tapc_params[] = {
  504. {
  505. .type = TUNER_PARAM_TYPE_NTSC,
  506. .ranges = tuner_lg_new_tapc_ranges,
  507. .count = ARRAY_SIZE(tuner_lg_new_tapc_ranges),
  508. },
  509. };
  510. /* 40-49 */
  511. /* ------------ TUNER_HITACHI_NTSC - HITACHI NTSC ------------ */
  512. static struct tuner_params tuner_hitachi_ntsc_params[] = {
  513. {
  514. .type = TUNER_PARAM_TYPE_NTSC,
  515. .ranges = tuner_lg_new_tapc_ranges,
  516. .count = ARRAY_SIZE(tuner_lg_new_tapc_ranges),
  517. },
  518. };
  519. /* ------------ TUNER_PHILIPS_PAL_MK - Philips PAL ------------ */
  520. static struct tuner_range tuner_philips_pal_mk_pal_ranges[] = {
  521. { 16 * 140.25 /*MHz*/, 0x8e, 0x01, },
  522. { 16 * 463.25 /*MHz*/, 0x8e, 0xc2, },
  523. { 16 * 999.99 , 0x8e, 0xcf, },
  524. };
  525. static struct tuner_params tuner_philips_pal_mk_params[] = {
  526. {
  527. .type = TUNER_PARAM_TYPE_PAL,
  528. .ranges = tuner_philips_pal_mk_pal_ranges,
  529. .count = ARRAY_SIZE(tuner_philips_pal_mk_pal_ranges),
  530. },
  531. };
  532. /* ---- TUNER_PHILIPS_FCV1236D - Philips FCV1236D (ATSC/NTSC) ---- */
  533. static struct tuner_range tuner_philips_fcv1236d_ntsc_ranges[] = {
  534. { 16 * 157.25 /*MHz*/, 0x8e, 0xa2, },
  535. { 16 * 451.25 /*MHz*/, 0x8e, 0x92, },
  536. { 16 * 999.99 , 0x8e, 0x32, },
  537. };
  538. static struct tuner_range tuner_philips_fcv1236d_atsc_ranges[] = {
  539. { 16 * 159.00 /*MHz*/, 0x8e, 0xa0, },
  540. { 16 * 453.00 /*MHz*/, 0x8e, 0x90, },
  541. { 16 * 999.99 , 0x8e, 0x30, },
  542. };
  543. static struct tuner_params tuner_philips_fcv1236d_params[] = {
  544. {
  545. .type = TUNER_PARAM_TYPE_NTSC,
  546. .ranges = tuner_philips_fcv1236d_ntsc_ranges,
  547. .count = ARRAY_SIZE(tuner_philips_fcv1236d_ntsc_ranges),
  548. },
  549. {
  550. .type = TUNER_PARAM_TYPE_DIGITAL,
  551. .ranges = tuner_philips_fcv1236d_atsc_ranges,
  552. .count = ARRAY_SIZE(tuner_philips_fcv1236d_atsc_ranges),
  553. .iffreq = 16 * 44.00,
  554. },
  555. };
  556. /* ------------ TUNER_PHILIPS_FM1236_MK3 - Philips NTSC ------------ */
  557. static struct tuner_range tuner_fm1236_mk3_ntsc_ranges[] = {
  558. { 16 * 160.00 /*MHz*/, 0x8e, 0x01, },
  559. { 16 * 442.00 /*MHz*/, 0x8e, 0x02, },
  560. { 16 * 999.99 , 0x8e, 0x04, },
  561. };
  562. static struct tuner_params tuner_fm1236_mk3_params[] = {
  563. {
  564. .type = TUNER_PARAM_TYPE_NTSC,
  565. .ranges = tuner_fm1236_mk3_ntsc_ranges,
  566. .count = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges),
  567. .cb_first_if_lower_freq = 1,
  568. .has_tda9887 = 1,
  569. .port1_active = 1,
  570. .port2_active = 1,
  571. .port1_fm_high_sensitivity = 1,
  572. },
  573. };
  574. /* ------------ TUNER_PHILIPS_4IN1 - Philips NTSC ------------ */
  575. static struct tuner_params tuner_philips_4in1_params[] = {
  576. {
  577. .type = TUNER_PARAM_TYPE_NTSC,
  578. .ranges = tuner_fm1236_mk3_ntsc_ranges,
  579. .count = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges),
  580. },
  581. };
  582. /* ------------ TUNER_MICROTUNE_4049FM5 - Microtune PAL ------------ */
  583. static struct tuner_params tuner_microtune_4049_fm5_params[] = {
  584. {
  585. .type = TUNER_PARAM_TYPE_PAL,
  586. .ranges = tuner_temic_4009f_5_pal_ranges,
  587. .count = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
  588. .has_tda9887 = 1,
  589. .port1_invert_for_secam_lc = 1,
  590. .default_pll_gating_18 = 1,
  591. .fm_gain_normal=1,
  592. .radio_if = 1, /* 33.3 MHz */
  593. },
  594. };
  595. /* ------------ TUNER_PANASONIC_VP27 - Panasonic NTSC ------------ */
  596. static struct tuner_range tuner_panasonic_vp27_ntsc_ranges[] = {
  597. { 16 * 160.00 /*MHz*/, 0xce, 0x01, },
  598. { 16 * 454.00 /*MHz*/, 0xce, 0x02, },
  599. { 16 * 999.99 , 0xce, 0x08, },
  600. };
  601. static struct tuner_params tuner_panasonic_vp27_params[] = {
  602. {
  603. .type = TUNER_PARAM_TYPE_NTSC,
  604. .ranges = tuner_panasonic_vp27_ntsc_ranges,
  605. .count = ARRAY_SIZE(tuner_panasonic_vp27_ntsc_ranges),
  606. .has_tda9887 = 1,
  607. .intercarrier_mode = 1,
  608. .default_top_low = -3,
  609. .default_top_mid = -3,
  610. .default_top_high = -3,
  611. },
  612. };
  613. /* ------------ TUNER_TNF_8831BGFF - Philips PAL ------------ */
  614. static struct tuner_range tuner_tnf_8831bgff_pal_ranges[] = {
  615. { 16 * 161.25 /*MHz*/, 0x8e, 0xa0, },
  616. { 16 * 463.25 /*MHz*/, 0x8e, 0x90, },
  617. { 16 * 999.99 , 0x8e, 0x30, },
  618. };
  619. static struct tuner_params tuner_tnf_8831bgff_params[] = {
  620. {
  621. .type = TUNER_PARAM_TYPE_PAL,
  622. .ranges = tuner_tnf_8831bgff_pal_ranges,
  623. .count = ARRAY_SIZE(tuner_tnf_8831bgff_pal_ranges),
  624. },
  625. };
  626. /* ------------ TUNER_MICROTUNE_4042FI5 - Microtune NTSC ------------ */
  627. static struct tuner_range tuner_microtune_4042fi5_ntsc_ranges[] = {
  628. { 16 * 162.00 /*MHz*/, 0x8e, 0xa2, },
  629. { 16 * 457.00 /*MHz*/, 0x8e, 0x94, },
  630. { 16 * 999.99 , 0x8e, 0x31, },
  631. };
  632. static struct tuner_range tuner_microtune_4042fi5_atsc_ranges[] = {
  633. { 16 * 162.00 /*MHz*/, 0x8e, 0xa1, },
  634. { 16 * 457.00 /*MHz*/, 0x8e, 0x91, },
  635. { 16 * 999.99 , 0x8e, 0x31, },
  636. };
  637. static struct tuner_params tuner_microtune_4042fi5_params[] = {
  638. {
  639. .type = TUNER_PARAM_TYPE_NTSC,
  640. .ranges = tuner_microtune_4042fi5_ntsc_ranges,
  641. .count = ARRAY_SIZE(tuner_microtune_4042fi5_ntsc_ranges),
  642. },
  643. {
  644. .type = TUNER_PARAM_TYPE_DIGITAL,
  645. .ranges = tuner_microtune_4042fi5_atsc_ranges,
  646. .count = ARRAY_SIZE(tuner_microtune_4042fi5_atsc_ranges),
  647. .iffreq = 16 * 44.00 /*MHz*/,
  648. },
  649. };
  650. /* 50-59 */
  651. /* ------------ TUNER_TCL_2002N - TCL NTSC ------------ */
  652. static struct tuner_range tuner_tcl_2002n_ntsc_ranges[] = {
  653. { 16 * 172.00 /*MHz*/, 0x8e, 0x01, },
  654. { 16 * 448.00 /*MHz*/, 0x8e, 0x02, },
  655. { 16 * 999.99 , 0x8e, 0x08, },
  656. };
  657. static struct tuner_params tuner_tcl_2002n_params[] = {
  658. {
  659. .type = TUNER_PARAM_TYPE_NTSC,
  660. .ranges = tuner_tcl_2002n_ntsc_ranges,
  661. .count = ARRAY_SIZE(tuner_tcl_2002n_ntsc_ranges),
  662. .cb_first_if_lower_freq = 1,
  663. },
  664. };
  665. /* ------------ TUNER_PHILIPS_FM1256_IH3 - Philips PAL ------------ */
  666. static struct tuner_params tuner_philips_fm1256_ih3_params[] = {
  667. {
  668. .type = TUNER_PARAM_TYPE_PAL,
  669. .ranges = tuner_fm1236_mk3_ntsc_ranges,
  670. .count = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges),
  671. .radio_if = 1, /* 33.3 MHz */
  672. },
  673. };
  674. /* ------------ TUNER_THOMSON_DTT7610 - THOMSON ATSC ------------ */
  675. /* single range used for both ntsc and atsc */
  676. static struct tuner_range tuner_thomson_dtt7610_ntsc_ranges[] = {
  677. { 16 * 157.25 /*MHz*/, 0x8e, 0x39, },
  678. { 16 * 454.00 /*MHz*/, 0x8e, 0x3a, },
  679. { 16 * 999.99 , 0x8e, 0x3c, },
  680. };
  681. static struct tuner_params tuner_thomson_dtt7610_params[] = {
  682. {
  683. .type = TUNER_PARAM_TYPE_NTSC,
  684. .ranges = tuner_thomson_dtt7610_ntsc_ranges,
  685. .count = ARRAY_SIZE(tuner_thomson_dtt7610_ntsc_ranges),
  686. },
  687. {
  688. .type = TUNER_PARAM_TYPE_DIGITAL,
  689. .ranges = tuner_thomson_dtt7610_ntsc_ranges,
  690. .count = ARRAY_SIZE(tuner_thomson_dtt7610_ntsc_ranges),
  691. .iffreq = 16 * 44.00 /*MHz*/,
  692. },
  693. };
  694. /* ------------ TUNER_PHILIPS_FQ1286 - Philips NTSC ------------ */
  695. static struct tuner_range tuner_philips_fq1286_ntsc_ranges[] = {
  696. { 16 * 160.00 /*MHz*/, 0x8e, 0x41, },
  697. { 16 * 454.00 /*MHz*/, 0x8e, 0x42, },
  698. { 16 * 999.99 , 0x8e, 0x04, },
  699. };
  700. static struct tuner_params tuner_philips_fq1286_params[] = {
  701. {
  702. .type = TUNER_PARAM_TYPE_NTSC,
  703. .ranges = tuner_philips_fq1286_ntsc_ranges,
  704. .count = ARRAY_SIZE(tuner_philips_fq1286_ntsc_ranges),
  705. },
  706. };
  707. /* ------------ TUNER_TCL_2002MB - TCL PAL ------------ */
  708. static struct tuner_range tuner_tcl_2002mb_pal_ranges[] = {
  709. { 16 * 170.00 /*MHz*/, 0xce, 0x01, },
  710. { 16 * 450.00 /*MHz*/, 0xce, 0x02, },
  711. { 16 * 999.99 , 0xce, 0x08, },
  712. };
  713. static struct tuner_params tuner_tcl_2002mb_params[] = {
  714. {
  715. .type = TUNER_PARAM_TYPE_PAL,
  716. .ranges = tuner_tcl_2002mb_pal_ranges,
  717. .count = ARRAY_SIZE(tuner_tcl_2002mb_pal_ranges),
  718. },
  719. };
  720. /* ------------ TUNER_PHILIPS_FQ1216AME_MK4 - Philips PAL ------------ */
  721. static struct tuner_range tuner_philips_fq12_6a___mk4_pal_ranges[] = {
  722. { 16 * 160.00 /*MHz*/, 0xce, 0x01, },
  723. { 16 * 442.00 /*MHz*/, 0xce, 0x02, },
  724. { 16 * 999.99 , 0xce, 0x04, },
  725. };
  726. static struct tuner_params tuner_philips_fq1216ame_mk4_params[] = {
  727. {
  728. .type = TUNER_PARAM_TYPE_PAL,
  729. .ranges = tuner_philips_fq12_6a___mk4_pal_ranges,
  730. .count = ARRAY_SIZE(tuner_philips_fq12_6a___mk4_pal_ranges),
  731. .has_tda9887 = 1,
  732. .port1_active = 1,
  733. .port2_invert_for_secam_lc = 1,
  734. .default_top_mid = -2,
  735. .default_top_secam_low = -2,
  736. .default_top_secam_mid = -2,
  737. .default_top_secam_high = -2,
  738. },
  739. };
  740. /* ------------ TUNER_PHILIPS_FQ1236A_MK4 - Philips NTSC ------------ */
  741. static struct tuner_params tuner_philips_fq1236a_mk4_params[] = {
  742. {
  743. .type = TUNER_PARAM_TYPE_NTSC,
  744. .ranges = tuner_fm1236_mk3_ntsc_ranges,
  745. .count = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges),
  746. },
  747. };
  748. /* ------------ TUNER_YMEC_TVF_8531MF - Philips NTSC ------------ */
  749. static struct tuner_params tuner_ymec_tvf_8531mf_params[] = {
  750. {
  751. .type = TUNER_PARAM_TYPE_NTSC,
  752. .ranges = tuner_philips_ntsc_m_ranges,
  753. .count = ARRAY_SIZE(tuner_philips_ntsc_m_ranges),
  754. },
  755. };
  756. /* ------------ TUNER_YMEC_TVF_5533MF - Philips NTSC ------------ */
  757. static struct tuner_range tuner_ymec_tvf_5533mf_ntsc_ranges[] = {
  758. { 16 * 160.00 /*MHz*/, 0x8e, 0x01, },
  759. { 16 * 454.00 /*MHz*/, 0x8e, 0x02, },
  760. { 16 * 999.99 , 0x8e, 0x04, },
  761. };
  762. static struct tuner_params tuner_ymec_tvf_5533mf_params[] = {
  763. {
  764. .type = TUNER_PARAM_TYPE_NTSC,
  765. .ranges = tuner_ymec_tvf_5533mf_ntsc_ranges,
  766. .count = ARRAY_SIZE(tuner_ymec_tvf_5533mf_ntsc_ranges),
  767. },
  768. };
  769. /* 60-69 */
  770. /* ------------ TUNER_THOMSON_DTT761X - THOMSON ATSC ------------ */
  771. /* DTT 7611 7611A 7612 7613 7613A 7614 7615 7615A */
  772. static struct tuner_range tuner_thomson_dtt761x_ntsc_ranges[] = {
  773. { 16 * 145.25 /*MHz*/, 0x8e, 0x39, },
  774. { 16 * 415.25 /*MHz*/, 0x8e, 0x3a, },
  775. { 16 * 999.99 , 0x8e, 0x3c, },
  776. };
  777. static struct tuner_range tuner_thomson_dtt761x_atsc_ranges[] = {
  778. { 16 * 147.00 /*MHz*/, 0x8e, 0x39, },
  779. { 16 * 417.00 /*MHz*/, 0x8e, 0x3a, },
  780. { 16 * 999.99 , 0x8e, 0x3c, },
  781. };
  782. static struct tuner_params tuner_thomson_dtt761x_params[] = {
  783. {
  784. .type = TUNER_PARAM_TYPE_NTSC,
  785. .ranges = tuner_thomson_dtt761x_ntsc_ranges,
  786. .count = ARRAY_SIZE(tuner_thomson_dtt761x_ntsc_ranges),
  787. .has_tda9887 = 1,
  788. .fm_gain_normal = 1,
  789. .radio_if = 2, /* 41.3 MHz */
  790. },
  791. {
  792. .type = TUNER_PARAM_TYPE_DIGITAL,
  793. .ranges = tuner_thomson_dtt761x_atsc_ranges,
  794. .count = ARRAY_SIZE(tuner_thomson_dtt761x_atsc_ranges),
  795. .iffreq = 16 * 44.00, /*MHz*/
  796. },
  797. };
  798. /* ------------ TUNER_TENA_9533_DI - Philips PAL ------------ */
  799. static struct tuner_range tuner_tena_9533_di_pal_ranges[] = {
  800. { 16 * 160.25 /*MHz*/, 0x8e, 0x01, },
  801. { 16 * 464.25 /*MHz*/, 0x8e, 0x02, },
  802. { 16 * 999.99 , 0x8e, 0x04, },
  803. };
  804. static struct tuner_params tuner_tena_9533_di_params[] = {
  805. {
  806. .type = TUNER_PARAM_TYPE_PAL,
  807. .ranges = tuner_tena_9533_di_pal_ranges,
  808. .count = ARRAY_SIZE(tuner_tena_9533_di_pal_ranges),
  809. },
  810. };
  811. /* ------------ TUNER_TENA_TNF_5337 - Tena tnf5337MFD STD M/N ------------ */
  812. static struct tuner_range tuner_tena_tnf_5337_ntsc_ranges[] = {
  813. { 16 * 166.25 /*MHz*/, 0x86, 0x01, },
  814. { 16 * 466.25 /*MHz*/, 0x86, 0x02, },
  815. { 16 * 999.99 , 0x86, 0x08, },
  816. };
  817. static struct tuner_params tuner_tena_tnf_5337_params[] = {
  818. {
  819. .type = TUNER_PARAM_TYPE_NTSC,
  820. .ranges = tuner_tena_tnf_5337_ntsc_ranges,
  821. .count = ARRAY_SIZE(tuner_tena_tnf_5337_ntsc_ranges),
  822. },
  823. };
  824. /* ------------ TUNER_PHILIPS_FMD1216ME(X)_MK3 - Philips PAL ------------ */
  825. static struct tuner_range tuner_philips_fmd1216me_mk3_pal_ranges[] = {
  826. { 16 * 160.00 /*MHz*/, 0x86, 0x51, },
  827. { 16 * 442.00 /*MHz*/, 0x86, 0x52, },
  828. { 16 * 999.99 , 0x86, 0x54, },
  829. };
  830. static struct tuner_range tuner_philips_fmd1216me_mk3_dvb_ranges[] = {
  831. { 16 * 143.87 /*MHz*/, 0xbc, 0x41 },
  832. { 16 * 158.87 /*MHz*/, 0xf4, 0x41 },
  833. { 16 * 329.87 /*MHz*/, 0xbc, 0x42 },
  834. { 16 * 441.87 /*MHz*/, 0xf4, 0x42 },
  835. { 16 * 625.87 /*MHz*/, 0xbc, 0x44 },
  836. { 16 * 803.87 /*MHz*/, 0xf4, 0x44 },
  837. { 16 * 999.99 , 0xfc, 0x44 },
  838. };
  839. static struct tuner_params tuner_philips_fmd1216me_mk3_params[] = {
  840. {
  841. .type = TUNER_PARAM_TYPE_PAL,
  842. .ranges = tuner_philips_fmd1216me_mk3_pal_ranges,
  843. .count = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_pal_ranges),
  844. .has_tda9887 = 1,
  845. .port1_active = 1,
  846. .port2_active = 1,
  847. .port2_fm_high_sensitivity = 1,
  848. .port2_invert_for_secam_lc = 1,
  849. .port1_set_for_fm_mono = 1,
  850. },
  851. {
  852. .type = TUNER_PARAM_TYPE_DIGITAL,
  853. .ranges = tuner_philips_fmd1216me_mk3_dvb_ranges,
  854. .count = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_dvb_ranges),
  855. .iffreq = 16 * 36.125, /*MHz*/
  856. },
  857. };
  858. static struct tuner_params tuner_philips_fmd1216mex_mk3_params[] = {
  859. {
  860. .type = TUNER_PARAM_TYPE_PAL,
  861. .ranges = tuner_philips_fmd1216me_mk3_pal_ranges,
  862. .count = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_pal_ranges),
  863. .has_tda9887 = 1,
  864. .port1_active = 1,
  865. .port2_active = 1,
  866. .port2_fm_high_sensitivity = 1,
  867. .port2_invert_for_secam_lc = 1,
  868. .port1_set_for_fm_mono = 1,
  869. .radio_if = 1,
  870. .fm_gain_normal = 1,
  871. },
  872. {
  873. .type = TUNER_PARAM_TYPE_DIGITAL,
  874. .ranges = tuner_philips_fmd1216me_mk3_dvb_ranges,
  875. .count = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_dvb_ranges),
  876. .iffreq = 16 * 36.125, /*MHz*/
  877. },
  878. };
  879. /* ------ TUNER_LG_TDVS_H06XF - LG INNOTEK / INFINEON ATSC ----- */
  880. static struct tuner_range tuner_tua6034_ntsc_ranges[] = {
  881. { 16 * 165.00 /*MHz*/, 0x8e, 0x01 },
  882. { 16 * 450.00 /*MHz*/, 0x8e, 0x02 },
  883. { 16 * 999.99 , 0x8e, 0x04 },
  884. };
  885. static struct tuner_range tuner_tua6034_atsc_ranges[] = {
  886. { 16 * 165.00 /*MHz*/, 0xce, 0x01 },
  887. { 16 * 450.00 /*MHz*/, 0xce, 0x02 },
  888. { 16 * 999.99 , 0xce, 0x04 },
  889. };
  890. static struct tuner_params tuner_lg_tdvs_h06xf_params[] = {
  891. {
  892. .type = TUNER_PARAM_TYPE_NTSC,
  893. .ranges = tuner_tua6034_ntsc_ranges,
  894. .count = ARRAY_SIZE(tuner_tua6034_ntsc_ranges),
  895. },
  896. {
  897. .type = TUNER_PARAM_TYPE_DIGITAL,
  898. .ranges = tuner_tua6034_atsc_ranges,
  899. .count = ARRAY_SIZE(tuner_tua6034_atsc_ranges),
  900. .iffreq = 16 * 44.00,
  901. },
  902. };
  903. /* ------------ TUNER_YMEC_TVF66T5_B_DFF - Philips PAL ------------ */
  904. static struct tuner_range tuner_ymec_tvf66t5_b_dff_pal_ranges[] = {
  905. { 16 * 160.25 /*MHz*/, 0x8e, 0x01, },
  906. { 16 * 464.25 /*MHz*/, 0x8e, 0x02, },
  907. { 16 * 999.99 , 0x8e, 0x08, },
  908. };
  909. static struct tuner_params tuner_ymec_tvf66t5_b_dff_params[] = {
  910. {
  911. .type = TUNER_PARAM_TYPE_PAL,
  912. .ranges = tuner_ymec_tvf66t5_b_dff_pal_ranges,
  913. .count = ARRAY_SIZE(tuner_ymec_tvf66t5_b_dff_pal_ranges),
  914. },
  915. };
  916. /* ------------ TUNER_LG_NTSC_TALN_MINI - LGINNOTEK NTSC ------------ */
  917. static struct tuner_range tuner_lg_taln_ntsc_ranges[] = {
  918. { 16 * 137.25 /*MHz*/, 0x8e, 0x01, },
  919. { 16 * 373.25 /*MHz*/, 0x8e, 0x02, },
  920. { 16 * 999.99 , 0x8e, 0x08, },
  921. };
  922. static struct tuner_range tuner_lg_taln_pal_secam_ranges[] = {
  923. { 16 * 150.00 /*MHz*/, 0x8e, 0x01, },
  924. { 16 * 425.00 /*MHz*/, 0x8e, 0x02, },
  925. { 16 * 999.99 , 0x8e, 0x08, },
  926. };
  927. static struct tuner_params tuner_lg_taln_params[] = {
  928. {
  929. .type = TUNER_PARAM_TYPE_NTSC,
  930. .ranges = tuner_lg_taln_ntsc_ranges,
  931. .count = ARRAY_SIZE(tuner_lg_taln_ntsc_ranges),
  932. },{
  933. .type = TUNER_PARAM_TYPE_PAL,
  934. .ranges = tuner_lg_taln_pal_secam_ranges,
  935. .count = ARRAY_SIZE(tuner_lg_taln_pal_secam_ranges),
  936. },
  937. };
  938. /* ------------ TUNER_PHILIPS_TD1316 - Philips PAL ------------ */
  939. static struct tuner_range tuner_philips_td1316_pal_ranges[] = {
  940. { 16 * 160.00 /*MHz*/, 0xc8, 0xa1, },
  941. { 16 * 442.00 /*MHz*/, 0xc8, 0xa2, },
  942. { 16 * 999.99 , 0xc8, 0xa4, },
  943. };
  944. static struct tuner_range tuner_philips_td1316_dvb_ranges[] = {
  945. { 16 * 93.834 /*MHz*/, 0xca, 0x60, },
  946. { 16 * 123.834 /*MHz*/, 0xca, 0xa0, },
  947. { 16 * 163.834 /*MHz*/, 0xca, 0xc0, },
  948. { 16 * 253.834 /*MHz*/, 0xca, 0x60, },
  949. { 16 * 383.834 /*MHz*/, 0xca, 0xa0, },
  950. { 16 * 443.834 /*MHz*/, 0xca, 0xc0, },
  951. { 16 * 583.834 /*MHz*/, 0xca, 0x60, },
  952. { 16 * 793.834 /*MHz*/, 0xca, 0xa0, },
  953. { 16 * 999.999 , 0xca, 0xe0, },
  954. };
  955. static struct tuner_params tuner_philips_td1316_params[] = {
  956. {
  957. .type = TUNER_PARAM_TYPE_PAL,
  958. .ranges = tuner_philips_td1316_pal_ranges,
  959. .count = ARRAY_SIZE(tuner_philips_td1316_pal_ranges),
  960. },
  961. {
  962. .type = TUNER_PARAM_TYPE_DIGITAL,
  963. .ranges = tuner_philips_td1316_dvb_ranges,
  964. .count = ARRAY_SIZE(tuner_philips_td1316_dvb_ranges),
  965. .iffreq = 16 * 36.166667 /*MHz*/,
  966. },
  967. };
  968. /* ------------ TUNER_PHILIPS_TUV1236D - Philips ATSC ------------ */
  969. static struct tuner_range tuner_tuv1236d_ntsc_ranges[] = {
  970. { 16 * 157.25 /*MHz*/, 0xce, 0x01, },
  971. { 16 * 454.00 /*MHz*/, 0xce, 0x02, },
  972. { 16 * 999.99 , 0xce, 0x04, },
  973. };
  974. static struct tuner_range tuner_tuv1236d_atsc_ranges[] = {
  975. { 16 * 157.25 /*MHz*/, 0xc6, 0x41, },
  976. { 16 * 454.00 /*MHz*/, 0xc6, 0x42, },
  977. { 16 * 999.99 , 0xc6, 0x44, },
  978. };
  979. static struct tuner_params tuner_tuv1236d_params[] = {
  980. {
  981. .type = TUNER_PARAM_TYPE_NTSC,
  982. .ranges = tuner_tuv1236d_ntsc_ranges,
  983. .count = ARRAY_SIZE(tuner_tuv1236d_ntsc_ranges),
  984. },
  985. {
  986. .type = TUNER_PARAM_TYPE_DIGITAL,
  987. .ranges = tuner_tuv1236d_atsc_ranges,
  988. .count = ARRAY_SIZE(tuner_tuv1236d_atsc_ranges),
  989. .iffreq = 16 * 44.00,
  990. },
  991. };
  992. /* ------------ TUNER_TNF_xxx5 - Texas Instruments--------- */
  993. /* This is known to work with Tenna TVF58t5-MFF and TVF5835 MFF
  994. * but it is expected to work also with other Tenna/Ymec
  995. * models based on TI SN 761677 chip on both PAL and NTSC
  996. */
  997. static struct tuner_range tuner_tnf_5335_d_if_pal_ranges[] = {
  998. { 16 * 168.25 /*MHz*/, 0x8e, 0x01, },
  999. { 16 * 471.25 /*MHz*/, 0x8e, 0x02, },
  1000. { 16 * 999.99 , 0x8e, 0x08, },
  1001. };
  1002. static struct tuner_range tuner_tnf_5335mf_ntsc_ranges[] = {
  1003. { 16 * 169.25 /*MHz*/, 0x8e, 0x01, },
  1004. { 16 * 469.25 /*MHz*/, 0x8e, 0x02, },
  1005. { 16 * 999.99 , 0x8e, 0x08, },
  1006. };
  1007. static struct tuner_params tuner_tnf_5335mf_params[] = {
  1008. {
  1009. .type = TUNER_PARAM_TYPE_NTSC,
  1010. .ranges = tuner_tnf_5335mf_ntsc_ranges,
  1011. .count = ARRAY_SIZE(tuner_tnf_5335mf_ntsc_ranges),
  1012. },
  1013. {
  1014. .type = TUNER_PARAM_TYPE_PAL,
  1015. .ranges = tuner_tnf_5335_d_if_pal_ranges,
  1016. .count = ARRAY_SIZE(tuner_tnf_5335_d_if_pal_ranges),
  1017. },
  1018. };
  1019. /* 70-79 */
  1020. /* ------------ TUNER_SAMSUNG_TCPN_2121P30A - Samsung NTSC ------------ */
  1021. /* '+ 4' turns on the Low Noise Amplifier */
  1022. static struct tuner_range tuner_samsung_tcpn_2121p30a_ntsc_ranges[] = {
  1023. { 16 * 130.00 /*MHz*/, 0xce, 0x01 + 4, },
  1024. { 16 * 364.50 /*MHz*/, 0xce, 0x02 + 4, },
  1025. { 16 * 999.99 , 0xce, 0x08 + 4, },
  1026. };
  1027. static struct tuner_params tuner_samsung_tcpn_2121p30a_params[] = {
  1028. {
  1029. .type = TUNER_PARAM_TYPE_NTSC,
  1030. .ranges = tuner_samsung_tcpn_2121p30a_ntsc_ranges,
  1031. .count = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_ntsc_ranges),
  1032. },
  1033. };
  1034. /* ------------ TUNER_THOMSON_FE6600 - DViCO Hybrid PAL ------------ */
  1035. static struct tuner_range tuner_thomson_fe6600_pal_ranges[] = {
  1036. { 16 * 160.00 /*MHz*/, 0xfe, 0x11, },
  1037. { 16 * 442.00 /*MHz*/, 0xf6, 0x12, },
  1038. { 16 * 999.99 , 0xf6, 0x18, },
  1039. };
  1040. static struct tuner_range tuner_thomson_fe6600_dvb_ranges[] = {
  1041. { 16 * 250.00 /*MHz*/, 0xb4, 0x12, },
  1042. { 16 * 455.00 /*MHz*/, 0xfe, 0x11, },
  1043. { 16 * 775.50 /*MHz*/, 0xbc, 0x18, },
  1044. { 16 * 999.99 , 0xf4, 0x18, },
  1045. };
  1046. static struct tuner_params tuner_thomson_fe6600_params[] = {
  1047. {
  1048. .type = TUNER_PARAM_TYPE_PAL,
  1049. .ranges = tuner_thomson_fe6600_pal_ranges,
  1050. .count = ARRAY_SIZE(tuner_thomson_fe6600_pal_ranges),
  1051. },
  1052. {
  1053. .type = TUNER_PARAM_TYPE_DIGITAL,
  1054. .ranges = tuner_thomson_fe6600_dvb_ranges,
  1055. .count = ARRAY_SIZE(tuner_thomson_fe6600_dvb_ranges),
  1056. .iffreq = 16 * 36.125 /*MHz*/,
  1057. },
  1058. };
  1059. /* ------------ TUNER_SAMSUNG_TCPG_6121P30A - Samsung PAL ------------ */
  1060. /* '+ 4' turns on the Low Noise Amplifier */
  1061. static struct tuner_range tuner_samsung_tcpg_6121p30a_pal_ranges[] = {
  1062. { 16 * 146.25 /*MHz*/, 0xce, 0x01 + 4, },
  1063. { 16 * 428.50 /*MHz*/, 0xce, 0x02 + 4, },
  1064. { 16 * 999.99 , 0xce, 0x08 + 4, },
  1065. };
  1066. static struct tuner_params tuner_samsung_tcpg_6121p30a_params[] = {
  1067. {
  1068. .type = TUNER_PARAM_TYPE_PAL,
  1069. .ranges = tuner_samsung_tcpg_6121p30a_pal_ranges,
  1070. .count = ARRAY_SIZE(tuner_samsung_tcpg_6121p30a_pal_ranges),
  1071. .has_tda9887 = 1,
  1072. .port1_active = 1,
  1073. .port2_active = 1,
  1074. .port2_invert_for_secam_lc = 1,
  1075. },
  1076. };
  1077. /* ------------ TUNER_TCL_MF02GIP-5N-E - TCL MF02GIP-5N ------------ */
  1078. static struct tuner_range tuner_tcl_mf02gip_5n_ntsc_ranges[] = {
  1079. { 16 * 172.00 /*MHz*/, 0x8e, 0x01, },
  1080. { 16 * 448.00 /*MHz*/, 0x8e, 0x02, },
  1081. { 16 * 999.99 , 0x8e, 0x04, },
  1082. };
  1083. static struct tuner_params tuner_tcl_mf02gip_5n_params[] = {
  1084. {
  1085. .type = TUNER_PARAM_TYPE_NTSC,
  1086. .ranges = tuner_tcl_mf02gip_5n_ntsc_ranges,
  1087. .count = ARRAY_SIZE(tuner_tcl_mf02gip_5n_ntsc_ranges),
  1088. .cb_first_if_lower_freq = 1,
  1089. },
  1090. };
  1091. /* 80-89 */
  1092. /* --------- TUNER_PHILIPS_FQ1216LME_MK3 -- active loopthrough, no FM ------- */
  1093. static struct tuner_params tuner_fq1216lme_mk3_params[] = {
  1094. {
  1095. .type = TUNER_PARAM_TYPE_PAL,
  1096. .ranges = tuner_fm1216me_mk3_pal_ranges,
  1097. .count = ARRAY_SIZE(tuner_fm1216me_mk3_pal_ranges),
  1098. .cb_first_if_lower_freq = 1, /* not specified, but safe to do */
  1099. .has_tda9887 = 1, /* TDA9886 */
  1100. .port1_active = 1,
  1101. .port2_active = 1,
  1102. .port2_invert_for_secam_lc = 1,
  1103. .default_top_low = 4,
  1104. .default_top_mid = 4,
  1105. .default_top_high = 4,
  1106. .default_top_secam_low = 4,
  1107. .default_top_secam_mid = 4,
  1108. .default_top_secam_high = 4,
  1109. },
  1110. };
  1111. /* ----- TUNER_PARTSNIC_PTI_5NF05 - Partsnic (Daewoo) PTI-5NF05 NTSC ----- */
  1112. static struct tuner_range tuner_partsnic_pti_5nf05_ranges[] = {
  1113. /* The datasheet specified channel ranges and the bandswitch byte */
  1114. /* The control byte value of 0x8e is just a guess */
  1115. { 16 * 133.25 /*MHz*/, 0x8e, 0x01, }, /* Channels 2 - B */
  1116. { 16 * 367.25 /*MHz*/, 0x8e, 0x02, }, /* Channels C - W+11 */
  1117. { 16 * 999.99 , 0x8e, 0x08, }, /* Channels W+12 - 69 */
  1118. };
  1119. static struct tuner_params tuner_partsnic_pti_5nf05_params[] = {
  1120. {
  1121. .type = TUNER_PARAM_TYPE_NTSC,
  1122. .ranges = tuner_partsnic_pti_5nf05_ranges,
  1123. .count = ARRAY_SIZE(tuner_partsnic_pti_5nf05_ranges),
  1124. .cb_first_if_lower_freq = 1, /* not specified but safe to do */
  1125. },
  1126. };
  1127. /* --------- TUNER_PHILIPS_CU1216L - DVB-C NIM ------------------------- */
  1128. static struct tuner_range tuner_cu1216l_ranges[] = {
  1129. { 16 * 160.25 /*MHz*/, 0xce, 0x01 },
  1130. { 16 * 444.25 /*MHz*/, 0xce, 0x02 },
  1131. { 16 * 999.99 , 0xce, 0x04 },
  1132. };
  1133. static struct tuner_params tuner_philips_cu1216l_params[] = {
  1134. {
  1135. .type = TUNER_PARAM_TYPE_DIGITAL,
  1136. .ranges = tuner_cu1216l_ranges,
  1137. .count = ARRAY_SIZE(tuner_cu1216l_ranges),
  1138. .iffreq = 16 * 36.125, /*MHz*/
  1139. },
  1140. };
  1141. /* ---------------------- TUNER_SONY_BTF_PXN01Z ------------------------ */
  1142. static struct tuner_range tuner_sony_btf_pxn01z_ranges[] = {
  1143. { 16 * 137.25 /*MHz*/, 0x8e, 0x01, },
  1144. { 16 * 367.25 /*MHz*/, 0x8e, 0x02, },
  1145. { 16 * 999.99 , 0x8e, 0x04, },
  1146. };
  1147. static struct tuner_params tuner_sony_btf_pxn01z_params[] = {
  1148. {
  1149. .type = TUNER_PARAM_TYPE_NTSC,
  1150. .ranges = tuner_sony_btf_pxn01z_ranges,
  1151. .count = ARRAY_SIZE(tuner_sony_btf_pxn01z_ranges),
  1152. },
  1153. };
  1154. /* ------------ TUNER_PHILIPS_FQ1236_MK5 - Philips NTSC ------------ */
  1155. static struct tuner_params tuner_philips_fq1236_mk5_params[] = {
  1156. {
  1157. .type = TUNER_PARAM_TYPE_NTSC,
  1158. .ranges = tuner_fm1236_mk3_ntsc_ranges,
  1159. .count = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges),
  1160. .has_tda9887 = 1, /* TDA9885, no FM radio */
  1161. },
  1162. };
  1163. /* --------- Sony BTF-PG472Z PAL/SECAM ------- */
  1164. static struct tuner_range tuner_sony_btf_pg472z_ranges[] = {
  1165. { 16 * 144.25 /*MHz*/, 0xc6, 0x01, },
  1166. { 16 * 427.25 /*MHz*/, 0xc6, 0x02, },
  1167. { 16 * 999.99 , 0xc6, 0x04, },
  1168. };
  1169. static struct tuner_params tuner_sony_btf_pg472z_params[] = {
  1170. {
  1171. .type = TUNER_PARAM_TYPE_PAL,
  1172. .ranges = tuner_sony_btf_pg472z_ranges,
  1173. .count = ARRAY_SIZE(tuner_sony_btf_pg472z_ranges),
  1174. .has_tda9887 = 1,
  1175. .port1_active = 1,
  1176. .port2_invert_for_secam_lc = 1,
  1177. },
  1178. };
  1179. /* 90-99 */
  1180. /* --------- Sony BTF-PG467Z NTSC-M-JP ------- */
  1181. static struct tuner_range tuner_sony_btf_pg467z_ranges[] = {
  1182. { 16 * 220.25 /*MHz*/, 0xc6, 0x01, },
  1183. { 16 * 467.25 /*MHz*/, 0xc6, 0x02, },
  1184. { 16 * 999.99 , 0xc6, 0x04, },
  1185. };
  1186. static struct tuner_params tuner_sony_btf_pg467z_params[] = {
  1187. {
  1188. .type = TUNER_PARAM_TYPE_NTSC,
  1189. .ranges = tuner_sony_btf_pg467z_ranges,
  1190. .count = ARRAY_SIZE(tuner_sony_btf_pg467z_ranges),
  1191. },
  1192. };
  1193. /* --------- Sony BTF-PG463Z NTSC-M ------- */
  1194. static struct tuner_range tuner_sony_btf_pg463z_ranges[] = {
  1195. { 16 * 130.25 /*MHz*/, 0xc6, 0x01, },
  1196. { 16 * 364.25 /*MHz*/, 0xc6, 0x02, },
  1197. { 16 * 999.99 , 0xc6, 0x04, },
  1198. };
  1199. static struct tuner_params tuner_sony_btf_pg463z_params[] = {
  1200. {
  1201. .type = TUNER_PARAM_TYPE_NTSC,
  1202. .ranges = tuner_sony_btf_pg463z_ranges,
  1203. .count = ARRAY_SIZE(tuner_sony_btf_pg463z_ranges),
  1204. },
  1205. };
  1206. /* --------------------------------------------------------------------- */
  1207. struct tunertype tuners[] = {
  1208. /* 0-9 */
  1209. [TUNER_TEMIC_PAL] = { /* TEMIC PAL */
  1210. .name = "Temic PAL (4002 FH5)",
  1211. .params = tuner_temic_pal_params,
  1212. .count = ARRAY_SIZE(tuner_temic_pal_params),
  1213. },
  1214. [TUNER_PHILIPS_PAL_I] = { /* Philips PAL_I */
  1215. .name = "Philips PAL_I (FI1246 and compatibles)",
  1216. .params = tuner_philips_pal_i_params,
  1217. .count = ARRAY_SIZE(tuner_philips_pal_i_params),
  1218. },
  1219. [TUNER_PHILIPS_NTSC] = { /* Philips NTSC */
  1220. .name = "Philips NTSC (FI1236,FM1236 and compatibles)",
  1221. .params = tuner_philips_ntsc_params,
  1222. .count = ARRAY_SIZE(tuner_philips_ntsc_params),
  1223. },
  1224. [TUNER_PHILIPS_SECAM] = { /* Philips SECAM */
  1225. .name = "Philips (SECAM+PAL_BG) (FI1216MF, FM1216MF, FR1216MF)",
  1226. .params = tuner_philips_secam_params,
  1227. .count = ARRAY_SIZE(tuner_philips_secam_params),
  1228. },
  1229. [TUNER_ABSENT] = { /* Tuner Absent */
  1230. .name = "NoTuner",
  1231. },
  1232. [TUNER_PHILIPS_PAL] = { /* Philips PAL */
  1233. .name = "Philips PAL_BG (FI1216 and compatibles)",
  1234. .params = tuner_philips_pal_params,
  1235. .count = ARRAY_SIZE(tuner_philips_pal_params),
  1236. },
  1237. [TUNER_TEMIC_NTSC] = { /* TEMIC NTSC */
  1238. .name = "Temic NTSC (4032 FY5)",
  1239. .params = tuner_temic_ntsc_params,
  1240. .count = ARRAY_SIZE(tuner_temic_ntsc_params),
  1241. },
  1242. [TUNER_TEMIC_PAL_I] = { /* TEMIC PAL_I */
  1243. .name = "Temic PAL_I (4062 FY5)",
  1244. .params = tuner_temic_pal_i_params,
  1245. .count = ARRAY_SIZE(tuner_temic_pal_i_params),
  1246. },
  1247. [TUNER_TEMIC_4036FY5_NTSC] = { /* TEMIC NTSC */
  1248. .name = "Temic NTSC (4036 FY5)",
  1249. .params = tuner_temic_4036fy5_ntsc_params,
  1250. .count = ARRAY_SIZE(tuner_temic_4036fy5_ntsc_params),
  1251. },
  1252. [TUNER_ALPS_TSBH1_NTSC] = { /* TEMIC NTSC */
  1253. .name = "Alps HSBH1",
  1254. .params = tuner_alps_tsbh1_ntsc_params,
  1255. .count = ARRAY_SIZE(tuner_alps_tsbh1_ntsc_params),
  1256. },
  1257. /* 10-19 */
  1258. [TUNER_ALPS_TSBE1_PAL] = { /* TEMIC PAL */
  1259. .name = "Alps TSBE1",
  1260. .params = tuner_alps_tsb_1_params,
  1261. .count = ARRAY_SIZE(tuner_alps_tsb_1_params),
  1262. },
  1263. [TUNER_ALPS_TSBB5_PAL_I] = { /* Alps PAL_I */
  1264. .name = "Alps TSBB5",
  1265. .params = tuner_alps_tsbb5_params,
  1266. .count = ARRAY_SIZE(tuner_alps_tsbb5_params),
  1267. },
  1268. [TUNER_ALPS_TSBE5_PAL] = { /* Alps PAL */
  1269. .name = "Alps TSBE5",
  1270. .params = tuner_alps_tsbe5_params,
  1271. .count = ARRAY_SIZE(tuner_alps_tsbe5_params),
  1272. },
  1273. [TUNER_ALPS_TSBC5_PAL] = { /* Alps PAL */
  1274. .name = "Alps TSBC5",
  1275. .params = tuner_alps_tsbc5_params,
  1276. .count = ARRAY_SIZE(tuner_alps_tsbc5_params),
  1277. },
  1278. [TUNER_TEMIC_4006FH5_PAL] = { /* TEMIC PAL */
  1279. .name = "Temic PAL_BG (4006FH5)",
  1280. .params = tuner_temic_4006fh5_params,
  1281. .count = ARRAY_SIZE(tuner_temic_4006fh5_params),
  1282. },
  1283. [TUNER_ALPS_TSHC6_NTSC] = { /* Alps NTSC */
  1284. .name = "Alps TSCH6",
  1285. .params = tuner_alps_tshc6_params,
  1286. .count = ARRAY_SIZE(tuner_alps_tshc6_params),
  1287. },
  1288. [TUNER_TEMIC_PAL_DK] = { /* TEMIC PAL */
  1289. .name = "Temic PAL_DK (4016 FY5)",
  1290. .params = tuner_temic_pal_dk_params,
  1291. .count = ARRAY_SIZE(tuner_temic_pal_dk_params),
  1292. },
  1293. [TUNER_PHILIPS_NTSC_M] = { /* Philips NTSC */
  1294. .name = "Philips NTSC_M (MK2)",
  1295. .params = tuner_philips_ntsc_m_params,
  1296. .count = ARRAY_SIZE(tuner_philips_ntsc_m_params),
  1297. },
  1298. [TUNER_TEMIC_4066FY5_PAL_I] = { /* TEMIC PAL_I */
  1299. .name = "Temic PAL_I (4066 FY5)",
  1300. .params = tuner_temic_4066fy5_pal_i_params,
  1301. .count = ARRAY_SIZE(tuner_temic_4066fy5_pal_i_params),
  1302. },
  1303. [TUNER_TEMIC_4006FN5_MULTI_PAL] = { /* TEMIC PAL */
  1304. .name = "Temic PAL* auto (4006 FN5)",
  1305. .params = tuner_temic_4006fn5_multi_params,
  1306. .count = ARRAY_SIZE(tuner_temic_4006fn5_multi_params),
  1307. },
  1308. /* 20-29 */
  1309. [TUNER_TEMIC_4009FR5_PAL] = { /* TEMIC PAL */
  1310. .name = "Temic PAL_BG (4009 FR5) or PAL_I (4069 FR5)",
  1311. .params = tuner_temic_4009f_5_params,
  1312. .count = ARRAY_SIZE(tuner_temic_4009f_5_params),
  1313. },
  1314. [TUNER_TEMIC_4039FR5_NTSC] = { /* TEMIC NTSC */
  1315. .name = "Temic NTSC (4039 FR5)",
  1316. .params = tuner_temic_4039fr5_params,
  1317. .count = ARRAY_SIZE(tuner_temic_4039fr5_params),
  1318. },
  1319. [TUNER_TEMIC_4046FM5] = { /* TEMIC PAL */
  1320. .name = "Temic PAL/SECAM multi (4046 FM5)",
  1321. .params = tuner_temic_4046fm5_params,
  1322. .count = ARRAY_SIZE(tuner_temic_4046fm5_params),
  1323. },
  1324. [TUNER_PHILIPS_PAL_DK] = { /* Philips PAL */
  1325. .name = "Philips PAL_DK (FI1256 and compatibles)",
  1326. .params = tuner_philips_pal_dk_params,
  1327. .count = ARRAY_SIZE(tuner_philips_pal_dk_params),
  1328. },
  1329. [TUNER_PHILIPS_FQ1216ME] = { /* Philips PAL */
  1330. .name = "Philips PAL/SECAM multi (FQ1216ME)",
  1331. .params = tuner_philips_fq1216me_params,
  1332. .count = ARRAY_SIZE(tuner_philips_fq1216me_params),
  1333. },
  1334. [TUNER_LG_PAL_I_FM] = { /* LGINNOTEK PAL_I */
  1335. .name = "LG PAL_I+FM (TAPC-I001D)",
  1336. .params = tuner_lg_pal_i_fm_params,
  1337. .count = ARRAY_SIZE(tuner_lg_pal_i_fm_params),
  1338. },
  1339. [TUNER_LG_PAL_I] = { /* LGINNOTEK PAL_I */
  1340. .name = "LG PAL_I (TAPC-I701D)",
  1341. .params = tuner_lg_pal_i_params,
  1342. .count = ARRAY_SIZE(tuner_lg_pal_i_params),
  1343. },
  1344. [TUNER_LG_NTSC_FM] = { /* LGINNOTEK NTSC */
  1345. .name = "LG NTSC+FM (TPI8NSR01F)",
  1346. .params = tuner_lg_ntsc_fm_params,
  1347. .count = ARRAY_SIZE(tuner_lg_ntsc_fm_params),
  1348. },
  1349. [TUNER_LG_PAL_FM] = { /* LGINNOTEK PAL */
  1350. .name = "LG PAL_BG+FM (TPI8PSB01D)",
  1351. .params = tuner_lg_pal_fm_params,
  1352. .count = ARRAY_SIZE(tuner_lg_pal_fm_params),
  1353. },
  1354. [TUNER_LG_PAL] = { /* LGINNOTEK PAL */
  1355. .name = "LG PAL_BG (TPI8PSB11D)",
  1356. .params = tuner_lg_pal_params,
  1357. .count = ARRAY_SIZE(tuner_lg_pal_params),
  1358. },
  1359. /* 30-39 */
  1360. [TUNER_TEMIC_4009FN5_MULTI_PAL_FM] = { /* TEMIC PAL */
  1361. .name = "Temic PAL* auto + FM (4009 FN5)",
  1362. .params = tuner_temic_4009_fn5_multi_pal_fm_params,
  1363. .count = ARRAY_SIZE(tuner_temic_4009_fn5_multi_pal_fm_params),
  1364. },
  1365. [TUNER_SHARP_2U5JF5540_NTSC] = { /* SHARP NTSC */
  1366. .name = "SHARP NTSC_JP (2U5JF5540)",
  1367. .params = tuner_sharp_2u5jf5540_params,
  1368. .count = ARRAY_SIZE(tuner_sharp_2u5jf5540_params),
  1369. },
  1370. [TUNER_Samsung_PAL_TCPM9091PD27] = { /* Samsung PAL */
  1371. .name = "Samsung PAL TCPM9091PD27",
  1372. .params = tuner_samsung_pal_tcpm9091pd27_params,
  1373. .count = ARRAY_SIZE(tuner_samsung_pal_tcpm9091pd27_params),
  1374. },
  1375. [TUNER_MT2032] = { /* Microtune PAL|NTSC */
  1376. .name = "MT20xx universal",
  1377. /* see mt20xx.c for details */ },
  1378. [TUNER_TEMIC_4106FH5] = { /* TEMIC PAL */
  1379. .name = "Temic PAL_BG (4106 FH5)",
  1380. .params = tuner_temic_4106fh5_params,
  1381. .count = ARRAY_SIZE(tuner_temic_4106fh5_params),
  1382. },
  1383. [TUNER_TEMIC_4012FY5] = { /* TEMIC PAL */
  1384. .name = "Temic PAL_DK/SECAM_L (4012 FY5)",
  1385. .params = tuner_temic_4012fy5_params,
  1386. .count = ARRAY_SIZE(tuner_temic_4012fy5_params),
  1387. },
  1388. [TUNER_TEMIC_4136FY5] = { /* TEMIC NTSC */
  1389. .name = "Temic NTSC (4136 FY5)",
  1390. .params = tuner_temic_4136_fy5_params,
  1391. .count = ARRAY_SIZE(tuner_temic_4136_fy5_params),
  1392. },
  1393. [TUNER_LG_PAL_NEW_TAPC] = { /* LGINNOTEK PAL */
  1394. .name = "LG PAL (newer TAPC series)",
  1395. .params = tuner_lg_pal_new_tapc_params,
  1396. .count = ARRAY_SIZE(tuner_lg_pal_new_tapc_params),
  1397. },
  1398. [TUNER_PHILIPS_FM1216ME_MK3] = { /* Philips PAL */
  1399. .name = "Philips PAL/SECAM multi (FM1216ME MK3)",
  1400. .params = tuner_fm1216me_mk3_params,
  1401. .count = ARRAY_SIZE(tuner_fm1216me_mk3_params),
  1402. },
  1403. [TUNER_LG_NTSC_NEW_TAPC] = { /* LGINNOTEK NTSC */
  1404. .name = "LG NTSC (newer TAPC series)",
  1405. .params = tuner_lg_ntsc_new_tapc_params,
  1406. .count = ARRAY_SIZE(tuner_lg_ntsc_new_tapc_params),
  1407. },
  1408. /* 40-49 */
  1409. [TUNER_HITACHI_NTSC] = { /* HITACHI NTSC */
  1410. .name = "HITACHI V7-J180AT",
  1411. .params = tuner_hitachi_ntsc_params,
  1412. .count = ARRAY_SIZE(tuner_hitachi_ntsc_params),
  1413. },
  1414. [TUNER_PHILIPS_PAL_MK] = { /* Philips PAL */
  1415. .name = "Philips PAL_MK (FI1216 MK)",
  1416. .params = tuner_philips_pal_mk_params,
  1417. .count = ARRAY_SIZE(tuner_philips_pal_mk_params),
  1418. },
  1419. [TUNER_PHILIPS_FCV1236D] = { /* Philips ATSC */
  1420. .name = "Philips FCV1236D ATSC/NTSC dual in",
  1421. .params = tuner_philips_fcv1236d_params,
  1422. .count = ARRAY_SIZE(tuner_philips_fcv1236d_params),
  1423. .min = 16 * 53.00,
  1424. .max = 16 * 803.00,
  1425. .stepsize = 62500,
  1426. },
  1427. [TUNER_PHILIPS_FM1236_MK3] = { /* Philips NTSC */
  1428. .name = "Philips NTSC MK3 (FM1236MK3 or FM1236/F)",
  1429. .params = tuner_fm1236_mk3_params,
  1430. .count = ARRAY_SIZE(tuner_fm1236_mk3_params),
  1431. },
  1432. [TUNER_PHILIPS_4IN1] = { /* Philips NTSC */
  1433. .name = "Philips 4 in 1 (ATI TV Wonder Pro/Conexant)",
  1434. .params = tuner_philips_4in1_params,
  1435. .count = ARRAY_SIZE(tuner_philips_4in1_params),
  1436. },
  1437. [TUNER_MICROTUNE_4049FM5] = { /* Microtune PAL */
  1438. .name = "Microtune 4049 FM5",
  1439. .params = tuner_microtune_4049_fm5_params,
  1440. .count = ARRAY_SIZE(tuner_microtune_4049_fm5_params),
  1441. },
  1442. [TUNER_PANASONIC_VP27] = { /* Panasonic NTSC */
  1443. .name = "Panasonic VP27s/ENGE4324D",
  1444. .params = tuner_panasonic_vp27_params,
  1445. .count = ARRAY_SIZE(tuner_panasonic_vp27_params),
  1446. },
  1447. [TUNER_LG_NTSC_TAPE] = { /* LGINNOTEK NTSC */
  1448. .name = "LG NTSC (TAPE series)",
  1449. .params = tuner_fm1236_mk3_params,
  1450. .count = ARRAY_SIZE(tuner_fm1236_mk3_params),
  1451. },
  1452. [TUNER_TNF_8831BGFF] = { /* Philips PAL */
  1453. .name = "Tenna TNF 8831 BGFF)",
  1454. .params = tuner_tnf_8831bgff_params,
  1455. .count = ARRAY_SIZE(tuner_tnf_8831bgff_params),
  1456. },
  1457. [TUNER_MICROTUNE_4042FI5] = { /* Microtune NTSC */
  1458. .name = "Microtune 4042 FI5 ATSC/NTSC dual in",
  1459. .params = tuner_microtune_4042fi5_params,
  1460. .count = ARRAY_SIZE(tuner_microtune_4042fi5_params),
  1461. .min = 16 * 57.00,
  1462. .max = 16 * 858.00,
  1463. .stepsize = 62500,
  1464. },
  1465. /* 50-59 */
  1466. [TUNER_TCL_2002N] = { /* TCL NTSC */
  1467. .name = "TCL 2002N",
  1468. .params = tuner_tcl_2002n_params,
  1469. .count = ARRAY_SIZE(tuner_tcl_2002n_params),
  1470. },
  1471. [TUNER_PHILIPS_FM1256_IH3] = { /* Philips PAL */
  1472. .name = "Philips PAL/SECAM_D (FM 1256 I-H3)",
  1473. .params = tuner_philips_fm1256_ih3_params,
  1474. .count = ARRAY_SIZE(tuner_philips_fm1256_ih3_params),
  1475. },
  1476. [TUNER_THOMSON_DTT7610] = { /* THOMSON ATSC */
  1477. .name = "Thomson DTT 7610 (ATSC/NTSC)",
  1478. .params = tuner_thomson_dtt7610_params,
  1479. .count = ARRAY_SIZE(tuner_thomson_dtt7610_params),
  1480. .min = 16 * 44.00,
  1481. .max = 16 * 958.00,
  1482. .stepsize = 62500,
  1483. },
  1484. [TUNER_PHILIPS_FQ1286] = { /* Philips NTSC */
  1485. .name = "Philips FQ1286",
  1486. .params = tuner_philips_fq1286_params,
  1487. .count = ARRAY_SIZE(tuner_philips_fq1286_params),
  1488. },
  1489. [TUNER_PHILIPS_TDA8290] = { /* Philips PAL|NTSC */
  1490. .name = "Philips/NXP TDA 8290/8295 + 8275/8275A/18271",
  1491. /* see tda8290.c for details */ },
  1492. [TUNER_TCL_2002MB] = { /* TCL PAL */
  1493. .name = "TCL 2002MB",
  1494. .params = tuner_tcl_2002mb_params,
  1495. .count = ARRAY_SIZE(tuner_tcl_2002mb_params),
  1496. },
  1497. [TUNER_PHILIPS_FQ1216AME_MK4] = { /* Philips PAL */
  1498. .name = "Philips PAL/SECAM multi (FQ1216AME MK4)",
  1499. .params = tuner_philips_fq1216ame_mk4_params,
  1500. .count = ARRAY_SIZE(tuner_philips_fq1216ame_mk4_params),
  1501. },
  1502. [TUNER_PHILIPS_FQ1236A_MK4] = { /* Philips NTSC */
  1503. .name = "Philips FQ1236A MK4",
  1504. .params = tuner_philips_fq1236a_mk4_params,
  1505. .count = ARRAY_SIZE(tuner_philips_fq1236a_mk4_params),
  1506. },
  1507. [TUNER_YMEC_TVF_8531MF] = { /* Philips NTSC */
  1508. .name = "Ymec TVision TVF-8531MF/8831MF/8731MF",
  1509. .params = tuner_ymec_tvf_8531mf_params,
  1510. .count = ARRAY_SIZE(tuner_ymec_tvf_8531mf_params),
  1511. },
  1512. [TUNER_YMEC_TVF_5533MF] = { /* Philips NTSC */
  1513. .name = "Ymec TVision TVF-5533MF",
  1514. .params = tuner_ymec_tvf_5533mf_params,
  1515. .count = ARRAY_SIZE(tuner_ymec_tvf_5533mf_params),
  1516. },
  1517. /* 60-69 */
  1518. [TUNER_THOMSON_DTT761X] = { /* THOMSON ATSC */
  1519. /* DTT 7611 7611A 7612 7613 7613A 7614 7615 7615A */
  1520. .name = "Thomson DTT 761X (ATSC/NTSC)",
  1521. .params = tuner_thomson_dtt761x_params,
  1522. .count = ARRAY_SIZE(tuner_thomson_dtt761x_params),
  1523. .min = 16 * 57.00,
  1524. .max = 16 * 863.00,
  1525. .stepsize = 62500,
  1526. .initdata = tua603x_agc103,
  1527. },
  1528. [TUNER_TENA_9533_DI] = { /* Philips PAL */
  1529. .name = "Tena TNF9533-D/IF/TNF9533-B/DF",
  1530. .params = tuner_tena_9533_di_params,
  1531. .count = ARRAY_SIZE(tuner_tena_9533_di_params),
  1532. },
  1533. [TUNER_TEA5767] = { /* Philips RADIO */
  1534. .name = "Philips TEA5767HN FM Radio",
  1535. /* see tea5767.c for details */
  1536. },
  1537. [TUNER_PHILIPS_FMD1216ME_MK3] = { /* Philips PAL */
  1538. .name = "Philips FMD1216ME MK3 Hybrid Tuner",
  1539. .params = tuner_philips_fmd1216me_mk3_params,
  1540. .count = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_params),
  1541. .min = 16 * 50.87,
  1542. .max = 16 * 858.00,
  1543. .stepsize = 166667,
  1544. .initdata = tua603x_agc112,
  1545. .sleepdata = (u8[]){ 4, 0x9c, 0x60, 0x85, 0x54 },
  1546. },
  1547. [TUNER_LG_TDVS_H06XF] = { /* LGINNOTEK ATSC */
  1548. .name = "LG TDVS-H06xF", /* H061F, H062F & H064F */
  1549. .params = tuner_lg_tdvs_h06xf_params,
  1550. .count = ARRAY_SIZE(tuner_lg_tdvs_h06xf_params),
  1551. .min = 16 * 54.00,
  1552. .max = 16 * 863.00,
  1553. .stepsize = 62500,
  1554. .initdata = tua603x_agc103,
  1555. },
  1556. [TUNER_YMEC_TVF66T5_B_DFF] = { /* Philips PAL */
  1557. .name = "Ymec TVF66T5-B/DFF",
  1558. .params = tuner_ymec_tvf66t5_b_dff_params,
  1559. .count = ARRAY_SIZE(tuner_ymec_tvf66t5_b_dff_params),
  1560. },
  1561. [TUNER_LG_TALN] = { /* LGINNOTEK NTSC / PAL / SECAM */
  1562. .name = "LG TALN series",
  1563. .params = tuner_lg_taln_params,
  1564. .count = ARRAY_SIZE(tuner_lg_taln_params),
  1565. },
  1566. [TUNER_PHILIPS_TD1316] = { /* Philips PAL */
  1567. .name = "Philips TD1316 Hybrid Tuner",
  1568. .params = tuner_philips_td1316_params,
  1569. .count = ARRAY_SIZE(tuner_philips_td1316_params),
  1570. .min = 16 * 87.00,
  1571. .max = 16 * 895.00,
  1572. .stepsize = 166667,
  1573. },
  1574. [TUNER_PHILIPS_TUV1236D] = { /* Philips ATSC */
  1575. .name = "Philips TUV1236D ATSC/NTSC dual in",
  1576. .params = tuner_tuv1236d_params,
  1577. .count = ARRAY_SIZE(tuner_tuv1236d_params),
  1578. .min = 16 * 54.00,
  1579. .max = 16 * 864.00,
  1580. .stepsize = 62500,
  1581. },
  1582. [TUNER_TNF_5335MF] = { /* Tenna PAL/NTSC */
  1583. .name = "Tena TNF 5335 and similar models",
  1584. .params = tuner_tnf_5335mf_params,
  1585. .count = ARRAY_SIZE(tuner_tnf_5335mf_params),
  1586. },
  1587. /* 70-79 */
  1588. [TUNER_SAMSUNG_TCPN_2121P30A] = { /* Samsung NTSC */
  1589. .name = "Samsung TCPN 2121P30A",
  1590. .params = tuner_samsung_tcpn_2121p30a_params,
  1591. .count = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_params),
  1592. },
  1593. [TUNER_XC2028] = { /* Xceive 2028 */
  1594. .name = "Xceive xc2028/xc3028 tuner",
  1595. /* see tuner-xc2028.c for details */
  1596. },
  1597. [TUNER_THOMSON_FE6600] = { /* Thomson PAL / DVB-T */
  1598. .name = "Thomson FE6600",
  1599. .params = tuner_thomson_fe6600_params,
  1600. .count = ARRAY_SIZE(tuner_thomson_fe6600_params),
  1601. .min = 16 * 44.25,
  1602. .max = 16 * 858.00,
  1603. .stepsize = 166667,
  1604. },
  1605. [TUNER_SAMSUNG_TCPG_6121P30A] = { /* Samsung PAL */
  1606. .name = "Samsung TCPG 6121P30A",
  1607. .params = tuner_samsung_tcpg_6121p30a_params,
  1608. .count = ARRAY_SIZE(tuner_samsung_tcpg_6121p30a_params),
  1609. },
  1610. [TUNER_TDA9887] = { /* Philips TDA 9887 IF PLL Demodulator.
  1611. This chip is part of some modern tuners */
  1612. .name = "Philips TDA988[5,6,7] IF PLL Demodulator",
  1613. /* see tda9887.c for details */
  1614. },
  1615. [TUNER_TEA5761] = { /* Philips RADIO */
  1616. .name = "Philips TEA5761 FM Radio",
  1617. /* see tea5767.c for details */
  1618. },
  1619. [TUNER_XC5000] = { /* Xceive 5000 */
  1620. .name = "Xceive 5000 tuner",
  1621. /* see xc5000.c for details */
  1622. },
  1623. [TUNER_XC4000] = { /* Xceive 4000 */
  1624. .name = "Xceive 4000 tuner",
  1625. /* see xc4000.c for details */
  1626. },
  1627. [TUNER_TCL_MF02GIP_5N] = { /* TCL tuner MF02GIP-5N-E */
  1628. .name = "TCL tuner MF02GIP-5N-E",
  1629. .params = tuner_tcl_mf02gip_5n_params,
  1630. .count = ARRAY_SIZE(tuner_tcl_mf02gip_5n_params),
  1631. },
  1632. [TUNER_PHILIPS_FMD1216MEX_MK3] = { /* Philips PAL */
  1633. .name = "Philips FMD1216MEX MK3 Hybrid Tuner",
  1634. .params = tuner_philips_fmd1216mex_mk3_params,
  1635. .count = ARRAY_SIZE(tuner_philips_fmd1216mex_mk3_params),
  1636. .min = 16 * 50.87,
  1637. .max = 16 * 858.00,
  1638. .stepsize = 166667,
  1639. .initdata = tua603x_agc112,
  1640. .sleepdata = (u8[]){ 4, 0x9c, 0x60, 0x85, 0x54 },
  1641. },
  1642. [TUNER_PHILIPS_FM1216MK5] = { /* Philips PAL */
  1643. .name = "Philips PAL/SECAM multi (FM1216 MK5)",
  1644. .params = tuner_fm1216mk5_params,
  1645. .count = ARRAY_SIZE(tuner_fm1216mk5_params),
  1646. },
  1647. /* 80-89 */
  1648. [TUNER_PHILIPS_FQ1216LME_MK3] = { /* PAL/SECAM, Loop-thru, no FM */
  1649. .name = "Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough",
  1650. .params = tuner_fq1216lme_mk3_params,
  1651. .count = ARRAY_SIZE(tuner_fq1216lme_mk3_params),
  1652. },
  1653. [TUNER_PARTSNIC_PTI_5NF05] = {
  1654. .name = "Partsnic (Daewoo) PTI-5NF05",
  1655. .params = tuner_partsnic_pti_5nf05_params,
  1656. .count = ARRAY_SIZE(tuner_partsnic_pti_5nf05_params),
  1657. },
  1658. [TUNER_PHILIPS_CU1216L] = {
  1659. .name = "Philips CU1216L",
  1660. .params = tuner_philips_cu1216l_params,
  1661. .count = ARRAY_SIZE(tuner_philips_cu1216l_params),
  1662. .stepsize = 62500,
  1663. },
  1664. [TUNER_NXP_TDA18271] = {
  1665. .name = "NXP TDA18271",
  1666. /* see tda18271-fe.c for details */
  1667. },
  1668. [TUNER_SONY_BTF_PXN01Z] = {
  1669. .name = "Sony BTF-Pxn01Z",
  1670. .params = tuner_sony_btf_pxn01z_params,
  1671. .count = ARRAY_SIZE(tuner_sony_btf_pxn01z_params),
  1672. },
  1673. [TUNER_PHILIPS_FQ1236_MK5] = { /* NTSC, TDA9885, no FM radio */
  1674. .name = "Philips FQ1236 MK5",
  1675. .params = tuner_philips_fq1236_mk5_params,
  1676. .count = ARRAY_SIZE(tuner_philips_fq1236_mk5_params),
  1677. },
  1678. [TUNER_TENA_TNF_5337] = { /* Tena 5337 MFD */
  1679. .name = "Tena TNF5337 MFD",
  1680. .params = tuner_tena_tnf_5337_params,
  1681. .count = ARRAY_SIZE(tuner_tena_tnf_5337_params),
  1682. },
  1683. [TUNER_XC5000C] = { /* Xceive 5000C */
  1684. .name = "Xceive 5000C tuner",
  1685. /* see xc5000.c for details */
  1686. },
  1687. [TUNER_SONY_BTF_PG472Z] = {
  1688. .name = "Sony BTF-PG472Z PAL/SECAM",
  1689. .params = tuner_sony_btf_pg472z_params,
  1690. .count = ARRAY_SIZE(tuner_sony_btf_pg472z_params),
  1691. },
  1692. /* 90-99 */
  1693. [TUNER_SONY_BTF_PK467Z] = {
  1694. .name = "Sony BTF-PK467Z NTSC-M-JP",
  1695. .params = tuner_sony_btf_pg467z_params,
  1696. .count = ARRAY_SIZE(tuner_sony_btf_pg467z_params),
  1697. },
  1698. [TUNER_SONY_BTF_PB463Z] = {
  1699. .name = "Sony BTF-PB463Z NTSC-M",
  1700. .params = tuner_sony_btf_pg463z_params,
  1701. .count = ARRAY_SIZE(tuner_sony_btf_pg463z_params),
  1702. },
  1703. };
  1704. EXPORT_SYMBOL(tuners);
  1705. unsigned const int tuner_count = ARRAY_SIZE(tuners);
  1706. EXPORT_SYMBOL(tuner_count);
  1707. MODULE_DESCRIPTION("Simple tuner device type database");
  1708. MODULE_AUTHOR("Ralph Metzler, Gerd Knorr, Gunther Mayer");
  1709. MODULE_LICENSE("GPL");