![Andrey Smirnov](/assets/img/avatar_default.png)
This commit adds a driver that exposes all the radio related functionality of the Si476x series of chips via the V4L2 subsystem. [mchehab@redhat.com: change it to depends on MFD_SI476X_CORE instead of selecting it; vidioc_s_register now uses const struct] Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
188 lines
8.8 KiB
Plaintext
188 lines
8.8 KiB
Plaintext
SI476x Driver Readme
|
|
------------------------------------------------
|
|
Copyright (C) 2013 Andrey Smirnov <andrew.smirnov@gmail.com>
|
|
|
|
TODO for the driver
|
|
------------------------------
|
|
|
|
- According to the SiLabs' datasheet it is possible to update the
|
|
firmware of the radio chip in the run-time, thus bringing it to the
|
|
most recent version. Unfortunately I couldn't find any mentioning of
|
|
the said firmware update for the old chips that I tested the driver
|
|
against, so for chips like that the driver only exposes the old
|
|
functionality.
|
|
|
|
|
|
Parameters exposed over debugfs
|
|
-------------------------------
|
|
SI476x allow user to get multiple characteristics that can be very
|
|
useful for EoL testing/RF performance estimation, parameters that have
|
|
very little to do with V4L2 subsystem. Such parameters are exposed via
|
|
debugfs and can be accessed via regular file I/O operations.
|
|
|
|
The drivers exposes following files:
|
|
|
|
* /sys/kernel/debug/<device-name>/acf
|
|
This file contains ACF(Automatically Controlled Features) status
|
|
information. The contents of the file is binary data of the
|
|
following layout:
|
|
|
|
Offset | Name | Description
|
|
====================================================================
|
|
0x00 | blend_int | Flag, set when stereo separation has
|
|
| | crossed below the blend threshold
|
|
--------------------------------------------------------------------
|
|
0x01 | hblend_int | Flag, set when HiBlend cutoff
|
|
| | frequency is lower than threshold
|
|
--------------------------------------------------------------------
|
|
0x02 | hicut_int | Flag, set when HiCut cutoff
|
|
| | frequency is lower than threshold
|
|
--------------------------------------------------------------------
|
|
0x03 | chbw_int | Flag, set when channel filter
|
|
| | bandwidth is less than threshold
|
|
--------------------------------------------------------------------
|
|
0x04 | softmute_int | Flag indicating that softmute
|
|
| | attenuation has increased above
|
|
| | softmute threshold
|
|
--------------------------------------------------------------------
|
|
0x05 | smute | 0 - Audio is not soft muted
|
|
| | 1 - Audio is soft muted
|
|
--------------------------------------------------------------------
|
|
0x06 | smattn | Soft mute attenuation level in dB
|
|
--------------------------------------------------------------------
|
|
0x07 | chbw | Channel filter bandwidth in kHz
|
|
--------------------------------------------------------------------
|
|
0x08 | hicut | HiCut cutoff frequency in units of
|
|
| | 100Hz
|
|
--------------------------------------------------------------------
|
|
0x09 | hiblend | HiBlend cutoff frequency in units
|
|
| | of 100 Hz
|
|
--------------------------------------------------------------------
|
|
0x10 | pilot | 0 - Stereo pilot is not present
|
|
| | 1 - Stereo pilot is present
|
|
--------------------------------------------------------------------
|
|
0x11 | stblend | Stereo blend in %
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
* /sys/kernel/debug/<device-name>/rds_blckcnt
|
|
This file contains statistics about RDS receptions. It's binary data
|
|
has the following layout:
|
|
|
|
Offset | Name | Description
|
|
====================================================================
|
|
0x00 | expected | Number of expected RDS blocks
|
|
--------------------------------------------------------------------
|
|
0x02 | received | Number of received RDS blocks
|
|
--------------------------------------------------------------------
|
|
0x04 | uncorrectable | Number of uncorrectable RDS blocks
|
|
--------------------------------------------------------------------
|
|
|
|
* /sys/kernel/debug/<device-name>/agc
|
|
This file contains information about parameters pertaining to
|
|
AGC(Automatic Gain Control)
|
|
|
|
The layout is:
|
|
Offset | Name | Description
|
|
====================================================================
|
|
0x00 | mxhi | 0 - FM Mixer PD high threshold is
|
|
| | not tripped
|
|
| | 1 - FM Mixer PD high threshold is
|
|
| | tripped
|
|
--------------------------------------------------------------------
|
|
0x01 | mxlo | ditto for FM Mixer PD low
|
|
--------------------------------------------------------------------
|
|
0x02 | lnahi | ditto for FM LNA PD high
|
|
--------------------------------------------------------------------
|
|
0x03 | lnalo | ditto for FM LNA PD low
|
|
--------------------------------------------------------------------
|
|
0x04 | fmagc1 | FMAGC1 attenuator resistance
|
|
| | (see datasheet for more detail)
|
|
--------------------------------------------------------------------
|
|
0x05 | fmagc2 | ditto for FMAGC2
|
|
--------------------------------------------------------------------
|
|
0x06 | pgagain | PGA gain in dB
|
|
--------------------------------------------------------------------
|
|
0x07 | fmwblang | FM/WB LNA Gain in dB
|
|
--------------------------------------------------------------------
|
|
|
|
* /sys/kernel/debug/<device-name>/rsq
|
|
This file contains information about parameters pertaining to
|
|
RSQ(Received Signal Quality)
|
|
|
|
The layout is:
|
|
Offset | Name | Description
|
|
====================================================================
|
|
0x00 | multhint | 0 - multipath value has not crossed
|
|
| | the Multipath high threshold
|
|
| | 1 - multipath value has crossed
|
|
| | the Multipath high threshold
|
|
--------------------------------------------------------------------
|
|
0x01 | multlint | ditto for Multipath low threshold
|
|
--------------------------------------------------------------------
|
|
0x02 | snrhint | 0 - received signal's SNR has not
|
|
| | crossed high threshold
|
|
| | 1 - received signal's SNR has
|
|
| | crossed high threshold
|
|
--------------------------------------------------------------------
|
|
0x03 | snrlint | ditto for low threshold
|
|
--------------------------------------------------------------------
|
|
0x04 | rssihint | ditto for RSSI high threshold
|
|
--------------------------------------------------------------------
|
|
0x05 | rssilint | ditto for RSSI low threshold
|
|
--------------------------------------------------------------------
|
|
0x06 | bltf | Flag indicating if seek command
|
|
| | reached/wrapped seek band limit
|
|
--------------------------------------------------------------------
|
|
0x07 | snr_ready | Indicates that SNR metrics is ready
|
|
--------------------------------------------------------------------
|
|
0x08 | rssiready | ditto for RSSI metrics
|
|
--------------------------------------------------------------------
|
|
0x09 | injside | 0 - Low-side injection is being used
|
|
| | 1 - High-side injection is used
|
|
--------------------------------------------------------------------
|
|
0x10 | afcrl | Flag indicating if AFC rails
|
|
--------------------------------------------------------------------
|
|
0x11 | valid | Flag indicating if channel is valid
|
|
--------------------------------------------------------------------
|
|
0x12 | readfreq | Current tuned frequency
|
|
--------------------------------------------------------------------
|
|
0x14 | freqoff | Singed frequency offset in units of
|
|
| | 2ppm
|
|
--------------------------------------------------------------------
|
|
0x15 | rssi | Signed value of RSSI in dBuV
|
|
--------------------------------------------------------------------
|
|
0x16 | snr | Signed RF SNR in dB
|
|
--------------------------------------------------------------------
|
|
0x17 | issi | Signed Image Strength Signal
|
|
| | indicator
|
|
--------------------------------------------------------------------
|
|
0x18 | lassi | Signed Low side adjacent Channel
|
|
| | Strength indicator
|
|
--------------------------------------------------------------------
|
|
0x19 | hassi | ditto fpr High side
|
|
--------------------------------------------------------------------
|
|
0x20 | mult | Multipath indicator
|
|
--------------------------------------------------------------------
|
|
0x21 | dev | Frequency deviation
|
|
--------------------------------------------------------------------
|
|
0x24 | assi | Adjascent channel SSI
|
|
--------------------------------------------------------------------
|
|
0x25 | usn | Ultrasonic noise indicator
|
|
--------------------------------------------------------------------
|
|
0x26 | pilotdev | Pilot deviation in units of 100 Hz
|
|
--------------------------------------------------------------------
|
|
0x27 | rdsdev | ditto for RDS
|
|
--------------------------------------------------------------------
|
|
0x28 | assidev | ditto for ASSI
|
|
--------------------------------------------------------------------
|
|
0x29 | strongdev | Frequency deviation
|
|
--------------------------------------------------------------------
|
|
0x30 | rdspi | RDS PI code
|
|
--------------------------------------------------------------------
|
|
|
|
* /sys/kernel/debug/<device-name>/rsq_primary
|
|
This file contains information about parameters pertaining to
|
|
RSQ(Received Signal Quality) for primary tuner only. Layout is as
|
|
the one above.
|