/* SPDX-License-Identifier: GPL-2.0-only */ /* * include/media/si476x-platform.h -- Definitions of the data formats * returned by debugfs hooks * * Copyright (C) 2013 Andrey Smirnov * * Author: Andrey Smirnov <andrew.smirnov@gmail.com> */ #ifndef __SI476X_REPORTS_H__ #define __SI476X_REPORTS_H__ /** * struct si476x_rsq_status - structure containing received signal * quality * @multhint: Multipath Detect High. * true - Indicatedes that the value is below * FM_RSQ_MULTIPATH_HIGH_THRESHOLD * false - Indicatedes that the value is above * FM_RSQ_MULTIPATH_HIGH_THRESHOLD * @multlint: Multipath Detect Low. * true - Indicatedes that the value is below * FM_RSQ_MULTIPATH_LOW_THRESHOLD * false - Indicatedes that the value is above * FM_RSQ_MULTIPATH_LOW_THRESHOLD * @snrhint: SNR Detect High. * true - Indicatedes that the value is below * FM_RSQ_SNR_HIGH_THRESHOLD * false - Indicatedes that the value is above * FM_RSQ_SNR_HIGH_THRESHOLD * @snrlint: SNR Detect Low. * true - Indicatedes that the value is below * FM_RSQ_SNR_LOW_THRESHOLD * false - Indicatedes that the value is above * FM_RSQ_SNR_LOW_THRESHOLD * @rssihint: RSSI Detect High. * true - Indicatedes that the value is below * FM_RSQ_RSSI_HIGH_THRESHOLD * false - Indicatedes that the value is above * FM_RSQ_RSSI_HIGH_THRESHOLD * @rssilint: RSSI Detect Low. * true - Indicatedes that the value is below * FM_RSQ_RSSI_LOW_THRESHOLD * false - Indicatedes that the value is above * FM_RSQ_RSSI_LOW_THRESHOLD * @bltf: Band Limit. * Set if seek command hits the band limit or wrapped to * the original frequency. * @snr_ready: SNR measurement in progress. * @rssiready: RSSI measurement in progress. * @afcrl: Set if FREQOFF >= MAX_TUNE_ERROR * @valid: Set if the channel is valid * rssi < FM_VALID_RSSI_THRESHOLD * snr < FM_VALID_SNR_THRESHOLD * tune_error < FM_VALID_MAX_TUNE_ERROR * @readfreq: Current tuned frequency. * @freqoff: Signed frequency offset. * @rssi: Received Signal Strength Indicator(dBuV). * @snr: RF SNR Indicator(dB). * @lassi: * @hassi: Low/High side Adjacent(100 kHz) Channel Strength Indicator * @mult: Multipath indicator * @dev: Who knows? But values may vary. * @readantcap: Antenna tuning capacity value. * @assi: Adjacent Channel(+/- 200kHz) Strength Indicator * @usn: Ultrasonic Noise Inticator in -DBFS */ struct si476x_rsq_status_report { __u8 multhint, multlint; __u8 snrhint, snrlint; __u8 rssihint, rssilint; __u8 bltf; __u8 snr_ready; __u8 rssiready; __u8 injside; __u8 afcrl; __u8 valid; __u16 readfreq; __s8 freqoff; __s8 rssi; __s8 snr; __s8 issi; __s8 lassi, hassi; __s8 mult; __u8 dev; __u16 readantcap; __s8 assi; __s8 usn; __u8 pilotdev; __u8 rdsdev; __u8 assidev; __u8 strongdev; __u16 rdspi; } __packed; /** * si476x_acf_status_report - ACF report results * * @blend_int: If set, indicates that stereo separation has crossed * below the blend threshold as set by FM_ACF_BLEND_THRESHOLD * @hblend_int: If set, indicates that HiBlend cutoff frequency is * lower than threshold as set by FM_ACF_HBLEND_THRESHOLD * @hicut_int: If set, indicates that HiCut cutoff frequency is lower * than the threshold set by ACF_ */ struct si476x_acf_status_report { __u8 blend_int; __u8 hblend_int; __u8 hicut_int; __u8 chbw_int; __u8 softmute_int; __u8 smute; __u8 smattn; __u8 chbw; __u8 hicut; __u8 hiblend; __u8 pilot; __u8 stblend; } __packed; enum si476x_fmagc { SI476X_FMAGC_10K_OHM = 0, SI476X_FMAGC_800_OHM = 1, SI476X_FMAGC_400_OHM = 2, SI476X_FMAGC_200_OHM = 4, SI476X_FMAGC_100_OHM = 8, SI476X_FMAGC_50_OHM = 16, SI476X_FMAGC_25_OHM = 32, SI476X_FMAGC_12P5_OHM = 64, SI476X_FMAGC_6P25_OHM = 128, }; struct si476x_agc_status_report { __u8 mxhi; __u8 mxlo; __u8 lnahi; __u8 lnalo; __u8 fmagc1; __u8 fmagc2; __u8 pgagain; __u8 fmwblang; } __packed; struct si476x_rds_blockcount_report { __u16 expected; __u16 received; __u16 uncorrectable; } __packed; #endif /* __SI476X_REPORTS_H__ */