i2c-rtl9300.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #ifndef I2C_RTL9300_H
  2. #define I2C_RTL9300_H
  3. #include <linux/i2c.h>
  4. #define RTL9300_I2C_CTRL1 0x00
  5. #define RTL9300_I2C_CTRL1_MEM_ADDR 8
  6. #define RTL9300_I2C_CTRL1_SDA_OUT_SEL 4
  7. #define RTL9300_I2C_CTRL1_GPIO8_SCL_SEL 3
  8. #define RTL9300_I2C_CTRL1_RWOP 2
  9. #define RTL9300_I2C_CTRL1_I2C_FAIL 1
  10. #define RTL9300_I2C_CTRL1_I2C_TRIG 0
  11. #define RTL9300_I2C_CTRL2 0x04
  12. #define RTL9300_I2C_CTRL2_DRIVE_ACK_DELAY 20
  13. #define RTL9300_I2C_CTRL2_CHECK_ACK_DELAY 16
  14. #define RTL9300_I2C_CTRL2_READ_MODE 15
  15. #define RTL9300_I2C_CTRL2_DEV_ADDR 8
  16. #define RTL9300_I2C_CTRL2_DATA_WIDTH 4
  17. #define RTL9300_I2C_CTRL2_MADDR_WIDTH 2
  18. #define RTL9300_I2C_CTRL2_SCL_FREQ 0
  19. #define RTL9300_I2C_DATA_WORD0 0x08
  20. #define RTL9300_I2C_MST_GLB_CTRL 0x18
  21. #define RTL9310_I2C_MST_IF_CTRL 0x00
  22. #define RTL9310_I2C_MST_IF_SEL 0x04
  23. #define RTL9310_I2C_MST_IF_SEL_GPIO_SCL_SEL 12
  24. #define RTL9310_I2C_CTRL 0x08
  25. #define RTL9310_I2C_CTRL_SCL_FREQ 30
  26. #define RTL9310_I2C_CTRL_CHECK_ACK_DELAY 26
  27. #define RTL9310_I2C_CTRL_DRIVE_ACK_DELAY 22
  28. #define RTL9310_I2C_CTRL_SDA_OUT_SEL 18
  29. #define RTL9310_I2C_CTRL_DEV_ADDR 11
  30. #define RTL9310_I2C_CTRL_MADDR_WIDTH 9
  31. #define RTL9310_I2C_CTRL_DATA_WIDTH 5
  32. #define RTL9310_I2C_CTRL_READ_MODE 4
  33. #define RTL9310_I2C_CTRL_RWOP 2
  34. #define RTL9310_I2C_CTRL_I2C_FAIL 1
  35. #define RTL9310_I2C_CTRL_I2C_TRIG 0
  36. #define RTL9310_I2C_MEMADDR 0x0c
  37. #define RTL9310_I2C_DATA 0x10
  38. #define RTL9300_I2C_STD_FREQ 0
  39. #define RTL9300_I2C_FAST_FREQ 1
  40. struct rtl9300_i2c {
  41. void __iomem *base;
  42. u32 mst2_offset;
  43. struct device *dev;
  44. struct i2c_adapter adap;
  45. u8 bus_freq;
  46. u8 sda_num; // SDA channel number
  47. u8 scl_num; // SCL channel, mapping to master 1 or 2
  48. };
  49. #endif