lgdt330x.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * Support for LGDT3302 and LGDT3303 - VSB/QAM
  3. *
  4. * Copyright (C) 2005 Wilson Michaels <wilsonmichaels@earthlink.net>
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; either version 2 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. */
  17. #ifndef LGDT330X_H
  18. #define LGDT330X_H
  19. #include <linux/dvb/frontend.h>
  20. typedef enum lg_chip_t {
  21. UNDEFINED,
  22. LGDT3302,
  23. LGDT3303
  24. }lg_chip_type;
  25. /**
  26. * struct lgdt330x_config - contains lgdt330x configuration
  27. *
  28. * @demod_chip: LG demodulator chip LGDT3302 or LGDT3303
  29. * @serial_mpeg: MPEG hardware interface - 0:parallel 1:serial
  30. * @pll_rf_set: Callback function to set PLL interface
  31. * @set_ts_params: Callback function to set device param for start_dma
  32. * @clock_polarity_flip:
  33. * Flip the polarity of the mpeg data transfer clock using alternate
  34. * init data.
  35. * This option applies ONLY to LGDT3303 - 0:disabled (default) 1:enabled
  36. * @get_dvb_frontend:
  37. * returns the frontend associated with this I2C client.
  38. * Filled by the driver.
  39. */
  40. struct lgdt330x_config
  41. {
  42. lg_chip_type demod_chip;
  43. int serial_mpeg;
  44. int (*pll_rf_set) (struct dvb_frontend* fe, int index);
  45. int (*set_ts_params)(struct dvb_frontend* fe, int is_punctured);
  46. int clock_polarity_flip;
  47. struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
  48. };
  49. #if IS_REACHABLE(CONFIG_DVB_LGDT330X)
  50. struct dvb_frontend *lgdt330x_attach(const struct lgdt330x_config *config,
  51. u8 demod_address,
  52. struct i2c_adapter *i2c);
  53. #else
  54. static inline
  55. struct dvb_frontend *lgdt330x_attach(const struct lgdt330x_config *config,
  56. u8 demod_address,
  57. struct i2c_adapter *i2c)
  58. {
  59. printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  60. return NULL;
  61. }
  62. #endif // CONFIG_DVB_LGDT330X
  63. #endif /* LGDT330X_H */