dibusb.h 3.2 KB

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