0001
0002
0003
0004
0005
0006
0007 #ifndef _AS102_DRV_H
0008 #define _AS102_DRV_H
0009 #include <linux/usb.h>
0010 #include <media/dvb_demux.h>
0011 #include <media/dvb_frontend.h>
0012 #include <media/dmxdev.h>
0013 #include "as10x_handle.h"
0014 #include "as10x_cmd.h"
0015 #include "as102_usb_drv.h"
0016
0017 #define DRIVER_FULL_NAME "Abilis Systems as10x usb driver"
0018 #define DRIVER_NAME "as10x_usb"
0019
0020 #define debug as102_debug
0021 extern struct usb_driver as102_usb_driver;
0022 extern int elna_enable;
0023
0024 #define AS102_DEVICE_MAJOR 192
0025
0026 #define AS102_USB_BUF_SIZE 512
0027 #define MAX_STREAM_URB 32
0028
0029 struct as10x_bus_adapter_t {
0030 struct usb_device *usb_dev;
0031
0032 struct mutex lock;
0033
0034 union as10x_bus_token_t {
0035
0036 struct as10x_usb_token_cmd_t usb;
0037 } token;
0038
0039
0040 uint16_t cmd_xid;
0041
0042
0043 struct as10x_cmd_t *cmd, *rsp;
0044
0045
0046 const struct as102_priv_ops_t *ops;
0047 };
0048
0049 struct as102_dev_t {
0050 const char *name;
0051 struct as10x_bus_adapter_t bus_adap;
0052 struct list_head device_entry;
0053 struct kref kref;
0054 uint8_t elna_cfg;
0055
0056 struct dvb_adapter dvb_adap;
0057 struct dvb_frontend *dvb_fe;
0058 struct dvb_demux dvb_dmx;
0059 struct dmxdev dvb_dmxdev;
0060
0061
0062 struct timer_list timer_handle;
0063
0064 struct mutex sem;
0065 dma_addr_t dma_addr;
0066 void *stream;
0067 int streaming;
0068 struct urb *stream_urb[MAX_STREAM_URB];
0069 };
0070
0071 int as102_dvb_register(struct as102_dev_t *dev);
0072 void as102_dvb_unregister(struct as102_dev_t *dev);
0073
0074 #endif