Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  * Linux-DVB Driver for DiBcom's DiB0070 base-band RF Tuner.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  * Copyright (C) 2005-7 DiBcom (http://www.dibcom.fr/)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #ifndef DIB0070_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #define DIB0070_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) struct dvb_frontend;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) struct i2c_adapter;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define DEFAULT_DIB0070_I2C_ADDRESS 0x60
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) struct dib0070_wbd_gain_cfg {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 	u16 freq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	u16 wbd_gain_val;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) struct dib0070_config {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	u8 i2c_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	/* tuner pins controlled externally */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	int (*reset) (struct dvb_frontend *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 	int (*sleep) (struct dvb_frontend *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	/*  offset in kHz */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	int freq_offset_khz_uhf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 	int freq_offset_khz_vhf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	u8 osc_buffer_state;	/* 0= normal, 1= tri-state */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	u32 clock_khz;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	u8 clock_pad_drive;	/* (Drive + 1) * 2mA */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 	u8 invert_iq;		/* invert Q - in case I or Q is inverted on the board */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 	u8 force_crystal_mode;	/* if == 0 -> decision is made in the driver default: <24 -> 2, >=24 -> 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	u8 flip_chip;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	u8 enable_third_order_filter;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	u8 charge_pump;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	const struct dib0070_wbd_gain_cfg *wbd_gain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 	u8 vga_filter;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #if IS_REACHABLE(CONFIG_DVB_TUNER_DIB0070)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) extern struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) extern u16 dib0070_wbd_offset(struct dvb_frontend *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) extern void dib0070_ctrl_agc_filter(struct dvb_frontend *, u8 open);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) extern u8 dib0070_get_rf_output(struct dvb_frontend *fe);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) extern int dib0070_set_rf_output(struct dvb_frontend *fe, u8 no);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) static inline struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 	return NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) static inline u16 dib0070_wbd_offset(struct dvb_frontend *fe)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) static inline void dib0070_ctrl_agc_filter(struct dvb_frontend *fe, u8 open)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #endif