| 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 , ; |
| 73 | __u8 bltf; |
| 74 | __u8 snr_ready; |
| 75 | __u8 ; |
| 76 | __u8 injside; |
| 77 | __u8 afcrl; |
| 78 | __u8 valid; |
| 79 | |
| 80 | __u16 readfreq; |
| 81 | __s8 freqoff; |
| 82 | __s8 ; |
| 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 | |