brintos

brintos / linux-shallow public Read only

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