1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _DVB_USB_DIGITV_H_ 3*4882a593Smuzhiyun #define _DVB_USB_DIGITV_H_ 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #define DVB_USB_LOG_PREFIX "digitv" 6*4882a593Smuzhiyun #include "dvb-usb.h" 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun struct digitv_state { 9*4882a593Smuzhiyun int is_nxt6000; 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun unsigned char sndbuf[7]; 12*4882a593Smuzhiyun unsigned char rcvbuf[7]; 13*4882a593Smuzhiyun }; 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* protocol (from usblogging and the SDK: 16*4882a593Smuzhiyun * 17*4882a593Smuzhiyun * Always 7 bytes bulk message(s) for controlling 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun * First byte describes the command. Reads are 2 consecutive transfer (as always). 20*4882a593Smuzhiyun * 21*4882a593Smuzhiyun * General structure: 22*4882a593Smuzhiyun * 23*4882a593Smuzhiyun * write or first message of a read: 24*4882a593Smuzhiyun * <cmdbyte> VV <len> B0 B1 B2 B3 25*4882a593Smuzhiyun * 26*4882a593Smuzhiyun * second message of a read 27*4882a593Smuzhiyun * <cmdbyte> VV <len> R0 R1 R2 R3 28*4882a593Smuzhiyun * 29*4882a593Smuzhiyun * whereas 0 < len <= 4 30*4882a593Smuzhiyun * 31*4882a593Smuzhiyun * I2C address is stored somewhere inside the device. 32*4882a593Smuzhiyun * 33*4882a593Smuzhiyun * 0x01 read from EEPROM 34*4882a593Smuzhiyun * VV = offset; B* = 0; R* = value(s) 35*4882a593Smuzhiyun * 36*4882a593Smuzhiyun * 0x02 read register of the COFDM 37*4882a593Smuzhiyun * VV = register; B* = 0; R* = value(s) 38*4882a593Smuzhiyun * 39*4882a593Smuzhiyun * 0x05 write register of the COFDM 40*4882a593Smuzhiyun * VV = register; B* = value(s); 41*4882a593Smuzhiyun * 42*4882a593Smuzhiyun * 0x06 write to the tuner (only for NXT6000) 43*4882a593Smuzhiyun * VV = 0; B* = PLL data; len = 4; 44*4882a593Smuzhiyun * 45*4882a593Smuzhiyun * 0x03 read remote control 46*4882a593Smuzhiyun * VV = 0; B* = 0; len = 4; R* = key 47*4882a593Smuzhiyun * 48*4882a593Smuzhiyun * 0x07 write to the remote (don't know why one should this, resetting ?) 49*4882a593Smuzhiyun * VV = 0; B* = key; len = 4; 50*4882a593Smuzhiyun * 51*4882a593Smuzhiyun * 0x08 write remote type 52*4882a593Smuzhiyun * VV = 0; B[0] = 0x01, len = 4 53*4882a593Smuzhiyun * 54*4882a593Smuzhiyun * 0x09 write device init 55*4882a593Smuzhiyun * TODO 56*4882a593Smuzhiyun */ 57*4882a593Smuzhiyun #define USB_READ_EEPROM 1 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun #define USB_READ_COFDM 2 60*4882a593Smuzhiyun #define USB_WRITE_COFDM 5 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun #define USB_WRITE_TUNER 6 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun #define USB_READ_REMOTE 3 65*4882a593Smuzhiyun #define USB_WRITE_REMOTE 7 66*4882a593Smuzhiyun #define USB_WRITE_REMOTE_TYPE 8 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #define USB_DEV_INIT 9 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun #endif 71