1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #ifndef I2C_RTL9300_H
- #define I2C_RTL9300_H
- #include <linux/i2c.h>
- #define RTL9300_I2C_CTRL1 0x00
- #define RTL9300_I2C_CTRL1_MEM_ADDR 8
- #define RTL9300_I2C_CTRL1_SDA_OUT_SEL 4
- #define RTL9300_I2C_CTRL1_GPIO8_SCL_SEL 3
- #define RTL9300_I2C_CTRL1_RWOP 2
- #define RTL9300_I2C_CTRL1_I2C_FAIL 1
- #define RTL9300_I2C_CTRL1_I2C_TRIG 0
- #define RTL9300_I2C_CTRL2 0x04
- #define RTL9300_I2C_CTRL2_DRIVE_ACK_DELAY 20
- #define RTL9300_I2C_CTRL2_CHECK_ACK_DELAY 16
- #define RTL9300_I2C_CTRL2_READ_MODE 15
- #define RTL9300_I2C_CTRL2_DEV_ADDR 8
- #define RTL9300_I2C_CTRL2_DATA_WIDTH 4
- #define RTL9300_I2C_CTRL2_MADDR_WIDTH 2
- #define RTL9300_I2C_CTRL2_SCL_FREQ 0
- #define RTL9300_I2C_DATA_WORD0 0x08
- #define RTL9300_I2C_MST_GLB_CTRL 0x18
- #define RTL9310_I2C_MST_IF_CTRL 0x00
- #define RTL9310_I2C_MST_IF_SEL 0x04
- #define RTL9310_I2C_MST_IF_SEL_GPIO_SCL_SEL 12
- #define RTL9310_I2C_CTRL 0x08
- #define RTL9310_I2C_CTRL_SCL_FREQ 30
- #define RTL9310_I2C_CTRL_CHECK_ACK_DELAY 26
- #define RTL9310_I2C_CTRL_DRIVE_ACK_DELAY 22
- #define RTL9310_I2C_CTRL_SDA_OUT_SEL 18
- #define RTL9310_I2C_CTRL_DEV_ADDR 11
- #define RTL9310_I2C_CTRL_MADDR_WIDTH 9
- #define RTL9310_I2C_CTRL_DATA_WIDTH 5
- #define RTL9310_I2C_CTRL_READ_MODE 4
- #define RTL9310_I2C_CTRL_RWOP 2
- #define RTL9310_I2C_CTRL_I2C_FAIL 1
- #define RTL9310_I2C_CTRL_I2C_TRIG 0
- #define RTL9310_I2C_MEMADDR 0x0c
- #define RTL9310_I2C_DATA 0x10
- #define RTL9300_I2C_STD_FREQ 0
- #define RTL9300_I2C_FAST_FREQ 1
- struct rtl9300_i2c {
- void __iomem *base;
- u32 mst2_offset;
- struct device *dev;
- struct i2c_adapter adap;
- u8 bus_freq;
- u8 sda_num; // SDA channel number
- u8 scl_num; // SCL channel, mapping to master 1 or 2
- };
- #endif
|