[media] doc-rst: add documentation for si4713
Convert it to ReST and add it to the media/v4l-drivers book. Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
b4a41387be
commit
b299357065
|
@ -1,11 +1,16 @@
|
||||||
Driver for I2C radios for the Silicon Labs Si4713 FM Radio Transmitters
|
.. include:: <isonum.txt>
|
||||||
|
|
||||||
|
The Silicon Labs Si4713 FM Radio Transmitter Driver
|
||||||
|
===================================================
|
||||||
|
|
||||||
|
Copyright |copy| 2009 Nokia Corporation
|
||||||
|
|
||||||
Copyright (c) 2009 Nokia Corporation
|
|
||||||
Contact: Eduardo Valentin <eduardo.valentin@nokia.com>
|
Contact: Eduardo Valentin <eduardo.valentin@nokia.com>
|
||||||
|
|
||||||
|
|
||||||
Information about the Device
|
Information about the Device
|
||||||
============================
|
----------------------------
|
||||||
|
|
||||||
This chip is a Silicon Labs product. It is a I2C device, currently on 0x63 address.
|
This chip is a Silicon Labs product. It is a I2C device, currently on 0x63 address.
|
||||||
Basically, it has transmission and signal noise level measurement features.
|
Basically, it has transmission and signal noise level measurement features.
|
||||||
|
|
||||||
|
@ -19,7 +24,8 @@ properties which can change the behavior of this chip.
|
||||||
Users must comply with local regulations on radio frequency (RF) transmission.
|
Users must comply with local regulations on radio frequency (RF) transmission.
|
||||||
|
|
||||||
Device driver description
|
Device driver description
|
||||||
=========================
|
-------------------------
|
||||||
|
|
||||||
There are two modules to handle this device. One is a I2C device driver
|
There are two modules to handle this device. One is a I2C device driver
|
||||||
and the other is a platform driver.
|
and the other is a platform driver.
|
||||||
|
|
||||||
|
@ -37,140 +43,148 @@ etc. But mostly of its properties will be present in the extended controls.
|
||||||
When the v4l2 mute property is set to 1 (true), the driver will turn the chip off.
|
When the v4l2 mute property is set to 1 (true), the driver will turn the chip off.
|
||||||
|
|
||||||
Properties description
|
Properties description
|
||||||
======================
|
----------------------
|
||||||
|
|
||||||
The properties can be accessed using v4l2 extended controls.
|
The properties can be accessed using v4l2 extended controls.
|
||||||
Here is an output from v4l2-ctl util:
|
Here is an output from v4l2-ctl util:
|
||||||
/ # v4l2-ctl -d /dev/radio0 --all -L
|
|
||||||
Driver Info:
|
|
||||||
Driver name : radio-si4713
|
|
||||||
Card type : Silicon Labs Si4713 Modulator
|
|
||||||
Bus info :
|
|
||||||
Driver version: 0
|
|
||||||
Capabilities : 0x00080800
|
|
||||||
RDS Output
|
|
||||||
Modulator
|
|
||||||
Audio output: 0 (FM Modulator Audio Out)
|
|
||||||
Frequency: 1408000 (88.000000 MHz)
|
|
||||||
Video Standard = 0x00000000
|
|
||||||
Modulator:
|
|
||||||
Name : FM Modulator
|
|
||||||
Capabilities : 62.5 Hz stereo rds
|
|
||||||
Frequency range : 76.0 MHz - 108.0 MHz
|
|
||||||
Subchannel modulation: stereo+rds
|
|
||||||
|
|
||||||
User Controls
|
.. code-block:: none
|
||||||
|
|
||||||
mute (bool) : default=1 value=0
|
/ # v4l2-ctl -d /dev/radio0 --all -L
|
||||||
|
Driver Info:
|
||||||
|
Driver name : radio-si4713
|
||||||
|
Card type : Silicon Labs Si4713 Modulator
|
||||||
|
Bus info :
|
||||||
|
Driver version: 0
|
||||||
|
Capabilities : 0x00080800
|
||||||
|
RDS Output
|
||||||
|
Modulator
|
||||||
|
Audio output: 0 (FM Modulator Audio Out)
|
||||||
|
Frequency: 1408000 (88.000000 MHz)
|
||||||
|
Video Standard = 0x00000000
|
||||||
|
Modulator:
|
||||||
|
Name : FM Modulator
|
||||||
|
Capabilities : 62.5 Hz stereo rds
|
||||||
|
Frequency range : 76.0 MHz - 108.0 MHz
|
||||||
|
Subchannel modulation: stereo+rds
|
||||||
|
|
||||||
FM Radio Modulator Controls
|
User Controls
|
||||||
|
|
||||||
rds_signal_deviation (int) : min=0 max=90000 step=10 default=200 value=200 flags=slider
|
mute (bool) : default=1 value=0
|
||||||
rds_program_id (int) : min=0 max=65535 step=1 default=0 value=0
|
|
||||||
rds_program_type (int) : min=0 max=31 step=1 default=0 value=0
|
FM Radio Modulator Controls
|
||||||
rds_ps_name (str) : min=0 max=96 step=8 value='si4713 '
|
|
||||||
rds_radio_text (str) : min=0 max=384 step=32 value=''
|
rds_signal_deviation (int) : min=0 max=90000 step=10 default=200 value=200 flags=slider
|
||||||
audio_limiter_feature_enabled (bool) : default=1 value=1
|
rds_program_id (int) : min=0 max=65535 step=1 default=0 value=0
|
||||||
audio_limiter_release_time (int) : min=250 max=102390 step=50 default=5010 value=5010 flags=slider
|
rds_program_type (int) : min=0 max=31 step=1 default=0 value=0
|
||||||
audio_limiter_deviation (int) : min=0 max=90000 step=10 default=66250 value=66250 flags=slider
|
rds_ps_name (str) : min=0 max=96 step=8 value='si4713 '
|
||||||
audio_compression_feature_enabl (bool) : default=1 value=1
|
rds_radio_text (str) : min=0 max=384 step=32 value=''
|
||||||
audio_compression_gain (int) : min=0 max=20 step=1 default=15 value=15 flags=slider
|
audio_limiter_feature_enabled (bool) : default=1 value=1
|
||||||
audio_compression_threshold (int) : min=-40 max=0 step=1 default=-40 value=-40 flags=slider
|
audio_limiter_release_time (int) : min=250 max=102390 step=50 default=5010 value=5010 flags=slider
|
||||||
audio_compression_attack_time (int) : min=0 max=5000 step=500 default=0 value=0 flags=slider
|
audio_limiter_deviation (int) : min=0 max=90000 step=10 default=66250 value=66250 flags=slider
|
||||||
audio_compression_release_time (int) : min=100000 max=1000000 step=100000 default=1000000 value=1000000 flags=slider
|
audio_compression_feature_enabl (bool) : default=1 value=1
|
||||||
pilot_tone_feature_enabled (bool) : default=1 value=1
|
audio_compression_gain (int) : min=0 max=20 step=1 default=15 value=15 flags=slider
|
||||||
pilot_tone_deviation (int) : min=0 max=90000 step=10 default=6750 value=6750 flags=slider
|
audio_compression_threshold (int) : min=-40 max=0 step=1 default=-40 value=-40 flags=slider
|
||||||
pilot_tone_frequency (int) : min=0 max=19000 step=1 default=19000 value=19000 flags=slider
|
audio_compression_attack_time (int) : min=0 max=5000 step=500 default=0 value=0 flags=slider
|
||||||
pre_emphasis_settings (menu) : min=0 max=2 default=1 value=1
|
audio_compression_release_time (int) : min=100000 max=1000000 step=100000 default=1000000 value=1000000 flags=slider
|
||||||
tune_power_level (int) : min=0 max=120 step=1 default=88 value=88 flags=slider
|
pilot_tone_feature_enabled (bool) : default=1 value=1
|
||||||
tune_antenna_capacitor (int) : min=0 max=191 step=1 default=0 value=110 flags=slider
|
pilot_tone_deviation (int) : min=0 max=90000 step=10 default=6750 value=6750 flags=slider
|
||||||
/ #
|
pilot_tone_frequency (int) : min=0 max=19000 step=1 default=19000 value=19000 flags=slider
|
||||||
|
pre_emphasis_settings (menu) : min=0 max=2 default=1 value=1
|
||||||
|
tune_power_level (int) : min=0 max=120 step=1 default=88 value=88 flags=slider
|
||||||
|
tune_antenna_capacitor (int) : min=0 max=191 step=1 default=0 value=110 flags=slider
|
||||||
|
|
||||||
Here is a summary of them:
|
Here is a summary of them:
|
||||||
|
|
||||||
* Pilot is an audible tone sent by the device.
|
* Pilot is an audible tone sent by the device.
|
||||||
|
|
||||||
pilot_frequency - Configures the frequency of the stereo pilot tone.
|
- pilot_frequency - Configures the frequency of the stereo pilot tone.
|
||||||
pilot_deviation - Configures pilot tone frequency deviation level.
|
- pilot_deviation - Configures pilot tone frequency deviation level.
|
||||||
pilot_enabled - Enables or disables the pilot tone feature.
|
- pilot_enabled - Enables or disables the pilot tone feature.
|
||||||
|
|
||||||
* The si4713 device is capable of applying audio compression to the transmitted signal.
|
* The si4713 device is capable of applying audio compression to the
|
||||||
|
transmitted signal.
|
||||||
|
|
||||||
acomp_enabled - Enables or disables the audio dynamic range control feature.
|
- acomp_enabled - Enables or disables the audio dynamic range control feature.
|
||||||
acomp_gain - Sets the gain for audio dynamic range control.
|
- acomp_gain - Sets the gain for audio dynamic range control.
|
||||||
acomp_threshold - Sets the threshold level for audio dynamic range control.
|
- acomp_threshold - Sets the threshold level for audio dynamic range control.
|
||||||
acomp_attack_time - Sets the attack time for audio dynamic range control.
|
- acomp_attack_time - Sets the attack time for audio dynamic range control.
|
||||||
acomp_release_time - Sets the release time for audio dynamic range control.
|
- acomp_release_time - Sets the release time for audio dynamic range control.
|
||||||
|
|
||||||
* Limiter setups audio deviation limiter feature. Once a over deviation occurs,
|
* Limiter setups audio deviation limiter feature. Once a over deviation occurs,
|
||||||
it is possible to adjust the front-end gain of the audio input and always
|
it is possible to adjust the front-end gain of the audio input and always
|
||||||
prevent over deviation.
|
prevent over deviation.
|
||||||
|
|
||||||
limiter_enabled - Enables or disables the limiter feature.
|
- limiter_enabled - Enables or disables the limiter feature.
|
||||||
limiter_deviation - Configures audio frequency deviation level.
|
- limiter_deviation - Configures audio frequency deviation level.
|
||||||
limiter_release_time - Sets the limiter release time.
|
- limiter_release_time - Sets the limiter release time.
|
||||||
|
|
||||||
* Tuning power
|
* Tuning power
|
||||||
|
|
||||||
power_level - Sets the output power level for signal transmission.
|
- power_level - Sets the output power level for signal transmission.
|
||||||
antenna_capacitor - This selects the value of antenna tuning capacitor manually
|
antenna_capacitor - This selects the value of antenna tuning capacitor
|
||||||
or automatically if set to zero.
|
manually or automatically if set to zero.
|
||||||
|
|
||||||
* RDS related
|
* RDS related
|
||||||
|
|
||||||
rds_ps_name - Sets the RDS ps name field for transmission.
|
- rds_ps_name - Sets the RDS ps name field for transmission.
|
||||||
rds_radio_text - Sets the RDS radio text for transmission.
|
- rds_radio_text - Sets the RDS radio text for transmission.
|
||||||
rds_pi - Sets the RDS PI field for transmission.
|
- rds_pi - Sets the RDS PI field for transmission.
|
||||||
rds_pty - Sets the RDS PTY field for transmission.
|
- rds_pty - Sets the RDS PTY field for transmission.
|
||||||
|
|
||||||
* Region related
|
* Region related
|
||||||
|
|
||||||
preemphasis - sets the preemphasis to be applied for transmission.
|
- preemphasis - sets the preemphasis to be applied for transmission.
|
||||||
|
|
||||||
RNL
|
RNL
|
||||||
===
|
---
|
||||||
|
|
||||||
This device also has an interface to measure received noise level. To do that, you should
|
This device also has an interface to measure received noise level. To do that, you should
|
||||||
ioctl the device node. Here is an code of example:
|
ioctl the device node. Here is an code of example:
|
||||||
|
|
||||||
int main (int argc, char *argv[])
|
.. code-block:: none
|
||||||
{
|
|
||||||
struct si4713_rnl rnl;
|
|
||||||
int fd = open("/dev/radio0", O_RDWR);
|
|
||||||
int rval;
|
|
||||||
|
|
||||||
if (argc < 2)
|
int main (int argc, char *argv[])
|
||||||
return -EINVAL;
|
{
|
||||||
|
struct si4713_rnl rnl;
|
||||||
|
int fd = open("/dev/radio0", O_RDWR);
|
||||||
|
int rval;
|
||||||
|
|
||||||
if (fd < 0)
|
if (argc < 2)
|
||||||
return fd;
|
return -EINVAL;
|
||||||
|
|
||||||
sscanf(argv[1], "%d", &rnl.frequency);
|
if (fd < 0)
|
||||||
|
return fd;
|
||||||
|
|
||||||
rval = ioctl(fd, SI4713_IOC_MEASURE_RNL, &rnl);
|
sscanf(argv[1], "%d", &rnl.frequency);
|
||||||
if (rval < 0)
|
|
||||||
return rval;
|
|
||||||
|
|
||||||
printf("received noise level: %d\n", rnl.rnl);
|
rval = ioctl(fd, SI4713_IOC_MEASURE_RNL, &rnl);
|
||||||
|
if (rval < 0)
|
||||||
|
return rval;
|
||||||
|
|
||||||
close(fd);
|
printf("received noise level: %d\n", rnl.rnl);
|
||||||
}
|
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
|
||||||
The struct si4713_rnl and SI4713_IOC_MEASURE_RNL are defined under
|
The struct si4713_rnl and SI4713_IOC_MEASURE_RNL are defined under
|
||||||
include/linux/platform_data/media/si4713.h.
|
include/linux/platform_data/media/si4713.h.
|
||||||
|
|
||||||
Stereo/Mono and RDS subchannels
|
Stereo/Mono and RDS subchannels
|
||||||
===============================
|
-------------------------------
|
||||||
|
|
||||||
The device can also be configured using the available sub channels for
|
The device can also be configured using the available sub channels for
|
||||||
transmission. To do that use S/G_MODULATOR ioctl and configure txsubchans properly.
|
transmission. To do that use S/G_MODULATOR ioctl and configure txsubchans properly.
|
||||||
Refer to the V4L2 API specification for proper use of this ioctl.
|
Refer to the V4L2 API specification for proper use of this ioctl.
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
=======
|
-------
|
||||||
Testing is usually done with v4l2-ctl utility for managing FM tuner cards.
|
Testing is usually done with v4l2-ctl utility for managing FM tuner cards.
|
||||||
The tool can be found in v4l-dvb repository under v4l2-apps/util directory.
|
The tool can be found in v4l-dvb repository under v4l2-apps/util directory.
|
||||||
|
|
||||||
Example for setting rds ps name:
|
Example for setting rds ps name:
|
||||||
# v4l2-ctl -d /dev/radio0 --set-ctrl=rds_ps_name="Dummy"
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
# v4l2-ctl -d /dev/radio0 --set-ctrl=rds_ps_name="Dummy"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue