hw_i2c.h 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. /**
  2. * \file hw_i2c.h
  3. *
  4. * \brief This file contains the Register Descriptions for I2C
  5. */
  6. /*
  7. * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
  8. */
  9. /*
  10. * Redistribution and use in source and binary forms, with or without
  11. * modification, are permitted provided that the following conditions
  12. * are met:
  13. *
  14. * Redistributions of source code must retain the above copyright
  15. * notice, this list of conditions and the following disclaimer.
  16. *
  17. * Redistributions in binary form must reproduce the above copyright
  18. * notice, this list of conditions and the following disclaimer in the
  19. * documentation and/or other materials provided with the
  20. * distribution.
  21. *
  22. * Neither the name of Texas Instruments Incorporated nor the names of
  23. * its contributors may be used to endorse or promote products derived
  24. * from this software without specific prior written permission.
  25. *
  26. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  27. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  28. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  29. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  30. * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  31. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  32. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  33. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  34. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  35. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  36. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  37. *
  38. */
  39. #ifndef _HW_I2C_H_
  40. #define _HW_I2C_H_
  41. #define I2C_ICOAR (0x0)
  42. #define I2C_ICIMR (0x4)
  43. #define I2C_ICSTR (0x8)
  44. #define I2C_ICCLKL (0xC)
  45. #define I2C_ICCLKH (0x10)
  46. #define I2C_ICCNT (0x14)
  47. #define I2C_ICDRR (0x18)
  48. #define I2C_ICSAR (0x1C)
  49. #define I2C_ICDXR (0x20)
  50. #define I2C_ICMDR (0x24)
  51. #define I2C_ICIVR (0x28)
  52. #define I2C_ICEMDR (0x2C)
  53. #define I2C_ICPSC (0x30)
  54. #define I2C_REVID1 (0x34)
  55. #define I2C_REVID2 (0x38)
  56. #define I2C_ICDMAC (0x3C)
  57. #define I2C_ICPFUNC (0x48)
  58. #define I2C_ICPDIR (0x4C)
  59. #define I2C_ICPDIN (0x50)
  60. #define I2C_ICPDOUT (0x54)
  61. #define I2C_ICPDSET (0x58)
  62. #define I2C_ICPDCLR (0x5C)
  63. /**************************************************************************\
  64. * Field Definition Macros
  65. \**************************************************************************/
  66. /* ICOAR */
  67. #define I2C_ICOAR_OADDR (0x000003FFu)
  68. #define I2C_ICOAR_OADDR_SHIFT (0x00000000u)
  69. /* ICIMR */
  70. #define I2C_ICIMR_AAS (0x00000040u)
  71. #define I2C_ICIMR_AAS_SHIFT (0x00000006u)
  72. #define I2C_ICIMR_SCD (0x00000020u)
  73. #define I2C_ICIMR_SCD_SHIFT (0x00000005u)
  74. #define I2C_ICIMR_ICXRDY (0x00000010u)
  75. #define I2C_ICIMR_ICXRDY_SHIFT (0x00000004u)
  76. #define I2C_ICIMR_ICRRDY (0x00000008u)
  77. #define I2C_ICIMR_ICRRDY_SHIFT (0x00000003u)
  78. #define I2C_ICIMR_ARDY (0x00000004u)
  79. #define I2C_ICIMR_ARDY_SHIFT (0x00000002u)
  80. #define I2C_ICIMR_NACK (0x00000002u)
  81. #define I2C_ICIMR_NACK_SHIFT (0x00000001u)
  82. #define I2C_ICIMR_AL (0x00000001u)
  83. #define I2C_ICIMR_AL_SHIFT (0x00000000u)
  84. /* ICSTR */
  85. #define I2C_ICSTR_SDIR (0x00004000u)
  86. #define I2C_ICSTR_SDIR_SHIFT (0x0000000Eu)
  87. #define I2C_ICSTR_NACKSNT (0x00002000u)
  88. #define I2C_ICSTR_NACKSNT_SHIFT (0x0000000Du)
  89. #define I2C_ICSTR_BB (0x00001000u)
  90. #define I2C_ICSTR_BB_SHIFT (0x0000000Cu)
  91. #define I2C_ICSTR_RSFULL (0x00000800u)
  92. #define I2C_ICSTR_RSFULL_SHIFT (0x0000000Bu)
  93. #define I2C_ICSTR_XSMT (0x00000400u)
  94. #define I2C_ICSTR_XSMT_SHIFT (0x0000000Au)
  95. #define I2C_ICSTR_AAS (0x00000200u)
  96. #define I2C_ICSTR_AAS_SHIFT (0x00000009u)
  97. #define I2C_ICSTR_AD0 (0x00000100u)
  98. #define I2C_ICSTR_AD0_SHIFT (0x00000008u)
  99. #define I2C_ICSTR_SCD (0x00000020u)
  100. #define I2C_ICSTR_SCD_SHIFT (0x00000005u)
  101. #define I2C_ICSTR_ICXRDY (0x00000010u)
  102. #define I2C_ICSTR_ICXRDY_SHIFT (0x00000004u)
  103. #define I2C_ICSTR_ICRRDY (0x00000008u)
  104. #define I2C_ICSTR_ICRRDY_SHIFT (0x00000003u)
  105. #define I2C_ICSTR_ARDY (0x00000004u)
  106. #define I2C_ICSTR_ARDY_SHIFT (0x00000002u)
  107. #define I2C_ICSTR_NACK (0x00000002u)
  108. #define I2C_ICSTR_NACK_SHIFT (0x00000001u)
  109. #define I2C_ICSTR_AL (0x00000001u)
  110. #define I2C_ICSTR_AL_SHIFT (0x00000000u)
  111. /* ICCLKL */
  112. #define I2C_ICCLKL_ICCL (0x0000FFFFu)
  113. #define I2C_ICCLKL_ICCL_SHIFT (0x00000000u)
  114. /* ICCLKH */
  115. #define I2C_ICCLKH_ICCH (0x0000FFFFu)
  116. #define I2C_ICCLKH_ICCH_SHIFT (0x00000000u)
  117. /* ICCNT */
  118. #define I2C_ICCNT_ICDC (0x0000FFFFu)
  119. #define I2C_ICCNT_ICDC_SHIFT (0x00000000u)
  120. /* ICDRR */
  121. #define I2C_ICDRR_D (0x000000FFu)
  122. #define I2C_ICDRR_D_SHIFT (0x00000000u)
  123. /* ICSAR */
  124. #define I2C_ICSAR_SADDR (0x000003FFu)
  125. #define I2C_ICSAR_SADDR_SHIFT (0x00000000u)
  126. /* ICDXR */
  127. #define I2C_ICDXR_D (0x000000FFu)
  128. #define I2C_ICDXR_D_SHIFT (0x00000000u)
  129. /* ICMDR */
  130. #define I2C_ICMDR_NACKMOD (0x00008000u)
  131. #define I2C_ICMDR_NACKMOD_SHIFT (0x0000000Fu)
  132. #define I2C_ICMDR_FREE (0x00004000u)
  133. #define I2C_ICMDR_FREE_SHIFT (0x0000000Eu)
  134. #define I2C_ICMDR_STT (0x00002000u)
  135. #define I2C_ICMDR_STT_SHIFT (0x0000000Du)
  136. #define I2C_ICMDR_STP (0x00000800u)
  137. #define I2C_ICMDR_STP_SHIFT (0x0000000Bu)
  138. #define I2C_ICMDR_MST (0x00000400u)
  139. #define I2C_ICMDR_MST_SHIFT (0x0000000Au)
  140. #define I2C_ICMDR_TRX (0x00000200u)
  141. #define I2C_ICMDR_TRX_SHIFT (0x00000009u)
  142. #define I2C_ICMDR_XA (0x00000100u)
  143. #define I2C_ICMDR_XA_SHIFT (0x00000008u)
  144. #define I2C_ICMDR_RM (0x00000080u)
  145. #define I2C_ICMDR_RM_SHIFT (0x00000007u)
  146. #define I2C_ICMDR_DLB (0x00000040u)
  147. #define I2C_ICMDR_DLB_SHIFT (0x00000006u)
  148. #define I2C_ICMDR_IRS (0x00000020u)
  149. #define I2C_ICMDR_IRS_SHIFT (0x00000005u)
  150. #define I2C_ICMDR_STB (0x00000010u)
  151. #define I2C_ICMDR_STB_SHIFT (0x00000004u)
  152. #define I2C_ICMDR_FDF (0x00000008u)
  153. #define I2C_ICMDR_FDF_SHIFT (0x00000003u)
  154. #define I2C_ICMDR_BC (0x00000007u)
  155. #define I2C_ICMDR_BC_SHIFT (0x00000000u)
  156. /*----BC Tokens----*/
  157. #define I2C_ICMDR_BC_8BIT (0x00000000u)
  158. #define I2C_ICMDR_BC_1BIT (0x00000001u)
  159. #define I2C_ICMDR_BC_2BIT (0x00000002u)
  160. #define I2C_ICMDR_BC_3BIT (0x00000003u)
  161. #define I2C_ICMDR_BC_4BIT (0x00000004u)
  162. #define I2C_ICMDR_BC_5BIT (0x00000005u)
  163. #define I2C_ICMDR_BC_6BIT (0x00000006u)
  164. #define I2C_ICMDR_BC_7BIT (0x00000007u)
  165. /* ICIVR */
  166. #define I2C_ICIVR_INTCODE (0x00000007u)
  167. #define I2C_ICIVR_INTCODE_SHIFT (0x00000000u)
  168. /*----INTCODE Tokens----*/
  169. #define I2C_ICIVR_INTCODE_NONE (0x00000000u)
  170. #define I2C_ICIVR_INTCODE_AL (0x00000001u)
  171. #define I2C_ICIVR_INTCODE_NACK (0x00000002u)
  172. #define I2C_ICIVR_INTCODE_ARDY (0x00000003u)
  173. #define I2C_ICIVR_INTCODE_ICRRDY (0x00000004u)
  174. #define I2C_ICIVR_INTCODE_ICXRDY (0x00000005u)
  175. #define I2C_ICIVR_INTCODE_SCD (0x00000006u)
  176. #define I2C_ICIVR_INTCODE_AAS (0x00000007u)
  177. /* ICEMDR */
  178. #define I2C_ICEMDR_IGNACK (0x00000002u)
  179. #define I2C_ICEMDR_IGNACK_SHIFT (0x00000001u)
  180. #define I2C_ICEMDR_BCM (0x00000001u)
  181. #define I2C_ICEMDR_BCM_SHIFT (0x00000000u)
  182. /* ICPSC */
  183. #define I2C_ICPSC_IPSC (0x000000FFu)
  184. #define I2C_ICPSC_IPSC_SHIFT (0x00000000u)
  185. /* ICPID1 */
  186. #define I2C_REVID1_REV (0xFFFFFFFFu)
  187. #define I2C_REVID1_REV_SHIFT (0x00000008u)
  188. /* ICPID2 */
  189. #define I2C_REVID2_REV (0xFFFFFFFFu)
  190. #define I2C_REVID2_REV_SHIFT (0x00000000u)
  191. /* ICDMAC */
  192. #define I2C_ICDMAC_TXDMAEN (0x00000002u)
  193. #define I2C_ICDMAC_TXDMAEN_SHIFT (0x00000001u)
  194. #define I2C_ICDMAC_RXDMAEN (0x00000001u)
  195. #define I2C_ICDMAC_RXDMAEN_SHIFT (0x00000000u)
  196. /* ICPFUNC */
  197. /*----PFUNC Tokens----*/
  198. /* ICPDIR */
  199. #define I2C_ICPDIR_PDIR1 (0x00000002u)
  200. #define I2C_ICPDIR_PDIR1_SHIFT (0x00000001u)
  201. #define I2C_ICPDIR_PDIR0 (0x00000001u)
  202. #define I2C_ICPDIR_PDIR0_SHIFT (0x00000000u)
  203. /* ICPDIN */
  204. #define I2C_ICPDIN_PDIN1 (0x00000002u)
  205. #define I2C_ICPDIN_PDIN1_SHIFT (0x00000001u)
  206. #define I2C_ICPDIN_PDIN0 (0x00000001u)
  207. #define I2C_ICPDIN_PDIN0_SHIFT (0x00000000u)
  208. /* ICPDOUT */
  209. #define I2C_ICPDOUT_PDOUT1 (0x00000002u)
  210. #define I2C_ICPDOUT_PDOUT1_SHIFT (0x00000001u)
  211. #define I2C_ICPDOUT_PDOUT0 (0x00000001u)
  212. #define I2C_ICPDOUT_PDOUT0_SHIFT (0x00000000u)
  213. /* ICPDSET */
  214. #define I2C_ICPDSET_PDSET1 (0x00000002u)
  215. #define I2C_ICPDSET_PDSET1_SHIFT (0x00000001u)
  216. #define I2C_ICPDSET_PDSET0 (0x00000001u)
  217. #define I2C_ICPDSET_PDSET0_SHIFT (0x00000000u)
  218. /* ICPDCLR */
  219. #define I2C_ICPDCLR_PDCLR1 (0x00000002u)
  220. #define I2C_ICPDCLR_PDCLR1_SHIFT (0x00000001u)
  221. #define I2C_ICPDCLR_PDCLR0 (0x00000001u)
  222. #define I2C_ICPDCLR_PDCLR0_SHIFT (0x00000000u)
  223. #endif