xref: /openbmc/linux/drivers/media/common/siano/smsdvb.h (revision 58e16d792a6a8c6b750f637a4649967fcac853dc)
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 Chehab static 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 Chehab static inline void smsdvb_debugfs_release(struct smsdvb_client_t *client) {}
109503efe5cSMauro Carvalho Chehab 
smsdvb_debugfs_register(void)1108179de98SMauro Carvalho Chehab static inline void smsdvb_debugfs_register(void) {}
111503efe5cSMauro Carvalho Chehab 
smsdvb_debugfs_unregister(void)112503efe5cSMauro Carvalho Chehab static inline void smsdvb_debugfs_unregister(void) {};
113503efe5cSMauro Carvalho Chehab 
114503efe5cSMauro Carvalho Chehab #endif
115503efe5cSMauro Carvalho Chehab 
116