ppc4xx-i2c.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /*
  2. * (C) Copyright 2007-2009
  3. * Stefan Roese, DENX Software Engineering, sr@denx.de.
  4. *
  5. * SPDX-License-Identifier: GPL-2.0+
  6. */
  7. #ifndef _4xx_i2c_h_
  8. #define _4xx_i2c_h_
  9. #define IIC_OK 0
  10. #define IIC_NOK 1
  11. #define IIC_NOK_LA 2 /* Lost arbitration */
  12. #define IIC_NOK_ICT 3 /* Incomplete transfer */
  13. #define IIC_NOK_XFRA 4 /* Transfer aborted */
  14. #define IIC_NOK_DATA 5 /* No data in buffer */
  15. #define IIC_NOK_TOUT 6 /* Transfer timeout */
  16. #define IIC_TIMEOUT 1 /* 1 second */
  17. struct ppc4xx_i2c {
  18. u8 mdbuf;
  19. u8 res1;
  20. u8 sdbuf;
  21. u8 res2;
  22. u8 lmadr;
  23. u8 hmadr;
  24. u8 cntl;
  25. u8 mdcntl;
  26. u8 sts;
  27. u8 extsts;
  28. u8 lsadr;
  29. u8 hsadr;
  30. u8 clkdiv;
  31. u8 intrmsk;
  32. u8 xfrcnt;
  33. u8 xtcntlss;
  34. u8 directcntl;
  35. u8 intr;
  36. };
  37. /* MDCNTL Register Bit definition */
  38. #define IIC_MDCNTL_HSCL 0x01
  39. #define IIC_MDCNTL_EUBS 0x02
  40. #define IIC_MDCNTL_EINT 0x04
  41. #define IIC_MDCNTL_ESM 0x08
  42. #define IIC_MDCNTL_FSM 0x10
  43. #define IIC_MDCNTL_EGC 0x20
  44. #define IIC_MDCNTL_FMDB 0x40
  45. #define IIC_MDCNTL_FSDB 0x80
  46. /* CNTL Register Bit definition */
  47. #define IIC_CNTL_PT 0x01
  48. #define IIC_CNTL_READ 0x02
  49. #define IIC_CNTL_CHT 0x04
  50. #define IIC_CNTL_RPST 0x08
  51. /* bit 2/3 for Transfer count*/
  52. #define IIC_CNTL_AMD 0x40
  53. #define IIC_CNTL_HMT 0x80
  54. /* STS Register Bit definition */
  55. #define IIC_STS_PT 0x01
  56. #define IIC_STS_IRQA 0x02
  57. #define IIC_STS_ERR 0x04
  58. #define IIC_STS_SCMP 0x08
  59. #define IIC_STS_MDBF 0x10
  60. #define IIC_STS_MDBS 0x20
  61. #define IIC_STS_SLPR 0x40
  62. #define IIC_STS_SSS 0x80
  63. /* EXTSTS Register Bit definition */
  64. #define IIC_EXTSTS_XFRA 0x01
  65. #define IIC_EXTSTS_ICT 0x02
  66. #define IIC_EXTSTS_LA 0x04
  67. #define IIC_EXTSTS_BCS_MASK 0x70
  68. #define IIC_EXTSTS_BCS_FREE 0x40
  69. /* XTCNTLSS Register Bit definition */
  70. #define IIC_XTCNTLSS_SRST 0x01
  71. #define IIC_XTCNTLSS_EPI 0x02
  72. #define IIC_XTCNTLSS_SDBF 0x04
  73. #define IIC_XTCNTLSS_SBDD 0x08
  74. #define IIC_XTCNTLSS_SWS 0x10
  75. #define IIC_XTCNTLSS_SWC 0x20
  76. #define IIC_XTCNTLSS_SRS 0x40
  77. #define IIC_XTCNTLSS_SRC 0x80
  78. /* IICx_DIRECTCNTL register */
  79. #define IIC_DIRCNTL_SDAC 0x08
  80. #define IIC_DIRCNTL_SCC 0x04
  81. #define IIC_DIRCNTL_MSDA 0x02
  82. #define IIC_DIRCNTL_MSC 0x01
  83. #define DIRCTNL_FREE(v) (((v) & 0x0f) == 0x0f)
  84. #endif