i2c.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * (C) Copyright 2012 SAMSUNG Electronics
  4. * Jaehoon Chung <jh80.chung@samsung.com>
  5. */
  6. #ifndef __ASM_ARCH_I2C_H
  7. #define __ASM_ARCH_I2C_H
  8. struct i2c_regs {
  9. u32 con;
  10. u32 clkdiv;
  11. u32 mrxaddr;
  12. u32 mrxraddr;
  13. u32 mtxcnt;
  14. u32 mrxcnt;
  15. u32 ien;
  16. u32 ipd;
  17. u32 fcnt;
  18. u32 reserved0[0x37];
  19. u32 txdata[8];
  20. u32 reserved1[0x38];
  21. u32 rxdata[8];
  22. };
  23. /* Control register */
  24. #define I2C_CON_EN (1 << 0)
  25. #define I2C_CON_MOD(mod) ((mod) << 1)
  26. #define I2C_MODE_TX 0x00
  27. #define I2C_MODE_TRX 0x01
  28. #define I2C_MODE_RX 0x02
  29. #define I2C_MODE_RRX 0x03
  30. #define I2C_CON_MASK (3 << 1)
  31. #define I2C_CON_START (1 << 3)
  32. #define I2C_CON_STOP (1 << 4)
  33. #define I2C_CON_LASTACK (1 << 5)
  34. #define I2C_CON_ACTACK (1 << 6)
  35. /* Clock dividor register */
  36. #define I2C_CLKDIV_VAL(divl, divh) \
  37. (((divl) & 0xffff) | (((divh) << 16) & 0xffff0000))
  38. /* the slave address accessed for master rx mode */
  39. #define I2C_MRXADDR_SET(vld, addr) (((vld) << 24) | (addr))
  40. /* the slave register address accessed for master rx mode */
  41. #define I2C_MRXRADDR_SET(vld, raddr) (((vld) << 24) | (raddr))
  42. /* interrupt enable register */
  43. #define I2C_BTFIEN (1 << 0)
  44. #define I2C_BRFIEN (1 << 1)
  45. #define I2C_MBTFIEN (1 << 2)
  46. #define I2C_MBRFIEN (1 << 3)
  47. #define I2C_STARTIEN (1 << 4)
  48. #define I2C_STOPIEN (1 << 5)
  49. #define I2C_NAKRCVIEN (1 << 6)
  50. /* interrupt pending register */
  51. #define I2C_BTFIPD (1 << 0)
  52. #define I2C_BRFIPD (1 << 1)
  53. #define I2C_MBTFIPD (1 << 2)
  54. #define I2C_MBRFIPD (1 << 3)
  55. #define I2C_STARTIPD (1 << 4)
  56. #define I2C_STOPIPD (1 << 5)
  57. #define I2C_NAKRCVIPD (1 << 6)
  58. #define I2C_IPD_ALL_CLEAN 0x7f
  59. #endif