| /* SPDX-License-Identifier: GPL-2.0-or-later */ |
| /* |
| * Support for LGDT3302 and LGDT3303 - VSB/QAM |
| * |
| * Copyright (C) 2005 Wilson Michaels <wilsonmichaels@earthlink.net> |
| */ |
| |
| #ifndef LGDT330X_H |
| #define LGDT330X_H |
| |
| #include <linux/dvb/frontend.h> |
| |
| typedef enum lg_chip_t { |
| UNDEFINED, |
| LGDT3302, |
| LGDT3303 |
| }lg_chip_type; |
| |
| /** |
| * struct lgdt330x_config - contains lgdt330x configuration |
| * |
| * @demod_chip: LG demodulator chip LGDT3302 or LGDT3303 |
| * @serial_mpeg: MPEG hardware interface - 0:parallel 1:serial |
| * @pll_rf_set: Callback function to set PLL interface |
| * @set_ts_params: Callback function to set device param for start_dma |
| * @clock_polarity_flip: |
| * Flip the polarity of the mpeg data transfer clock using alternate |
| * init data. |
| * This option applies ONLY to LGDT3303 - 0:disabled (default) 1:enabled |
| * @get_dvb_frontend: |
| * returns the frontend associated with this I2C client. |
| * Filled by the driver. |
| */ |
| struct lgdt330x_config |
| { |
| lg_chip_type demod_chip; |
| int serial_mpeg; |
| int (*pll_rf_set) (struct dvb_frontend* fe, int index); |
| int (*set_ts_params)(struct dvb_frontend* fe, int is_punctured); |
| int clock_polarity_flip; |
| |
| struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *); |
| }; |
| |
| #if IS_REACHABLE(CONFIG_DVB_LGDT330X) |
| struct dvb_frontend *lgdt330x_attach(const struct lgdt330x_config *config, |
| u8 demod_address, |
| struct i2c_adapter *i2c); |
| #else |
| static inline |
| struct dvb_frontend *lgdt330x_attach(const struct lgdt330x_config *config, |
| u8 demod_address, |
| struct i2c_adapter *i2c) |
| { |
| printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); |
| return NULL; |
| } |
| #endif // CONFIG_DVB_LGDT330X |
| |
| #endif /* LGDT330X_H */ |