| 1 |
|
| 2 | |
| 3 | * tuner.h - definition for different tuners
|
| 4 | *
|
| 5 | * Copyright (C) 1997 Markus Schroeder ([email protected])
|
| 6 | * minor modifications by Ralph Metzler ([email protected])
|
| 7 |
|
| 8 |
|
| 9 | #ifndef _TUNER_H
|
| 10 | #define _TUNER_H
|
| 11 | #ifdef __KERNEL__
|
| 12 |
|
| 13 | #include <linux/videodev2.h>
|
| 14 | #include <media/v4l2-mc.h>
|
| 15 |
|
| 16 | #define ADDR_UNSET (255)
|
| 17 |
|
| 18 | #define TUNER_TEMIC_PAL 0
|
| 19 | #define TUNER_PHILIPS_PAL_I 1
|
| 20 | #define TUNER_PHILIPS_NTSC 2
|
| 21 | #define TUNER_PHILIPS_SECAM 3
|
| 22 |
|
| 23 | #define TUNER_ABSENT 4
|
| 24 | #define TUNER_PHILIPS_PAL 5
|
| 25 | #define TUNER_TEMIC_NTSC 6
|
| 26 | #define TUNER_TEMIC_PAL_I 7
|
| 27 |
|
| 28 | #define TUNER_TEMIC_4036FY5_NTSC 8
|
| 29 | #define TUNER_ALPS_TSBH1_NTSC 9
|
| 30 | #define TUNER_ALPS_TSBE1_PAL 10
|
| 31 | #define TUNER_ALPS_TSBB5_PAL_I 11
|
| 32 |
|
| 33 | #define TUNER_ALPS_TSBE5_PAL 12
|
| 34 | #define TUNER_ALPS_TSBC5_PAL 13
|
| 35 | #define TUNER_TEMIC_4006FH5_PAL 14
|
| 36 | #define TUNER_ALPS_TSHC6_NTSC 15
|
| 37 |
|
| 38 | #define TUNER_TEMIC_PAL_DK 16
|
| 39 | #define TUNER_PHILIPS_NTSC_M 17
|
| 40 | #define TUNER_TEMIC_4066FY5_PAL_I 18
|
| 41 | #define TUNER_TEMIC_4006FN5_MULTI_PAL 19
|
| 42 |
|
| 43 | #define TUNER_TEMIC_4009FR5_PAL 20
|
| 44 | #define TUNER_TEMIC_4039FR5_NTSC 21
|
| 45 | #define TUNER_TEMIC_4046FM5 22
|
| 46 | #define TUNER_PHILIPS_PAL_DK 23
|
| 47 |
|
| 48 | #define TUNER_PHILIPS_FQ1216ME 24
|
| 49 | #define TUNER_LG_PAL_I_FM 25
|
| 50 | #define TUNER_LG_PAL_I 26
|
| 51 | #define TUNER_LG_NTSC_FM 27
|
| 52 |
|
| 53 | #define TUNER_LG_PAL_FM 28
|
| 54 | #define TUNER_LG_PAL 29
|
| 55 | #define TUNER_TEMIC_4009FN5_MULTI_PAL_FM 30
|
| 56 | #define TUNER_SHARP_2U5JF5540_NTSC 31
|
| 57 |
|
| 58 | #define TUNER_Samsung_PAL_TCPM9091PD27 32
|
| 59 | #define TUNER_MT2032 33
|
| 60 | #define TUNER_TEMIC_4106FH5 34
|
| 61 | #define TUNER_TEMIC_4012FY5 35
|
| 62 |
|
| 63 | #define TUNER_TEMIC_4136FY5 36
|
| 64 | #define TUNER_LG_PAL_NEW_TAPC 37
|
| 65 | #define TUNER_PHILIPS_FM1216ME_MK3 38
|
| 66 | #define TUNER_LG_NTSC_NEW_TAPC 39
|
| 67 |
|
| 68 | #define TUNER_HITACHI_NTSC 40
|
| 69 | #define TUNER_PHILIPS_PAL_MK 41
|
| 70 | #define TUNER_PHILIPS_FCV1236D 42
|
| 71 | #define TUNER_PHILIPS_FM1236_MK3 43
|
| 72 |
|
| 73 | #define TUNER_PHILIPS_4IN1 44
|
| 74 | |
| 75 | * Microtune merged with Temic 12/31/1999 partially financed by Alps.
|
| 76 | * these may be similar to Temic
|
| 77 |
|
| 78 | #define TUNER_MICROTUNE_4049FM5 45
|
| 79 | #define TUNER_PANASONIC_VP27 46
|
| 80 | #define TUNER_LG_NTSC_TAPE 47
|
| 81 |
|
| 82 | #define TUNER_TNF_8831BGFF 48
|
| 83 | #define TUNER_MICROTUNE_4042FI5 49
|
| 84 | #define TUNER_TCL_2002N 50
|
| 85 | #define TUNER_PHILIPS_FM1256_IH3 51
|
| 86 |
|
| 87 | #define TUNER_THOMSON_DTT7610 52
|
| 88 | #define TUNER_PHILIPS_FQ1286 53
|
| 89 | #define TUNER_PHILIPS_TDA8290 54
|
| 90 | #define TUNER_TCL_2002MB 55
|
| 91 |
|
| 92 | #define TUNER_PHILIPS_FQ1216AME_MK4 56
|
| 93 | #define TUNER_PHILIPS_FQ1236A_MK4 57
|
| 94 | #define TUNER_YMEC_TVF_8531MF 58
|
| 95 | #define TUNER_YMEC_TVF_5533MF 59
|
| 96 |
|
| 97 | #define TUNER_THOMSON_DTT761X 60
|
| 98 | #define TUNER_TENA_9533_DI 61
|
| 99 | #define TUNER_TEA5767 62
|
| 100 | #define TUNER_PHILIPS_FMD1216ME_MK3 63
|
| 101 |
|
| 102 | #define TUNER_LG_TDVS_H06XF 64
|
| 103 | #define TUNER_YMEC_TVF66T5_B_DFF 65
|
| 104 | #define TUNER_LG_TALN 66
|
| 105 | #define TUNER_PHILIPS_TD1316 67
|
| 106 |
|
| 107 | #define TUNER_PHILIPS_TUV1236D 68
|
| 108 | #define TUNER_TNF_5335MF 69
|
| 109 | #define TUNER_SAMSUNG_TCPN_2121P30A 70
|
| 110 | #define TUNER_XC2028 71
|
| 111 |
|
| 112 | #define TUNER_THOMSON_FE6600 72
|
| 113 | #define TUNER_SAMSUNG_TCPG_6121P30A 73
|
| 114 | #define TUNER_TDA9887 74
|
| 115 | #define TUNER_TEA5761 75
|
| 116 | #define TUNER_XC5000 76
|
| 117 | #define TUNER_TCL_MF02GIP_5N 77
|
| 118 | #define TUNER_PHILIPS_FMD1216MEX_MK3 78
|
| 119 | #define TUNER_PHILIPS_FM1216MK5 79
|
| 120 | #define TUNER_PHILIPS_FQ1216LME_MK3 80
|
| 121 |
|
| 122 | #define TUNER_PARTSNIC_PTI_5NF05 81
|
| 123 | #define TUNER_PHILIPS_CU1216L 82
|
| 124 | #define TUNER_NXP_TDA18271 83
|
| 125 | #define TUNER_SONY_BTF_PXN01Z 84
|
| 126 | #define TUNER_PHILIPS_FQ1236_MK5 85
|
| 127 | #define TUNER_TENA_TNF_5337 86
|
| 128 |
|
| 129 | #define TUNER_XC4000 87
|
| 130 | #define TUNER_XC5000C 88
|
| 131 |
|
| 132 | #define TUNER_SONY_BTF_PG472Z 89
|
| 133 | #define TUNER_SONY_BTF_PK467Z 90
|
| 134 | #define TUNER_SONY_BTF_PB463Z 91
|
| 135 | #define TUNER_SI2157 92
|
| 136 | #define TUNER_TENA_TNF_931D_DFDR1 93
|
| 137 |
|
| 138 |
|
| 139 | #define TDA9887_PRESENT (1<<0)
|
| 140 | #define TDA9887_PORT1_INACTIVE (1<<1)
|
| 141 | #define TDA9887_PORT2_INACTIVE (1<<2)
|
| 142 | #define TDA9887_QSS (1<<3)
|
| 143 | #define TDA9887_INTERCARRIER (1<<4)
|
| 144 | #define TDA9887_PORT1_ACTIVE (1<<5)
|
| 145 | #define TDA9887_PORT2_ACTIVE (1<<6)
|
| 146 | #define TDA9887_INTERCARRIER_NTSC (1<<7)
|
| 147 |
|
| 148 | #define TDA9887_TOP_MASK (0x3f << 8)
|
| 149 | #define TDA9887_TOP_SET (1 << 13)
|
| 150 | #define TDA9887_TOP(top) (TDA9887_TOP_SET | \
|
| 151 | (((16 + (top)) & 0x1f) << 8))
|
| 152 |
|
| 153 |
|
| 154 | #define TDA9887_DEEMPHASIS_MASK (3<<16)
|
| 155 | #define TDA9887_DEEMPHASIS_NONE (1<<16)
|
| 156 | #define TDA9887_DEEMPHASIS_50 (2<<16)
|
| 157 | #define TDA9887_DEEMPHASIS_75 (3<<16)
|
| 158 | #define TDA9887_AUTOMUTE (1<<18)
|
| 159 | #define TDA9887_GATING_18 (1<<19)
|
| 160 | #define TDA9887_GAIN_NORMAL (1<<20)
|
| 161 | #define TDA9887_RIF_41_3 (1<<21)
|
| 162 |
|
| 163 | |
| 164 | * enum tuner_mode - Mode of the tuner
|
| 165 | *
|
| 166 | * @T_RADIO: Tuner core will work in radio mode
|
| 167 | * @T_ANALOG_TV: Tuner core will work in analog TV mode
|
| 168 | *
|
| 169 | * Older boards only had a single tuner device, but some devices have a
|
| 170 | * separate tuner for radio. In any case, the tuner-core needs to know if
|
| 171 | * the tuner chip(s) will be used in radio mode or analog TV mode, as, on
|
| 172 | * radio mode, frequencies are specified on a different range than on TV
|
| 173 | * mode. This enum is used by the tuner core in order to work with the
|
| 174 | * proper tuner range and eventually use a different tuner chip while in
|
| 175 | * radio mode.
|
| 176 |
|
| 177 | enum tuner_mode {
|
| 178 | T_RADIO = 1 << V4L2_TUNER_RADIO,
|
| 179 | T_ANALOG_TV = 1 << V4L2_TUNER_ANALOG_TV,
|
| 180 |
|
| 181 | };
|
| 182 |
|
| 183 | |
| 184 | * struct tuner_setup - setup the tuner chipsets
|
| 185 | *
|
| 186 | * @addr: I2C address used to control the tuner device/chipset
|
| 187 | * @type: Type of the tuner, as defined at the TUNER_* macros.
|
| 188 | * Each different tuner model should have an unique
|
| 189 | * identifier.
|
| 190 | * @mode_mask: Mask with the allowed tuner modes: V4L2_TUNER_RADIO,
|
| 191 | * V4L2_TUNER_ANALOG_TV and/or V4L2_TUNER_DIGITAL_TV,
|
| 192 | * describing if the tuner should be used to support
|
| 193 | * Radio, analog TV and/or digital TV.
|
| 194 | * @config: Used to send tuner-specific configuration for complex
|
| 195 | * tuners that require extra parameters to be set.
|
| 196 | * Only a very few tuners require it and its usage on
|
| 197 | * newer tuners should be avoided.
|
| 198 | * @tuner_callback: Some tuners require to call back the bridge driver,
|
| 199 | * in order to do some tasks like rising a GPIO at the
|
| 200 | * bridge chipset, in order to do things like resetting
|
| 201 | * the device.
|
| 202 | *
|
| 203 | * Older boards only had a single tuner device. Nowadays multiple tuner
|
| 204 | * devices may be present on a single board. Using TUNER_SET_TYPE_ADDR
|
| 205 | * to pass the tuner_setup structure it is possible to setup each tuner
|
| 206 | * device in turn.
|
| 207 | *
|
| 208 | * Since multiple devices may be present it is no longer sufficient to
|
| 209 | * send a command to a single i2c device. Instead you should broadcast
|
| 210 | * the command to all i2c devices.
|
| 211 | *
|
| 212 | * By setting the mode_mask correctly you can select which commands are
|
| 213 | * accepted by a specific tuner device. For example, set mode_mask to
|
| 214 | * T_RADIO if the device is a radio-only tuner. That specific tuner will
|
| 215 | * only accept commands when the tuner is in radio mode and ignore them
|
| 216 | * when the tuner is set to TV mode.
|
| 217 |
|
| 218 |
|
| 219 | struct tuner_setup {
|
| 220 | unsigned short addr;
|
| 221 | unsigned int type;
|
| 222 | unsigned int mode_mask;
|
| 223 | void *config;
|
| 224 | int (*tuner_callback)(void *dev, int component, int cmd, int arg);
|
| 225 | };
|
| 226 |
|
| 227 | #endif
|
| 228 |
|
| 229 | #endif
|