6.21. The SI476x Driver — The Linux Kernel 5.18.5-gnu-1 documentation

# 6.21. The SI476x Driver

Copyright © 2013 Andrey Smirnov <andrew.smirnov@gmail.com>

## 6.21.1. 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.

## 6.21.2. 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 | Signed 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 | Adjacent 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.