These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / include / media / tuner.h
index b46ebb4..486b6a5 100644 (file)
@@ -1,23 +1,19 @@
 /*
-    tuner.h - definition for different tuners
-
-    Copyright (C) 1997 Markus Schroeder (schroedm@uni-duesseldorf.de)
-    minor modifications by Ralph Metzler (rjkm@thp.uni-koeln.de)
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
+ * tuner.h - definition for different tuners
+ *
+ * Copyright (C) 1997 Markus Schroeder (schroedm@uni-duesseldorf.de)
+ * minor modifications by Ralph Metzler (rjkm@thp.uni-koeln.de)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
 
 #ifndef _TUNER_H
 #define _TUNER_H
 #define TUNER_PHILIPS_FM1236_MK3       43
 
 #define TUNER_PHILIPS_4IN1             44      /* ATI TV Wonder Pro - Conexant */
-/* Microtune merged with Temic 12/31/1999 partially financed by Alps - these may be similar to Temic */
-#define TUNER_MICROTUNE_4049FM5        45
+       /*
+        * Microtune merged with Temic 12/31/1999 partially financed by Alps.
+        * these may be similar to Temic
+        */
+#define TUNER_MICROTUNE_4049FM5                45
 #define TUNER_PANASONIC_VP27           46
 #define TUNER_LG_NTSC_TAPE             47
 
 
 #define TUNER_PHILIPS_TUV1236D         68      /* ATI HDTV Wonder */
 #define TUNER_TNF_5335MF                69     /* Sabrent Bt848   */
-#define TUNER_SAMSUNG_TCPN_2121P30A     70     /* Hauppauge PVR-500MCE NTSC */
+#define TUNER_SAMSUNG_TCPN_2121P30A     70     /* Hauppauge PVR-500MCE NTSC */
 #define TUNER_XC2028                   71
 
 #define TUNER_THOMSON_FE6600           72      /* DViCO FusionHDTV DVB-T Hybrid */
-#define TUNER_SAMSUNG_TCPG_6121P30A     73     /* Hauppauge PVR-500 PAL */
+#define TUNER_SAMSUNG_TCPG_6121P30A     73     /* Hauppauge PVR-500 PAL */
 #define TUNER_TDA9887                   74      /* This tuner should be used only internally */
 #define TUNER_TEA5761                  75      /* Only FM Radio Tuner */
 #define TUNER_XC5000                   76      /* Xceive Silicon Tuner */
 #define TUNER_SONY_BTF_PB463Z          91      /* NTSC */
 
 /* tv card specific */
-#define TDA9887_PRESENT                (1<<0)
-#define TDA9887_PORT1_INACTIVE                 (1<<1)
-#define TDA9887_PORT2_INACTIVE                 (1<<2)
-#define TDA9887_QSS                    (1<<3)
-#define TDA9887_INTERCARRIER           (1<<4)
-#define TDA9887_PORT1_ACTIVE           (1<<5)
-#define TDA9887_PORT2_ACTIVE           (1<<6)
-#define TDA9887_INTERCARRIER_NTSC      (1<<7)
+#define TDA9887_PRESENT                        (1<<0)
+#define TDA9887_PORT1_INACTIVE         (1<<1)
+#define TDA9887_PORT2_INACTIVE         (1<<2)
+#define TDA9887_QSS                    (1<<3)
+#define TDA9887_INTERCARRIER           (1<<4)
+#define TDA9887_PORT1_ACTIVE           (1<<5)
+#define TDA9887_PORT2_ACTIVE           (1<<6)
+#define TDA9887_INTERCARRIER_NTSC      (1<<7)
 /* Tuner takeover point adjustment, in dB, -16 <= top <= 15 */
-#define TDA9887_TOP_MASK               (0x3f << 8)
-#define TDA9887_TOP_SET                (1 << 13)
-#define TDA9887_TOP(top)               (TDA9887_TOP_SET | (((16 + (top)) & 0x1f) << 8))
+#define TDA9887_TOP_MASK               (0x3f << 8)
+#define TDA9887_TOP_SET                        (1 << 13)
+#define TDA9887_TOP(top)               (TDA9887_TOP_SET | \
+                                        (((16 + (top)) & 0x1f) << 8))
 
 /* config options */
-#define TDA9887_DEEMPHASIS_MASK        (3<<16)
-#define TDA9887_DEEMPHASIS_NONE        (1<<16)
-#define TDA9887_DEEMPHASIS_50          (2<<16)
-#define TDA9887_DEEMPHASIS_75          (3<<16)
-#define TDA9887_AUTOMUTE               (1<<18)
+#define TDA9887_DEEMPHASIS_MASK                (3<<16)
+#define TDA9887_DEEMPHASIS_NONE                (1<<16)
+#define TDA9887_DEEMPHASIS_50          (2<<16)
+#define TDA9887_DEEMPHASIS_75          (3<<16)
+#define TDA9887_AUTOMUTE               (1<<18)
 #define TDA9887_GATING_18              (1<<19)
 #define TDA9887_GAIN_NORMAL            (1<<20)
 #define TDA9887_RIF_41_3               (1<<21)  /* radio IF1 41.3 vs 33.3 */
 
+/**
+ * enum tuner_mode      - Mode of the tuner
+ *
+ * @T_RADIO:        Tuner core will work in radio mode
+ * @T_ANALOG_TV:    Tuner core will work in analog TV mode
+ *
+ * Older boards only had a single tuner device, but some devices have a
+ * separate tuner for radio. In any case, the tuner-core needs to know if
+ * the tuner chip(s) will be used in radio mode or analog TV mode, as, on
+ * radio mode, frequencies are specified on a different range than on TV
+ * mode. This enum is used by the tuner core in order to work with the
+ * proper tuner range and eventually use a different tuner chip while in
+ * radio mode.
+ */
 enum tuner_mode {
        T_RADIO         = 1 << V4L2_TUNER_RADIO,
        T_ANALOG_TV     = 1 << V4L2_TUNER_ANALOG_TV,
-       /* Don't need to map V4L2_TUNER_DIGITAL_TV, as tuner-core won't use it */
+       /* Don't map V4L2_TUNER_DIGITAL_TV, as tuner-core won't use it */
 };
 
-/* Older boards only had a single tuner device. Nowadays multiple tuner
-   devices may be present on a single board. Using TUNER_SET_TYPE_ADDR
-   to pass the tuner_setup structure it is possible to setup each tuner
-   device in turn.
-
-   Since multiple devices may be present it is no longer sufficient to
-   send a command to a single i2c device. Instead you should broadcast
-   the command to all i2c devices.
-
-   By setting the mode_mask correctly you can select which commands are
-   accepted by a specific tuner device. For example, set mode_mask to
-   T_RADIO if the device is a radio-only tuner. That specific tuner will
-   only accept commands when the tuner is in radio mode and ignore them
-   when the tuner is set to TV mode.
+/**
+ * struct tuner_setup   - setup the tuner chipsets
+ *
+ * @addr:              I2C address used to control the tuner device/chipset
+ * @type:              Type of the tuner, as defined at the TUNER_* macros.
+ *                     Each different tuner model should have an unique
+ *                     identifier.
+ * @mode_mask:         Mask with the allowed tuner modes: V4L2_TUNER_RADIO,
+ *                     V4L2_TUNER_ANALOG_TV and/or V4L2_TUNER_DIGITAL_TV,
+ *                     describing if the tuner should be used to support
+ *                     Radio, analog TV and/or digital TV.
+ * @config:            Used to send tuner-specific configuration for complex
+ *                     tuners that require extra parameters to be set.
+ *                     Only a very few tuners require it and its usage on
+ *                     newer tuners should be avoided.
+ * @tuner_callback:    Some tuners require to call back the bridge driver,
+ *                     in order to do some tasks like rising a GPIO at the
+ *                     bridge chipset, in order to do things like resetting
+ *                     the device.
+ *
+ * Older boards only had a single tuner device. Nowadays multiple tuner
+ * devices may be present on a single board. Using TUNER_SET_TYPE_ADDR
+ * to pass the tuner_setup structure it is possible to setup each tuner
+ * device in turn.
+ *
+ * Since multiple devices may be present it is no longer sufficient to
+ * send a command to a single i2c device. Instead you should broadcast
+ * the command to all i2c devices.
+ *
+ * By setting the mode_mask correctly you can select which commands are
+ * accepted by a specific tuner device. For example, set mode_mask to
+ * T_RADIO if the device is a radio-only tuner. That specific tuner will
+ * only accept commands when the tuner is in radio mode and ignore them
+ * when the tuner is set to TV mode.
  */
 
 struct tuner_setup {
-       unsigned short  addr;   /* I2C address */
-       unsigned int    type;   /* Tuner type */
-       unsigned int    mode_mask;  /* Allowed tuner modes */
-       void            *config;    /* configuraion for more complex tuners */
-       int (*tuner_callback) (void *dev, int component, int cmd, int arg);
+       unsigned short  addr;
+       unsigned int    type;
+       unsigned int    mode_mask;
+       void            *config;
+       int (*tuner_callback)(void *dev, int component, int cmd, int arg);
 };
 
 #endif /* __KERNEL__ */