diff options
author | Patrick Boettcher <devnull@localhost> | 2004-09-05 11:42:13 +0000 |
---|---|---|
committer | Patrick Boettcher <devnull@localhost> | 2004-09-05 11:42:13 +0000 |
commit | 0ea5aa58975517299dbb1688dbf879603291716a (patch) | |
tree | a4ebff0c51a159a17bb4c270a23c0d17bb7b4f62 /linux/drivers/media/dvb/dibusb/dvb-dibusb.h | |
parent | 7d6379ce8a3f77ec43a279591cbaa37eb052c8d6 (diff) | |
download | mediapointer-dvb-s2-0ea5aa58975517299dbb1688dbf879603291716a.tar.gz mediapointer-dvb-s2-0ea5aa58975517299dbb1688dbf879603291716a.tar.bz2 |
dvb-dibusb is substituting the vp7041 USB driver. it is basicly a i2c-to-usb bridge and does the demux stuff (i.e. passing the mpeg2-data to the sw-demux).
Diffstat (limited to 'linux/drivers/media/dvb/dibusb/dvb-dibusb.h')
-rw-r--r-- | linux/drivers/media/dvb/dibusb/dvb-dibusb.h | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/linux/drivers/media/dvb/dibusb/dvb-dibusb.h b/linux/drivers/media/dvb/dibusb/dvb-dibusb.h new file mode 100644 index 000000000..137d39847 --- /dev/null +++ b/linux/drivers/media/dvb/dibusb/dvb-dibusb.h @@ -0,0 +1,175 @@ +/* + * dvb-dibusb.h + * + * Copyright (C) 2004 Patrick Boettcher (patrick.boettcher@desy.de) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2. + * + * + * for more information see dvb-dibusb.c . + */ + +#ifndef __DVB_DIBUSB_H__ +#define __DVB_DIBUSB_H__ + +/* Vendor IDs */ +#define USB_TWINHAN_VENDOR_ID 0x1822 +#define USB_KWORLD_VENDOR_ID 0xeb1a +#define USB_DIBCOM_VENDOR_ID 0x10b8 +/* #define USB_HAMA_VENDOR_ID 0x0000 */ + +/* Product IDs before loading the firmware */ +#define USB_VP7041_PRODUCT_PREFW_ID 0x3201 +#define USB_VSTREAM_PRODUCT_PREFW_ID 0x17de +#define USB_DIBCOM_PRODUCT_PREFW_ID 0x0bb8 +/* #define USB_HAMA_PRODUCT_PREFW_ID 0x0000 */ + + +/* product ID afterwards */ +#define USB_VP7041_PRODUCT_ID 0x3202 +#define USB_VSTREAM_PRODUCT_ID 0x17df +#define USB_DIBCOM_PRODUCT_ID 0x0bb9 +/* #define USB_HAMA_PRODUCT_ID 0x0000 */ + +/* CS register start/stop the usb controller cpu */ +#define DIBUSB_CPU_CSREG 0x7F92 + +// 0x10 is the I2C address of the first demodulator on the board +#define DIBUSB_DEMOD_I2C_ADDR_DEFAULT 0x10 +#define DIBUSB_I2C_TIMEOUT HZ*5 + +#define DIBUSB_MAX_PIDS 16 + +#define DIB3000MB_REG_FIRST_PID ( 153) + +struct usb_dibusb; + +struct dibusb_pid { + u16 reg; + u16 pid; + int active; + struct usb_dibusb *dib; +}; + +struct usb_dibusb { + /* usb */ + struct usb_device * udev; + + struct dibusb_device * dibdev; + + int streaming; + int feed_count; + struct urb *buf_urb; + u8 *buffer; + dma_addr_t dma_handle; + + spinlock_t pid_list_lock; + struct dibusb_pid pid_list[DIBUSB_MAX_PIDS]; + + /* I2C */ + struct i2c_adapter i2c_adap; + struct i2c_client i2c_client; + + /* locking */ + struct semaphore usb_sem; + struct semaphore i2c_sem; + + /* dvb */ + struct dvb_adapter *adapter; + struct dmxdev dmxdev; + struct dvb_demux demux; + struct dvb_net dvb_net; +}; + + +struct dibusb_device { + u16 cold_product_id; + u16 warm_product_id; + u8 demod_addr; + const char *name; +}; + +/* static array of valid firmware names, the best one first */ +static const char * valid_firmware_filenames[] = { + "dvb-dibusb-5.0.0.11.fw", +}; + +#define DIBUSB_SUPPORTED_DEVICES 3 + +/* USB Driver stuff */ +static struct dibusb_device dibusb_devices[DIBUSB_SUPPORTED_DEVICES] = { + { .cold_product_id = USB_VP7041_PRODUCT_PREFW_ID, + .warm_product_id = USB_VP7041_PRODUCT_ID, + .name = "Twinhan VisionDTV USB-Ter", + .demod_addr = DIBUSB_DEMOD_I2C_ADDR_DEFAULT, + }, + { .cold_product_id = USB_VSTREAM_PRODUCT_PREFW_ID, + .warm_product_id = USB_VSTREAM_PRODUCT_ID, + .name = "KWorld V-Stream XPERT DTV - DVB-T USB", + .demod_addr = DIBUSB_DEMOD_I2C_ADDR_DEFAULT, + }, + { .cold_product_id = USB_DIBCOM_PRODUCT_PREFW_ID, + .warm_product_id = USB_DIBCOM_PRODUCT_ID, + .name = "DiBcom USB reference design", + .demod_addr = DIBUSB_DEMOD_I2C_ADDR_DEFAULT, + }, +/* { + .cold_product_id = USB_HAMA_PRODUCT_PREFW_ID, + .warm_product_id = USB HAMA_PRODUCT_ID, + .name = "HAMA USB DVB-T device", + .demod_addr = DIBUSB_DEMOD_I2C_ADDR_DEFAULT, + }, */ +}; + +#define COMMAND_PIPE usb_sndbulkpipe(dib->udev, 0x01) +#define RESULT_PIPE usb_rcvbulkpipe(dib->udev, 0x81) +#define DATA_PIPE usb_rcvbulkpipe(dib->udev, 0x82) +/* + * last endpoint 0x83 only used for chaining the buffers + * of the endpoints in the cypress + */ +#define CHAIN_PIPE_DO_NOT_USE usb_rcvbulkpipe(dib->udev, 0x83) + +/* types of first byte of each buffer */ + +#define DIBUSB_REQ_START_READ 0x00 +#define DIBUSB_REQ_START_DEMOD 0x01 +#define DIBUSB_REQ_I2C_READ 0x02 +#define DIBUSB_REQ_I2C_WRITE 0x03 + +/* prefix for reading the current RC key */ +#define DIBUSB_REQ_POLL_REMOTE 0x04 + +/* 0x05 0xXX */ +#define DIBUSB_REQ_SET_STREAMING_MODE 0x05 + +/* interrupt the internal read loop, when blocking */ +#define DIBUSB_REQ_INTR_READ 0x06 + +/* IO control + * 0x07 <cmd 1 byte> <param 32 bytes> + */ +#define DIBUSB_REQ_SET_IOCTL 0x07 + +/* IOCTL commands */ + +/* change the power mode in firmware */ +#define DIBUSB_IOCTL_CMD_POWER_MODE 0x00 +#define DIBUSB_IOCTL_POWER_SLEEP 0x00 +#define DIBUSB_IOCTL_POWER_WAKEUP 0x01 + + +/* + * values from the demodulator which are needed in + * the usb driver as well + */ + +#define DIB3000MB_REG_FIFO ( 145) +#define DIB3000MB_FIFO_INHIBIT ( 1) +#define DIB3000MB_FIFO_ACTIVATE ( 0) + +#define DIB3000MB_ACTIVATE_FILTERING (0x2000) + +#endif |