linux/drivers/media/dvb-frontends/tda1002x.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3    TDA10021/TDA10023  - Single Chip Cable Channel Receiver driver module
   4                         used on the the Siemens DVB-C cards
   5
   6    Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de>
   7    Copyright (C) 2004 Markus Schulz <msc@antzsystem.de>
   8                   Support for TDA10021
   9
  10*/
  11
  12#ifndef TDA1002x_H
  13#define TDA1002x_H
  14
  15#include <linux/dvb/frontend.h>
  16
  17struct tda1002x_config {
  18        /* the demodulator's i2c address */
  19        u8 demod_address;
  20        u8 invert;
  21};
  22
  23enum tda10023_output_mode {
  24        TDA10023_OUTPUT_MODE_PARALLEL_A = 0xe0,
  25        TDA10023_OUTPUT_MODE_PARALLEL_B = 0xa1,
  26        TDA10023_OUTPUT_MODE_PARALLEL_C = 0xa0,
  27        TDA10023_OUTPUT_MODE_SERIAL, /* TODO: not implemented */
  28};
  29
  30struct tda10023_config {
  31        /* the demodulator's i2c address */
  32        u8 demod_address;
  33        u8 invert;
  34
  35        /* clock settings */
  36        u32 xtal; /* defaults: 28920000 */
  37        u8 pll_m; /* defaults: 8 */
  38        u8 pll_p; /* defaults: 4 */
  39        u8 pll_n; /* defaults: 1 */
  40
  41        /* MPEG2 TS output mode */
  42        u8 output_mode;
  43
  44        /* input freq offset + baseband conversion type */
  45        u16 deltaf;
  46};
  47
  48#if IS_REACHABLE(CONFIG_DVB_TDA10021)
  49extern struct dvb_frontend* tda10021_attach(const struct tda1002x_config* config,
  50                                            struct i2c_adapter* i2c, u8 pwm);
  51#else
  52static inline struct dvb_frontend* tda10021_attach(const struct tda1002x_config* config,
  53                                            struct i2c_adapter* i2c, u8 pwm)
  54{
  55        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  56        return NULL;
  57}
  58#endif // CONFIG_DVB_TDA10021
  59
  60#if IS_REACHABLE(CONFIG_DVB_TDA10023)
  61extern struct dvb_frontend *tda10023_attach(
  62        const struct tda10023_config *config,
  63        struct i2c_adapter *i2c, u8 pwm);
  64#else
  65static inline struct dvb_frontend *tda10023_attach(
  66        const struct tda10023_config *config,
  67        struct i2c_adapter *i2c, u8 pwm)
  68{
  69        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  70        return NULL;
  71}
  72#endif // CONFIG_DVB_TDA10023
  73
  74#endif // TDA1002x_H
  75