cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mxl5005s.h (2834B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3    MaxLinear MXL5005S VSB/QAM/DVBT tuner driver
      4
      5    Copyright (C) 2008 MaxLinear
      6    Copyright (C) 2008 Steven Toth <stoth@linuxtv.org>
      7
      8
      9*/
     10
     11#ifndef __MXL5005S_H
     12#define __MXL5005S_H
     13
     14#include <linux/i2c.h>
     15#include <media/dvb_frontend.h>
     16
     17struct mxl5005s_config {
     18
     19	/* 7 bit i2c address */
     20	u8 i2c_address;
     21
     22#define IF_FREQ_4570000HZ    4570000
     23#define IF_FREQ_4571429HZ    4571429
     24#define IF_FREQ_5380000HZ    5380000
     25#define IF_FREQ_36000000HZ  36000000
     26#define IF_FREQ_36125000HZ  36125000
     27#define IF_FREQ_36166667HZ  36166667
     28#define IF_FREQ_44000000HZ  44000000
     29	u32 if_freq;
     30
     31#define CRYSTAL_FREQ_4000000HZ    4000000
     32#define CRYSTAL_FREQ_16000000HZ  16000000
     33#define CRYSTAL_FREQ_25000000HZ  25000000
     34#define CRYSTAL_FREQ_28800000HZ  28800000
     35	u32 xtal_freq;
     36
     37#define MXL_DUAL_AGC   0
     38#define MXL_SINGLE_AGC 1
     39	u8 agc_mode;
     40
     41#define MXL_TF_DEFAULT	0
     42#define MXL_TF_OFF	1
     43#define MXL_TF_C	2
     44#define MXL_TF_C_H	3
     45#define MXL_TF_D	4
     46#define MXL_TF_D_L	5
     47#define MXL_TF_E	6
     48#define MXL_TF_F	7
     49#define MXL_TF_E_2	8
     50#define MXL_TF_E_NA	9
     51#define MXL_TF_G	10
     52	u8 tracking_filter;
     53
     54#define MXL_RSSI_DISABLE	0
     55#define MXL_RSSI_ENABLE		1
     56	u8 rssi_enable;
     57
     58#define MXL_CAP_SEL_DISABLE	0
     59#define MXL_CAP_SEL_ENABLE	1
     60	u8 cap_select;
     61
     62#define MXL_DIV_OUT_1	0
     63#define MXL_DIV_OUT_4	1
     64	u8 div_out;
     65
     66#define MXL_CLOCK_OUT_DISABLE	0
     67#define MXL_CLOCK_OUT_ENABLE	1
     68	u8 clock_out;
     69
     70#define MXL5005S_IF_OUTPUT_LOAD_200_OHM 200
     71#define MXL5005S_IF_OUTPUT_LOAD_300_OHM 300
     72	u32 output_load;
     73
     74#define MXL5005S_TOP_5P5   55
     75#define MXL5005S_TOP_7P2   72
     76#define MXL5005S_TOP_9P2   92
     77#define MXL5005S_TOP_11P0 110
     78#define MXL5005S_TOP_12P9 129
     79#define MXL5005S_TOP_14P7 147
     80#define MXL5005S_TOP_16P8 168
     81#define MXL5005S_TOP_19P4 194
     82#define MXL5005S_TOP_21P2 212
     83#define MXL5005S_TOP_23P2 232
     84#define MXL5005S_TOP_25P2 252
     85#define MXL5005S_TOP_27P1 271
     86#define MXL5005S_TOP_29P2 292
     87#define MXL5005S_TOP_31P7 317
     88#define MXL5005S_TOP_34P9 349
     89	u32 top;
     90
     91#define MXL_ANALOG_MODE  0
     92#define MXL_DIGITAL_MODE 1
     93	u8 mod_mode;
     94
     95#define MXL_ZERO_IF 0
     96#define MXL_LOW_IF  1
     97	u8 if_mode;
     98
     99	/* Some boards need to override the built-in logic for determining
    100	   the gain when in QAM mode (the HVR-1600 is one such case) */
    101	u8 qam_gain;
    102
    103	/* Stuff I don't know what to do with */
    104	u8 AgcMasterByte;
    105};
    106
    107#if IS_REACHABLE(CONFIG_MEDIA_TUNER_MXL5005S)
    108extern struct dvb_frontend *mxl5005s_attach(struct dvb_frontend *fe,
    109					    struct i2c_adapter *i2c,
    110					    struct mxl5005s_config *config);
    111#else
    112static inline struct dvb_frontend *mxl5005s_attach(struct dvb_frontend *fe,
    113					    struct i2c_adapter *i2c,
    114					    struct mxl5005s_config *config)
    115{
    116	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
    117	return NULL;
    118}
    119#endif /* CONFIG_DVB_TUNER_MXL5005S */
    120
    121#endif /* __MXL5005S_H */
    122