File Index
Files and directories
Sign in
FILE

mxl5005s.h

File preview with syntax highlighting.

linux-6.19.14/drivers/media/tuners/mxl5005s.h C
  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
~/ Read-only file preview.