Commit 07c68a74 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] DocBook: Document include/media/tuner.h

This is part of the V4L2 core, so its kABI should be
documented at device-drivers DocBook.

Add the meta-tags for that.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent efe98010
...@@ -221,6 +221,7 @@ X!Isound/sound_firmware.c ...@@ -221,6 +221,7 @@ X!Isound/sound_firmware.c
<title>Media Devices</title> <title>Media Devices</title>
<sect1><title>Video2Linux devices</title> <sect1><title>Video2Linux devices</title>
!Iinclude/media/tuner.h
!Iinclude/media/v4l2-async.h !Iinclude/media/v4l2-async.h
!Iinclude/media/v4l2-ctrls.h !Iinclude/media/v4l2-ctrls.h
!Iinclude/media/v4l2-dv-timings.h !Iinclude/media/v4l2-dv-timings.h
......
...@@ -166,33 +166,67 @@ ...@@ -166,33 +166,67 @@
#define TDA9887_GAIN_NORMAL (1<<20) #define TDA9887_GAIN_NORMAL (1<<20)
#define TDA9887_RIF_41_3 (1<<21) /* radio IF1 41.3 vs 33.3 */ #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 { enum tuner_mode {
T_RADIO = 1 << V4L2_TUNER_RADIO, T_RADIO = 1 << V4L2_TUNER_RADIO,
T_ANALOG_TV = 1 << V4L2_TUNER_ANALOG_TV, 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 need to 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 * struct tuner_setup - setup the tuner chipsets
to pass the tuner_setup structure it is possible to setup each tuner *
device in turn. * @addr: I2C address used to control the tuner device/chipset
* @type: Type of the tuner, as defined at the TUNER_* macros.
Since multiple devices may be present it is no longer sufficient to * Each different tuner model should have an unique
send a command to a single i2c device. Instead you should broadcast * identifier.
the command to all i2c devices. * @mode_mask: Mask with the allowed tuner modes: V4L2_TUNER_RADIO,
* V4L2_TUNER_ANALOG_TV and/or V4L2_TUNER_DIGITAL_TV,
By setting the mode_mask correctly you can select which commands are * describing if the tuner should be used to support
accepted by a specific tuner device. For example, set mode_mask to * Radio, analog TV and/or digital TV.
T_RADIO if the device is a radio-only tuner. That specific tuner will * @config: Used to send tuner-specific configuration for complex
only accept commands when the tuner is in radio mode and ignore them * tuners that require extra parameters to be set.
when the tuner is set to TV mode. * 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 { struct tuner_setup {
unsigned short addr; /* I2C address */ unsigned short addr;
unsigned int type; /* Tuner type */ unsigned int type;
unsigned int mode_mask; /* Allowed tuner modes */ unsigned int mode_mask;
void *config; /* configuraion for more complex tuners */ void *config;
int (*tuner_callback) (void *dev, int component, int cmd, int arg); int (*tuner_callback) (void *dev, int component, int cmd, int arg);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment