Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /* Header file for all dibusb-based-receivers.
  2  *
  3  * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@desy.de)
  4  *
  5  *      This program is free software; you can redistribute it and/or modify it
  6  *      under the terms of the GNU General Public License as published by the Free
  7  *      Software Foundation, version 2.
  8  *
  9  * see Documentation/dvb/README.dvb-usb for more information
 10  */
 11 #ifndef _DVB_USB_DIBUSB_H_
 12 #define _DVB_USB_DIBUSB_H_
 13 
 14 #ifndef DVB_USB_LOG_PREFIX
 15  #define DVB_USB_LOG_PREFIX "dibusb"
 16 #endif
 17 #include "dvb-usb.h"
 18 
 19 #include "dib3000.h"
 20 #include "dib3000mc.h"
 21 #include "mt2060.h"
 22 
 23 /*
 24  * protocol of all dibusb related devices
 25  */
 26 
 27 /*
 28  * bulk msg to/from endpoint 0x01
 29  *
 30  * general structure:
 31  * request_byte parameter_bytes
 32  */
 33 
 34 #define DIBUSB_REQ_START_READ                   0x00
 35 #define DIBUSB_REQ_START_DEMOD                  0x01
 36 
 37 /*
 38  * i2c read
 39  * bulk write: 0x02 ((7bit i2c_addr << 1) & 0x01) register_bytes length_word
 40  * bulk read:  byte_buffer (length_word bytes)
 41  */
 42 #define DIBUSB_REQ_I2C_READ                     0x02
 43 
 44 /*
 45  * i2c write
 46  * bulk write: 0x03 (7bit i2c_addr << 1) register_bytes value_bytes
 47  */
 48 #define DIBUSB_REQ_I2C_WRITE                    0x03
 49 
 50 /*
 51  * polling the value of the remote control
 52  * bulk write: 0x04
 53  * bulk read:  byte_buffer (5 bytes)
 54  */
 55 #define DIBUSB_REQ_POLL_REMOTE       0x04
 56 
 57 /* additional status values for Hauppauge Remote Control Protocol */
 58 #define DIBUSB_RC_HAUPPAUGE_KEY_PRESSED 0x01
 59 #define DIBUSB_RC_HAUPPAUGE_KEY_EMPTY   0x03
 60 
 61 /* streaming mode:
 62  * bulk write: 0x05 mode_byte
 63  *
 64  * mode_byte is mostly 0x00
 65  */
 66 #define DIBUSB_REQ_SET_STREAMING_MODE   0x05
 67 
 68 /* interrupt the internal read loop, when blocking */
 69 #define DIBUSB_REQ_INTR_READ                    0x06
 70 
 71 /* io control
 72  * 0x07 cmd_byte param_bytes
 73  *
 74  * param_bytes can be up to 32 bytes
 75  *
 76  * cmd_byte function    parameter name
 77  * 0x00     power mode
 78  *                      0x00      sleep
 79  *                      0x01      wakeup
 80  *
 81  * 0x01     enable streaming
 82  * 0x02     disable streaming
 83  *
 84  *
 85  */
 86 #define DIBUSB_REQ_SET_IOCTL                    0x07
 87 
 88 /* IOCTL commands */
 89 
 90 /* change the power mode in firmware */
 91 #define DIBUSB_IOCTL_CMD_POWER_MODE             0x00
 92 #define DIBUSB_IOCTL_POWER_SLEEP                        0x00
 93 #define DIBUSB_IOCTL_POWER_WAKEUP                       0x01
 94 
 95 /* modify streaming of the FX2 */
 96 #define DIBUSB_IOCTL_CMD_ENABLE_STREAM  0x01
 97 #define DIBUSB_IOCTL_CMD_DISABLE_STREAM 0x02
 98 
 99 struct dibusb_state {
100         struct dib_fe_xfer_ops ops;
101         int mt2060_present;
102         u8 tuner_addr;
103 };
104 
105 struct dibusb_device_state {
106         /* for RC5 remote control */
107         int old_toggle;
108         int last_repeat_count;
109 };
110 
111 extern struct i2c_algorithm dibusb_i2c_algo;
112 
113 extern int dibusb_dib3000mc_frontend_attach(struct dvb_usb_adapter *);
114 extern int dibusb_dib3000mc_tuner_attach (struct dvb_usb_adapter *);
115 
116 extern int dibusb_streaming_ctrl(struct dvb_usb_adapter *, int);
117 extern int dibusb_pid_filter(struct dvb_usb_adapter *, int, u16, int);
118 extern int dibusb_pid_filter_ctrl(struct dvb_usb_adapter *, int);
119 extern int dibusb2_0_streaming_ctrl(struct dvb_usb_adapter *, int);
120 
121 extern int dibusb_power_ctrl(struct dvb_usb_device *, int);
122 extern int dibusb2_0_power_ctrl(struct dvb_usb_device *, int);
123 
124 #define DEFAULT_RC_INTERVAL 150
125 //#define DEFAULT_RC_INTERVAL 100000
126 
127 extern struct dvb_usb_rc_key dibusb_rc_keys[];
128 extern int dibusb_rc_query(struct dvb_usb_device *, u32 *, int *);
129 extern int dibusb_read_eeprom_byte(struct dvb_usb_device *, u8, u8 *);
130 
131 #endif
132 
  This page was automatically generated by the LXR engine.