^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Afatech AF9013 demodulator driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (C) 2007 Antti Palosaari <crope@iki.fi>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright (C) 2011 Antti Palosaari <crope@iki.fi>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * Thanks to Afatech who kindly provided information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #ifndef AF9013_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define AF9013_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <linux/dvb/frontend.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) * I2C address: 0x1c, 0x1d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) * struct af9013_platform_data - Platform data for the af9013 driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) * @clk: Clock frequency.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) * @tuner: Used tuner model.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) * @if_frequency: IF frequency.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * @ts_mode: TS mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) * @ts_output_pin: TS output pin.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) * @spec_inv: Input spectrum inverted.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) * @api_version: Firmware API version.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) * @gpio: GPIOs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) * @get_dvb_frontend: Get DVB frontend callback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) * @get_i2c_adapter: Get I2C adapter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) * @pid_filter_ctrl: Control PID filter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) * @pid_filter: Set PID to PID filter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) struct af9013_platform_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) * 20480000, 25000000, 28000000, 28800000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) u32 clk;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #define AF9013_TUNER_MXL5003D 3 /* MaxLinear */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #define AF9013_TUNER_MXL5005D 13 /* MaxLinear */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define AF9013_TUNER_MXL5005R 30 /* MaxLinear */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #define AF9013_TUNER_ENV77H11D5 129 /* Panasonic */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #define AF9013_TUNER_MT2060 130 /* Microtune */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #define AF9013_TUNER_MC44S803 133 /* Freescale */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) #define AF9013_TUNER_QT1010 134 /* Quantek */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #define AF9013_TUNER_UNKNOWN 140 /* for can tuners ? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #define AF9013_TUNER_MT2060_2 147 /* Microtune */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #define AF9013_TUNER_TDA18271 156 /* NXP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #define AF9013_TUNER_QT1010A 162 /* Quantek */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #define AF9013_TUNER_MXL5007T 177 /* MaxLinear */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #define AF9013_TUNER_TDA18218 179 /* NXP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) u8 tuner;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) u32 if_frequency;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define AF9013_TS_MODE_USB 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) #define AF9013_TS_MODE_PARALLEL 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #define AF9013_TS_MODE_SERIAL 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) u8 ts_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) u8 ts_output_pin;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) bool spec_inv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) u8 api_version[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #define AF9013_GPIO_ON (1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) #define AF9013_GPIO_EN (1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) #define AF9013_GPIO_O (1 << 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) #define AF9013_GPIO_I (1 << 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) #define AF9013_GPIO_LO (AF9013_GPIO_ON|AF9013_GPIO_EN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) #define AF9013_GPIO_HI (AF9013_GPIO_ON|AF9013_GPIO_EN|AF9013_GPIO_O)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define AF9013_GPIO_TUNER_ON (AF9013_GPIO_ON|AF9013_GPIO_EN)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) #define AF9013_GPIO_TUNER_OFF (AF9013_GPIO_ON|AF9013_GPIO_EN|AF9013_GPIO_O)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) u8 gpio[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) struct i2c_adapter* (*get_i2c_adapter)(struct i2c_client *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) int (*pid_filter_ctrl)(struct dvb_frontend *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) int (*pid_filter)(struct dvb_frontend *, u8, u16, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) * AF9013/5 GPIOs (mostly guessed)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) * demod#1-gpio#0 - set demod#2 i2c-addr for dual devices
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) * demod#1-gpio#1 - xtal setting (?)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) * demod#1-gpio#3 - tuner#1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) * demod#2-gpio#0 - tuner#2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) * demod#2-gpio#1 - xtal setting (?)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) #endif /* AF9013_H */