162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef _DVB_USB_DIGITV_H_
362306a36Sopenharmony_ci#define _DVB_USB_DIGITV_H_
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#define DVB_USB_LOG_PREFIX "digitv"
662306a36Sopenharmony_ci#include "dvb-usb.h"
762306a36Sopenharmony_ci
862306a36Sopenharmony_cistruct digitv_state {
962306a36Sopenharmony_ci	int is_nxt6000;
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci	unsigned char sndbuf[7];
1262306a36Sopenharmony_ci	unsigned char rcvbuf[7];
1362306a36Sopenharmony_ci};
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/* protocol (from usblogging and the SDK:
1662306a36Sopenharmony_ci *
1762306a36Sopenharmony_ci * Always 7 bytes bulk message(s) for controlling
1862306a36Sopenharmony_ci *
1962306a36Sopenharmony_ci * First byte describes the command. Reads are 2 consecutive transfer (as always).
2062306a36Sopenharmony_ci *
2162306a36Sopenharmony_ci * General structure:
2262306a36Sopenharmony_ci *
2362306a36Sopenharmony_ci * write or first message of a read:
2462306a36Sopenharmony_ci * <cmdbyte> VV <len> B0 B1 B2 B3
2562306a36Sopenharmony_ci *
2662306a36Sopenharmony_ci * second message of a read
2762306a36Sopenharmony_ci * <cmdbyte> VV <len> R0 R1 R2 R3
2862306a36Sopenharmony_ci *
2962306a36Sopenharmony_ci * whereas 0 < len <= 4
3062306a36Sopenharmony_ci *
3162306a36Sopenharmony_ci * I2C address is stored somewhere inside the device.
3262306a36Sopenharmony_ci *
3362306a36Sopenharmony_ci * 0x01 read from EEPROM
3462306a36Sopenharmony_ci *  VV = offset; B* = 0; R* = value(s)
3562306a36Sopenharmony_ci *
3662306a36Sopenharmony_ci * 0x02 read register of the COFDM
3762306a36Sopenharmony_ci *  VV = register; B* = 0; R* = value(s)
3862306a36Sopenharmony_ci *
3962306a36Sopenharmony_ci * 0x05 write register of the COFDM
4062306a36Sopenharmony_ci *  VV = register; B* = value(s);
4162306a36Sopenharmony_ci *
4262306a36Sopenharmony_ci * 0x06 write to the tuner (only for NXT6000)
4362306a36Sopenharmony_ci *  VV = 0; B* = PLL data; len = 4;
4462306a36Sopenharmony_ci *
4562306a36Sopenharmony_ci * 0x03 read remote control
4662306a36Sopenharmony_ci *  VV = 0; B* = 0; len = 4; R* = key
4762306a36Sopenharmony_ci *
4862306a36Sopenharmony_ci * 0x07 write to the remote (don't know why one should this, resetting ?)
4962306a36Sopenharmony_ci *  VV = 0; B* = key; len = 4;
5062306a36Sopenharmony_ci *
5162306a36Sopenharmony_ci * 0x08 write remote type
5262306a36Sopenharmony_ci *  VV = 0; B[0] = 0x01, len = 4
5362306a36Sopenharmony_ci *
5462306a36Sopenharmony_ci * 0x09 write device init
5562306a36Sopenharmony_ci *  TODO
5662306a36Sopenharmony_ci */
5762306a36Sopenharmony_ci#define USB_READ_EEPROM         1
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci#define USB_READ_COFDM          2
6062306a36Sopenharmony_ci#define USB_WRITE_COFDM         5
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci#define USB_WRITE_TUNER         6
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci#define USB_READ_REMOTE         3
6562306a36Sopenharmony_ci#define USB_WRITE_REMOTE        7
6662306a36Sopenharmony_ci#define USB_WRITE_REMOTE_TYPE   8
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci#define USB_DEV_INIT            9
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci#endif
71