summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb/dibusb/dvb-dibusb.h
diff options
context:
space:
mode:
authorPatrick Boettcher <devnull@localhost>2004-09-05 11:42:13 +0000
committerPatrick Boettcher <devnull@localhost>2004-09-05 11:42:13 +0000
commit0ea5aa58975517299dbb1688dbf879603291716a (patch)
treea4ebff0c51a159a17bb4c270a23c0d17bb7b4f62 /linux/drivers/media/dvb/dibusb/dvb-dibusb.h
parent7d6379ce8a3f77ec43a279591cbaa37eb052c8d6 (diff)
downloadmediapointer-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.h175
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