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