1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /*********************************************************************** 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun ***********************************************************************/ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun struct smsdvb_debugfs; 7*4882a593Smuzhiyun struct smsdvb_client_t; 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun typedef void (*sms_prt_dvb_stats_t)(struct smsdvb_debugfs *debug_data, 10*4882a593Smuzhiyun struct sms_stats *p); 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun typedef void (*sms_prt_isdb_stats_t)(struct smsdvb_debugfs *debug_data, 13*4882a593Smuzhiyun struct sms_isdbt_stats *p); 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun typedef void (*sms_prt_isdb_stats_ex_t) 16*4882a593Smuzhiyun (struct smsdvb_debugfs *debug_data, 17*4882a593Smuzhiyun struct sms_isdbt_stats_ex *p); 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun struct smsdvb_client_t { 21*4882a593Smuzhiyun struct list_head entry; 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun struct smscore_device_t *coredev; 24*4882a593Smuzhiyun struct smscore_client_t *smsclient; 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun struct dvb_adapter adapter; 27*4882a593Smuzhiyun struct dvb_demux demux; 28*4882a593Smuzhiyun struct dmxdev dmxdev; 29*4882a593Smuzhiyun struct dvb_frontend frontend; 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun enum fe_status fe_status; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun struct completion tune_done; 34*4882a593Smuzhiyun struct completion stats_done; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun int last_per; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun int legacy_ber, legacy_per; 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun int event_fe_state; 41*4882a593Smuzhiyun int event_unc_state; 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun unsigned long get_stats_jiffies; 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun int feed_users; 46*4882a593Smuzhiyun bool has_tuned; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun /* stats debugfs data */ 49*4882a593Smuzhiyun struct dentry *debugfs; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun struct smsdvb_debugfs *debug_data; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun sms_prt_dvb_stats_t prt_dvb_stats; 54*4882a593Smuzhiyun sms_prt_isdb_stats_t prt_isdb_stats; 55*4882a593Smuzhiyun sms_prt_isdb_stats_ex_t prt_isdb_stats_ex; 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /* 59*4882a593Smuzhiyun * This struct is a mix of struct sms_rx_stats_ex and 60*4882a593Smuzhiyun * struct sms_srvm_signal_status. 61*4882a593Smuzhiyun * It was obtained by comparing the way it was filled by the original code 62*4882a593Smuzhiyun */ 63*4882a593Smuzhiyun struct RECEPTION_STATISTICS_PER_SLICES_S { 64*4882a593Smuzhiyun u32 result; 65*4882a593Smuzhiyun u32 snr; 66*4882a593Smuzhiyun s32 in_band_power; 67*4882a593Smuzhiyun u32 ts_packets; 68*4882a593Smuzhiyun u32 ets_packets; 69*4882a593Smuzhiyun u32 constellation; 70*4882a593Smuzhiyun u32 hp_code; 71*4882a593Smuzhiyun u32 tps_srv_ind_lp; 72*4882a593Smuzhiyun u32 tps_srv_ind_hp; 73*4882a593Smuzhiyun u32 cell_id; 74*4882a593Smuzhiyun u32 reason; 75*4882a593Smuzhiyun u32 request_id; 76*4882a593Smuzhiyun u32 modem_state; /* from SMSHOSTLIB_DVB_MODEM_STATE_ET */ 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun u32 ber; /* Post Viterbi BER [1E-5] */ 79*4882a593Smuzhiyun s32 RSSI; /* dBm */ 80*4882a593Smuzhiyun s32 carrier_offset; /* Carrier Offset in bin/1024 */ 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun u32 is_rf_locked; /* 0 - not locked, 1 - locked */ 83*4882a593Smuzhiyun u32 is_demod_locked; /* 0 - not locked, 1 - locked */ 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun u32 ber_bit_count; /* Total number of SYNC bits. */ 86*4882a593Smuzhiyun u32 ber_error_count; /* Number of erroneous SYNC bits. */ 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun s32 MRC_SNR; /* dB */ 89*4882a593Smuzhiyun s32 mrc_in_band_pwr; /* In band power in dBM */ 90*4882a593Smuzhiyun s32 MRC_RSSI; /* dBm */ 91*4882a593Smuzhiyun }; 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun /* From smsdvb-debugfs.c */ 94*4882a593Smuzhiyun #ifdef CONFIG_SMS_SIANO_DEBUGFS 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun int smsdvb_debugfs_create(struct smsdvb_client_t *client); 97*4882a593Smuzhiyun void smsdvb_debugfs_release(struct smsdvb_client_t *client); 98*4882a593Smuzhiyun void smsdvb_debugfs_register(void); 99*4882a593Smuzhiyun void smsdvb_debugfs_unregister(void); 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun #else 102*4882a593Smuzhiyun smsdvb_debugfs_create(struct smsdvb_client_t * client)103*4882a593Smuzhiyunstatic inline int smsdvb_debugfs_create(struct smsdvb_client_t *client) 104*4882a593Smuzhiyun { 105*4882a593Smuzhiyun return 0; 106*4882a593Smuzhiyun } 107*4882a593Smuzhiyun smsdvb_debugfs_release(struct smsdvb_client_t * client)108*4882a593Smuzhiyunstatic inline void smsdvb_debugfs_release(struct smsdvb_client_t *client) {} 109*4882a593Smuzhiyun smsdvb_debugfs_register(void)110*4882a593Smuzhiyunstatic inline void smsdvb_debugfs_register(void) {} 111*4882a593Smuzhiyun smsdvb_debugfs_unregister(void)112*4882a593Smuzhiyunstatic inline void smsdvb_debugfs_unregister(void) {}; 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun #endif 115*4882a593Smuzhiyun 116