dibusb.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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. #ifndef DVB_USB_LOG_PREFIX
  14. #define DVB_USB_LOG_PREFIX "dibusb"
  15. #endif
  16. #include "dvb-usb.h"
  17. #include "dib3000.h"
  18. /*
  19. * protocol of all dibusb related devices
  20. */
  21. /*
  22. * bulk msg to/from endpoint 0x01
  23. *
  24. * general structure:
  25. * request_byte parameter_bytes
  26. */
  27. #define DIBUSB_REQ_START_READ 0x00
  28. #define DIBUSB_REQ_START_DEMOD 0x01
  29. /*
  30. * i2c read
  31. * bulk write: 0x02 ((7bit i2c_addr << 1) & 0x01) register_bytes length_word
  32. * bulk read: byte_buffer (length_word bytes)
  33. */
  34. #define DIBUSB_REQ_I2C_READ 0x02
  35. /*
  36. * i2c write
  37. * bulk write: 0x03 (7bit i2c_addr << 1) register_bytes value_bytes
  38. */
  39. #define DIBUSB_REQ_I2C_WRITE 0x03
  40. /*
  41. * polling the value of the remote control
  42. * bulk write: 0x04
  43. * bulk read: byte_buffer (5 bytes)
  44. */
  45. #define DIBUSB_REQ_POLL_REMOTE 0x04
  46. /* additional status values for Hauppauge Remote Control Protocol */
  47. #define DIBUSB_RC_HAUPPAUGE_KEY_PRESSED 0x01
  48. #define DIBUSB_RC_HAUPPAUGE_KEY_EMPTY 0x03
  49. /* streaming mode:
  50. * bulk write: 0x05 mode_byte
  51. *
  52. * mode_byte is mostly 0x00
  53. */
  54. #define DIBUSB_REQ_SET_STREAMING_MODE 0x05
  55. /* interrupt the internal read loop, when blocking */
  56. #define DIBUSB_REQ_INTR_READ 0x06
  57. /* io control
  58. * 0x07 cmd_byte param_bytes
  59. *
  60. * param_bytes can be up to 32 bytes
  61. *
  62. * cmd_byte function parameter name
  63. * 0x00 power mode
  64. * 0x00 sleep
  65. * 0x01 wakeup
  66. *
  67. * 0x01 enable streaming
  68. * 0x02 disable streaming
  69. *
  70. *
  71. */
  72. #define DIBUSB_REQ_SET_IOCTL 0x07
  73. /* IOCTL commands */
  74. /* change the power mode in firmware */
  75. #define DIBUSB_IOCTL_CMD_POWER_MODE 0x00
  76. #define DIBUSB_IOCTL_POWER_SLEEP 0x00
  77. #define DIBUSB_IOCTL_POWER_WAKEUP 0x01
  78. /* modify streaming of the FX2 */
  79. #define DIBUSB_IOCTL_CMD_ENABLE_STREAM 0x01
  80. #define DIBUSB_IOCTL_CMD_DISABLE_STREAM 0x02
  81. struct dibusb_state {
  82. struct dib_fe_xfer_ops ops;
  83. /* for RC5 remote control */
  84. int old_toggle;
  85. int last_repeat_count;
  86. };
  87. extern struct i2c_algorithm dibusb_i2c_algo;
  88. extern int dibusb_dib3000mc_frontend_attach(struct dvb_usb_device *);
  89. extern int dibusb_dib3000mc_tuner_attach (struct dvb_usb_device *);
  90. extern int dibusb_streaming_ctrl(struct dvb_usb_device *, int);
  91. extern int dibusb_pid_filter(struct dvb_usb_device *, int, u16, int);
  92. extern int dibusb_pid_filter_ctrl(struct dvb_usb_device *, int);
  93. extern int dibusb_power_ctrl(struct dvb_usb_device *, int);
  94. extern int dibusb2_0_streaming_ctrl(struct dvb_usb_device *, int);
  95. extern int dibusb2_0_power_ctrl(struct dvb_usb_device *, int);
  96. #define DEFAULT_RC_INTERVAL 150
  97. //#define DEFAULT_RC_INTERVAL 100000
  98. extern struct dvb_usb_rc_key dibusb_rc_keys[];
  99. extern int dibusb_rc_query(struct dvb_usb_device *, u32 *, int *);
  100. extern int dibusb_read_eeprom_byte(struct dvb_usb_device *, u8, u8 *);
  101. #endif