xref: /OK3568_Linux_fs/kernel/include/linux/mfd/si476x-reports.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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