2005-09-09 13:02:41 -07:00
# ifndef _DVB_USB_VP7021_H_
# define _DVB_USB_VP7021_H_
# define DVB_USB_LOG_PREFIX "vp702x"
# include "dvb-usb.h"
extern int dvb_usb_vp702x_debug ;
# define deb_info(args...) dprintk(dvb_usb_vp702x_debug,0x01,args)
# define deb_xfer(args...) dprintk(dvb_usb_vp702x_debug,0x02,args)
# define deb_rc(args...) dprintk(dvb_usb_vp702x_debug,0x04,args)
# define deb_fe(args...) dprintk(dvb_usb_vp702x_debug,0x08,args)
/* commands are read and written with USB control messages */
/* consecutive read/write operation */
2006-01-09 18:21:33 -02:00
# define REQUEST_OUT 0xB2
# define REQUEST_IN 0xB3
2005-09-09 13:02:41 -07:00
/* the out-buffer of these consecutive operations contain sub-commands when b[0] = 0
* request : 0xB2 ; i : 0 ; v : 0 ; b [ 0 ] = 0 , b [ 1 ] = subcmd , additional buffer
* the returning buffer looks as follows
* request : 0xB3 ; i : 0 ; v : 0 ; b [ 0 ] = 0xB3 , additional buffer */
2006-01-09 18:21:33 -02:00
# define GET_TUNER_STATUS 0x05
2005-09-09 13:02:41 -07:00
/* additional in buffer:
* 0 1 2 3 4 5 6 7 8
* N / A N / A 0x05 signal - quality N / A N / A signal - strength lock = = 0 N / A */
2006-01-09 18:21:33 -02:00
# define GET_SYSTEM_STRING 0x06
2005-09-09 13:02:41 -07:00
/* additional in buffer:
* 0 1 2 3 4 5 6 7 8
* N / A ' U ' ' S ' ' B ' ' 7 ' ' 0 ' ' 2 ' ' X ' N / A */
2006-01-09 18:21:33 -02:00
# define SET_DISEQC_CMD 0x08
2005-09-09 13:02:41 -07:00
/* additional out buffer:
* 0 1 2 3 4
* len X1 X2 X3 X4
* additional in buffer :
* 0 1 2
2006-01-09 18:21:33 -02:00
* N / A 0 0 b [ 1 ] = = b [ 2 ] = = 0 - > success , failure otherwise */
2005-09-09 13:02:41 -07:00
2006-01-09 18:21:33 -02:00
# define SET_LNB_POWER 0x09
2005-09-09 13:02:41 -07:00
/* additional out buffer:
* 0 1 2
* 0x00 0xff 1 = on , 0 = off
* additional in buffer :
* 0 1 2
2006-01-09 18:21:33 -02:00
* N / A 0 0 b [ 1 ] = = b [ 2 ] = = 0 - > success failure otherwise */
2005-09-09 13:02:41 -07:00
2006-01-09 18:21:33 -02:00
# define GET_MAC_ADDRESS 0x0A
2005-09-09 13:02:41 -07:00
/* #define GET_MAC_ADDRESS 0x0B */
/* additional in buffer:
* 0 1 2 3 4 5 6 7 8
* N / A N / A 0x0A or 0x0B MAC0 MAC1 MAC2 MAC3 MAC4 MAC5 */
2006-01-09 18:21:33 -02:00
# define SET_PID_FILTER 0x11
2005-09-09 13:02:41 -07:00
/* additional in buffer:
* 0 1 . . . 14 15 16
* PID0_MSB PID0_LSB . . . PID7_MSB PID7_LSB PID_active ( bits ) */
/* request: 0xB2; i: 0; v: 0;
* b [ 0 ] ! = 0 - > tune and lock a channel
* 0 1 2 3 4 5 6 7
* freq0 freq1 divstep srate0 srate1 srate2 flag chksum
*/
/* one direction requests */
2006-01-09 18:21:33 -02:00
# define READ_REMOTE_REQ 0xB4
2005-09-09 13:02:41 -07:00
/* IN i: 0; v: 0; b[0] == request, b[1] == key */
2006-01-09 18:21:33 -02:00
# define READ_PID_NUMBER_REQ 0xB5
2005-09-09 13:02:41 -07:00
/* IN i: 0; v: 0; b[0] == request, b[1] == 0, b[2] = pid number */
2006-01-09 18:21:33 -02:00
# define WRITE_EEPROM_REQ 0xB6
2005-09-09 13:02:41 -07:00
/* OUT i: offset; v: value to write; no extra buffer */
2006-01-09 18:21:33 -02:00
# define READ_EEPROM_REQ 0xB7
2005-09-09 13:02:41 -07:00
/* IN i: bufferlen; v: offset; buffer with bufferlen bytes */
2006-01-09 18:21:33 -02:00
# define READ_STATUS 0xB8
2005-09-09 13:02:41 -07:00
/* IN i: 0; v: 0; bufferlen 10 */
2006-01-09 18:21:33 -02:00
# define READ_TUNER_REG_REQ 0xB9
2005-09-09 13:02:41 -07:00
/* IN i: 0; v: register; b[0] = value */
2006-01-09 18:21:33 -02:00
# define READ_FX2_REG_REQ 0xBA
2005-09-09 13:02:41 -07:00
/* IN i: offset; v: 0; b[0] = value */
2006-01-09 18:21:33 -02:00
# define WRITE_FX2_REG_REQ 0xBB
2005-09-09 13:02:41 -07:00
/* OUT i: offset; v: value to write; 1 byte extra buffer */
2006-01-09 18:21:33 -02:00
# define SET_TUNER_POWER_REQ 0xBC
2005-09-09 13:02:41 -07:00
/* IN i: 0 = power off, 1 = power on */
2006-01-09 18:21:33 -02:00
# define WRITE_TUNER_REG_REQ 0xBD
2005-09-09 13:02:41 -07:00
/* IN i: register, v: value to write, no extra buffer */
2006-01-09 18:21:33 -02:00
# define RESET_TUNER 0xBE
2005-09-09 13:02:41 -07:00
/* IN i: 0, v: 0, no extra buffer */
extern struct dvb_frontend * vp702x_fe_attach ( struct dvb_usb_device * d ) ;
extern int vp702x_usb_inout_op ( struct dvb_usb_device * d , u8 * o , int olen , u8 * i , int ilen , int msec ) ;
extern int vp702x_usb_in_op ( struct dvb_usb_device * d , u8 req , u16 value , u16 index , u8 * b , int blen ) ;
2006-09-19 12:51:43 -03:00
extern int vp702x_usb_out_op ( struct dvb_usb_device * d , u8 req , u16 value , u16 index , u8 * b , int blen ) ;
extern int vp702x_power_ctrl ( struct dvb_usb_device * d , int onoff ) ;
2005-09-09 13:02:41 -07:00
# endif