Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * Afatech AF9013 demodulator driver
0004  *
0005  * Copyright (C) 2007 Antti Palosaari <crope@iki.fi>
0006  * Copyright (C) 2011 Antti Palosaari <crope@iki.fi>
0007  *
0008  * Thanks to Afatech who kindly provided information.
0009  */
0010 
0011 #ifndef AF9013_H
0012 #define AF9013_H
0013 
0014 #include <linux/dvb/frontend.h>
0015 
0016 /*
0017  * I2C address: 0x1c, 0x1d
0018  */
0019 
0020 /**
0021  * struct af9013_platform_data - Platform data for the af9013 driver
0022  * @clk: Clock frequency.
0023  * @tuner: Used tuner model.
0024  * @if_frequency: IF frequency.
0025  * @ts_mode: TS mode.
0026  * @ts_output_pin: TS output pin.
0027  * @spec_inv: Input spectrum inverted.
0028  * @api_version: Firmware API version.
0029  * @gpio: GPIOs.
0030  * @get_dvb_frontend: Get DVB frontend callback.
0031  * @get_i2c_adapter: Get I2C adapter.
0032  * @pid_filter_ctrl: Control PID filter.
0033  * @pid_filter: Set PID to PID filter.
0034  */
0035 struct af9013_platform_data {
0036     /*
0037      * 20480000, 25000000, 28000000, 28800000
0038      */
0039     u32 clk;
0040 #define AF9013_TUNER_MXL5003D      3 /* MaxLinear */
0041 #define AF9013_TUNER_MXL5005D     13 /* MaxLinear */
0042 #define AF9013_TUNER_MXL5005R     30 /* MaxLinear */
0043 #define AF9013_TUNER_ENV77H11D5  129 /* Panasonic */
0044 #define AF9013_TUNER_MT2060      130 /* Microtune */
0045 #define AF9013_TUNER_MC44S803    133 /* Freescale */
0046 #define AF9013_TUNER_QT1010      134 /* Quantek */
0047 #define AF9013_TUNER_UNKNOWN     140 /* for can tuners ? */
0048 #define AF9013_TUNER_MT2060_2    147 /* Microtune */
0049 #define AF9013_TUNER_TDA18271    156 /* NXP */
0050 #define AF9013_TUNER_QT1010A     162 /* Quantek */
0051 #define AF9013_TUNER_MXL5007T    177 /* MaxLinear */
0052 #define AF9013_TUNER_TDA18218    179 /* NXP */
0053     u8 tuner;
0054     u32 if_frequency;
0055 #define AF9013_TS_MODE_USB       0
0056 #define AF9013_TS_MODE_PARALLEL  1
0057 #define AF9013_TS_MODE_SERIAL    2
0058     u8 ts_mode;
0059     u8 ts_output_pin;
0060     bool spec_inv;
0061     u8 api_version[4];
0062 #define AF9013_GPIO_ON (1 << 0)
0063 #define AF9013_GPIO_EN (1 << 1)
0064 #define AF9013_GPIO_O  (1 << 2)
0065 #define AF9013_GPIO_I  (1 << 3)
0066 #define AF9013_GPIO_LO (AF9013_GPIO_ON|AF9013_GPIO_EN)
0067 #define AF9013_GPIO_HI (AF9013_GPIO_ON|AF9013_GPIO_EN|AF9013_GPIO_O)
0068 #define AF9013_GPIO_TUNER_ON  (AF9013_GPIO_ON|AF9013_GPIO_EN)
0069 #define AF9013_GPIO_TUNER_OFF (AF9013_GPIO_ON|AF9013_GPIO_EN|AF9013_GPIO_O)
0070     u8 gpio[4];
0071 
0072     struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
0073     struct i2c_adapter* (*get_i2c_adapter)(struct i2c_client *);
0074     int (*pid_filter_ctrl)(struct dvb_frontend *, int);
0075     int (*pid_filter)(struct dvb_frontend *, u8, u16, int);
0076 };
0077 
0078 /*
0079  * AF9013/5 GPIOs (mostly guessed)
0080  * demod#1-gpio#0 - set demod#2 i2c-addr for dual devices
0081  * demod#1-gpio#1 - xtal setting (?)
0082  * demod#1-gpio#3 - tuner#1
0083  * demod#2-gpio#0 - tuner#2
0084  * demod#2-gpio#1 - xtal setting (?)
0085  */
0086 
0087 #endif /* AF9013_H */