xref: /linux/drivers/media/usb/dvb-usb/digitv.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2786baecfSMauro Carvalho Chehab #ifndef _DVB_USB_DIGITV_H_
3786baecfSMauro Carvalho Chehab #define _DVB_USB_DIGITV_H_
4786baecfSMauro Carvalho Chehab 
5786baecfSMauro Carvalho Chehab #define DVB_USB_LOG_PREFIX "digitv"
6786baecfSMauro Carvalho Chehab #include "dvb-usb.h"
7786baecfSMauro Carvalho Chehab 
8786baecfSMauro Carvalho Chehab struct digitv_state {
9786baecfSMauro Carvalho Chehab 	int is_nxt6000;
10f0b0ada7SMauro Carvalho Chehab 
11f0b0ada7SMauro Carvalho Chehab 	unsigned char sndbuf[7];
12f0b0ada7SMauro Carvalho Chehab 	unsigned char rcvbuf[7];
13786baecfSMauro Carvalho Chehab };
14786baecfSMauro Carvalho Chehab 
15786baecfSMauro Carvalho Chehab /* protocol (from usblogging and the SDK:
16786baecfSMauro Carvalho Chehab  *
17786baecfSMauro Carvalho Chehab  * Always 7 bytes bulk message(s) for controlling
18786baecfSMauro Carvalho Chehab  *
19786baecfSMauro Carvalho Chehab  * First byte describes the command. Reads are 2 consecutive transfer (as always).
20786baecfSMauro Carvalho Chehab  *
21786baecfSMauro Carvalho Chehab  * General structure:
22786baecfSMauro Carvalho Chehab  *
23786baecfSMauro Carvalho Chehab  * write or first message of a read:
24786baecfSMauro Carvalho Chehab  * <cmdbyte> VV <len> B0 B1 B2 B3
25786baecfSMauro Carvalho Chehab  *
26786baecfSMauro Carvalho Chehab  * second message of a read
27786baecfSMauro Carvalho Chehab  * <cmdbyte> VV <len> R0 R1 R2 R3
28786baecfSMauro Carvalho Chehab  *
29786baecfSMauro Carvalho Chehab  * whereas 0 < len <= 4
30786baecfSMauro Carvalho Chehab  *
31786baecfSMauro Carvalho Chehab  * I2C address is stored somewhere inside the device.
32786baecfSMauro Carvalho Chehab  *
33786baecfSMauro Carvalho Chehab  * 0x01 read from EEPROM
34786baecfSMauro Carvalho Chehab  *  VV = offset; B* = 0; R* = value(s)
35786baecfSMauro Carvalho Chehab  *
36786baecfSMauro Carvalho Chehab  * 0x02 read register of the COFDM
37786baecfSMauro Carvalho Chehab  *  VV = register; B* = 0; R* = value(s)
38786baecfSMauro Carvalho Chehab  *
39786baecfSMauro Carvalho Chehab  * 0x05 write register of the COFDM
40786baecfSMauro Carvalho Chehab  *  VV = register; B* = value(s);
41786baecfSMauro Carvalho Chehab  *
42786baecfSMauro Carvalho Chehab  * 0x06 write to the tuner (only for NXT6000)
43786baecfSMauro Carvalho Chehab  *  VV = 0; B* = PLL data; len = 4;
44786baecfSMauro Carvalho Chehab  *
45786baecfSMauro Carvalho Chehab  * 0x03 read remote control
46786baecfSMauro Carvalho Chehab  *  VV = 0; B* = 0; len = 4; R* = key
47786baecfSMauro Carvalho Chehab  *
48786baecfSMauro Carvalho Chehab  * 0x07 write to the remote (don't know why one should this, resetting ?)
49786baecfSMauro Carvalho Chehab  *  VV = 0; B* = key; len = 4;
50786baecfSMauro Carvalho Chehab  *
51786baecfSMauro Carvalho Chehab  * 0x08 write remote type
52786baecfSMauro Carvalho Chehab  *  VV = 0; B[0] = 0x01, len = 4
53786baecfSMauro Carvalho Chehab  *
54786baecfSMauro Carvalho Chehab  * 0x09 write device init
55786baecfSMauro Carvalho Chehab  *  TODO
56786baecfSMauro Carvalho Chehab  */
57786baecfSMauro Carvalho Chehab #define USB_READ_EEPROM         1
58786baecfSMauro Carvalho Chehab 
59786baecfSMauro Carvalho Chehab #define USB_READ_COFDM          2
60786baecfSMauro Carvalho Chehab #define USB_WRITE_COFDM         5
61786baecfSMauro Carvalho Chehab 
62786baecfSMauro Carvalho Chehab #define USB_WRITE_TUNER         6
63786baecfSMauro Carvalho Chehab 
64786baecfSMauro Carvalho Chehab #define USB_READ_REMOTE         3
65786baecfSMauro Carvalho Chehab #define USB_WRITE_REMOTE        7
66786baecfSMauro Carvalho Chehab #define USB_WRITE_REMOTE_TYPE   8
67786baecfSMauro Carvalho Chehab 
68786baecfSMauro Carvalho Chehab #define USB_DEV_INIT            9
69786baecfSMauro Carvalho Chehab 
70786baecfSMauro Carvalho Chehab #endif
71