1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * include/media/si476x-platform.h -- Definitions of the data formats 4*4882a593Smuzhiyun * returned by debugfs hooks 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (C) 2013 Andrey Smirnov 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Author: Andrey Smirnov <andrew.smirnov@gmail.com> 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef __SI476X_REPORTS_H__ 12*4882a593Smuzhiyun #define __SI476X_REPORTS_H__ 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun /** 15*4882a593Smuzhiyun * struct si476x_rsq_status - structure containing received signal 16*4882a593Smuzhiyun * quality 17*4882a593Smuzhiyun * @multhint: Multipath Detect High. 18*4882a593Smuzhiyun * true - Indicatedes that the value is below 19*4882a593Smuzhiyun * FM_RSQ_MULTIPATH_HIGH_THRESHOLD 20*4882a593Smuzhiyun * false - Indicatedes that the value is above 21*4882a593Smuzhiyun * FM_RSQ_MULTIPATH_HIGH_THRESHOLD 22*4882a593Smuzhiyun * @multlint: Multipath Detect Low. 23*4882a593Smuzhiyun * true - Indicatedes that the value is below 24*4882a593Smuzhiyun * FM_RSQ_MULTIPATH_LOW_THRESHOLD 25*4882a593Smuzhiyun * false - Indicatedes that the value is above 26*4882a593Smuzhiyun * FM_RSQ_MULTIPATH_LOW_THRESHOLD 27*4882a593Smuzhiyun * @snrhint: SNR Detect High. 28*4882a593Smuzhiyun * true - Indicatedes that the value is below 29*4882a593Smuzhiyun * FM_RSQ_SNR_HIGH_THRESHOLD 30*4882a593Smuzhiyun * false - Indicatedes that the value is above 31*4882a593Smuzhiyun * FM_RSQ_SNR_HIGH_THRESHOLD 32*4882a593Smuzhiyun * @snrlint: SNR Detect Low. 33*4882a593Smuzhiyun * true - Indicatedes that the value is below 34*4882a593Smuzhiyun * FM_RSQ_SNR_LOW_THRESHOLD 35*4882a593Smuzhiyun * false - Indicatedes that the value is above 36*4882a593Smuzhiyun * FM_RSQ_SNR_LOW_THRESHOLD 37*4882a593Smuzhiyun * @rssihint: RSSI Detect High. 38*4882a593Smuzhiyun * true - Indicatedes that the value is below 39*4882a593Smuzhiyun * FM_RSQ_RSSI_HIGH_THRESHOLD 40*4882a593Smuzhiyun * false - Indicatedes that the value is above 41*4882a593Smuzhiyun * FM_RSQ_RSSI_HIGH_THRESHOLD 42*4882a593Smuzhiyun * @rssilint: RSSI Detect Low. 43*4882a593Smuzhiyun * true - Indicatedes that the value is below 44*4882a593Smuzhiyun * FM_RSQ_RSSI_LOW_THRESHOLD 45*4882a593Smuzhiyun * false - Indicatedes that the value is above 46*4882a593Smuzhiyun * FM_RSQ_RSSI_LOW_THRESHOLD 47*4882a593Smuzhiyun * @bltf: Band Limit. 48*4882a593Smuzhiyun * Set if seek command hits the band limit or wrapped to 49*4882a593Smuzhiyun * the original frequency. 50*4882a593Smuzhiyun * @snr_ready: SNR measurement in progress. 51*4882a593Smuzhiyun * @rssiready: RSSI measurement in progress. 52*4882a593Smuzhiyun * @afcrl: Set if FREQOFF >= MAX_TUNE_ERROR 53*4882a593Smuzhiyun * @valid: Set if the channel is valid 54*4882a593Smuzhiyun * rssi < FM_VALID_RSSI_THRESHOLD 55*4882a593Smuzhiyun * snr < FM_VALID_SNR_THRESHOLD 56*4882a593Smuzhiyun * tune_error < FM_VALID_MAX_TUNE_ERROR 57*4882a593Smuzhiyun * @readfreq: Current tuned frequency. 58*4882a593Smuzhiyun * @freqoff: Signed frequency offset. 59*4882a593Smuzhiyun * @rssi: Received Signal Strength Indicator(dBuV). 60*4882a593Smuzhiyun * @snr: RF SNR Indicator(dB). 61*4882a593Smuzhiyun * @lassi: 62*4882a593Smuzhiyun * @hassi: Low/High side Adjacent(100 kHz) Channel Strength Indicator 63*4882a593Smuzhiyun * @mult: Multipath indicator 64*4882a593Smuzhiyun * @dev: Who knows? But values may vary. 65*4882a593Smuzhiyun * @readantcap: Antenna tuning capacity value. 66*4882a593Smuzhiyun * @assi: Adjacent Channel(+/- 200kHz) Strength Indicator 67*4882a593Smuzhiyun * @usn: Ultrasonic Noise Inticator in -DBFS 68*4882a593Smuzhiyun */ 69*4882a593Smuzhiyun struct si476x_rsq_status_report { 70*4882a593Smuzhiyun __u8 multhint, multlint; 71*4882a593Smuzhiyun __u8 snrhint, snrlint; 72*4882a593Smuzhiyun __u8 rssihint, rssilint; 73*4882a593Smuzhiyun __u8 bltf; 74*4882a593Smuzhiyun __u8 snr_ready; 75*4882a593Smuzhiyun __u8 rssiready; 76*4882a593Smuzhiyun __u8 injside; 77*4882a593Smuzhiyun __u8 afcrl; 78*4882a593Smuzhiyun __u8 valid; 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun __u16 readfreq; 81*4882a593Smuzhiyun __s8 freqoff; 82*4882a593Smuzhiyun __s8 rssi; 83*4882a593Smuzhiyun __s8 snr; 84*4882a593Smuzhiyun __s8 issi; 85*4882a593Smuzhiyun __s8 lassi, hassi; 86*4882a593Smuzhiyun __s8 mult; 87*4882a593Smuzhiyun __u8 dev; 88*4882a593Smuzhiyun __u16 readantcap; 89*4882a593Smuzhiyun __s8 assi; 90*4882a593Smuzhiyun __s8 usn; 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun __u8 pilotdev; 93*4882a593Smuzhiyun __u8 rdsdev; 94*4882a593Smuzhiyun __u8 assidev; 95*4882a593Smuzhiyun __u8 strongdev; 96*4882a593Smuzhiyun __u16 rdspi; 97*4882a593Smuzhiyun } __packed; 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun /** 100*4882a593Smuzhiyun * si476x_acf_status_report - ACF report results 101*4882a593Smuzhiyun * 102*4882a593Smuzhiyun * @blend_int: If set, indicates that stereo separation has crossed 103*4882a593Smuzhiyun * below the blend threshold as set by FM_ACF_BLEND_THRESHOLD 104*4882a593Smuzhiyun * @hblend_int: If set, indicates that HiBlend cutoff frequency is 105*4882a593Smuzhiyun * lower than threshold as set by FM_ACF_HBLEND_THRESHOLD 106*4882a593Smuzhiyun * @hicut_int: If set, indicates that HiCut cutoff frequency is lower 107*4882a593Smuzhiyun * than the threshold set by ACF_ 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun */ 110*4882a593Smuzhiyun struct si476x_acf_status_report { 111*4882a593Smuzhiyun __u8 blend_int; 112*4882a593Smuzhiyun __u8 hblend_int; 113*4882a593Smuzhiyun __u8 hicut_int; 114*4882a593Smuzhiyun __u8 chbw_int; 115*4882a593Smuzhiyun __u8 softmute_int; 116*4882a593Smuzhiyun __u8 smute; 117*4882a593Smuzhiyun __u8 smattn; 118*4882a593Smuzhiyun __u8 chbw; 119*4882a593Smuzhiyun __u8 hicut; 120*4882a593Smuzhiyun __u8 hiblend; 121*4882a593Smuzhiyun __u8 pilot; 122*4882a593Smuzhiyun __u8 stblend; 123*4882a593Smuzhiyun } __packed; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun enum si476x_fmagc { 126*4882a593Smuzhiyun SI476X_FMAGC_10K_OHM = 0, 127*4882a593Smuzhiyun SI476X_FMAGC_800_OHM = 1, 128*4882a593Smuzhiyun SI476X_FMAGC_400_OHM = 2, 129*4882a593Smuzhiyun SI476X_FMAGC_200_OHM = 4, 130*4882a593Smuzhiyun SI476X_FMAGC_100_OHM = 8, 131*4882a593Smuzhiyun SI476X_FMAGC_50_OHM = 16, 132*4882a593Smuzhiyun SI476X_FMAGC_25_OHM = 32, 133*4882a593Smuzhiyun SI476X_FMAGC_12P5_OHM = 64, 134*4882a593Smuzhiyun SI476X_FMAGC_6P25_OHM = 128, 135*4882a593Smuzhiyun }; 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun struct si476x_agc_status_report { 138*4882a593Smuzhiyun __u8 mxhi; 139*4882a593Smuzhiyun __u8 mxlo; 140*4882a593Smuzhiyun __u8 lnahi; 141*4882a593Smuzhiyun __u8 lnalo; 142*4882a593Smuzhiyun __u8 fmagc1; 143*4882a593Smuzhiyun __u8 fmagc2; 144*4882a593Smuzhiyun __u8 pgagain; 145*4882a593Smuzhiyun __u8 fmwblang; 146*4882a593Smuzhiyun } __packed; 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun struct si476x_rds_blockcount_report { 149*4882a593Smuzhiyun __u16 expected; 150*4882a593Smuzhiyun __u16 received; 151*4882a593Smuzhiyun __u16 uncorrectable; 152*4882a593Smuzhiyun } __packed; 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun #endif /* __SI476X_REPORTS_H__ */ 155