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