xref: /openbmc/linux/drivers/media/dvb-frontends/af9033.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
29a0bf528SMauro Carvalho Chehab /*
39a0bf528SMauro Carvalho Chehab  * Afatech AF9033 demodulator driver
49a0bf528SMauro Carvalho Chehab  *
59a0bf528SMauro Carvalho Chehab  * Copyright (C) 2009 Antti Palosaari <crope@iki.fi>
69a0bf528SMauro Carvalho Chehab  * Copyright (C) 2012 Antti Palosaari <crope@iki.fi>
79a0bf528SMauro Carvalho Chehab  */
89a0bf528SMauro Carvalho Chehab 
99a0bf528SMauro Carvalho Chehab #ifndef AF9033_H
109a0bf528SMauro Carvalho Chehab #define AF9033_H
119a0bf528SMauro Carvalho Chehab 
129a0bf528SMauro Carvalho Chehab /*
1381e19912SAntti Palosaari  * I2C address: 0x1c, 0x1d, 0x1e, 0x1f
149a0bf528SMauro Carvalho Chehab  */
15a781edd1SAntti Palosaari struct af9033_config {
169a0bf528SMauro Carvalho Chehab 	/*
179a0bf528SMauro Carvalho Chehab 	 * clock Hz
189a0bf528SMauro Carvalho Chehab 	 * 12000000, 22000000, 24000000, 34000000, 32000000, 28000000, 26000000,
199a0bf528SMauro Carvalho Chehab 	 * 30000000, 36000000, 20480000, 16384000
209a0bf528SMauro Carvalho Chehab 	 */
219a0bf528SMauro Carvalho Chehab 	u32 clock;
229a0bf528SMauro Carvalho Chehab 
239a0bf528SMauro Carvalho Chehab 	/*
244902bb39SAntti Palosaari 	 * ADC multiplier
254902bb39SAntti Palosaari 	 */
264902bb39SAntti Palosaari #define AF9033_ADC_MULTIPLIER_1X   0
274902bb39SAntti Palosaari #define AF9033_ADC_MULTIPLIER_2X   1
284902bb39SAntti Palosaari 	u8 adc_multiplier;
294902bb39SAntti Palosaari 
304902bb39SAntti Palosaari 	/*
319a0bf528SMauro Carvalho Chehab 	 * tuner
329a0bf528SMauro Carvalho Chehab 	 */
339a0bf528SMauro Carvalho Chehab #define AF9033_TUNER_TUA9001     0x27 /* Infineon TUA 9001 */
349a0bf528SMauro Carvalho Chehab #define AF9033_TUNER_FC0011      0x28 /* Fitipower FC0011 */
35e713ad15SAntti Palosaari #define AF9033_TUNER_FC0012      0x2e /* Fitipower FC0012 */
369a0bf528SMauro Carvalho Chehab #define AF9033_TUNER_MXL5007T    0xa0 /* MaxLinear MxL5007T */
379a0bf528SMauro Carvalho Chehab #define AF9033_TUNER_TDA18218    0xa1 /* NXP TDA 18218HN */
38d67ceb33SOliver Schinagl #define AF9033_TUNER_FC2580      0x32 /* FCI FC2580 */
394902bb39SAntti Palosaari /* 50-5f Omega */
404902bb39SAntti Palosaari #define AF9033_TUNER_IT9135_38   0x38 /* Omega */
414902bb39SAntti Palosaari #define AF9033_TUNER_IT9135_51   0x51 /* Omega LNA config 1 */
424902bb39SAntti Palosaari #define AF9033_TUNER_IT9135_52   0x52 /* Omega LNA config 2 */
434902bb39SAntti Palosaari /* 60-6f Omega v2 */
444902bb39SAntti Palosaari #define AF9033_TUNER_IT9135_60   0x60 /* Omega v2 */
454902bb39SAntti Palosaari #define AF9033_TUNER_IT9135_61   0x61 /* Omega v2 LNA config 1 */
464902bb39SAntti Palosaari #define AF9033_TUNER_IT9135_62   0x62 /* Omega v2 LNA config 2 */
479a0bf528SMauro Carvalho Chehab 	u8 tuner;
489a0bf528SMauro Carvalho Chehab 
499a0bf528SMauro Carvalho Chehab 	/*
509a0bf528SMauro Carvalho Chehab 	 * TS settings
519a0bf528SMauro Carvalho Chehab 	 */
529a0bf528SMauro Carvalho Chehab #define AF9033_TS_MODE_USB       0
539a0bf528SMauro Carvalho Chehab #define AF9033_TS_MODE_PARALLEL  1
549a0bf528SMauro Carvalho Chehab #define AF9033_TS_MODE_SERIAL    2
559a0bf528SMauro Carvalho Chehab 	u8 ts_mode:2;
569a0bf528SMauro Carvalho Chehab 
579a0bf528SMauro Carvalho Chehab 	/*
589a0bf528SMauro Carvalho Chehab 	 * input spectrum inversion
599a0bf528SMauro Carvalho Chehab 	 */
609a0bf528SMauro Carvalho Chehab 	bool spec_inv;
61ca681fe0SAntti Palosaari 
62ca681fe0SAntti Palosaari 	/*
63ca681fe0SAntti Palosaari 	 *
64ca681fe0SAntti Palosaari 	 */
65ca681fe0SAntti Palosaari 	bool dyn0_clk;
669a0bf528SMauro Carvalho Chehab 
67f5b00a76SAntti Palosaari 	/*
68f5b00a76SAntti Palosaari 	 * PID filter ops
69f5b00a76SAntti Palosaari 	 */
70f5b00a76SAntti Palosaari 	struct af9033_ops *ops;
71f5b00a76SAntti Palosaari 
72f5b00a76SAntti Palosaari 	/*
73f5b00a76SAntti Palosaari 	 * frontend
74f5b00a76SAntti Palosaari 	 * returned by that driver
75f5b00a76SAntti Palosaari 	 */
76f5b00a76SAntti Palosaari 	struct dvb_frontend **fe;
773461831aSAntti Palosaari 
783461831aSAntti Palosaari 	/*
793461831aSAntti Palosaari 	 * regmap for IT913x integrated tuner driver
803461831aSAntti Palosaari 	 * returned by that driver
813461831aSAntti Palosaari 	 */
823461831aSAntti Palosaari 	struct regmap *regmap;
83f5b00a76SAntti Palosaari };
849a0bf528SMauro Carvalho Chehab 
85ed97a6feSMauro Carvalho Chehab struct af9033_ops {
86ed97a6feSMauro Carvalho Chehab 	int (*pid_filter_ctrl)(struct dvb_frontend *fe, int onoff);
87ed97a6feSMauro Carvalho Chehab 	int (*pid_filter)(struct dvb_frontend *fe, int index, u16 pid,
88040cf86cSAntti Palosaari 			  int onoff);
89ed97a6feSMauro Carvalho Chehab };
90ed97a6feSMauro Carvalho Chehab 
919a0bf528SMauro Carvalho Chehab #endif /* AF9033_H */
92