Path: blob/master/drivers/media/dvb/b2c2/flexcop-usb.h
15111 views
/*1* Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III2* flexcop-usb.h - header file for the USB part3* see flexcop.c for copyright information4*/5#ifndef __FLEXCOP_USB_H_INCLUDED__6#define __FLEXCOP_USB_H_INCLUDED__78#include <linux/usb.h>910/* transfer parameters */11#define B2C2_USB_FRAMES_PER_ISO 412#define B2C2_USB_NUM_ISO_URB 41314#define B2C2_USB_CTRL_PIPE_IN usb_rcvctrlpipe(fc_usb->udev, 0)15#define B2C2_USB_CTRL_PIPE_OUT usb_sndctrlpipe(fc_usb->udev, 0)16#define B2C2_USB_DATA_PIPE usb_rcvisocpipe(fc_usb->udev, 0x81)1718struct flexcop_usb {19struct usb_device *udev;20struct usb_interface *uintf;2122u8 *iso_buffer;23int buffer_size;24dma_addr_t dma_addr;2526struct urb *iso_urb[B2C2_USB_NUM_ISO_URB];27struct flexcop_device *fc_dev;2829u8 tmp_buffer[1023+190];30int tmp_buffer_length;31};3233#if 034/* request types TODO What is its use?*/35typedef enum {3637} flexcop_usb_request_type_t;38#endif3940/* request */41typedef enum {42B2C2_USB_WRITE_V8_MEM = 0x04,43B2C2_USB_READ_V8_MEM = 0x05,44B2C2_USB_READ_REG = 0x08,45B2C2_USB_WRITE_REG = 0x0A,46B2C2_USB_WRITEREGHI = 0x0B,47B2C2_USB_FLASH_BLOCK = 0x10,48B2C2_USB_I2C_REQUEST = 0x11,49B2C2_USB_UTILITY = 0x12,50} flexcop_usb_request_t;5152/* function definition for I2C_REQUEST */53typedef enum {54USB_FUNC_I2C_WRITE = 0x01,55USB_FUNC_I2C_MULTIWRITE = 0x02,56USB_FUNC_I2C_READ = 0x03,57USB_FUNC_I2C_REPEATWRITE = 0x04,58USB_FUNC_GET_DESCRIPTOR = 0x05,59USB_FUNC_I2C_REPEATREAD = 0x06,60/* DKT 020208 - add this to support special case of DiSEqC */61USB_FUNC_I2C_CHECKWRITE = 0x07,62USB_FUNC_I2C_CHECKRESULT = 0x08,63} flexcop_usb_i2c_function_t;6465/* function definition for UTILITY request 0x1266* DKT 020304 - new utility function */67typedef enum {68UTILITY_SET_FILTER = 0x01,69UTILITY_DATA_ENABLE = 0x02,70UTILITY_FLEX_MULTIWRITE = 0x03,71UTILITY_SET_BUFFER_SIZE = 0x04,72UTILITY_FLEX_OPERATOR = 0x05,73UTILITY_FLEX_RESET300_START = 0x06,74UTILITY_FLEX_RESET300_STOP = 0x07,75UTILITY_FLEX_RESET300 = 0x08,76UTILITY_SET_ISO_SIZE = 0x09,77UTILITY_DATA_RESET = 0x0A,78UTILITY_GET_DATA_STATUS = 0x10,79UTILITY_GET_V8_REG = 0x11,80/* DKT 020326 - add function for v1.14 */81UTILITY_SRAM_WRITE = 0x12,82UTILITY_SRAM_READ = 0x13,83UTILITY_SRAM_TESTFILL = 0x14,84UTILITY_SRAM_TESTSET = 0x15,85UTILITY_SRAM_TESTVERIFY = 0x16,86} flexcop_usb_utility_function_t;8788#define B2C2_WAIT_FOR_OPERATION_RW (1*HZ)89#define B2C2_WAIT_FOR_OPERATION_RDW (3*HZ)90#define B2C2_WAIT_FOR_OPERATION_WDW (1*HZ)9192#define B2C2_WAIT_FOR_OPERATION_V8READ (3*HZ)93#define B2C2_WAIT_FOR_OPERATION_V8WRITE (3*HZ)94#define B2C2_WAIT_FOR_OPERATION_V8FLASH (3*HZ)9596typedef enum {97V8_MEMORY_PAGE_DVB_CI = 0x20,98V8_MEMORY_PAGE_DVB_DS = 0x40,99V8_MEMORY_PAGE_MULTI2 = 0x60,100V8_MEMORY_PAGE_FLASH = 0x80101} flexcop_usb_mem_page_t;102103#define V8_MEMORY_EXTENDED (1 << 15)104#define USB_MEM_READ_MAX 32105#define USB_MEM_WRITE_MAX 1106#define USB_FLASH_MAX 8107#define V8_MEMORY_PAGE_SIZE 0x8000 /* 32K */108#define V8_MEMORY_PAGE_MASK 0x7FFF109110#endif111112113