linux/drivers/media/dvb-frontends/s5h1411.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3    Samsung S5H1411 VSB/QAM demodulator driver
   4
   5    Copyright (C) 2008 Steven Toth <stoth@linuxtv.org>
   6
   7
   8*/
   9
  10#ifndef __S5H1411_H__
  11#define __S5H1411_H__
  12
  13#include <linux/dvb/frontend.h>
  14
  15#define S5H1411_I2C_TOP_ADDR (0x32 >> 1)
  16#define S5H1411_I2C_QAM_ADDR (0x34 >> 1)
  17
  18struct s5h1411_config {
  19
  20        /* serial/parallel output */
  21#define S5H1411_PARALLEL_OUTPUT 0
  22#define S5H1411_SERIAL_OUTPUT   1
  23        u8 output_mode;
  24
  25        /* GPIO Setting */
  26#define S5H1411_GPIO_OFF 0
  27#define S5H1411_GPIO_ON  1
  28        u8 gpio;
  29
  30        /* MPEG signal timing */
  31#define S5H1411_MPEGTIMING_CONTINUOUS_INVERTING_CLOCK       0
  32#define S5H1411_MPEGTIMING_CONTINUOUS_NONINVERTING_CLOCK    1
  33#define S5H1411_MPEGTIMING_NONCONTINUOUS_INVERTING_CLOCK    2
  34#define S5H1411_MPEGTIMING_NONCONTINUOUS_NONINVERTING_CLOCK 3
  35        u16 mpeg_timing;
  36
  37        /* IF Freq for QAM and VSB in KHz */
  38#define S5H1411_IF_3250  3250
  39#define S5H1411_IF_3500  3500
  40#define S5H1411_IF_4000  4000
  41#define S5H1411_IF_5380  5380
  42#define S5H1411_IF_44000 44000
  43#define S5H1411_VSB_IF_DEFAULT S5H1411_IF_44000
  44#define S5H1411_QAM_IF_DEFAULT S5H1411_IF_44000
  45        u16 qam_if;
  46        u16 vsb_if;
  47
  48        /* Spectral Inversion */
  49#define S5H1411_INVERSION_OFF 0
  50#define S5H1411_INVERSION_ON  1
  51        u8 inversion;
  52
  53        /* Return lock status based on tuner lock, or demod lock */
  54#define S5H1411_TUNERLOCKING 0
  55#define S5H1411_DEMODLOCKING 1
  56        u8 status_mode;
  57};
  58
  59#if IS_REACHABLE(CONFIG_DVB_S5H1411)
  60extern struct dvb_frontend *s5h1411_attach(const struct s5h1411_config *config,
  61                                           struct i2c_adapter *i2c);
  62#else
  63static inline struct dvb_frontend *s5h1411_attach(
  64        const struct s5h1411_config *config,
  65        struct i2c_adapter *i2c)
  66{
  67        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  68        return NULL;
  69}
  70#endif /* CONFIG_DVB_S5H1411 */
  71
  72#endif /* __S5H1411_H__ */
  73