xref: /OK3568_Linux_fs/kernel/drivers/media/common/siano/smsdvb.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static inline void smsdvb_debugfs_release(struct smsdvb_client_t *client) {}
109*4882a593Smuzhiyun 
smsdvb_debugfs_register(void)110*4882a593Smuzhiyun static inline void smsdvb_debugfs_register(void) {}
111*4882a593Smuzhiyun 
smsdvb_debugfs_unregister(void)112*4882a593Smuzhiyun static inline void smsdvb_debugfs_unregister(void) {};
113*4882a593Smuzhiyun 
114*4882a593Smuzhiyun #endif
115*4882a593Smuzhiyun 
116