12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /* SPDX-License-Identifier: GPL-2.0 */
- #ifndef _DVB_USB_M920X_H_
- #define _DVB_USB_M920X_H_
- #define DVB_USB_LOG_PREFIX "m920x"
- #include "dvb-usb.h"
- #define deb(args...) dprintk(dvb_usb_m920x_debug,0x01,args)
- #define M9206_CORE 0x22
- #define M9206_RC_STATE 0xff51
- #define M9206_RC_KEY 0xff52
- #define M9206_RC_INIT1 0xff54
- #define M9206_RC_INIT2 0xff55
- #define M9206_FW_GO 0xff69
- #define M9206_I2C 0x23
- #define M9206_FILTER 0x25
- #define M9206_FW 0x30
- #define M9206_MAX_FILTERS 8
- #define M9206_MAX_ADAPTERS 4
- /*
- sequences found in logs:
- [index value]
- 0x80 write addr
- (0x00 out byte)*
- 0x40 out byte
- 0x80 write addr
- (0x00 out byte)*
- 0x80 read addr
- (0x21 in byte)*
- 0x60 in byte
- this sequence works:
- 0x80 read addr
- (0x21 in byte)*
- 0x60 in byte
- Guess at API of the I2C function:
- I2C operation is done one byte at a time with USB control messages. The
- index the messages is sent to is made up of a set of flags that control
- the I2C bus state:
- 0x80: Send START condition. After a START condition, one would normally
- always send the 7-bit slave I2C address as the 7 MSB, followed by
- the read/write bit as the LSB.
- 0x40: Send STOP condition. This should be set on the last byte of an
- I2C transaction.
- 0x20: Read a byte from the slave. As opposed to writing a byte to the
- slave. The slave will normally not produce any data unless you
- set the R/W bit to 1 when sending the slave's address after the
- START condition.
- 0x01: Respond with ACK, as opposed to a NACK. For a multi-byte read,
- the master should send an ACK, that is pull SDA low during the 9th
- clock cycle, after every byte but the last. This flags only makes
- sense when bit 0x20 is set, indicating a read.
- What any other bits might mean, or how to get the slave's ACK/NACK
- response to a write, is unknown.
- */
- struct m920x_state {
- u16 filters[M9206_MAX_ADAPTERS][M9206_MAX_FILTERS];
- int filtering_enabled[M9206_MAX_ADAPTERS];
- int rep_count;
- };
- /* Initialisation data for the m920x
- */
- struct m920x_inits {
- u16 address;
- u8 data;
- };
- #endif
|