xref: /linux/drivers/media/dvb-frontends/lgs8gxx_priv.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
2f15da16dSDavid Wong /*
3b80dc1c6SDavid Wong  *    Support for Legend Silicon GB20600 (a.k.a DMB-TH) demodulator
4b80dc1c6SDavid Wong  *    LGS8913, LGS8GL5, LGS8G75
5f15da16dSDavid Wong  *    experimental support LGS8G42, LGS8G52
6f15da16dSDavid Wong  *
7b80dc1c6SDavid Wong  *    Copyright (C) 2007-2009 David T.L. Wong <davidtlwong@gmail.com>
8f15da16dSDavid Wong  *    Copyright (C) 2008 Sirius International (Hong Kong) Limited
9f15da16dSDavid Wong  *    Timothy Lee <timothy.lee@siriushk.com> (for initial work on LGS8GL5)
10f15da16dSDavid Wong  */
11f15da16dSDavid Wong 
12f15da16dSDavid Wong #ifndef LGS8913_PRIV_H
13f15da16dSDavid Wong #define LGS8913_PRIV_H
14f15da16dSDavid Wong 
15f15da16dSDavid Wong struct lgs8gxx_state {
16f15da16dSDavid Wong 	struct i2c_adapter *i2c;
17f15da16dSDavid Wong 	/* configuration settings */
18f15da16dSDavid Wong 	const struct lgs8gxx_config *config;
19f15da16dSDavid Wong 	struct dvb_frontend frontend;
20f15da16dSDavid Wong 	u16 curr_gi; /* current guard interval */
21f15da16dSDavid Wong };
22f15da16dSDavid Wong 
23f15da16dSDavid Wong #define SC_MASK		0x1C	/* Sub-Carrier Modulation Mask */
24f15da16dSDavid Wong #define SC_QAM64	0x10	/* 64QAM modulation */
25f15da16dSDavid Wong #define SC_QAM32	0x0C	/* 32QAM modulation */
26f15da16dSDavid Wong #define SC_QAM16	0x08	/* 16QAM modulation */
27b80dc1c6SDavid Wong #define SC_QAM4NR	0x04	/* 4QAM-NR modulation */
28f15da16dSDavid Wong #define SC_QAM4		0x00	/* 4QAM modulation */
29f15da16dSDavid Wong 
30f15da16dSDavid Wong #define LGS_FEC_MASK	0x03	/* FEC Rate Mask */
31f15da16dSDavid Wong #define LGS_FEC_0_4	0x00	/* FEC Rate 0.4 */
32f15da16dSDavid Wong #define LGS_FEC_0_6	0x01	/* FEC Rate 0.6 */
33f15da16dSDavid Wong #define LGS_FEC_0_8	0x02	/* FEC Rate 0.8 */
34f15da16dSDavid Wong 
35f15da16dSDavid Wong #define TIM_MASK	  0x20	/* Time Interleave Length Mask */
36b80dc1c6SDavid Wong #define TIM_LONG	  0x20	/* Time Interleave Length = 720 */
37b80dc1c6SDavid Wong #define TIM_MIDDLE     0x00   /* Time Interleave Length = 240 */
38f15da16dSDavid Wong 
39f15da16dSDavid Wong #define CF_MASK	0x80	/* Control Frame Mask */
40f15da16dSDavid Wong #define CF_EN	0x80	/* Control Frame On */
41f15da16dSDavid Wong 
42f15da16dSDavid Wong #define GI_MASK	0x03	/* Guard Interval Mask */
43f15da16dSDavid Wong #define GI_420	0x00	/* 1/9 Guard Interval */
44f15da16dSDavid Wong #define GI_595	0x01	/* */
45f15da16dSDavid Wong #define GI_945	0x02	/* 1/4 Guard Interval */
46f15da16dSDavid Wong 
47f15da16dSDavid Wong 
48f15da16dSDavid Wong #define TS_PARALLEL	0x00	/* Parallel TS Output a.k.a. SPI */
49f15da16dSDavid Wong #define TS_SERIAL	0x01	/* Serial TS Output a.k.a. SSI */
50f15da16dSDavid Wong #define TS_CLK_NORMAL		0x00	/* MPEG Clock Normal */
51f15da16dSDavid Wong #define TS_CLK_INVERTED		0x02	/* MPEG Clock Inverted */
52f15da16dSDavid Wong #define TS_CLK_GATED		0x00	/* MPEG clock gated */
53f15da16dSDavid Wong #define TS_CLK_FREERUN		0x04	/* MPEG clock free running*/
54f15da16dSDavid Wong 
55f15da16dSDavid Wong 
56f15da16dSDavid Wong #endif
57