linux/drivers/media/dvb-frontends/lgdt330x.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3 *    Support for LGDT3302 and LGDT3303 - VSB/QAM
   4 *
   5 *    Copyright (C) 2005 Wilson Michaels <wilsonmichaels@earthlink.net>
   6 */
   7
   8#ifndef LGDT330X_H
   9#define LGDT330X_H
  10
  11#include <linux/dvb/frontend.h>
  12
  13typedef enum lg_chip_t {
  14                UNDEFINED,
  15                LGDT3302,
  16                LGDT3303
  17}lg_chip_type;
  18
  19/**
  20 * struct lgdt330x_config - contains lgdt330x configuration
  21 *
  22 * @demod_chip:         LG demodulator chip LGDT3302 or LGDT3303
  23 * @serial_mpeg:        MPEG hardware interface - 0:parallel 1:serial
  24 * @pll_rf_set:         Callback function to set PLL interface
  25 * @set_ts_params:      Callback function to set device param for start_dma
  26 * @clock_polarity_flip:
  27 *      Flip the polarity of the mpeg data transfer clock using alternate
  28 *      init data.
  29 *      This option applies ONLY to LGDT3303 - 0:disabled (default) 1:enabled
  30 * @get_dvb_frontend:
  31 *      returns the frontend associated with this I2C client.
  32 *      Filled by the driver.
  33 */
  34struct lgdt330x_config
  35{
  36        lg_chip_type demod_chip;
  37        int serial_mpeg;
  38        int (*pll_rf_set) (struct dvb_frontend* fe, int index);
  39        int (*set_ts_params)(struct dvb_frontend* fe, int is_punctured);
  40        int clock_polarity_flip;
  41
  42        struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
  43};
  44
  45#if IS_REACHABLE(CONFIG_DVB_LGDT330X)
  46struct dvb_frontend *lgdt330x_attach(const struct lgdt330x_config *config,
  47                                     u8 demod_address,
  48                                     struct i2c_adapter *i2c);
  49#else
  50static inline
  51struct dvb_frontend *lgdt330x_attach(const struct lgdt330x_config *config,
  52                                     u8 demod_address,
  53                                     struct i2c_adapter *i2c)
  54{
  55        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  56        return NULL;
  57}
  58#endif // CONFIG_DVB_LGDT330X
  59
  60#endif /* LGDT330X_H */
  61