Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * tuner.h - definition for different tuners
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * Copyright (C) 1997 Markus Schroeder (schroedm@uni-duesseldorf.de)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * minor modifications by Ralph Metzler (rjkm@thp.uni-koeln.de)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) #ifndef _TUNER_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #define _TUNER_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #ifdef __KERNEL__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include <linux/videodev2.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #include <media/v4l2-mc.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #define ADDR_UNSET (255)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #define TUNER_TEMIC_PAL			0        /* 4002 FH5 (3X 7756, 9483) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #define TUNER_PHILIPS_PAL_I		1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) #define TUNER_PHILIPS_NTSC		2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) #define TUNER_PHILIPS_SECAM		3	/* you must actively select B/G, L, L` */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) #define TUNER_ABSENT			4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) #define TUNER_PHILIPS_PAL		5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #define TUNER_TEMIC_NTSC		6	/* 4032 FY5 (3X 7004, 9498, 9789)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define TUNER_TEMIC_PAL_I		7	/* 4062 FY5 (3X 8501, 9957) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define TUNER_TEMIC_4036FY5_NTSC	8	/* 4036 FY5 (3X 1223, 1981, 7686) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) #define TUNER_ALPS_TSBH1_NTSC		9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #define TUNER_ALPS_TSBE1_PAL		10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #define TUNER_ALPS_TSBB5_PAL_I		11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #define TUNER_ALPS_TSBE5_PAL		12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) #define TUNER_ALPS_TSBC5_PAL		13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) #define TUNER_TEMIC_4006FH5_PAL		14	/* 4006 FH5 (3X 9500, 9501, 7291) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) #define TUNER_ALPS_TSHC6_NTSC		15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) #define TUNER_TEMIC_PAL_DK		16	/* 4016 FY5 (3X 1392, 1393) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) #define TUNER_PHILIPS_NTSC_M		17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) #define TUNER_TEMIC_4066FY5_PAL_I	18	/* 4066 FY5 (3X 7032, 7035) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) #define TUNER_TEMIC_4006FN5_MULTI_PAL	19	/* B/G, I and D/K autodetected (3X 7595, 7606, 7657) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #define TUNER_TEMIC_4009FR5_PAL		20	/* incl. FM radio (3X 7607, 7488, 7711) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) #define TUNER_TEMIC_4039FR5_NTSC	21	/* incl. FM radio (3X 7246, 7578, 7732) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #define TUNER_TEMIC_4046FM5		22	/* you must actively select B/G, D/K, I, L, L` !  (3X 7804, 7806, 8103, 8104) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) #define TUNER_PHILIPS_PAL_DK		23
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) #define TUNER_PHILIPS_FQ1216ME		24	/* you must actively select B/G/D/K, I, L, L` */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #define TUNER_LG_PAL_I_FM		25
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) #define TUNER_LG_PAL_I			26
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #define TUNER_LG_NTSC_FM		27
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) #define TUNER_LG_PAL_FM			28
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) #define TUNER_LG_PAL			29
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) #define TUNER_TEMIC_4009FN5_MULTI_PAL_FM 30	/* B/G, I and D/K autodetected (3X 8155, 8160, 8163) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) #define TUNER_SHARP_2U5JF5540_NTSC	31
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) #define TUNER_Samsung_PAL_TCPM9091PD27	32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) #define TUNER_MT2032			33
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) #define TUNER_TEMIC_4106FH5		34	/* 4106 FH5 (3X 7808, 7865) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) #define TUNER_TEMIC_4012FY5		35	/* 4012 FY5 (3X 0971, 1099) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) #define TUNER_TEMIC_4136FY5		36	/* 4136 FY5 (3X 7708, 7746) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) #define TUNER_LG_PAL_NEW_TAPC		37
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) #define TUNER_PHILIPS_FM1216ME_MK3	38
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) #define TUNER_LG_NTSC_NEW_TAPC		39
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) #define TUNER_HITACHI_NTSC		40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) #define TUNER_PHILIPS_PAL_MK		41
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) #define TUNER_PHILIPS_FCV1236D		42
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) #define TUNER_PHILIPS_FM1236_MK3	43
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) #define TUNER_PHILIPS_4IN1		44	/* ATI TV Wonder Pro - Conexant */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	 * Microtune merged with Temic 12/31/1999 partially financed by Alps.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	 * these may be similar to Temic
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) #define TUNER_MICROTUNE_4049FM5		45
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) #define TUNER_PANASONIC_VP27		46
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) #define TUNER_LG_NTSC_TAPE		47
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) #define TUNER_TNF_8831BGFF		48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define TUNER_MICROTUNE_4042FI5		49	/* DViCO FusionHDTV 3 Gold-Q - 4042 FI5 (3X 8147) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) #define TUNER_TCL_2002N			50
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) #define TUNER_PHILIPS_FM1256_IH3	51
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) #define TUNER_THOMSON_DTT7610		52
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) #define TUNER_PHILIPS_FQ1286		53
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) #define TUNER_PHILIPS_TDA8290		54
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) #define TUNER_TCL_2002MB		55	/* Hauppauge PVR-150 PAL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #define TUNER_PHILIPS_FQ1216AME_MK4	56	/* Hauppauge PVR-150 PAL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) #define TUNER_PHILIPS_FQ1236A_MK4	57	/* Hauppauge PVR-500MCE NTSC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #define TUNER_YMEC_TVF_8531MF		58
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #define TUNER_YMEC_TVF_5533MF		59	/* Pixelview Pro Ultra NTSC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) #define TUNER_THOMSON_DTT761X		60	/* DTT 7611 7611A 7612 7613 7613A 7614 7615 7615A */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) #define TUNER_TENA_9533_DI		61
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) #define TUNER_TEA5767			62	/* Only FM Radio Tuner */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #define TUNER_PHILIPS_FMD1216ME_MK3	63
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #define TUNER_LG_TDVS_H06XF		64	/* TDVS H061F, H062F, H064F */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #define TUNER_YMEC_TVF66T5_B_DFF	65	/* Acorp Y878F */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #define TUNER_LG_TALN			66
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #define TUNER_PHILIPS_TD1316		67
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #define TUNER_PHILIPS_TUV1236D		68	/* ATI HDTV Wonder */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) #define TUNER_TNF_5335MF                69	/* Sabrent Bt848   */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #define TUNER_SAMSUNG_TCPN_2121P30A     70	/* Hauppauge PVR-500MCE NTSC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) #define TUNER_XC2028			71
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #define TUNER_THOMSON_FE6600		72	/* DViCO FusionHDTV DVB-T Hybrid */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define TUNER_SAMSUNG_TCPG_6121P30A     73	/* Hauppauge PVR-500 PAL */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #define TUNER_TDA9887                   74      /* This tuner should be used only internally */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) #define TUNER_TEA5761			75	/* Only FM Radio Tuner */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) #define TUNER_XC5000			76	/* Xceive Silicon Tuner */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) #define TUNER_TCL_MF02GIP_5N		77	/* TCL MF02GIP_5N */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define TUNER_PHILIPS_FMD1216MEX_MK3	78
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define TUNER_PHILIPS_FM1216MK5		79
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) #define TUNER_PHILIPS_FQ1216LME_MK3	80	/* Active loopthrough, no FM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #define TUNER_PARTSNIC_PTI_5NF05	81
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) #define TUNER_PHILIPS_CU1216L           82
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define TUNER_NXP_TDA18271		83
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #define TUNER_SONY_BTF_PXN01Z		84
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) #define TUNER_PHILIPS_FQ1236_MK5	85	/* NTSC, TDA9885, no FM radio */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) #define TUNER_TENA_TNF_5337		86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #define TUNER_XC4000			87	/* Xceive Silicon Tuner */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define TUNER_XC5000C			88	/* Xceive Silicon Tuner */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define TUNER_SONY_BTF_PG472Z		89	/* PAL+SECAM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define TUNER_SONY_BTF_PK467Z		90	/* NTSC_JP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define TUNER_SONY_BTF_PB463Z		91	/* NTSC */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) /* tv card specific */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define TDA9887_PRESENT			(1<<0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #define TDA9887_PORT1_INACTIVE		(1<<1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define TDA9887_PORT2_INACTIVE		(1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define TDA9887_QSS			(1<<3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define TDA9887_INTERCARRIER		(1<<4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define TDA9887_PORT1_ACTIVE		(1<<5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define TDA9887_PORT2_ACTIVE		(1<<6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) #define TDA9887_INTERCARRIER_NTSC	(1<<7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) /* Tuner takeover point adjustment, in dB, -16 <= top <= 15 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #define TDA9887_TOP_MASK		(0x3f << 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #define TDA9887_TOP_SET			(1 << 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #define TDA9887_TOP(top)		(TDA9887_TOP_SET | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 					 (((16 + (top)) & 0x1f) << 8))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) /* config options */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) #define TDA9887_DEEMPHASIS_MASK		(3<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) #define TDA9887_DEEMPHASIS_NONE		(1<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #define TDA9887_DEEMPHASIS_50		(2<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) #define TDA9887_DEEMPHASIS_75		(3<<16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) #define TDA9887_AUTOMUTE		(1<<18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) #define TDA9887_GATING_18		(1<<19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) #define TDA9887_GAIN_NORMAL		(1<<20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) #define TDA9887_RIF_41_3		(1<<21)  /* radio IF1 41.3 vs 33.3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)  * enum tuner_mode      - Mode of the tuner
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164)  * @T_RADIO:        Tuner core will work in radio mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)  * @T_ANALOG_TV:    Tuner core will work in analog TV mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167)  * Older boards only had a single tuner device, but some devices have a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168)  * separate tuner for radio. In any case, the tuner-core needs to know if
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169)  * the tuner chip(s) will be used in radio mode or analog TV mode, as, on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170)  * radio mode, frequencies are specified on a different range than on TV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)  * mode. This enum is used by the tuner core in order to work with the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)  * proper tuner range and eventually use a different tuner chip while in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)  * radio mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) enum tuner_mode {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	T_RADIO		= 1 << V4L2_TUNER_RADIO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	T_ANALOG_TV     = 1 << V4L2_TUNER_ANALOG_TV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	/* Don't map V4L2_TUNER_DIGITAL_TV, as tuner-core won't use it */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)  * struct tuner_setup   - setup the tuner chipsets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)  * @addr:		I2C address used to control the tuner device/chipset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)  * @type:		Type of the tuner, as defined at the TUNER_* macros.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186)  *			Each different tuner model should have an unique
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)  *			identifier.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188)  * @mode_mask:		Mask with the allowed tuner modes: V4L2_TUNER_RADIO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189)  *			V4L2_TUNER_ANALOG_TV and/or V4L2_TUNER_DIGITAL_TV,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)  *			describing if the tuner should be used to support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191)  *			Radio, analog TV and/or digital TV.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)  * @config:		Used to send tuner-specific configuration for complex
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193)  *			tuners that require extra parameters to be set.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)  *			Only a very few tuners require it and its usage on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195)  *			newer tuners should be avoided.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)  * @tuner_callback:	Some tuners require to call back the bridge driver,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197)  *			in order to do some tasks like rising a GPIO at the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)  *			bridge chipset, in order to do things like resetting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)  *			the device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201)  * Older boards only had a single tuner device. Nowadays multiple tuner
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)  * devices may be present on a single board. Using TUNER_SET_TYPE_ADDR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)  * to pass the tuner_setup structure it is possible to setup each tuner
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)  * device in turn.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206)  * Since multiple devices may be present it is no longer sufficient to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)  * send a command to a single i2c device. Instead you should broadcast
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208)  * the command to all i2c devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210)  * By setting the mode_mask correctly you can select which commands are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211)  * accepted by a specific tuner device. For example, set mode_mask to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212)  * T_RADIO if the device is a radio-only tuner. That specific tuner will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)  * only accept commands when the tuner is in radio mode and ignore them
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214)  * when the tuner is set to TV mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) struct tuner_setup {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 	unsigned short	addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 	unsigned int	type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 	unsigned int	mode_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 	void		*config;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 	int (*tuner_callback)(void *dev, int component, int cmd, int arg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) #endif /* __KERNEL__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) #endif /* _TUNER_H */