Commit b2993570 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] doc-rst: add documentation for si4713

Convert it to ReST and add it to the media/v4l-drivers book.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent b4a41387
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. ...@@ -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,12 +43,15 @@ etc. But mostly of its properties will be present in the extended controls. ...@@ -37,12 +43,15 @@ 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: .. code-block:: none
/ # v4l2-ctl -d /dev/radio0 --all -L
Driver Info:
Driver name : radio-si4713 Driver name : radio-si4713
Card type : Silicon Labs Si4713 Modulator Card type : Silicon Labs Si4713 Modulator
Bus info : Bus info :
...@@ -50,20 +59,20 @@ Driver Info: ...@@ -50,20 +59,20 @@ Driver Info:
Capabilities : 0x00080800 Capabilities : 0x00080800
RDS Output RDS Output
Modulator Modulator
Audio output: 0 (FM Modulator Audio Out) Audio output: 0 (FM Modulator Audio Out)
Frequency: 1408000 (88.000000 MHz) Frequency: 1408000 (88.000000 MHz)
Video Standard = 0x00000000 Video Standard = 0x00000000
Modulator: Modulator:
Name : FM Modulator Name : FM Modulator
Capabilities : 62.5 Hz stereo rds Capabilities : 62.5 Hz stereo rds
Frequency range : 76.0 MHz - 108.0 MHz Frequency range : 76.0 MHz - 108.0 MHz
Subchannel modulation: stereo+rds Subchannel modulation: stereo+rds
User Controls User Controls
mute (bool) : default=1 value=0 mute (bool) : default=1 value=0
FM Radio Modulator Controls FM Radio Modulator Controls
rds_signal_deviation (int) : min=0 max=90000 step=10 default=200 value=200 flags=slider rds_signal_deviation (int) : min=0 max=90000 step=10 default=200 value=200 flags=slider
rds_program_id (int) : min=0 max=65535 step=1 default=0 value=0 rds_program_id (int) : min=0 max=65535 step=1 default=0 value=0
...@@ -73,7 +82,7 @@ FM Radio Modulator Controls ...@@ -73,7 +82,7 @@ FM Radio Modulator Controls
audio_limiter_feature_enabled (bool) : default=1 value=1 audio_limiter_feature_enabled (bool) : default=1 value=1
audio_limiter_release_time (int) : min=250 max=102390 step=50 default=5010 value=5010 flags=slider audio_limiter_release_time (int) : min=250 max=102390 step=50 default=5010 value=5010 flags=slider
audio_limiter_deviation (int) : min=0 max=90000 step=10 default=66250 value=66250 flags=slider audio_limiter_deviation (int) : min=0 max=90000 step=10 default=66250 value=66250 flags=slider
audio_compression_feature_enabl (bool) : default=1 value=1 audio_compression_feature_enabl (bool) : default=1 value=1
audio_compression_gain (int) : min=0 max=20 step=1 default=15 value=15 flags=slider audio_compression_gain (int) : min=0 max=20 step=1 default=15 value=15 flags=slider
audio_compression_threshold (int) : min=-40 max=0 step=1 default=-40 value=-40 flags=slider audio_compression_threshold (int) : min=-40 max=0 step=1 default=-40 value=-40 flags=slider
audio_compression_attack_time (int) : min=0 max=5000 step=500 default=0 value=0 flags=slider audio_compression_attack_time (int) : min=0 max=5000 step=500 default=0 value=0 flags=slider
...@@ -84,57 +93,59 @@ audio_compression_feature_enabl (bool) : default=1 value=1 ...@@ -84,57 +93,59 @@ audio_compression_feature_enabl (bool) : default=1 value=1
pre_emphasis_settings (menu) : min=0 max=2 default=1 value=1 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_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 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
{
int main (int argc, char *argv[])
{
struct si4713_rnl rnl; struct si4713_rnl rnl;
int fd = open("/dev/radio0", O_RDWR); int fd = open("/dev/radio0", O_RDWR);
int rval; int rval;
...@@ -154,23 +165,26 @@ int main (int argc, char *argv[]) ...@@ -154,23 +165,26 @@ int main (int argc, char *argv[])
printf("received noise level: %d\n", rnl.rnl); printf("received noise level: %d\n", rnl.rnl);
close(fd); 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"
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