1*1ccea77eSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 2503efe5cSMauro Carvalho Chehab /*********************************************************************** 3503efe5cSMauro Carvalho Chehab * 4503efe5cSMauro Carvalho Chehab ***********************************************************************/ 5503efe5cSMauro Carvalho Chehab 6503efe5cSMauro Carvalho Chehab struct smsdvb_debugfs; 7503efe5cSMauro Carvalho Chehab struct smsdvb_client_t; 8503efe5cSMauro Carvalho Chehab 9503efe5cSMauro Carvalho Chehab typedef void (*sms_prt_dvb_stats_t)(struct smsdvb_debugfs *debug_data, 10cf0e9cfcSMauro Carvalho Chehab struct sms_stats *p); 11503efe5cSMauro Carvalho Chehab 12503efe5cSMauro Carvalho Chehab typedef void (*sms_prt_isdb_stats_t)(struct smsdvb_debugfs *debug_data, 13cf0e9cfcSMauro Carvalho Chehab struct sms_isdbt_stats *p); 14503efe5cSMauro Carvalho Chehab 15503efe5cSMauro Carvalho Chehab typedef void (*sms_prt_isdb_stats_ex_t) 16503efe5cSMauro Carvalho Chehab (struct smsdvb_debugfs *debug_data, 17cf0e9cfcSMauro Carvalho Chehab struct sms_isdbt_stats_ex *p); 18503efe5cSMauro Carvalho Chehab 19503efe5cSMauro Carvalho Chehab 20503efe5cSMauro Carvalho Chehab struct smsdvb_client_t { 21503efe5cSMauro Carvalho Chehab struct list_head entry; 22503efe5cSMauro Carvalho Chehab 23503efe5cSMauro Carvalho Chehab struct smscore_device_t *coredev; 24503efe5cSMauro Carvalho Chehab struct smscore_client_t *smsclient; 25503efe5cSMauro Carvalho Chehab 26503efe5cSMauro Carvalho Chehab struct dvb_adapter adapter; 27503efe5cSMauro Carvalho Chehab struct dvb_demux demux; 28503efe5cSMauro Carvalho Chehab struct dmxdev dmxdev; 29503efe5cSMauro Carvalho Chehab struct dvb_frontend frontend; 30503efe5cSMauro Carvalho Chehab 310df289a2SMauro Carvalho Chehab enum fe_status fe_status; 32503efe5cSMauro Carvalho Chehab 33503efe5cSMauro Carvalho Chehab struct completion tune_done; 34503efe5cSMauro Carvalho Chehab struct completion stats_done; 35503efe5cSMauro Carvalho Chehab 36503efe5cSMauro Carvalho Chehab int last_per; 37503efe5cSMauro Carvalho Chehab 38503efe5cSMauro Carvalho Chehab int legacy_ber, legacy_per; 39503efe5cSMauro Carvalho Chehab 40503efe5cSMauro Carvalho Chehab int event_fe_state; 41503efe5cSMauro Carvalho Chehab int event_unc_state; 42503efe5cSMauro Carvalho Chehab 43a9b9fbdfSMauro Carvalho Chehab unsigned long get_stats_jiffies; 44a9b9fbdfSMauro Carvalho Chehab 45e1b2ac4dSMauro Carvalho Chehab int feed_users; 46e1b2ac4dSMauro Carvalho Chehab bool has_tuned; 47e1b2ac4dSMauro Carvalho Chehab 48dfef84fcSMauro Carvalho Chehab /* stats debugfs data */ 49503efe5cSMauro Carvalho Chehab struct dentry *debugfs; 50503efe5cSMauro Carvalho Chehab 51503efe5cSMauro Carvalho Chehab struct smsdvb_debugfs *debug_data; 52503efe5cSMauro Carvalho Chehab 53503efe5cSMauro Carvalho Chehab sms_prt_dvb_stats_t prt_dvb_stats; 54503efe5cSMauro Carvalho Chehab sms_prt_isdb_stats_t prt_isdb_stats; 55503efe5cSMauro Carvalho Chehab sms_prt_isdb_stats_ex_t prt_isdb_stats_ex; 56503efe5cSMauro Carvalho Chehab }; 57503efe5cSMauro Carvalho Chehab 58503efe5cSMauro Carvalho Chehab /* 59cf0e9cfcSMauro Carvalho Chehab * This struct is a mix of struct sms_rx_stats_ex and 60cf0e9cfcSMauro Carvalho Chehab * struct sms_srvm_signal_status. 61503efe5cSMauro Carvalho Chehab * It was obtained by comparing the way it was filled by the original code 62503efe5cSMauro Carvalho Chehab */ 63503efe5cSMauro Carvalho Chehab struct RECEPTION_STATISTICS_PER_SLICES_S { 64503efe5cSMauro Carvalho Chehab u32 result; 65503efe5cSMauro Carvalho Chehab u32 snr; 66dfef84fcSMauro Carvalho Chehab s32 in_band_power; 67dfef84fcSMauro Carvalho Chehab u32 ts_packets; 68dfef84fcSMauro Carvalho Chehab u32 ets_packets; 69503efe5cSMauro Carvalho Chehab u32 constellation; 70dfef84fcSMauro Carvalho Chehab u32 hp_code; 71dfef84fcSMauro Carvalho Chehab u32 tps_srv_ind_lp; 72dfef84fcSMauro Carvalho Chehab u32 tps_srv_ind_hp; 73dfef84fcSMauro Carvalho Chehab u32 cell_id; 74503efe5cSMauro Carvalho Chehab u32 reason; 75dfef84fcSMauro Carvalho Chehab u32 request_id; 76dfef84fcSMauro Carvalho Chehab u32 modem_state; /* from SMSHOSTLIB_DVB_MODEM_STATE_ET */ 77503efe5cSMauro Carvalho Chehab 7828a59df4SMauro Carvalho Chehab u32 ber; /* Post Viterbi BER [1E-5] */ 79503efe5cSMauro Carvalho Chehab s32 RSSI; /* dBm */ 80dfef84fcSMauro Carvalho Chehab s32 carrier_offset; /* Carrier Offset in bin/1024 */ 81503efe5cSMauro Carvalho Chehab 82dfef84fcSMauro Carvalho Chehab u32 is_rf_locked; /* 0 - not locked, 1 - locked */ 83dfef84fcSMauro Carvalho Chehab u32 is_demod_locked; /* 0 - not locked, 1 - locked */ 84503efe5cSMauro Carvalho Chehab 85dfef84fcSMauro Carvalho Chehab u32 ber_bit_count; /* Total number of SYNC bits. */ 86f58c91ceSJonathan McCrohan u32 ber_error_count; /* Number of erroneous SYNC bits. */ 87503efe5cSMauro Carvalho Chehab 88503efe5cSMauro Carvalho Chehab s32 MRC_SNR; /* dB */ 89dfef84fcSMauro Carvalho Chehab s32 mrc_in_band_pwr; /* In band power in dBM */ 90503efe5cSMauro Carvalho Chehab s32 MRC_RSSI; /* dBm */ 91503efe5cSMauro Carvalho Chehab }; 92503efe5cSMauro Carvalho Chehab 93503efe5cSMauro Carvalho Chehab /* From smsdvb-debugfs.c */ 94503efe5cSMauro Carvalho Chehab #ifdef CONFIG_SMS_SIANO_DEBUGFS 95503efe5cSMauro Carvalho Chehab 96503efe5cSMauro Carvalho Chehab int smsdvb_debugfs_create(struct smsdvb_client_t *client); 97503efe5cSMauro Carvalho Chehab void smsdvb_debugfs_release(struct smsdvb_client_t *client); 988179de98SMauro Carvalho Chehab void smsdvb_debugfs_register(void); 99503efe5cSMauro Carvalho Chehab void smsdvb_debugfs_unregister(void); 100503efe5cSMauro Carvalho Chehab 101503efe5cSMauro Carvalho Chehab #else 102503efe5cSMauro Carvalho Chehab smsdvb_debugfs_create(struct smsdvb_client_t * client)103503efe5cSMauro Carvalho Chehabstatic inline int smsdvb_debugfs_create(struct smsdvb_client_t *client) 104503efe5cSMauro Carvalho Chehab { 105503efe5cSMauro Carvalho Chehab return 0; 106503efe5cSMauro Carvalho Chehab } 107503efe5cSMauro Carvalho Chehab smsdvb_debugfs_release(struct smsdvb_client_t * client)108503efe5cSMauro Carvalho Chehabstatic inline void smsdvb_debugfs_release(struct smsdvb_client_t *client) {} 109503efe5cSMauro Carvalho Chehab smsdvb_debugfs_register(void)1108179de98SMauro Carvalho Chehabstatic inline void smsdvb_debugfs_register(void) {} 111503efe5cSMauro Carvalho Chehab smsdvb_debugfs_unregister(void)112503efe5cSMauro Carvalho Chehabstatic inline void smsdvb_debugfs_unregister(void) {}; 113503efe5cSMauro Carvalho Chehab 114503efe5cSMauro Carvalho Chehab #endif 115503efe5cSMauro Carvalho Chehab 116