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) /* Header file for all dibusb-based-receivers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@posteo.de)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * see Documentation/driver-api/media/drivers/dvb-usb.rst for more information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #ifndef _DVB_USB_DIBUSB_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) #define _DVB_USB_DIBUSB_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #ifndef DVB_USB_LOG_PREFIX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)  #define DVB_USB_LOG_PREFIX "dibusb"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #include "dvb-usb.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #include "dib3000.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) #include "dib3000mc.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #include "mt2060.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21)  * protocol of all dibusb related devices
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25)  * bulk msg to/from endpoint 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27)  * general structure:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28)  * request_byte parameter_bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #define DIBUSB_REQ_START_READ			0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #define DIBUSB_REQ_START_DEMOD			0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35)  * i2c read
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36)  * bulk write: 0x02 ((7bit i2c_addr << 1) | 0x01) register_bytes length_word
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37)  * bulk read:  byte_buffer (length_word bytes)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) #define DIBUSB_REQ_I2C_READ			0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42)  * i2c write
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43)  * bulk write: 0x03 (7bit i2c_addr << 1) register_bytes value_bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #define DIBUSB_REQ_I2C_WRITE			0x03
^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)  * polling the value of the remote control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49)  * bulk write: 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50)  * bulk read:  byte_buffer (5 bytes)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) #define DIBUSB_REQ_POLL_REMOTE       0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) /* additional status values for Hauppauge Remote Control Protocol */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) #define DIBUSB_RC_HAUPPAUGE_KEY_PRESSED	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) #define DIBUSB_RC_HAUPPAUGE_KEY_EMPTY	0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) /* streaming mode:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59)  * bulk write: 0x05 mode_byte
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61)  * mode_byte is mostly 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) #define DIBUSB_REQ_SET_STREAMING_MODE	0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) /* interrupt the internal read loop, when blocking */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) #define DIBUSB_REQ_INTR_READ			0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) /* io control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69)  * 0x07 cmd_byte param_bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71)  * param_bytes can be up to 32 bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73)  * cmd_byte function    parameter name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74)  * 0x00     power mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75)  *                      0x00      sleep
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76)  *                      0x01      wakeup
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78)  * 0x01     enable streaming
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79)  * 0x02     disable streaming
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define DIBUSB_REQ_SET_IOCTL			0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) /* IOCTL commands */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) /* change the power mode in firmware */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) #define DIBUSB_IOCTL_CMD_POWER_MODE		0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) #define DIBUSB_IOCTL_POWER_SLEEP			0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) #define DIBUSB_IOCTL_POWER_WAKEUP			0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) /* modify streaming of the FX2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) #define DIBUSB_IOCTL_CMD_ENABLE_STREAM	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #define DIBUSB_IOCTL_CMD_DISABLE_STREAM	0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) /* Max transfer size done by I2C transfer functions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) #define MAX_XFER_SIZE  64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) struct dibusb_state {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 	struct dib_fe_xfer_ops ops;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	int mt2060_present;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	u8 tuner_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) struct dibusb_device_state {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	/* for RC5 remote control */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	int old_toggle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	int last_repeat_count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) extern struct i2c_algorithm dibusb_i2c_algo;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) extern int dibusb_dib3000mc_frontend_attach(struct dvb_usb_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) extern int dibusb_dib3000mc_tuner_attach (struct dvb_usb_adapter *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) extern int dibusb_streaming_ctrl(struct dvb_usb_adapter *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) extern int dibusb_pid_filter(struct dvb_usb_adapter *, int, u16, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) extern int dibusb_pid_filter_ctrl(struct dvb_usb_adapter *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) extern int dibusb2_0_streaming_ctrl(struct dvb_usb_adapter *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) extern int dibusb_power_ctrl(struct dvb_usb_device *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) extern int dibusb2_0_power_ctrl(struct dvb_usb_device *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define DEFAULT_RC_INTERVAL 150
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) //#define DEFAULT_RC_INTERVAL 100000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) extern struct rc_map_table rc_map_dibusb_table[];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) extern int dibusb_rc_query(struct dvb_usb_device *, u32 *, int *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) extern int dibusb_read_eeprom_byte(struct dvb_usb_device *, u8, u8 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #endif