i2c_reg.h 63 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450
  1. /**
  2. * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #pragma once
  7. #include <stdint.h>
  8. #include "soc/soc.h"
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. /** I2C_SCL_LOW_PERIOD_REG register
  13. * Configures the low level width of the SCL
  14. * Clock
  15. */
  16. #define I2C_SCL_LOW_PERIOD_REG(i) (REG_I2C_BASE(i) + 0x0)
  17. /** I2C_SCL_LOW_PERIOD : R/W; bitpos: [8:0]; default: 0;
  18. * This register is used to configure for how long SCL remains low in master mode, in
  19. * I2C module clock cycles.
  20. */
  21. #define I2C_SCL_LOW_PERIOD 0x000001FFU
  22. #define I2C_SCL_LOW_PERIOD_M (I2C_SCL_LOW_PERIOD_V << I2C_SCL_LOW_PERIOD_S)
  23. #define I2C_SCL_LOW_PERIOD_V 0x000001FFU
  24. #define I2C_SCL_LOW_PERIOD_S 0
  25. /** I2C_CTR_REG register
  26. * Transmission setting
  27. */
  28. #define I2C_CTR_REG(i) (REG_I2C_BASE(i) + 0x4)
  29. /** I2C_SDA_FORCE_OUT : R/W; bitpos: [0]; default: 0;
  30. * 1: direct output, 0: open drain output.
  31. */
  32. #define I2C_SDA_FORCE_OUT (BIT(0))
  33. #define I2C_SDA_FORCE_OUT_M (I2C_SDA_FORCE_OUT_V << I2C_SDA_FORCE_OUT_S)
  34. #define I2C_SDA_FORCE_OUT_V 0x00000001U
  35. #define I2C_SDA_FORCE_OUT_S 0
  36. /** I2C_SCL_FORCE_OUT : R/W; bitpos: [1]; default: 0;
  37. * 1: direct output, 0: open drain output.
  38. */
  39. #define I2C_SCL_FORCE_OUT (BIT(1))
  40. #define I2C_SCL_FORCE_OUT_M (I2C_SCL_FORCE_OUT_V << I2C_SCL_FORCE_OUT_S)
  41. #define I2C_SCL_FORCE_OUT_V 0x00000001U
  42. #define I2C_SCL_FORCE_OUT_S 1
  43. /** I2C_SAMPLE_SCL_LEVEL : R/W; bitpos: [2]; default: 0;
  44. * This register is used to select the sample mode.
  45. * 1: sample SDA data on the SCL low level.
  46. * 0: sample SDA data on the SCL high level.
  47. */
  48. #define I2C_SAMPLE_SCL_LEVEL (BIT(2))
  49. #define I2C_SAMPLE_SCL_LEVEL_M (I2C_SAMPLE_SCL_LEVEL_V << I2C_SAMPLE_SCL_LEVEL_S)
  50. #define I2C_SAMPLE_SCL_LEVEL_V 0x00000001U
  51. #define I2C_SAMPLE_SCL_LEVEL_S 2
  52. /** I2C_RX_FULL_ACK_LEVEL : R/W; bitpos: [3]; default: 1;
  53. * This register is used to configure the ACK value that need to sent by master when
  54. * the rx_fifo_cnt has reached the threshold.
  55. */
  56. #define I2C_RX_FULL_ACK_LEVEL (BIT(3))
  57. #define I2C_RX_FULL_ACK_LEVEL_M (I2C_RX_FULL_ACK_LEVEL_V << I2C_RX_FULL_ACK_LEVEL_S)
  58. #define I2C_RX_FULL_ACK_LEVEL_V 0x00000001U
  59. #define I2C_RX_FULL_ACK_LEVEL_S 3
  60. /** I2C_MS_MODE : R/W; bitpos: [4]; default: 0;
  61. * Set this bit to configure the module as an I2C Master. Clear this bit to configure
  62. * the
  63. * module as an I2C Slave.
  64. */
  65. #define I2C_MS_MODE (BIT(4))
  66. #define I2C_MS_MODE_M (I2C_MS_MODE_V << I2C_MS_MODE_S)
  67. #define I2C_MS_MODE_V 0x00000001U
  68. #define I2C_MS_MODE_S 4
  69. /** I2C_TRANS_START : WT; bitpos: [5]; default: 0;
  70. * Set this bit to start sending the data in txfifo.
  71. */
  72. #define I2C_TRANS_START (BIT(5))
  73. #define I2C_TRANS_START_M (I2C_TRANS_START_V << I2C_TRANS_START_S)
  74. #define I2C_TRANS_START_V 0x00000001U
  75. #define I2C_TRANS_START_S 5
  76. /** I2C_TX_LSB_FIRST : R/W; bitpos: [6]; default: 0;
  77. * This bit is used to control the sending mode for data needing to be sent.
  78. * 1: send data from the least significant bit,
  79. * 0: send data from the most significant bit.
  80. */
  81. #define I2C_TX_LSB_FIRST (BIT(6))
  82. #define I2C_TX_LSB_FIRST_M (I2C_TX_LSB_FIRST_V << I2C_TX_LSB_FIRST_S)
  83. #define I2C_TX_LSB_FIRST_V 0x00000001U
  84. #define I2C_TX_LSB_FIRST_S 6
  85. /** I2C_RX_LSB_FIRST : R/W; bitpos: [7]; default: 0;
  86. * This bit is used to control the storage mode for received data.
  87. * 1: receive data from the least significant bit,
  88. * 0: receive data from the most significant bit.
  89. */
  90. #define I2C_RX_LSB_FIRST (BIT(7))
  91. #define I2C_RX_LSB_FIRST_M (I2C_RX_LSB_FIRST_V << I2C_RX_LSB_FIRST_S)
  92. #define I2C_RX_LSB_FIRST_V 0x00000001U
  93. #define I2C_RX_LSB_FIRST_S 7
  94. /** I2C_CLK_EN : R/W; bitpos: [8]; default: 0;
  95. * Reserved
  96. */
  97. #define I2C_CLK_EN (BIT(8))
  98. #define I2C_CLK_EN_M (I2C_CLK_EN_V << I2C_CLK_EN_S)
  99. #define I2C_CLK_EN_V 0x00000001U
  100. #define I2C_CLK_EN_S 8
  101. /** I2C_ARBITRATION_EN : R/W; bitpos: [9]; default: 1;
  102. * This is the enable bit for arbitration_lost.
  103. */
  104. #define I2C_ARBITRATION_EN (BIT(9))
  105. #define I2C_ARBITRATION_EN_M (I2C_ARBITRATION_EN_V << I2C_ARBITRATION_EN_S)
  106. #define I2C_ARBITRATION_EN_V 0x00000001U
  107. #define I2C_ARBITRATION_EN_S 9
  108. /** I2C_FSM_RST : WT; bitpos: [10]; default: 0;
  109. * This register is used to reset the scl FMS.
  110. */
  111. #define I2C_FSM_RST (BIT(10))
  112. #define I2C_FSM_RST_M (I2C_FSM_RST_V << I2C_FSM_RST_S)
  113. #define I2C_FSM_RST_V 0x00000001U
  114. #define I2C_FSM_RST_S 10
  115. /** I2C_CONF_UPGATE : WT; bitpos: [11]; default: 0;
  116. * synchronization bit
  117. */
  118. #define I2C_CONF_UPGATE (BIT(11))
  119. #define I2C_CONF_UPGATE_M (I2C_CONF_UPGATE_V << I2C_CONF_UPGATE_S)
  120. #define I2C_CONF_UPGATE_V 0x00000001U
  121. #define I2C_CONF_UPGATE_S 11
  122. /** I2C_SLV_TX_AUTO_START_EN : R/W; bitpos: [12]; default: 0;
  123. * This is the enable bit for slave to send data automatically
  124. */
  125. #define I2C_SLV_TX_AUTO_START_EN (BIT(12))
  126. #define I2C_SLV_TX_AUTO_START_EN_M (I2C_SLV_TX_AUTO_START_EN_V << I2C_SLV_TX_AUTO_START_EN_S)
  127. #define I2C_SLV_TX_AUTO_START_EN_V 0x00000001U
  128. #define I2C_SLV_TX_AUTO_START_EN_S 12
  129. /** I2C_ADDR_10BIT_RW_CHECK_EN : R/W; bitpos: [13]; default: 0;
  130. * This is the enable bit to check if the r/w bit of 10bit addressing consists with
  131. * I2C protocol
  132. */
  133. #define I2C_ADDR_10BIT_RW_CHECK_EN (BIT(13))
  134. #define I2C_ADDR_10BIT_RW_CHECK_EN_M (I2C_ADDR_10BIT_RW_CHECK_EN_V << I2C_ADDR_10BIT_RW_CHECK_EN_S)
  135. #define I2C_ADDR_10BIT_RW_CHECK_EN_V 0x00000001U
  136. #define I2C_ADDR_10BIT_RW_CHECK_EN_S 13
  137. /** I2C_ADDR_BROADCASTING_EN : R/W; bitpos: [14]; default: 0;
  138. * This is the enable bit to support the 7bit general call function.
  139. */
  140. #define I2C_ADDR_BROADCASTING_EN (BIT(14))
  141. #define I2C_ADDR_BROADCASTING_EN_M (I2C_ADDR_BROADCASTING_EN_V << I2C_ADDR_BROADCASTING_EN_S)
  142. #define I2C_ADDR_BROADCASTING_EN_V 0x00000001U
  143. #define I2C_ADDR_BROADCASTING_EN_S 14
  144. /** I2C_SR_REG register
  145. * Describe I2C work status.
  146. */
  147. #define I2C_SR_REG(i) (REG_I2C_BASE(i) + 0x8)
  148. /** I2C_RESP_REC : RO; bitpos: [0]; default: 0;
  149. * The received ACK value in master mode or slave mode. 0: ACK, 1: NACK.
  150. */
  151. #define I2C_RESP_REC (BIT(0))
  152. #define I2C_RESP_REC_M (I2C_RESP_REC_V << I2C_RESP_REC_S)
  153. #define I2C_RESP_REC_V 0x00000001U
  154. #define I2C_RESP_REC_S 0
  155. /** I2C_SLAVE_RW : RO; bitpos: [1]; default: 0;
  156. * When in slave mode, 1: master reads from slave, 0: master writes to slave.
  157. */
  158. #define I2C_SLAVE_RW (BIT(1))
  159. #define I2C_SLAVE_RW_M (I2C_SLAVE_RW_V << I2C_SLAVE_RW_S)
  160. #define I2C_SLAVE_RW_V 0x00000001U
  161. #define I2C_SLAVE_RW_S 1
  162. /** I2C_ARB_LOST : RO; bitpos: [3]; default: 0;
  163. * When the I2C controller loses control of SCL line, this register changes to 1.
  164. */
  165. #define I2C_ARB_LOST (BIT(3))
  166. #define I2C_ARB_LOST_M (I2C_ARB_LOST_V << I2C_ARB_LOST_S)
  167. #define I2C_ARB_LOST_V 0x00000001U
  168. #define I2C_ARB_LOST_S 3
  169. /** I2C_BUS_BUSY : RO; bitpos: [4]; default: 0;
  170. * 1: the I2C bus is busy transferring data, 0: the I2C bus is in idle state.
  171. */
  172. #define I2C_BUS_BUSY (BIT(4))
  173. #define I2C_BUS_BUSY_M (I2C_BUS_BUSY_V << I2C_BUS_BUSY_S)
  174. #define I2C_BUS_BUSY_V 0x00000001U
  175. #define I2C_BUS_BUSY_S 4
  176. /** I2C_SLAVE_ADDRESSED : RO; bitpos: [5]; default: 0;
  177. * When configured as an I2C Slave, and the address sent by the master is
  178. * equal to the address of the slave, then this bit will be of high level.
  179. */
  180. #define I2C_SLAVE_ADDRESSED (BIT(5))
  181. #define I2C_SLAVE_ADDRESSED_M (I2C_SLAVE_ADDRESSED_V << I2C_SLAVE_ADDRESSED_S)
  182. #define I2C_SLAVE_ADDRESSED_V 0x00000001U
  183. #define I2C_SLAVE_ADDRESSED_S 5
  184. /** I2C_RXFIFO_CNT : RO; bitpos: [13:8]; default: 0;
  185. * This field represents the amount of data needed to be sent.
  186. */
  187. #define I2C_RXFIFO_CNT 0x0000003FU
  188. #define I2C_RXFIFO_CNT_M (I2C_RXFIFO_CNT_V << I2C_RXFIFO_CNT_S)
  189. #define I2C_RXFIFO_CNT_V 0x0000003FU
  190. #define I2C_RXFIFO_CNT_S 8
  191. /** I2C_STRETCH_CAUSE : RO; bitpos: [15:14]; default: 3;
  192. * The cause of stretching SCL low in slave mode. 0: stretching SCL low at the
  193. * beginning of I2C read data state. 1: stretching SCL low when I2C Tx FIFO is empty
  194. * in slave mode. 2: stretching SCL low when I2C Rx FIFO is full in slave mode.
  195. */
  196. #define I2C_STRETCH_CAUSE 0x00000003U
  197. #define I2C_STRETCH_CAUSE_M (I2C_STRETCH_CAUSE_V << I2C_STRETCH_CAUSE_S)
  198. #define I2C_STRETCH_CAUSE_V 0x00000003U
  199. #define I2C_STRETCH_CAUSE_S 14
  200. /** I2C_TXFIFO_CNT : RO; bitpos: [23:18]; default: 0;
  201. * This field stores the amount of received data in RAM.
  202. */
  203. #define I2C_TXFIFO_CNT 0x0000003FU
  204. #define I2C_TXFIFO_CNT_M (I2C_TXFIFO_CNT_V << I2C_TXFIFO_CNT_S)
  205. #define I2C_TXFIFO_CNT_V 0x0000003FU
  206. #define I2C_TXFIFO_CNT_S 18
  207. /** I2C_SCL_MAIN_STATE_LAST : RO; bitpos: [26:24]; default: 0;
  208. * This field indicates the states of the I2C module state machine.
  209. * 0: Idle, 1: Address shift, 2: ACK address, 3: Rx data, 4: Tx data, 5: Send ACK, 6:
  210. * Wait ACK
  211. */
  212. #define I2C_SCL_MAIN_STATE_LAST 0x00000007U
  213. #define I2C_SCL_MAIN_STATE_LAST_M (I2C_SCL_MAIN_STATE_LAST_V << I2C_SCL_MAIN_STATE_LAST_S)
  214. #define I2C_SCL_MAIN_STATE_LAST_V 0x00000007U
  215. #define I2C_SCL_MAIN_STATE_LAST_S 24
  216. /** I2C_SCL_STATE_LAST : RO; bitpos: [30:28]; default: 0;
  217. * This field indicates the states of the state machine used to produce SCL.
  218. * 0: Idle, 1: Start, 2: Negative edge, 3: Low, 4: Positive edge, 5: High, 6: Stop
  219. */
  220. #define I2C_SCL_STATE_LAST 0x00000007U
  221. #define I2C_SCL_STATE_LAST_M (I2C_SCL_STATE_LAST_V << I2C_SCL_STATE_LAST_S)
  222. #define I2C_SCL_STATE_LAST_V 0x00000007U
  223. #define I2C_SCL_STATE_LAST_S 28
  224. /** I2C_TO_REG register
  225. * Setting time out control for receiving data.
  226. */
  227. #define I2C_TO_REG(i) (REG_I2C_BASE(i) + 0xc)
  228. /** I2C_TIME_OUT_VALUE : R/W; bitpos: [4:0]; default: 16;
  229. * This register is used to configure the timeout for receiving a data bit in APB
  230. * clock cycles.
  231. */
  232. #define I2C_TIME_OUT_VALUE 0x0000001FU
  233. #define I2C_TIME_OUT_VALUE_M (I2C_TIME_OUT_VALUE_V << I2C_TIME_OUT_VALUE_S)
  234. #define I2C_TIME_OUT_VALUE_V 0x0000001FU
  235. #define I2C_TIME_OUT_VALUE_S 0
  236. /** I2C_TIME_OUT_EN : R/W; bitpos: [5]; default: 0;
  237. * This is the enable bit for time out control.
  238. */
  239. #define I2C_TIME_OUT_EN (BIT(5))
  240. #define I2C_TIME_OUT_EN_M (I2C_TIME_OUT_EN_V << I2C_TIME_OUT_EN_S)
  241. #define I2C_TIME_OUT_EN_V 0x00000001U
  242. #define I2C_TIME_OUT_EN_S 5
  243. /** I2C_SLAVE_ADDR_REG register
  244. * Local slave address setting
  245. */
  246. #define I2C_SLAVE_ADDR_REG(i) (REG_I2C_BASE(i) + 0x10)
  247. /** I2C_SLAVE_ADDR : R/W; bitpos: [14:0]; default: 0;
  248. * When configured as an I2C Slave, this field is used to configure the slave address.
  249. */
  250. #define I2C_SLAVE_ADDR 0x00007FFFU
  251. #define I2C_SLAVE_ADDR_M (I2C_SLAVE_ADDR_V << I2C_SLAVE_ADDR_S)
  252. #define I2C_SLAVE_ADDR_V 0x00007FFFU
  253. #define I2C_SLAVE_ADDR_S 0
  254. /** I2C_ADDR_10BIT_EN : R/W; bitpos: [31]; default: 0;
  255. * This field is used to enable the slave 10-bit addressing mode in master mode.
  256. */
  257. #define I2C_ADDR_10BIT_EN (BIT(31))
  258. #define I2C_ADDR_10BIT_EN_M (I2C_ADDR_10BIT_EN_V << I2C_ADDR_10BIT_EN_S)
  259. #define I2C_ADDR_10BIT_EN_V 0x00000001U
  260. #define I2C_ADDR_10BIT_EN_S 31
  261. /** I2C_FIFO_ST_REG register
  262. * FIFO status register.
  263. */
  264. #define I2C_FIFO_ST_REG(i) (REG_I2C_BASE(i) + 0x14)
  265. /** I2C_RXFIFO_RADDR : RO; bitpos: [4:0]; default: 0;
  266. * This is the offset address of the APB reading from rxfifo
  267. */
  268. #define I2C_RXFIFO_RADDR 0x0000001FU
  269. #define I2C_RXFIFO_RADDR_M (I2C_RXFIFO_RADDR_V << I2C_RXFIFO_RADDR_S)
  270. #define I2C_RXFIFO_RADDR_V 0x0000001FU
  271. #define I2C_RXFIFO_RADDR_S 0
  272. /** I2C_RXFIFO_WADDR : RO; bitpos: [9:5]; default: 0;
  273. * This is the offset address of i2c module receiving data and writing to rxfifo.
  274. */
  275. #define I2C_RXFIFO_WADDR 0x0000001FU
  276. #define I2C_RXFIFO_WADDR_M (I2C_RXFIFO_WADDR_V << I2C_RXFIFO_WADDR_S)
  277. #define I2C_RXFIFO_WADDR_V 0x0000001FU
  278. #define I2C_RXFIFO_WADDR_S 5
  279. /** I2C_TXFIFO_RADDR : RO; bitpos: [14:10]; default: 0;
  280. * This is the offset address of i2c module reading from txfifo.
  281. */
  282. #define I2C_TXFIFO_RADDR 0x0000001FU
  283. #define I2C_TXFIFO_RADDR_M (I2C_TXFIFO_RADDR_V << I2C_TXFIFO_RADDR_S)
  284. #define I2C_TXFIFO_RADDR_V 0x0000001FU
  285. #define I2C_TXFIFO_RADDR_S 10
  286. /** I2C_TXFIFO_WADDR : RO; bitpos: [19:15]; default: 0;
  287. * This is the offset address of APB bus writing to txfifo.
  288. */
  289. #define I2C_TXFIFO_WADDR 0x0000001FU
  290. #define I2C_TXFIFO_WADDR_M (I2C_TXFIFO_WADDR_V << I2C_TXFIFO_WADDR_S)
  291. #define I2C_TXFIFO_WADDR_V 0x0000001FU
  292. #define I2C_TXFIFO_WADDR_S 15
  293. /** I2C_SLAVE_RW_POINT : RO; bitpos: [29:22]; default: 0;
  294. * The received data in I2C slave mode.
  295. */
  296. #define I2C_SLAVE_RW_POINT 0x000000FFU
  297. #define I2C_SLAVE_RW_POINT_M (I2C_SLAVE_RW_POINT_V << I2C_SLAVE_RW_POINT_S)
  298. #define I2C_SLAVE_RW_POINT_V 0x000000FFU
  299. #define I2C_SLAVE_RW_POINT_S 22
  300. /** I2C_FIFO_CONF_REG register
  301. * FIFO configuration register.
  302. */
  303. #define I2C_FIFO_CONF_REG(i) (REG_I2C_BASE(i) + 0x18)
  304. /** I2C_RXFIFO_WM_THRHD : R/W; bitpos: [4:0]; default: 11;
  305. * The water mark threshold of rx FIFO in nonfifo access mode. When
  306. * reg_reg_fifo_prt_en is 1 and rx FIFO counter is bigger than
  307. * reg_rxfifo_wm_thrhd[4:0], reg_rxfifo_wm_int_raw bit will be valid.
  308. */
  309. #define I2C_RXFIFO_WM_THRHD 0x0000001FU
  310. #define I2C_RXFIFO_WM_THRHD_M (I2C_RXFIFO_WM_THRHD_V << I2C_RXFIFO_WM_THRHD_S)
  311. #define I2C_RXFIFO_WM_THRHD_V 0x0000001FU
  312. #define I2C_RXFIFO_WM_THRHD_S 0
  313. /** I2C_TXFIFO_WM_THRHD : R/W; bitpos: [9:5]; default: 4;
  314. * The water mark threshold of tx FIFO in nonfifo access mode. When
  315. * reg_reg_fifo_prt_en is 1 and tx FIFO counter is smaller than
  316. * reg_txfifo_wm_thrhd[4:0], reg_txfifo_wm_int_raw bit will be valid.
  317. */
  318. #define I2C_TXFIFO_WM_THRHD 0x0000001FU
  319. #define I2C_TXFIFO_WM_THRHD_M (I2C_TXFIFO_WM_THRHD_V << I2C_TXFIFO_WM_THRHD_S)
  320. #define I2C_TXFIFO_WM_THRHD_V 0x0000001FU
  321. #define I2C_TXFIFO_WM_THRHD_S 5
  322. /** I2C_NONFIFO_EN : R/W; bitpos: [10]; default: 0;
  323. * Set this bit to enable APB nonfifo access.
  324. */
  325. #define I2C_NONFIFO_EN (BIT(10))
  326. #define I2C_NONFIFO_EN_M (I2C_NONFIFO_EN_V << I2C_NONFIFO_EN_S)
  327. #define I2C_NONFIFO_EN_V 0x00000001U
  328. #define I2C_NONFIFO_EN_S 10
  329. /** I2C_FIFO_ADDR_CFG_EN : R/W; bitpos: [11]; default: 0;
  330. * When this bit is set to 1, the byte received after the I2C address byte represents
  331. * the offset address in the I2C Slave RAM.
  332. */
  333. #define I2C_FIFO_ADDR_CFG_EN (BIT(11))
  334. #define I2C_FIFO_ADDR_CFG_EN_M (I2C_FIFO_ADDR_CFG_EN_V << I2C_FIFO_ADDR_CFG_EN_S)
  335. #define I2C_FIFO_ADDR_CFG_EN_V 0x00000001U
  336. #define I2C_FIFO_ADDR_CFG_EN_S 11
  337. /** I2C_RX_FIFO_RST : R/W; bitpos: [12]; default: 0;
  338. * Set this bit to reset rx-fifo.
  339. */
  340. #define I2C_RX_FIFO_RST (BIT(12))
  341. #define I2C_RX_FIFO_RST_M (I2C_RX_FIFO_RST_V << I2C_RX_FIFO_RST_S)
  342. #define I2C_RX_FIFO_RST_V 0x00000001U
  343. #define I2C_RX_FIFO_RST_S 12
  344. /** I2C_TX_FIFO_RST : R/W; bitpos: [13]; default: 0;
  345. * Set this bit to reset tx-fifo.
  346. */
  347. #define I2C_TX_FIFO_RST (BIT(13))
  348. #define I2C_TX_FIFO_RST_M (I2C_TX_FIFO_RST_V << I2C_TX_FIFO_RST_S)
  349. #define I2C_TX_FIFO_RST_V 0x00000001U
  350. #define I2C_TX_FIFO_RST_S 13
  351. /** I2C_FIFO_PRT_EN : R/W; bitpos: [14]; default: 1;
  352. * The control enable bit of FIFO pointer in non-fifo access mode. This bit controls
  353. * the valid bits and the interrupts of tx/rx_fifo overflow, underflow, full and empty.
  354. */
  355. #define I2C_FIFO_PRT_EN (BIT(14))
  356. #define I2C_FIFO_PRT_EN_M (I2C_FIFO_PRT_EN_V << I2C_FIFO_PRT_EN_S)
  357. #define I2C_FIFO_PRT_EN_V 0x00000001U
  358. #define I2C_FIFO_PRT_EN_S 14
  359. /** I2C_DATA_REG register
  360. * Rx FIFO read data.
  361. */
  362. #define I2C_DATA_REG(i) (REG_I2C_BASE(i) + 0x1c)
  363. /** I2C_FIFO_RDATA : HRO; bitpos: [7:0]; default: 0;
  364. * The value of rx FIFO read data.
  365. */
  366. #define I2C_FIFO_RDATA 0x000000FFU
  367. #define I2C_FIFO_RDATA_M (I2C_FIFO_RDATA_V << I2C_FIFO_RDATA_S)
  368. #define I2C_FIFO_RDATA_V 0x000000FFU
  369. #define I2C_FIFO_RDATA_S 0
  370. /** I2C_INT_RAW_REG register
  371. * Raw interrupt status
  372. */
  373. #define I2C_INT_RAW_REG(i) (REG_I2C_BASE(i) + 0x20)
  374. /** I2C_RXFIFO_WM_INT_RAW : R/SS/WTC; bitpos: [0]; default: 0;
  375. * The raw interrupt bit for I2C_RXFIFO_WM_INT interrupt.
  376. */
  377. #define I2C_RXFIFO_WM_INT_RAW (BIT(0))
  378. #define I2C_RXFIFO_WM_INT_RAW_M (I2C_RXFIFO_WM_INT_RAW_V << I2C_RXFIFO_WM_INT_RAW_S)
  379. #define I2C_RXFIFO_WM_INT_RAW_V 0x00000001U
  380. #define I2C_RXFIFO_WM_INT_RAW_S 0
  381. /** I2C_TXFIFO_WM_INT_RAW : R/SS/WTC; bitpos: [1]; default: 1;
  382. * The raw interrupt bit for I2C_TXFIFO_WM_INT interrupt.
  383. */
  384. #define I2C_TXFIFO_WM_INT_RAW (BIT(1))
  385. #define I2C_TXFIFO_WM_INT_RAW_M (I2C_TXFIFO_WM_INT_RAW_V << I2C_TXFIFO_WM_INT_RAW_S)
  386. #define I2C_TXFIFO_WM_INT_RAW_V 0x00000001U
  387. #define I2C_TXFIFO_WM_INT_RAW_S 1
  388. /** I2C_RXFIFO_OVF_INT_RAW : R/SS/WTC; bitpos: [2]; default: 0;
  389. * The raw interrupt bit for I2C_RXFIFO_OVF_INT interrupt.
  390. */
  391. #define I2C_RXFIFO_OVF_INT_RAW (BIT(2))
  392. #define I2C_RXFIFO_OVF_INT_RAW_M (I2C_RXFIFO_OVF_INT_RAW_V << I2C_RXFIFO_OVF_INT_RAW_S)
  393. #define I2C_RXFIFO_OVF_INT_RAW_V 0x00000001U
  394. #define I2C_RXFIFO_OVF_INT_RAW_S 2
  395. /** I2C_END_DETECT_INT_RAW : R/SS/WTC; bitpos: [3]; default: 0;
  396. * The raw interrupt bit for the I2C_END_DETECT_INT interrupt.
  397. */
  398. #define I2C_END_DETECT_INT_RAW (BIT(3))
  399. #define I2C_END_DETECT_INT_RAW_M (I2C_END_DETECT_INT_RAW_V << I2C_END_DETECT_INT_RAW_S)
  400. #define I2C_END_DETECT_INT_RAW_V 0x00000001U
  401. #define I2C_END_DETECT_INT_RAW_S 3
  402. /** I2C_BYTE_TRANS_DONE_INT_RAW : R/SS/WTC; bitpos: [4]; default: 0;
  403. * The raw interrupt bit for the I2C_END_DETECT_INT interrupt.
  404. */
  405. #define I2C_BYTE_TRANS_DONE_INT_RAW (BIT(4))
  406. #define I2C_BYTE_TRANS_DONE_INT_RAW_M (I2C_BYTE_TRANS_DONE_INT_RAW_V << I2C_BYTE_TRANS_DONE_INT_RAW_S)
  407. #define I2C_BYTE_TRANS_DONE_INT_RAW_V 0x00000001U
  408. #define I2C_BYTE_TRANS_DONE_INT_RAW_S 4
  409. /** I2C_ARBITRATION_LOST_INT_RAW : R/SS/WTC; bitpos: [5]; default: 0;
  410. * The raw interrupt bit for the I2C_ARBITRATION_LOST_INT interrupt.
  411. */
  412. #define I2C_ARBITRATION_LOST_INT_RAW (BIT(5))
  413. #define I2C_ARBITRATION_LOST_INT_RAW_M (I2C_ARBITRATION_LOST_INT_RAW_V << I2C_ARBITRATION_LOST_INT_RAW_S)
  414. #define I2C_ARBITRATION_LOST_INT_RAW_V 0x00000001U
  415. #define I2C_ARBITRATION_LOST_INT_RAW_S 5
  416. /** I2C_MST_TXFIFO_UDF_INT_RAW : R/SS/WTC; bitpos: [6]; default: 0;
  417. * The raw interrupt bit for I2C_TRANS_COMPLETE_INT interrupt.
  418. */
  419. #define I2C_MST_TXFIFO_UDF_INT_RAW (BIT(6))
  420. #define I2C_MST_TXFIFO_UDF_INT_RAW_M (I2C_MST_TXFIFO_UDF_INT_RAW_V << I2C_MST_TXFIFO_UDF_INT_RAW_S)
  421. #define I2C_MST_TXFIFO_UDF_INT_RAW_V 0x00000001U
  422. #define I2C_MST_TXFIFO_UDF_INT_RAW_S 6
  423. /** I2C_TRANS_COMPLETE_INT_RAW : R/SS/WTC; bitpos: [7]; default: 0;
  424. * The raw interrupt bit for the I2C_TRANS_COMPLETE_INT interrupt.
  425. */
  426. #define I2C_TRANS_COMPLETE_INT_RAW (BIT(7))
  427. #define I2C_TRANS_COMPLETE_INT_RAW_M (I2C_TRANS_COMPLETE_INT_RAW_V << I2C_TRANS_COMPLETE_INT_RAW_S)
  428. #define I2C_TRANS_COMPLETE_INT_RAW_V 0x00000001U
  429. #define I2C_TRANS_COMPLETE_INT_RAW_S 7
  430. /** I2C_TIME_OUT_INT_RAW : R/SS/WTC; bitpos: [8]; default: 0;
  431. * The raw interrupt bit for the I2C_TIME_OUT_INT interrupt.
  432. */
  433. #define I2C_TIME_OUT_INT_RAW (BIT(8))
  434. #define I2C_TIME_OUT_INT_RAW_M (I2C_TIME_OUT_INT_RAW_V << I2C_TIME_OUT_INT_RAW_S)
  435. #define I2C_TIME_OUT_INT_RAW_V 0x00000001U
  436. #define I2C_TIME_OUT_INT_RAW_S 8
  437. /** I2C_TRANS_START_INT_RAW : R/SS/WTC; bitpos: [9]; default: 0;
  438. * The raw interrupt bit for the I2C_TRANS_START_INT interrupt.
  439. */
  440. #define I2C_TRANS_START_INT_RAW (BIT(9))
  441. #define I2C_TRANS_START_INT_RAW_M (I2C_TRANS_START_INT_RAW_V << I2C_TRANS_START_INT_RAW_S)
  442. #define I2C_TRANS_START_INT_RAW_V 0x00000001U
  443. #define I2C_TRANS_START_INT_RAW_S 9
  444. /** I2C_NACK_INT_RAW : R/SS/WTC; bitpos: [10]; default: 0;
  445. * The raw interrupt bit for I2C_SLAVE_STRETCH_INT interrupt.
  446. */
  447. #define I2C_NACK_INT_RAW (BIT(10))
  448. #define I2C_NACK_INT_RAW_M (I2C_NACK_INT_RAW_V << I2C_NACK_INT_RAW_S)
  449. #define I2C_NACK_INT_RAW_V 0x00000001U
  450. #define I2C_NACK_INT_RAW_S 10
  451. /** I2C_TXFIFO_OVF_INT_RAW : R/SS/WTC; bitpos: [11]; default: 0;
  452. * The raw interrupt bit for I2C_TXFIFO_OVF_INT interrupt.
  453. */
  454. #define I2C_TXFIFO_OVF_INT_RAW (BIT(11))
  455. #define I2C_TXFIFO_OVF_INT_RAW_M (I2C_TXFIFO_OVF_INT_RAW_V << I2C_TXFIFO_OVF_INT_RAW_S)
  456. #define I2C_TXFIFO_OVF_INT_RAW_V 0x00000001U
  457. #define I2C_TXFIFO_OVF_INT_RAW_S 11
  458. /** I2C_RXFIFO_UDF_INT_RAW : R/SS/WTC; bitpos: [12]; default: 0;
  459. * The raw interrupt bit for I2C_RXFIFO_UDF_INT interrupt.
  460. */
  461. #define I2C_RXFIFO_UDF_INT_RAW (BIT(12))
  462. #define I2C_RXFIFO_UDF_INT_RAW_M (I2C_RXFIFO_UDF_INT_RAW_V << I2C_RXFIFO_UDF_INT_RAW_S)
  463. #define I2C_RXFIFO_UDF_INT_RAW_V 0x00000001U
  464. #define I2C_RXFIFO_UDF_INT_RAW_S 12
  465. /** I2C_SCL_ST_TO_INT_RAW : R/SS/WTC; bitpos: [13]; default: 0;
  466. * The raw interrupt bit for I2C_SCL_ST_TO_INT interrupt.
  467. */
  468. #define I2C_SCL_ST_TO_INT_RAW (BIT(13))
  469. #define I2C_SCL_ST_TO_INT_RAW_M (I2C_SCL_ST_TO_INT_RAW_V << I2C_SCL_ST_TO_INT_RAW_S)
  470. #define I2C_SCL_ST_TO_INT_RAW_V 0x00000001U
  471. #define I2C_SCL_ST_TO_INT_RAW_S 13
  472. /** I2C_SCL_MAIN_ST_TO_INT_RAW : R/SS/WTC; bitpos: [14]; default: 0;
  473. * The raw interrupt bit for I2C_SCL_MAIN_ST_TO_INT interrupt.
  474. */
  475. #define I2C_SCL_MAIN_ST_TO_INT_RAW (BIT(14))
  476. #define I2C_SCL_MAIN_ST_TO_INT_RAW_M (I2C_SCL_MAIN_ST_TO_INT_RAW_V << I2C_SCL_MAIN_ST_TO_INT_RAW_S)
  477. #define I2C_SCL_MAIN_ST_TO_INT_RAW_V 0x00000001U
  478. #define I2C_SCL_MAIN_ST_TO_INT_RAW_S 14
  479. /** I2C_DET_START_INT_RAW : R/SS/WTC; bitpos: [15]; default: 0;
  480. * The raw interrupt bit for I2C_DET_START_INT interrupt.
  481. */
  482. #define I2C_DET_START_INT_RAW (BIT(15))
  483. #define I2C_DET_START_INT_RAW_M (I2C_DET_START_INT_RAW_V << I2C_DET_START_INT_RAW_S)
  484. #define I2C_DET_START_INT_RAW_V 0x00000001U
  485. #define I2C_DET_START_INT_RAW_S 15
  486. /** I2C_SLAVE_STRETCH_INT_RAW : R/SS/WTC; bitpos: [16]; default: 0;
  487. * The raw interrupt bit for I2C_SLAVE_STRETCH_INT interrupt.
  488. */
  489. #define I2C_SLAVE_STRETCH_INT_RAW (BIT(16))
  490. #define I2C_SLAVE_STRETCH_INT_RAW_M (I2C_SLAVE_STRETCH_INT_RAW_V << I2C_SLAVE_STRETCH_INT_RAW_S)
  491. #define I2C_SLAVE_STRETCH_INT_RAW_V 0x00000001U
  492. #define I2C_SLAVE_STRETCH_INT_RAW_S 16
  493. /** I2C_GENERAL_CALL_INT_RAW : R/SS/WTC; bitpos: [17]; default: 0;
  494. * The raw interrupt bit for I2C_GENARAL_CALL_INT interrupt.
  495. */
  496. #define I2C_GENERAL_CALL_INT_RAW (BIT(17))
  497. #define I2C_GENERAL_CALL_INT_RAW_M (I2C_GENERAL_CALL_INT_RAW_V << I2C_GENERAL_CALL_INT_RAW_S)
  498. #define I2C_GENERAL_CALL_INT_RAW_V 0x00000001U
  499. #define I2C_GENERAL_CALL_INT_RAW_S 17
  500. /** I2C_SLAVE_ADDR_UNMATCH_INT_RAW : R/SS/WTC; bitpos: [18]; default: 0;
  501. * The raw interrupt bit for I2C_SLAVE_ADDR_UNMATCH_INT_RAW interrupt.
  502. */
  503. #define I2C_SLAVE_ADDR_UNMATCH_INT_RAW (BIT(18))
  504. #define I2C_SLAVE_ADDR_UNMATCH_INT_RAW_M (I2C_SLAVE_ADDR_UNMATCH_INT_RAW_V << I2C_SLAVE_ADDR_UNMATCH_INT_RAW_S)
  505. #define I2C_SLAVE_ADDR_UNMATCH_INT_RAW_V 0x00000001U
  506. #define I2C_SLAVE_ADDR_UNMATCH_INT_RAW_S 18
  507. /** I2C_INT_CLR_REG register
  508. * Interrupt clear bits
  509. */
  510. #define I2C_INT_CLR_REG(i) (REG_I2C_BASE(i) + 0x24)
  511. /** I2C_RXFIFO_WM_INT_CLR : WT; bitpos: [0]; default: 0;
  512. * Set this bit to clear I2C_RXFIFO_WM_INT interrupt.
  513. */
  514. #define I2C_RXFIFO_WM_INT_CLR (BIT(0))
  515. #define I2C_RXFIFO_WM_INT_CLR_M (I2C_RXFIFO_WM_INT_CLR_V << I2C_RXFIFO_WM_INT_CLR_S)
  516. #define I2C_RXFIFO_WM_INT_CLR_V 0x00000001U
  517. #define I2C_RXFIFO_WM_INT_CLR_S 0
  518. /** I2C_TXFIFO_WM_INT_CLR : WT; bitpos: [1]; default: 0;
  519. * Set this bit to clear I2C_TXFIFO_WM_INT interrupt.
  520. */
  521. #define I2C_TXFIFO_WM_INT_CLR (BIT(1))
  522. #define I2C_TXFIFO_WM_INT_CLR_M (I2C_TXFIFO_WM_INT_CLR_V << I2C_TXFIFO_WM_INT_CLR_S)
  523. #define I2C_TXFIFO_WM_INT_CLR_V 0x00000001U
  524. #define I2C_TXFIFO_WM_INT_CLR_S 1
  525. /** I2C_RXFIFO_OVF_INT_CLR : WT; bitpos: [2]; default: 0;
  526. * Set this bit to clear I2C_RXFIFO_OVF_INT interrupt.
  527. */
  528. #define I2C_RXFIFO_OVF_INT_CLR (BIT(2))
  529. #define I2C_RXFIFO_OVF_INT_CLR_M (I2C_RXFIFO_OVF_INT_CLR_V << I2C_RXFIFO_OVF_INT_CLR_S)
  530. #define I2C_RXFIFO_OVF_INT_CLR_V 0x00000001U
  531. #define I2C_RXFIFO_OVF_INT_CLR_S 2
  532. /** I2C_END_DETECT_INT_CLR : WT; bitpos: [3]; default: 0;
  533. * Set this bit to clear the I2C_END_DETECT_INT interrupt.
  534. */
  535. #define I2C_END_DETECT_INT_CLR (BIT(3))
  536. #define I2C_END_DETECT_INT_CLR_M (I2C_END_DETECT_INT_CLR_V << I2C_END_DETECT_INT_CLR_S)
  537. #define I2C_END_DETECT_INT_CLR_V 0x00000001U
  538. #define I2C_END_DETECT_INT_CLR_S 3
  539. /** I2C_BYTE_TRANS_DONE_INT_CLR : WT; bitpos: [4]; default: 0;
  540. * Set this bit to clear the I2C_END_DETECT_INT interrupt.
  541. */
  542. #define I2C_BYTE_TRANS_DONE_INT_CLR (BIT(4))
  543. #define I2C_BYTE_TRANS_DONE_INT_CLR_M (I2C_BYTE_TRANS_DONE_INT_CLR_V << I2C_BYTE_TRANS_DONE_INT_CLR_S)
  544. #define I2C_BYTE_TRANS_DONE_INT_CLR_V 0x00000001U
  545. #define I2C_BYTE_TRANS_DONE_INT_CLR_S 4
  546. /** I2C_ARBITRATION_LOST_INT_CLR : WT; bitpos: [5]; default: 0;
  547. * Set this bit to clear the I2C_ARBITRATION_LOST_INT interrupt.
  548. */
  549. #define I2C_ARBITRATION_LOST_INT_CLR (BIT(5))
  550. #define I2C_ARBITRATION_LOST_INT_CLR_M (I2C_ARBITRATION_LOST_INT_CLR_V << I2C_ARBITRATION_LOST_INT_CLR_S)
  551. #define I2C_ARBITRATION_LOST_INT_CLR_V 0x00000001U
  552. #define I2C_ARBITRATION_LOST_INT_CLR_S 5
  553. /** I2C_MST_TXFIFO_UDF_INT_CLR : WT; bitpos: [6]; default: 0;
  554. * Set this bit to clear I2C_TRANS_COMPLETE_INT interrupt.
  555. */
  556. #define I2C_MST_TXFIFO_UDF_INT_CLR (BIT(6))
  557. #define I2C_MST_TXFIFO_UDF_INT_CLR_M (I2C_MST_TXFIFO_UDF_INT_CLR_V << I2C_MST_TXFIFO_UDF_INT_CLR_S)
  558. #define I2C_MST_TXFIFO_UDF_INT_CLR_V 0x00000001U
  559. #define I2C_MST_TXFIFO_UDF_INT_CLR_S 6
  560. /** I2C_TRANS_COMPLETE_INT_CLR : WT; bitpos: [7]; default: 0;
  561. * Set this bit to clear the I2C_TRANS_COMPLETE_INT interrupt.
  562. */
  563. #define I2C_TRANS_COMPLETE_INT_CLR (BIT(7))
  564. #define I2C_TRANS_COMPLETE_INT_CLR_M (I2C_TRANS_COMPLETE_INT_CLR_V << I2C_TRANS_COMPLETE_INT_CLR_S)
  565. #define I2C_TRANS_COMPLETE_INT_CLR_V 0x00000001U
  566. #define I2C_TRANS_COMPLETE_INT_CLR_S 7
  567. /** I2C_TIME_OUT_INT_CLR : WT; bitpos: [8]; default: 0;
  568. * Set this bit to clear the I2C_TIME_OUT_INT interrupt.
  569. */
  570. #define I2C_TIME_OUT_INT_CLR (BIT(8))
  571. #define I2C_TIME_OUT_INT_CLR_M (I2C_TIME_OUT_INT_CLR_V << I2C_TIME_OUT_INT_CLR_S)
  572. #define I2C_TIME_OUT_INT_CLR_V 0x00000001U
  573. #define I2C_TIME_OUT_INT_CLR_S 8
  574. /** I2C_TRANS_START_INT_CLR : WT; bitpos: [9]; default: 0;
  575. * Set this bit to clear the I2C_TRANS_START_INT interrupt.
  576. */
  577. #define I2C_TRANS_START_INT_CLR (BIT(9))
  578. #define I2C_TRANS_START_INT_CLR_M (I2C_TRANS_START_INT_CLR_V << I2C_TRANS_START_INT_CLR_S)
  579. #define I2C_TRANS_START_INT_CLR_V 0x00000001U
  580. #define I2C_TRANS_START_INT_CLR_S 9
  581. /** I2C_NACK_INT_CLR : WT; bitpos: [10]; default: 0;
  582. * Set this bit to clear I2C_SLAVE_STRETCH_INT interrupt.
  583. */
  584. #define I2C_NACK_INT_CLR (BIT(10))
  585. #define I2C_NACK_INT_CLR_M (I2C_NACK_INT_CLR_V << I2C_NACK_INT_CLR_S)
  586. #define I2C_NACK_INT_CLR_V 0x00000001U
  587. #define I2C_NACK_INT_CLR_S 10
  588. /** I2C_TXFIFO_OVF_INT_CLR : WT; bitpos: [11]; default: 0;
  589. * Set this bit to clear I2C_TXFIFO_OVF_INT interrupt.
  590. */
  591. #define I2C_TXFIFO_OVF_INT_CLR (BIT(11))
  592. #define I2C_TXFIFO_OVF_INT_CLR_M (I2C_TXFIFO_OVF_INT_CLR_V << I2C_TXFIFO_OVF_INT_CLR_S)
  593. #define I2C_TXFIFO_OVF_INT_CLR_V 0x00000001U
  594. #define I2C_TXFIFO_OVF_INT_CLR_S 11
  595. /** I2C_RXFIFO_UDF_INT_CLR : WT; bitpos: [12]; default: 0;
  596. * Set this bit to clear I2C_RXFIFO_UDF_INT interrupt.
  597. */
  598. #define I2C_RXFIFO_UDF_INT_CLR (BIT(12))
  599. #define I2C_RXFIFO_UDF_INT_CLR_M (I2C_RXFIFO_UDF_INT_CLR_V << I2C_RXFIFO_UDF_INT_CLR_S)
  600. #define I2C_RXFIFO_UDF_INT_CLR_V 0x00000001U
  601. #define I2C_RXFIFO_UDF_INT_CLR_S 12
  602. /** I2C_SCL_ST_TO_INT_CLR : WT; bitpos: [13]; default: 0;
  603. * Set this bit to clear I2C_SCL_ST_TO_INT interrupt.
  604. */
  605. #define I2C_SCL_ST_TO_INT_CLR (BIT(13))
  606. #define I2C_SCL_ST_TO_INT_CLR_M (I2C_SCL_ST_TO_INT_CLR_V << I2C_SCL_ST_TO_INT_CLR_S)
  607. #define I2C_SCL_ST_TO_INT_CLR_V 0x00000001U
  608. #define I2C_SCL_ST_TO_INT_CLR_S 13
  609. /** I2C_SCL_MAIN_ST_TO_INT_CLR : WT; bitpos: [14]; default: 0;
  610. * Set this bit to clear I2C_SCL_MAIN_ST_TO_INT interrupt.
  611. */
  612. #define I2C_SCL_MAIN_ST_TO_INT_CLR (BIT(14))
  613. #define I2C_SCL_MAIN_ST_TO_INT_CLR_M (I2C_SCL_MAIN_ST_TO_INT_CLR_V << I2C_SCL_MAIN_ST_TO_INT_CLR_S)
  614. #define I2C_SCL_MAIN_ST_TO_INT_CLR_V 0x00000001U
  615. #define I2C_SCL_MAIN_ST_TO_INT_CLR_S 14
  616. /** I2C_DET_START_INT_CLR : WT; bitpos: [15]; default: 0;
  617. * Set this bit to clear I2C_DET_START_INT interrupt.
  618. */
  619. #define I2C_DET_START_INT_CLR (BIT(15))
  620. #define I2C_DET_START_INT_CLR_M (I2C_DET_START_INT_CLR_V << I2C_DET_START_INT_CLR_S)
  621. #define I2C_DET_START_INT_CLR_V 0x00000001U
  622. #define I2C_DET_START_INT_CLR_S 15
  623. /** I2C_SLAVE_STRETCH_INT_CLR : WT; bitpos: [16]; default: 0;
  624. * Set this bit to clear I2C_SLAVE_STRETCH_INT interrupt.
  625. */
  626. #define I2C_SLAVE_STRETCH_INT_CLR (BIT(16))
  627. #define I2C_SLAVE_STRETCH_INT_CLR_M (I2C_SLAVE_STRETCH_INT_CLR_V << I2C_SLAVE_STRETCH_INT_CLR_S)
  628. #define I2C_SLAVE_STRETCH_INT_CLR_V 0x00000001U
  629. #define I2C_SLAVE_STRETCH_INT_CLR_S 16
  630. /** I2C_GENERAL_CALL_INT_CLR : WT; bitpos: [17]; default: 0;
  631. * Set this bit to clear I2C_GENARAL_CALL_INT interrupt.
  632. */
  633. #define I2C_GENERAL_CALL_INT_CLR (BIT(17))
  634. #define I2C_GENERAL_CALL_INT_CLR_M (I2C_GENERAL_CALL_INT_CLR_V << I2C_GENERAL_CALL_INT_CLR_S)
  635. #define I2C_GENERAL_CALL_INT_CLR_V 0x00000001U
  636. #define I2C_GENERAL_CALL_INT_CLR_S 17
  637. /** I2C_SLAVE_ADDR_UNMATCH_INT_CLR : WT; bitpos: [18]; default: 0;
  638. * Set this bit to clear I2C_SLAVE_ADDR_UNMATCH_INT_RAW interrupt.
  639. */
  640. #define I2C_SLAVE_ADDR_UNMATCH_INT_CLR (BIT(18))
  641. #define I2C_SLAVE_ADDR_UNMATCH_INT_CLR_M (I2C_SLAVE_ADDR_UNMATCH_INT_CLR_V << I2C_SLAVE_ADDR_UNMATCH_INT_CLR_S)
  642. #define I2C_SLAVE_ADDR_UNMATCH_INT_CLR_V 0x00000001U
  643. #define I2C_SLAVE_ADDR_UNMATCH_INT_CLR_S 18
  644. /** I2C_INT_ENA_REG register
  645. * Interrupt enable bits
  646. */
  647. #define I2C_INT_ENA_REG(i) (REG_I2C_BASE(i) + 0x28)
  648. /** I2C_RXFIFO_WM_INT_ENA : R/W; bitpos: [0]; default: 0;
  649. * The interrupt enable bit for I2C_RXFIFO_WM_INT interrupt.
  650. */
  651. #define I2C_RXFIFO_WM_INT_ENA (BIT(0))
  652. #define I2C_RXFIFO_WM_INT_ENA_M (I2C_RXFIFO_WM_INT_ENA_V << I2C_RXFIFO_WM_INT_ENA_S)
  653. #define I2C_RXFIFO_WM_INT_ENA_V 0x00000001U
  654. #define I2C_RXFIFO_WM_INT_ENA_S 0
  655. /** I2C_TXFIFO_WM_INT_ENA : R/W; bitpos: [1]; default: 0;
  656. * The interrupt enable bit for I2C_TXFIFO_WM_INT interrupt.
  657. */
  658. #define I2C_TXFIFO_WM_INT_ENA (BIT(1))
  659. #define I2C_TXFIFO_WM_INT_ENA_M (I2C_TXFIFO_WM_INT_ENA_V << I2C_TXFIFO_WM_INT_ENA_S)
  660. #define I2C_TXFIFO_WM_INT_ENA_V 0x00000001U
  661. #define I2C_TXFIFO_WM_INT_ENA_S 1
  662. /** I2C_RXFIFO_OVF_INT_ENA : R/W; bitpos: [2]; default: 0;
  663. * The interrupt enable bit for I2C_RXFIFO_OVF_INT interrupt.
  664. */
  665. #define I2C_RXFIFO_OVF_INT_ENA (BIT(2))
  666. #define I2C_RXFIFO_OVF_INT_ENA_M (I2C_RXFIFO_OVF_INT_ENA_V << I2C_RXFIFO_OVF_INT_ENA_S)
  667. #define I2C_RXFIFO_OVF_INT_ENA_V 0x00000001U
  668. #define I2C_RXFIFO_OVF_INT_ENA_S 2
  669. /** I2C_END_DETECT_INT_ENA : R/W; bitpos: [3]; default: 0;
  670. * The interrupt enable bit for the I2C_END_DETECT_INT interrupt.
  671. */
  672. #define I2C_END_DETECT_INT_ENA (BIT(3))
  673. #define I2C_END_DETECT_INT_ENA_M (I2C_END_DETECT_INT_ENA_V << I2C_END_DETECT_INT_ENA_S)
  674. #define I2C_END_DETECT_INT_ENA_V 0x00000001U
  675. #define I2C_END_DETECT_INT_ENA_S 3
  676. /** I2C_BYTE_TRANS_DONE_INT_ENA : R/W; bitpos: [4]; default: 0;
  677. * The interrupt enable bit for the I2C_END_DETECT_INT interrupt.
  678. */
  679. #define I2C_BYTE_TRANS_DONE_INT_ENA (BIT(4))
  680. #define I2C_BYTE_TRANS_DONE_INT_ENA_M (I2C_BYTE_TRANS_DONE_INT_ENA_V << I2C_BYTE_TRANS_DONE_INT_ENA_S)
  681. #define I2C_BYTE_TRANS_DONE_INT_ENA_V 0x00000001U
  682. #define I2C_BYTE_TRANS_DONE_INT_ENA_S 4
  683. /** I2C_ARBITRATION_LOST_INT_ENA : R/W; bitpos: [5]; default: 0;
  684. * The interrupt enable bit for the I2C_ARBITRATION_LOST_INT interrupt.
  685. */
  686. #define I2C_ARBITRATION_LOST_INT_ENA (BIT(5))
  687. #define I2C_ARBITRATION_LOST_INT_ENA_M (I2C_ARBITRATION_LOST_INT_ENA_V << I2C_ARBITRATION_LOST_INT_ENA_S)
  688. #define I2C_ARBITRATION_LOST_INT_ENA_V 0x00000001U
  689. #define I2C_ARBITRATION_LOST_INT_ENA_S 5
  690. /** I2C_MST_TXFIFO_UDF_INT_ENA : R/W; bitpos: [6]; default: 0;
  691. * The interrupt enable bit for I2C_TRANS_COMPLETE_INT interrupt.
  692. */
  693. #define I2C_MST_TXFIFO_UDF_INT_ENA (BIT(6))
  694. #define I2C_MST_TXFIFO_UDF_INT_ENA_M (I2C_MST_TXFIFO_UDF_INT_ENA_V << I2C_MST_TXFIFO_UDF_INT_ENA_S)
  695. #define I2C_MST_TXFIFO_UDF_INT_ENA_V 0x00000001U
  696. #define I2C_MST_TXFIFO_UDF_INT_ENA_S 6
  697. /** I2C_TRANS_COMPLETE_INT_ENA : R/W; bitpos: [7]; default: 0;
  698. * The interrupt enable bit for the I2C_TRANS_COMPLETE_INT interrupt.
  699. */
  700. #define I2C_TRANS_COMPLETE_INT_ENA (BIT(7))
  701. #define I2C_TRANS_COMPLETE_INT_ENA_M (I2C_TRANS_COMPLETE_INT_ENA_V << I2C_TRANS_COMPLETE_INT_ENA_S)
  702. #define I2C_TRANS_COMPLETE_INT_ENA_V 0x00000001U
  703. #define I2C_TRANS_COMPLETE_INT_ENA_S 7
  704. /** I2C_TIME_OUT_INT_ENA : R/W; bitpos: [8]; default: 0;
  705. * The interrupt enable bit for the I2C_TIME_OUT_INT interrupt.
  706. */
  707. #define I2C_TIME_OUT_INT_ENA (BIT(8))
  708. #define I2C_TIME_OUT_INT_ENA_M (I2C_TIME_OUT_INT_ENA_V << I2C_TIME_OUT_INT_ENA_S)
  709. #define I2C_TIME_OUT_INT_ENA_V 0x00000001U
  710. #define I2C_TIME_OUT_INT_ENA_S 8
  711. /** I2C_TRANS_START_INT_ENA : R/W; bitpos: [9]; default: 0;
  712. * The interrupt enable bit for the I2C_TRANS_START_INT interrupt.
  713. */
  714. #define I2C_TRANS_START_INT_ENA (BIT(9))
  715. #define I2C_TRANS_START_INT_ENA_M (I2C_TRANS_START_INT_ENA_V << I2C_TRANS_START_INT_ENA_S)
  716. #define I2C_TRANS_START_INT_ENA_V 0x00000001U
  717. #define I2C_TRANS_START_INT_ENA_S 9
  718. /** I2C_NACK_INT_ENA : R/W; bitpos: [10]; default: 0;
  719. * The interrupt enable bit for I2C_SLAVE_STRETCH_INT interrupt.
  720. */
  721. #define I2C_NACK_INT_ENA (BIT(10))
  722. #define I2C_NACK_INT_ENA_M (I2C_NACK_INT_ENA_V << I2C_NACK_INT_ENA_S)
  723. #define I2C_NACK_INT_ENA_V 0x00000001U
  724. #define I2C_NACK_INT_ENA_S 10
  725. /** I2C_TXFIFO_OVF_INT_ENA : R/W; bitpos: [11]; default: 0;
  726. * The interrupt enable bit for I2C_TXFIFO_OVF_INT interrupt.
  727. */
  728. #define I2C_TXFIFO_OVF_INT_ENA (BIT(11))
  729. #define I2C_TXFIFO_OVF_INT_ENA_M (I2C_TXFIFO_OVF_INT_ENA_V << I2C_TXFIFO_OVF_INT_ENA_S)
  730. #define I2C_TXFIFO_OVF_INT_ENA_V 0x00000001U
  731. #define I2C_TXFIFO_OVF_INT_ENA_S 11
  732. /** I2C_RXFIFO_UDF_INT_ENA : R/W; bitpos: [12]; default: 0;
  733. * The interrupt enable bit for I2C_RXFIFO_UDF_INT interrupt.
  734. */
  735. #define I2C_RXFIFO_UDF_INT_ENA (BIT(12))
  736. #define I2C_RXFIFO_UDF_INT_ENA_M (I2C_RXFIFO_UDF_INT_ENA_V << I2C_RXFIFO_UDF_INT_ENA_S)
  737. #define I2C_RXFIFO_UDF_INT_ENA_V 0x00000001U
  738. #define I2C_RXFIFO_UDF_INT_ENA_S 12
  739. /** I2C_SCL_ST_TO_INT_ENA : R/W; bitpos: [13]; default: 0;
  740. * The interrupt enable bit for I2C_SCL_ST_TO_INT interrupt.
  741. */
  742. #define I2C_SCL_ST_TO_INT_ENA (BIT(13))
  743. #define I2C_SCL_ST_TO_INT_ENA_M (I2C_SCL_ST_TO_INT_ENA_V << I2C_SCL_ST_TO_INT_ENA_S)
  744. #define I2C_SCL_ST_TO_INT_ENA_V 0x00000001U
  745. #define I2C_SCL_ST_TO_INT_ENA_S 13
  746. /** I2C_SCL_MAIN_ST_TO_INT_ENA : R/W; bitpos: [14]; default: 0;
  747. * The interrupt enable bit for I2C_SCL_MAIN_ST_TO_INT interrupt.
  748. */
  749. #define I2C_SCL_MAIN_ST_TO_INT_ENA (BIT(14))
  750. #define I2C_SCL_MAIN_ST_TO_INT_ENA_M (I2C_SCL_MAIN_ST_TO_INT_ENA_V << I2C_SCL_MAIN_ST_TO_INT_ENA_S)
  751. #define I2C_SCL_MAIN_ST_TO_INT_ENA_V 0x00000001U
  752. #define I2C_SCL_MAIN_ST_TO_INT_ENA_S 14
  753. /** I2C_DET_START_INT_ENA : R/W; bitpos: [15]; default: 0;
  754. * The interrupt enable bit for I2C_DET_START_INT interrupt.
  755. */
  756. #define I2C_DET_START_INT_ENA (BIT(15))
  757. #define I2C_DET_START_INT_ENA_M (I2C_DET_START_INT_ENA_V << I2C_DET_START_INT_ENA_S)
  758. #define I2C_DET_START_INT_ENA_V 0x00000001U
  759. #define I2C_DET_START_INT_ENA_S 15
  760. /** I2C_SLAVE_STRETCH_INT_ENA : R/W; bitpos: [16]; default: 0;
  761. * The interrupt enable bit for I2C_SLAVE_STRETCH_INT interrupt.
  762. */
  763. #define I2C_SLAVE_STRETCH_INT_ENA (BIT(16))
  764. #define I2C_SLAVE_STRETCH_INT_ENA_M (I2C_SLAVE_STRETCH_INT_ENA_V << I2C_SLAVE_STRETCH_INT_ENA_S)
  765. #define I2C_SLAVE_STRETCH_INT_ENA_V 0x00000001U
  766. #define I2C_SLAVE_STRETCH_INT_ENA_S 16
  767. /** I2C_GENERAL_CALL_INT_ENA : R/W; bitpos: [17]; default: 0;
  768. * The interrupt enable bit for I2C_GENARAL_CALL_INT interrupt.
  769. */
  770. #define I2C_GENERAL_CALL_INT_ENA (BIT(17))
  771. #define I2C_GENERAL_CALL_INT_ENA_M (I2C_GENERAL_CALL_INT_ENA_V << I2C_GENERAL_CALL_INT_ENA_S)
  772. #define I2C_GENERAL_CALL_INT_ENA_V 0x00000001U
  773. #define I2C_GENERAL_CALL_INT_ENA_S 17
  774. /** I2C_SLAVE_ADDR_UNMATCH_INT_ENA : R/W; bitpos: [18]; default: 0;
  775. * The interrupt enable bit for I2C_SLAVE_ADDR_UNMATCH_INT interrupt.
  776. */
  777. #define I2C_SLAVE_ADDR_UNMATCH_INT_ENA (BIT(18))
  778. #define I2C_SLAVE_ADDR_UNMATCH_INT_ENA_M (I2C_SLAVE_ADDR_UNMATCH_INT_ENA_V << I2C_SLAVE_ADDR_UNMATCH_INT_ENA_S)
  779. #define I2C_SLAVE_ADDR_UNMATCH_INT_ENA_V 0x00000001U
  780. #define I2C_SLAVE_ADDR_UNMATCH_INT_ENA_S 18
  781. /** I2C_INT_STATUS_REG register
  782. * Status of captured I2C communication events
  783. */
  784. #define I2C_INT_STATUS_REG(i) (REG_I2C_BASE(i) + 0x2c)
  785. /** I2C_RXFIFO_WM_INT_ST : RO; bitpos: [0]; default: 0;
  786. * The masked interrupt status bit for I2C_RXFIFO_WM_INT interrupt.
  787. */
  788. #define I2C_RXFIFO_WM_INT_ST (BIT(0))
  789. #define I2C_RXFIFO_WM_INT_ST_M (I2C_RXFIFO_WM_INT_ST_V << I2C_RXFIFO_WM_INT_ST_S)
  790. #define I2C_RXFIFO_WM_INT_ST_V 0x00000001U
  791. #define I2C_RXFIFO_WM_INT_ST_S 0
  792. /** I2C_TXFIFO_WM_INT_ST : RO; bitpos: [1]; default: 0;
  793. * The masked interrupt status bit for I2C_TXFIFO_WM_INT interrupt.
  794. */
  795. #define I2C_TXFIFO_WM_INT_ST (BIT(1))
  796. #define I2C_TXFIFO_WM_INT_ST_M (I2C_TXFIFO_WM_INT_ST_V << I2C_TXFIFO_WM_INT_ST_S)
  797. #define I2C_TXFIFO_WM_INT_ST_V 0x00000001U
  798. #define I2C_TXFIFO_WM_INT_ST_S 1
  799. /** I2C_RXFIFO_OVF_INT_ST : RO; bitpos: [2]; default: 0;
  800. * The masked interrupt status bit for I2C_RXFIFO_OVF_INT interrupt.
  801. */
  802. #define I2C_RXFIFO_OVF_INT_ST (BIT(2))
  803. #define I2C_RXFIFO_OVF_INT_ST_M (I2C_RXFIFO_OVF_INT_ST_V << I2C_RXFIFO_OVF_INT_ST_S)
  804. #define I2C_RXFIFO_OVF_INT_ST_V 0x00000001U
  805. #define I2C_RXFIFO_OVF_INT_ST_S 2
  806. /** I2C_END_DETECT_INT_ST : RO; bitpos: [3]; default: 0;
  807. * The masked interrupt status bit for the I2C_END_DETECT_INT interrupt.
  808. */
  809. #define I2C_END_DETECT_INT_ST (BIT(3))
  810. #define I2C_END_DETECT_INT_ST_M (I2C_END_DETECT_INT_ST_V << I2C_END_DETECT_INT_ST_S)
  811. #define I2C_END_DETECT_INT_ST_V 0x00000001U
  812. #define I2C_END_DETECT_INT_ST_S 3
  813. /** I2C_BYTE_TRANS_DONE_INT_ST : RO; bitpos: [4]; default: 0;
  814. * The masked interrupt status bit for the I2C_END_DETECT_INT interrupt.
  815. */
  816. #define I2C_BYTE_TRANS_DONE_INT_ST (BIT(4))
  817. #define I2C_BYTE_TRANS_DONE_INT_ST_M (I2C_BYTE_TRANS_DONE_INT_ST_V << I2C_BYTE_TRANS_DONE_INT_ST_S)
  818. #define I2C_BYTE_TRANS_DONE_INT_ST_V 0x00000001U
  819. #define I2C_BYTE_TRANS_DONE_INT_ST_S 4
  820. /** I2C_ARBITRATION_LOST_INT_ST : RO; bitpos: [5]; default: 0;
  821. * The masked interrupt status bit for the I2C_ARBITRATION_LOST_INT interrupt.
  822. */
  823. #define I2C_ARBITRATION_LOST_INT_ST (BIT(5))
  824. #define I2C_ARBITRATION_LOST_INT_ST_M (I2C_ARBITRATION_LOST_INT_ST_V << I2C_ARBITRATION_LOST_INT_ST_S)
  825. #define I2C_ARBITRATION_LOST_INT_ST_V 0x00000001U
  826. #define I2C_ARBITRATION_LOST_INT_ST_S 5
  827. /** I2C_MST_TXFIFO_UDF_INT_ST : RO; bitpos: [6]; default: 0;
  828. * The masked interrupt status bit for I2C_TRANS_COMPLETE_INT interrupt.
  829. */
  830. #define I2C_MST_TXFIFO_UDF_INT_ST (BIT(6))
  831. #define I2C_MST_TXFIFO_UDF_INT_ST_M (I2C_MST_TXFIFO_UDF_INT_ST_V << I2C_MST_TXFIFO_UDF_INT_ST_S)
  832. #define I2C_MST_TXFIFO_UDF_INT_ST_V 0x00000001U
  833. #define I2C_MST_TXFIFO_UDF_INT_ST_S 6
  834. /** I2C_TRANS_COMPLETE_INT_ST : RO; bitpos: [7]; default: 0;
  835. * The masked interrupt status bit for the I2C_TRANS_COMPLETE_INT interrupt.
  836. */
  837. #define I2C_TRANS_COMPLETE_INT_ST (BIT(7))
  838. #define I2C_TRANS_COMPLETE_INT_ST_M (I2C_TRANS_COMPLETE_INT_ST_V << I2C_TRANS_COMPLETE_INT_ST_S)
  839. #define I2C_TRANS_COMPLETE_INT_ST_V 0x00000001U
  840. #define I2C_TRANS_COMPLETE_INT_ST_S 7
  841. /** I2C_TIME_OUT_INT_ST : RO; bitpos: [8]; default: 0;
  842. * The masked interrupt status bit for the I2C_TIME_OUT_INT interrupt.
  843. */
  844. #define I2C_TIME_OUT_INT_ST (BIT(8))
  845. #define I2C_TIME_OUT_INT_ST_M (I2C_TIME_OUT_INT_ST_V << I2C_TIME_OUT_INT_ST_S)
  846. #define I2C_TIME_OUT_INT_ST_V 0x00000001U
  847. #define I2C_TIME_OUT_INT_ST_S 8
  848. /** I2C_TRANS_START_INT_ST : RO; bitpos: [9]; default: 0;
  849. * The masked interrupt status bit for the I2C_TRANS_START_INT interrupt.
  850. */
  851. #define I2C_TRANS_START_INT_ST (BIT(9))
  852. #define I2C_TRANS_START_INT_ST_M (I2C_TRANS_START_INT_ST_V << I2C_TRANS_START_INT_ST_S)
  853. #define I2C_TRANS_START_INT_ST_V 0x00000001U
  854. #define I2C_TRANS_START_INT_ST_S 9
  855. /** I2C_NACK_INT_ST : RO; bitpos: [10]; default: 0;
  856. * The masked interrupt status bit for I2C_SLAVE_STRETCH_INT interrupt.
  857. */
  858. #define I2C_NACK_INT_ST (BIT(10))
  859. #define I2C_NACK_INT_ST_M (I2C_NACK_INT_ST_V << I2C_NACK_INT_ST_S)
  860. #define I2C_NACK_INT_ST_V 0x00000001U
  861. #define I2C_NACK_INT_ST_S 10
  862. /** I2C_TXFIFO_OVF_INT_ST : RO; bitpos: [11]; default: 0;
  863. * The masked interrupt status bit for I2C_TXFIFO_OVF_INT interrupt.
  864. */
  865. #define I2C_TXFIFO_OVF_INT_ST (BIT(11))
  866. #define I2C_TXFIFO_OVF_INT_ST_M (I2C_TXFIFO_OVF_INT_ST_V << I2C_TXFIFO_OVF_INT_ST_S)
  867. #define I2C_TXFIFO_OVF_INT_ST_V 0x00000001U
  868. #define I2C_TXFIFO_OVF_INT_ST_S 11
  869. /** I2C_RXFIFO_UDF_INT_ST : RO; bitpos: [12]; default: 0;
  870. * The masked interrupt status bit for I2C_RXFIFO_UDF_INT interrupt.
  871. */
  872. #define I2C_RXFIFO_UDF_INT_ST (BIT(12))
  873. #define I2C_RXFIFO_UDF_INT_ST_M (I2C_RXFIFO_UDF_INT_ST_V << I2C_RXFIFO_UDF_INT_ST_S)
  874. #define I2C_RXFIFO_UDF_INT_ST_V 0x00000001U
  875. #define I2C_RXFIFO_UDF_INT_ST_S 12
  876. /** I2C_SCL_ST_TO_INT_ST : RO; bitpos: [13]; default: 0;
  877. * The masked interrupt status bit for I2C_SCL_ST_TO_INT interrupt.
  878. */
  879. #define I2C_SCL_ST_TO_INT_ST (BIT(13))
  880. #define I2C_SCL_ST_TO_INT_ST_M (I2C_SCL_ST_TO_INT_ST_V << I2C_SCL_ST_TO_INT_ST_S)
  881. #define I2C_SCL_ST_TO_INT_ST_V 0x00000001U
  882. #define I2C_SCL_ST_TO_INT_ST_S 13
  883. /** I2C_SCL_MAIN_ST_TO_INT_ST : RO; bitpos: [14]; default: 0;
  884. * The masked interrupt status bit for I2C_SCL_MAIN_ST_TO_INT interrupt.
  885. */
  886. #define I2C_SCL_MAIN_ST_TO_INT_ST (BIT(14))
  887. #define I2C_SCL_MAIN_ST_TO_INT_ST_M (I2C_SCL_MAIN_ST_TO_INT_ST_V << I2C_SCL_MAIN_ST_TO_INT_ST_S)
  888. #define I2C_SCL_MAIN_ST_TO_INT_ST_V 0x00000001U
  889. #define I2C_SCL_MAIN_ST_TO_INT_ST_S 14
  890. /** I2C_DET_START_INT_ST : RO; bitpos: [15]; default: 0;
  891. * The masked interrupt status bit for I2C_DET_START_INT interrupt.
  892. */
  893. #define I2C_DET_START_INT_ST (BIT(15))
  894. #define I2C_DET_START_INT_ST_M (I2C_DET_START_INT_ST_V << I2C_DET_START_INT_ST_S)
  895. #define I2C_DET_START_INT_ST_V 0x00000001U
  896. #define I2C_DET_START_INT_ST_S 15
  897. /** I2C_SLAVE_STRETCH_INT_ST : RO; bitpos: [16]; default: 0;
  898. * The masked interrupt status bit for I2C_SLAVE_STRETCH_INT interrupt.
  899. */
  900. #define I2C_SLAVE_STRETCH_INT_ST (BIT(16))
  901. #define I2C_SLAVE_STRETCH_INT_ST_M (I2C_SLAVE_STRETCH_INT_ST_V << I2C_SLAVE_STRETCH_INT_ST_S)
  902. #define I2C_SLAVE_STRETCH_INT_ST_V 0x00000001U
  903. #define I2C_SLAVE_STRETCH_INT_ST_S 16
  904. /** I2C_GENERAL_CALL_INT_ST : RO; bitpos: [17]; default: 0;
  905. * The masked interrupt status bit for I2C_GENARAL_CALL_INT interrupt.
  906. */
  907. #define I2C_GENERAL_CALL_INT_ST (BIT(17))
  908. #define I2C_GENERAL_CALL_INT_ST_M (I2C_GENERAL_CALL_INT_ST_V << I2C_GENERAL_CALL_INT_ST_S)
  909. #define I2C_GENERAL_CALL_INT_ST_V 0x00000001U
  910. #define I2C_GENERAL_CALL_INT_ST_S 17
  911. /** I2C_SLAVE_ADDR_UNMATCH_INT_ST : RO; bitpos: [18]; default: 0;
  912. * The masked interrupt status bit for I2C_SLAVE_ADDR_UNMATCH_INT interrupt.
  913. */
  914. #define I2C_SLAVE_ADDR_UNMATCH_INT_ST (BIT(18))
  915. #define I2C_SLAVE_ADDR_UNMATCH_INT_ST_M (I2C_SLAVE_ADDR_UNMATCH_INT_ST_V << I2C_SLAVE_ADDR_UNMATCH_INT_ST_S)
  916. #define I2C_SLAVE_ADDR_UNMATCH_INT_ST_V 0x00000001U
  917. #define I2C_SLAVE_ADDR_UNMATCH_INT_ST_S 18
  918. /** I2C_SDA_HOLD_REG register
  919. * Configures the hold time after a negative SCL edge.
  920. */
  921. #define I2C_SDA_HOLD_REG(i) (REG_I2C_BASE(i) + 0x30)
  922. /** I2C_SDA_HOLD_TIME : R/W; bitpos: [8:0]; default: 0;
  923. * This register is used to configure the time to hold the data after the negative
  924. * edge of SCL, in I2C module clock cycles.
  925. */
  926. #define I2C_SDA_HOLD_TIME 0x000001FFU
  927. #define I2C_SDA_HOLD_TIME_M (I2C_SDA_HOLD_TIME_V << I2C_SDA_HOLD_TIME_S)
  928. #define I2C_SDA_HOLD_TIME_V 0x000001FFU
  929. #define I2C_SDA_HOLD_TIME_S 0
  930. /** I2C_SDA_SAMPLE_REG register
  931. * Configures the sample time after a positive SCL edge.
  932. */
  933. #define I2C_SDA_SAMPLE_REG(i) (REG_I2C_BASE(i) + 0x34)
  934. /** I2C_SDA_SAMPLE_TIME : R/W; bitpos: [8:0]; default: 0;
  935. * This register is used to configure for how long SDA is sampled, in I2C module clock
  936. * cycles.
  937. */
  938. #define I2C_SDA_SAMPLE_TIME 0x000001FFU
  939. #define I2C_SDA_SAMPLE_TIME_M (I2C_SDA_SAMPLE_TIME_V << I2C_SDA_SAMPLE_TIME_S)
  940. #define I2C_SDA_SAMPLE_TIME_V 0x000001FFU
  941. #define I2C_SDA_SAMPLE_TIME_S 0
  942. /** I2C_SCL_HIGH_PERIOD_REG register
  943. * Configures the high level width of SCL
  944. */
  945. #define I2C_SCL_HIGH_PERIOD_REG(i) (REG_I2C_BASE(i) + 0x38)
  946. /** I2C_SCL_HIGH_PERIOD : R/W; bitpos: [8:0]; default: 0;
  947. * This register is used to configure for how long SCL remains high in master mode, in
  948. * I2C module clock cycles.
  949. */
  950. #define I2C_SCL_HIGH_PERIOD 0x000001FFU
  951. #define I2C_SCL_HIGH_PERIOD_M (I2C_SCL_HIGH_PERIOD_V << I2C_SCL_HIGH_PERIOD_S)
  952. #define I2C_SCL_HIGH_PERIOD_V 0x000001FFU
  953. #define I2C_SCL_HIGH_PERIOD_S 0
  954. /** I2C_SCL_WAIT_HIGH_PERIOD : R/W; bitpos: [15:9]; default: 0;
  955. * This register is used to configure for the SCL_FSM's waiting period for SCL high
  956. * level in master mode, in I2C module clock cycles.
  957. */
  958. #define I2C_SCL_WAIT_HIGH_PERIOD 0x0000007FU
  959. #define I2C_SCL_WAIT_HIGH_PERIOD_M (I2C_SCL_WAIT_HIGH_PERIOD_V << I2C_SCL_WAIT_HIGH_PERIOD_S)
  960. #define I2C_SCL_WAIT_HIGH_PERIOD_V 0x0000007FU
  961. #define I2C_SCL_WAIT_HIGH_PERIOD_S 9
  962. /** I2C_SCL_START_HOLD_REG register
  963. * Configures the delay between the SDA and SCL negative edge for a start condition
  964. */
  965. #define I2C_SCL_START_HOLD_REG(i) (REG_I2C_BASE(i) + 0x40)
  966. /** I2C_SCL_START_HOLD_TIME : R/W; bitpos: [8:0]; default: 8;
  967. * This register is used to configure the time between the negative edge
  968. * of SDA and the negative edge of SCL for a START condition, in I2C module clock
  969. * cycles.
  970. */
  971. #define I2C_SCL_START_HOLD_TIME 0x000001FFU
  972. #define I2C_SCL_START_HOLD_TIME_M (I2C_SCL_START_HOLD_TIME_V << I2C_SCL_START_HOLD_TIME_S)
  973. #define I2C_SCL_START_HOLD_TIME_V 0x000001FFU
  974. #define I2C_SCL_START_HOLD_TIME_S 0
  975. /** I2C_SCL_RSTART_SETUP_REG register
  976. * Configures the delay between the positive
  977. * edge of SCL and the negative edge of SDA
  978. */
  979. #define I2C_SCL_RSTART_SETUP_REG(i) (REG_I2C_BASE(i) + 0x44)
  980. /** I2C_SCL_RSTART_SETUP_TIME : R/W; bitpos: [8:0]; default: 8;
  981. * This register is used to configure the time between the positive
  982. * edge of SCL and the negative edge of SDA for a RESTART condition, in I2C module
  983. * clock cycles.
  984. */
  985. #define I2C_SCL_RSTART_SETUP_TIME 0x000001FFU
  986. #define I2C_SCL_RSTART_SETUP_TIME_M (I2C_SCL_RSTART_SETUP_TIME_V << I2C_SCL_RSTART_SETUP_TIME_S)
  987. #define I2C_SCL_RSTART_SETUP_TIME_V 0x000001FFU
  988. #define I2C_SCL_RSTART_SETUP_TIME_S 0
  989. /** I2C_SCL_STOP_HOLD_REG register
  990. * Configures the delay after the SCL clock
  991. * edge for a stop condition
  992. */
  993. #define I2C_SCL_STOP_HOLD_REG(i) (REG_I2C_BASE(i) + 0x48)
  994. /** I2C_SCL_STOP_HOLD_TIME : R/W; bitpos: [8:0]; default: 8;
  995. * This register is used to configure the delay after the STOP condition,
  996. * in I2C module clock cycles.
  997. */
  998. #define I2C_SCL_STOP_HOLD_TIME 0x000001FFU
  999. #define I2C_SCL_STOP_HOLD_TIME_M (I2C_SCL_STOP_HOLD_TIME_V << I2C_SCL_STOP_HOLD_TIME_S)
  1000. #define I2C_SCL_STOP_HOLD_TIME_V 0x000001FFU
  1001. #define I2C_SCL_STOP_HOLD_TIME_S 0
  1002. /** I2C_SCL_STOP_SETUP_REG register
  1003. * Configures the delay between the SDA and
  1004. * SCL positive edge for a stop condition
  1005. */
  1006. #define I2C_SCL_STOP_SETUP_REG(i) (REG_I2C_BASE(i) + 0x4c)
  1007. /** I2C_SCL_STOP_SETUP_TIME : R/W; bitpos: [8:0]; default: 8;
  1008. * This register is used to configure the time between the positive edge
  1009. * of SCL and the positive edge of SDA, in I2C module clock cycles.
  1010. */
  1011. #define I2C_SCL_STOP_SETUP_TIME 0x000001FFU
  1012. #define I2C_SCL_STOP_SETUP_TIME_M (I2C_SCL_STOP_SETUP_TIME_V << I2C_SCL_STOP_SETUP_TIME_S)
  1013. #define I2C_SCL_STOP_SETUP_TIME_V 0x000001FFU
  1014. #define I2C_SCL_STOP_SETUP_TIME_S 0
  1015. /** I2C_FILTER_CFG_REG register
  1016. * SCL and SDA filter configuration register
  1017. */
  1018. #define I2C_FILTER_CFG_REG(i) (REG_I2C_BASE(i) + 0x50)
  1019. /** I2C_SCL_FILTER_THRES : R/W; bitpos: [3:0]; default: 0;
  1020. * When a pulse on the SCL input has smaller width than this register value
  1021. * in I2C module clock cycles, the I2C controller will ignore that pulse.
  1022. */
  1023. #define I2C_SCL_FILTER_THRES 0x0000000FU
  1024. #define I2C_SCL_FILTER_THRES_M (I2C_SCL_FILTER_THRES_V << I2C_SCL_FILTER_THRES_S)
  1025. #define I2C_SCL_FILTER_THRES_V 0x0000000FU
  1026. #define I2C_SCL_FILTER_THRES_S 0
  1027. /** I2C_SDA_FILTER_THRES : R/W; bitpos: [7:4]; default: 0;
  1028. * When a pulse on the SDA input has smaller width than this register value
  1029. * in I2C module clock cycles, the I2C controller will ignore that pulse.
  1030. */
  1031. #define I2C_SDA_FILTER_THRES 0x0000000FU
  1032. #define I2C_SDA_FILTER_THRES_M (I2C_SDA_FILTER_THRES_V << I2C_SDA_FILTER_THRES_S)
  1033. #define I2C_SDA_FILTER_THRES_V 0x0000000FU
  1034. #define I2C_SDA_FILTER_THRES_S 4
  1035. /** I2C_SCL_FILTER_EN : R/W; bitpos: [8]; default: 1;
  1036. * This is the filter enable bit for SCL.
  1037. */
  1038. #define I2C_SCL_FILTER_EN (BIT(8))
  1039. #define I2C_SCL_FILTER_EN_M (I2C_SCL_FILTER_EN_V << I2C_SCL_FILTER_EN_S)
  1040. #define I2C_SCL_FILTER_EN_V 0x00000001U
  1041. #define I2C_SCL_FILTER_EN_S 8
  1042. /** I2C_SDA_FILTER_EN : R/W; bitpos: [9]; default: 1;
  1043. * This is the filter enable bit for SDA.
  1044. */
  1045. #define I2C_SDA_FILTER_EN (BIT(9))
  1046. #define I2C_SDA_FILTER_EN_M (I2C_SDA_FILTER_EN_V << I2C_SDA_FILTER_EN_S)
  1047. #define I2C_SDA_FILTER_EN_V 0x00000001U
  1048. #define I2C_SDA_FILTER_EN_S 9
  1049. /** I2C_CLK_CONF_REG register
  1050. * I2C CLK configuration register
  1051. */
  1052. #define I2C_CLK_CONF_REG(i) (REG_I2C_BASE(i) + 0x54)
  1053. /** I2C_SCLK_DIV_NUM : R/W; bitpos: [7:0]; default: 0;
  1054. * the integral part of the fractional divisor for i2c module
  1055. */
  1056. #define I2C_SCLK_DIV_NUM 0x000000FFU
  1057. #define I2C_SCLK_DIV_NUM_M (I2C_SCLK_DIV_NUM_V << I2C_SCLK_DIV_NUM_S)
  1058. #define I2C_SCLK_DIV_NUM_V 0x000000FFU
  1059. #define I2C_SCLK_DIV_NUM_S 0
  1060. /** I2C_SCLK_DIV_A : R/W; bitpos: [13:8]; default: 0;
  1061. * the numerator of the fractional part of the fractional divisor for i2c module
  1062. */
  1063. #define I2C_SCLK_DIV_A 0x0000003FU
  1064. #define I2C_SCLK_DIV_A_M (I2C_SCLK_DIV_A_V << I2C_SCLK_DIV_A_S)
  1065. #define I2C_SCLK_DIV_A_V 0x0000003FU
  1066. #define I2C_SCLK_DIV_A_S 8
  1067. /** I2C_SCLK_DIV_B : R/W; bitpos: [19:14]; default: 0;
  1068. * the denominator of the fractional part of the fractional divisor for i2c module
  1069. */
  1070. #define I2C_SCLK_DIV_B 0x0000003FU
  1071. #define I2C_SCLK_DIV_B_M (I2C_SCLK_DIV_B_V << I2C_SCLK_DIV_B_S)
  1072. #define I2C_SCLK_DIV_B_V 0x0000003FU
  1073. #define I2C_SCLK_DIV_B_S 14
  1074. /** I2C_SCLK_SEL : R/W; bitpos: [20]; default: 0;
  1075. * The clock selection for i2c module:0-XTAL,1-CLK_8MHz.
  1076. */
  1077. #define I2C_SCLK_SEL (BIT(20))
  1078. #define I2C_SCLK_SEL_M (I2C_SCLK_SEL_V << I2C_SCLK_SEL_S)
  1079. #define I2C_SCLK_SEL_V 0x00000001U
  1080. #define I2C_SCLK_SEL_S 20
  1081. /** I2C_SCLK_ACTIVE : R/W; bitpos: [21]; default: 1;
  1082. * The clock switch for i2c module
  1083. */
  1084. #define I2C_SCLK_ACTIVE (BIT(21))
  1085. #define I2C_SCLK_ACTIVE_M (I2C_SCLK_ACTIVE_V << I2C_SCLK_ACTIVE_S)
  1086. #define I2C_SCLK_ACTIVE_V 0x00000001U
  1087. #define I2C_SCLK_ACTIVE_S 21
  1088. /** I2C_COMD0_REG register
  1089. * I2C command register 0
  1090. */
  1091. #define I2C_COMD0_REG(i) (REG_I2C_BASE(i) + 0x58)
  1092. /** I2C_COMMAND0 : R/W; bitpos: [13:0]; default: 0;
  1093. * This is the content of command 0. It consists of three parts:
  1094. * op_code is the command, 0: RSTART, 1: WRITE, 2: READ, 3: STOP, 4: END.
  1095. * Byte_num represents the number of bytes that need to be sent or received.
  1096. * ack_check_en, ack_exp and ack are used to control the ACK bit. See I2C cmd
  1097. * structure for more
  1098. * Information.
  1099. */
  1100. #define I2C_COMMAND0 0x00003FFFU
  1101. #define I2C_COMMAND0_M (I2C_COMMAND0_V << I2C_COMMAND0_S)
  1102. #define I2C_COMMAND0_V 0x00003FFFU
  1103. #define I2C_COMMAND0_S 0
  1104. /** I2C_COMMAND0_DONE : R/W/SS; bitpos: [31]; default: 0;
  1105. * When command 0 is done in I2C Master mode, this bit changes to high
  1106. * level.
  1107. */
  1108. #define I2C_COMMAND0_DONE (BIT(31))
  1109. #define I2C_COMMAND0_DONE_M (I2C_COMMAND0_DONE_V << I2C_COMMAND0_DONE_S)
  1110. #define I2C_COMMAND0_DONE_V 0x00000001U
  1111. #define I2C_COMMAND0_DONE_S 31
  1112. /** I2C_COMD1_REG register
  1113. * I2C command register 1
  1114. */
  1115. #define I2C_COMD1_REG(i) (REG_I2C_BASE(i) + 0x5c)
  1116. /** I2C_COMMAND1 : R/W; bitpos: [13:0]; default: 0;
  1117. * This is the content of command 1. It consists of three parts:
  1118. * op_code is the command, 0: RSTART, 1: WRITE, 2: READ, 3: STOP, 4: END.
  1119. * Byte_num represents the number of bytes that need to be sent or received.
  1120. * ack_check_en, ack_exp and ack are used to control the ACK bit. See I2C cmd
  1121. * structure for more
  1122. * Information.
  1123. */
  1124. #define I2C_COMMAND1 0x00003FFFU
  1125. #define I2C_COMMAND1_M (I2C_COMMAND1_V << I2C_COMMAND1_S)
  1126. #define I2C_COMMAND1_V 0x00003FFFU
  1127. #define I2C_COMMAND1_S 0
  1128. /** I2C_COMMAND1_DONE : R/W/SS; bitpos: [31]; default: 0;
  1129. * When command 1 is done in I2C Master mode, this bit changes to high
  1130. * level.
  1131. */
  1132. #define I2C_COMMAND1_DONE (BIT(31))
  1133. #define I2C_COMMAND1_DONE_M (I2C_COMMAND1_DONE_V << I2C_COMMAND1_DONE_S)
  1134. #define I2C_COMMAND1_DONE_V 0x00000001U
  1135. #define I2C_COMMAND1_DONE_S 31
  1136. /** I2C_COMD2_REG register
  1137. * I2C command register 2
  1138. */
  1139. #define I2C_COMD2_REG(i) (REG_I2C_BASE(i) + 0x60)
  1140. /** I2C_COMMAND2 : R/W; bitpos: [13:0]; default: 0;
  1141. * This is the content of command 2. It consists of three parts:
  1142. * op_code is the command, 0: RSTART, 1: WRITE, 2: READ, 3: STOP, 4: END.
  1143. * Byte_num represents the number of bytes that need to be sent or received.
  1144. * ack_check_en, ack_exp and ack are used to control the ACK bit. See I2C cmd
  1145. * structure for more
  1146. * Information.
  1147. */
  1148. #define I2C_COMMAND2 0x00003FFFU
  1149. #define I2C_COMMAND2_M (I2C_COMMAND2_V << I2C_COMMAND2_S)
  1150. #define I2C_COMMAND2_V 0x00003FFFU
  1151. #define I2C_COMMAND2_S 0
  1152. /** I2C_COMMAND2_DONE : R/W/SS; bitpos: [31]; default: 0;
  1153. * When command 2 is done in I2C Master mode, this bit changes to high
  1154. * Level.
  1155. */
  1156. #define I2C_COMMAND2_DONE (BIT(31))
  1157. #define I2C_COMMAND2_DONE_M (I2C_COMMAND2_DONE_V << I2C_COMMAND2_DONE_S)
  1158. #define I2C_COMMAND2_DONE_V 0x00000001U
  1159. #define I2C_COMMAND2_DONE_S 31
  1160. /** I2C_COMD3_REG register
  1161. * I2C command register 3
  1162. */
  1163. #define I2C_COMD3_REG(i) (REG_I2C_BASE(i) + 0x64)
  1164. /** I2C_COMMAND3 : R/W; bitpos: [13:0]; default: 0;
  1165. * This is the content of command 3. It consists of three parts:
  1166. * op_code is the command, 0: RSTART, 1: WRITE, 2: READ, 3: STOP, 4: END.
  1167. * Byte_num represents the number of bytes that need to be sent or received.
  1168. * ack_check_en, ack_exp and ack are used to control the ACK bit. See I2C cmd
  1169. * structure for more
  1170. * Information.
  1171. */
  1172. #define I2C_COMMAND3 0x00003FFFU
  1173. #define I2C_COMMAND3_M (I2C_COMMAND3_V << I2C_COMMAND3_S)
  1174. #define I2C_COMMAND3_V 0x00003FFFU
  1175. #define I2C_COMMAND3_S 0
  1176. /** I2C_COMMAND3_DONE : R/W/SS; bitpos: [31]; default: 0;
  1177. * When command 3 is done in I2C Master mode, this bit changes to high
  1178. * level.
  1179. */
  1180. #define I2C_COMMAND3_DONE (BIT(31))
  1181. #define I2C_COMMAND3_DONE_M (I2C_COMMAND3_DONE_V << I2C_COMMAND3_DONE_S)
  1182. #define I2C_COMMAND3_DONE_V 0x00000001U
  1183. #define I2C_COMMAND3_DONE_S 31
  1184. /** I2C_COMD4_REG register
  1185. * I2C command register 4
  1186. */
  1187. #define I2C_COMD4_REG(i) (REG_I2C_BASE(i) + 0x68)
  1188. /** I2C_COMMAND4 : R/W; bitpos: [13:0]; default: 0;
  1189. * This is the content of command 4. It consists of three parts:
  1190. * op_code is the command, 0: RSTART, 1: WRITE, 2: READ, 3: STOP, 4: END.
  1191. * Byte_num represents the number of bytes that need to be sent or received.
  1192. * ack_check_en, ack_exp and ack are used to control the ACK bit. See I2C cmd
  1193. * structure for more
  1194. * Information.
  1195. */
  1196. #define I2C_COMMAND4 0x00003FFFU
  1197. #define I2C_COMMAND4_M (I2C_COMMAND4_V << I2C_COMMAND4_S)
  1198. #define I2C_COMMAND4_V 0x00003FFFU
  1199. #define I2C_COMMAND4_S 0
  1200. /** I2C_COMMAND4_DONE : R/W/SS; bitpos: [31]; default: 0;
  1201. * When command 4 is done in I2C Master mode, this bit changes to high
  1202. * level.
  1203. */
  1204. #define I2C_COMMAND4_DONE (BIT(31))
  1205. #define I2C_COMMAND4_DONE_M (I2C_COMMAND4_DONE_V << I2C_COMMAND4_DONE_S)
  1206. #define I2C_COMMAND4_DONE_V 0x00000001U
  1207. #define I2C_COMMAND4_DONE_S 31
  1208. /** I2C_COMD5_REG register
  1209. * I2C command register 5
  1210. */
  1211. #define I2C_COMD5_REG(i) (REG_I2C_BASE(i) + 0x6c)
  1212. /** I2C_COMMAND5 : R/W; bitpos: [13:0]; default: 0;
  1213. * This is the content of command 5. It consists of three parts:
  1214. * op_code is the command, 0: RSTART, 1: WRITE, 2: READ, 3: STOP, 4: END.
  1215. * Byte_num represents the number of bytes that need to be sent or received.
  1216. * ack_check_en, ack_exp and ack are used to control the ACK bit. See I2C cmd
  1217. * structure for more
  1218. * Information.
  1219. */
  1220. #define I2C_COMMAND5 0x00003FFFU
  1221. #define I2C_COMMAND5_M (I2C_COMMAND5_V << I2C_COMMAND5_S)
  1222. #define I2C_COMMAND5_V 0x00003FFFU
  1223. #define I2C_COMMAND5_S 0
  1224. /** I2C_COMMAND5_DONE : R/W/SS; bitpos: [31]; default: 0;
  1225. * When command 5 is done in I2C Master mode, this bit changes to high level.
  1226. */
  1227. #define I2C_COMMAND5_DONE (BIT(31))
  1228. #define I2C_COMMAND5_DONE_M (I2C_COMMAND5_DONE_V << I2C_COMMAND5_DONE_S)
  1229. #define I2C_COMMAND5_DONE_V 0x00000001U
  1230. #define I2C_COMMAND5_DONE_S 31
  1231. /** I2C_COMD6_REG register
  1232. * I2C command register 6
  1233. */
  1234. #define I2C_COMD6_REG(i) (REG_I2C_BASE(i) + 0x70)
  1235. /** I2C_COMMAND6 : R/W; bitpos: [13:0]; default: 0;
  1236. * This is the content of command 6. It consists of three parts:
  1237. * op_code is the command, 0: RSTART, 1: WRITE, 2: READ, 3: STOP, 4: END.
  1238. * Byte_num represents the number of bytes that need to be sent or received.
  1239. * ack_check_en, ack_exp and ack are used to control the ACK bit. See I2C cmd
  1240. * structure for more
  1241. * Information.
  1242. */
  1243. #define I2C_COMMAND6 0x00003FFFU
  1244. #define I2C_COMMAND6_M (I2C_COMMAND6_V << I2C_COMMAND6_S)
  1245. #define I2C_COMMAND6_V 0x00003FFFU
  1246. #define I2C_COMMAND6_S 0
  1247. /** I2C_COMMAND6_DONE : R/W/SS; bitpos: [31]; default: 0;
  1248. * When command 6 is done in I2C Master mode, this bit changes to high level.
  1249. */
  1250. #define I2C_COMMAND6_DONE (BIT(31))
  1251. #define I2C_COMMAND6_DONE_M (I2C_COMMAND6_DONE_V << I2C_COMMAND6_DONE_S)
  1252. #define I2C_COMMAND6_DONE_V 0x00000001U
  1253. #define I2C_COMMAND6_DONE_S 31
  1254. /** I2C_COMD7_REG register
  1255. * I2C command register 7
  1256. */
  1257. #define I2C_COMD7_REG(i) (REG_I2C_BASE(i) + 0x74)
  1258. /** I2C_COMMAND7 : R/W; bitpos: [13:0]; default: 0;
  1259. * This is the content of command 7. It consists of three parts:
  1260. * op_code is the command, 0: RSTART, 1: WRITE, 2: READ, 3: STOP, 4: END.
  1261. * Byte_num represents the number of bytes that need to be sent or received.
  1262. * ack_check_en, ack_exp and ack are used to control the ACK bit. See I2C cmd
  1263. * structure for more
  1264. * Information.
  1265. */
  1266. #define I2C_COMMAND7 0x00003FFFU
  1267. #define I2C_COMMAND7_M (I2C_COMMAND7_V << I2C_COMMAND7_S)
  1268. #define I2C_COMMAND7_V 0x00003FFFU
  1269. #define I2C_COMMAND7_S 0
  1270. /** I2C_COMMAND7_DONE : R/W/SS; bitpos: [31]; default: 0;
  1271. * When command 7 is done in I2C Master mode, this bit changes to high level.
  1272. */
  1273. #define I2C_COMMAND7_DONE (BIT(31))
  1274. #define I2C_COMMAND7_DONE_M (I2C_COMMAND7_DONE_V << I2C_COMMAND7_DONE_S)
  1275. #define I2C_COMMAND7_DONE_V 0x00000001U
  1276. #define I2C_COMMAND7_DONE_S 31
  1277. /** I2C_SCL_ST_TIME_OUT_REG register
  1278. * SCL status time out register
  1279. */
  1280. #define I2C_SCL_ST_TIME_OUT_REG(i) (REG_I2C_BASE(i) + 0x78)
  1281. /** I2C_SCL_ST_TO_I2C : R/W; bitpos: [4:0]; default: 16;
  1282. * The threshold value of SCL_FSM state unchanged period. It should be o more than 23
  1283. */
  1284. #define I2C_SCL_ST_TO_I2C 0x0000001FU
  1285. #define I2C_SCL_ST_TO_I2C_M (I2C_SCL_ST_TO_I2C_V << I2C_SCL_ST_TO_I2C_S)
  1286. #define I2C_SCL_ST_TO_I2C_V 0x0000001FU
  1287. #define I2C_SCL_ST_TO_I2C_S 0
  1288. /** I2C_SCL_MAIN_ST_TIME_OUT_REG register
  1289. * SCL main status time out register
  1290. */
  1291. #define I2C_SCL_MAIN_ST_TIME_OUT_REG(i) (REG_I2C_BASE(i) + 0x7c)
  1292. /** I2C_SCL_MAIN_ST_TO_I2C : R/W; bitpos: [4:0]; default: 16;
  1293. * The threshold value of SCL_MAIN_FSM state unchanged period.nIt should be o more
  1294. * than 23
  1295. */
  1296. #define I2C_SCL_MAIN_ST_TO_I2C 0x0000001FU
  1297. #define I2C_SCL_MAIN_ST_TO_I2C_M (I2C_SCL_MAIN_ST_TO_I2C_V << I2C_SCL_MAIN_ST_TO_I2C_S)
  1298. #define I2C_SCL_MAIN_ST_TO_I2C_V 0x0000001FU
  1299. #define I2C_SCL_MAIN_ST_TO_I2C_S 0
  1300. /** I2C_SCL_SP_CONF_REG register
  1301. * Power configuration register
  1302. */
  1303. #define I2C_SCL_SP_CONF_REG(i) (REG_I2C_BASE(i) + 0x80)
  1304. /** I2C_SCL_RST_SLV_EN : R/W/SC; bitpos: [0]; default: 0;
  1305. * When I2C master is IDLE, set this bit to send out SCL pulses. The number of pulses
  1306. * equals to reg_scl_rst_slv_num[4:0].
  1307. */
  1308. #define I2C_SCL_RST_SLV_EN (BIT(0))
  1309. #define I2C_SCL_RST_SLV_EN_M (I2C_SCL_RST_SLV_EN_V << I2C_SCL_RST_SLV_EN_S)
  1310. #define I2C_SCL_RST_SLV_EN_V 0x00000001U
  1311. #define I2C_SCL_RST_SLV_EN_S 0
  1312. /** I2C_SCL_RST_SLV_NUM : R/W; bitpos: [5:1]; default: 0;
  1313. * Configure the pulses of SCL generated in I2C master mode. Valid when
  1314. * reg_scl_rst_slv_en is 1.
  1315. */
  1316. #define I2C_SCL_RST_SLV_NUM 0x0000001FU
  1317. #define I2C_SCL_RST_SLV_NUM_M (I2C_SCL_RST_SLV_NUM_V << I2C_SCL_RST_SLV_NUM_S)
  1318. #define I2C_SCL_RST_SLV_NUM_V 0x0000001FU
  1319. #define I2C_SCL_RST_SLV_NUM_S 1
  1320. /** I2C_SCL_PD_EN : R/W; bitpos: [6]; default: 0;
  1321. * The power down enable bit for the I2C output SCL line. 1: Power down. 0: Not power
  1322. * down. Set reg_scl_force_out and reg_scl_pd_en to 1 to stretch SCL low.
  1323. */
  1324. #define I2C_SCL_PD_EN (BIT(6))
  1325. #define I2C_SCL_PD_EN_M (I2C_SCL_PD_EN_V << I2C_SCL_PD_EN_S)
  1326. #define I2C_SCL_PD_EN_V 0x00000001U
  1327. #define I2C_SCL_PD_EN_S 6
  1328. /** I2C_SDA_PD_EN : R/W; bitpos: [7]; default: 0;
  1329. * The power down enable bit for the I2C output SDA line. 1: Power down. 0: Not power
  1330. * down. Set reg_sda_force_out and reg_sda_pd_en to 1 to stretch SDA low.
  1331. */
  1332. #define I2C_SDA_PD_EN (BIT(7))
  1333. #define I2C_SDA_PD_EN_M (I2C_SDA_PD_EN_V << I2C_SDA_PD_EN_S)
  1334. #define I2C_SDA_PD_EN_V 0x00000001U
  1335. #define I2C_SDA_PD_EN_S 7
  1336. /** I2C_SCL_STRETCH_CONF_REG register
  1337. * Set SCL stretch of I2C slave
  1338. */
  1339. #define I2C_SCL_STRETCH_CONF_REG(i) (REG_I2C_BASE(i) + 0x84)
  1340. /** I2C_STRETCH_PROTECT_NUM : R/W; bitpos: [9:0]; default: 0;
  1341. * Configure the period of I2C slave stretching SCL line.
  1342. */
  1343. #define I2C_STRETCH_PROTECT_NUM 0x000003FFU
  1344. #define I2C_STRETCH_PROTECT_NUM_M (I2C_STRETCH_PROTECT_NUM_V << I2C_STRETCH_PROTECT_NUM_S)
  1345. #define I2C_STRETCH_PROTECT_NUM_V 0x000003FFU
  1346. #define I2C_STRETCH_PROTECT_NUM_S 0
  1347. /** I2C_SLAVE_SCL_STRETCH_EN : R/W; bitpos: [10]; default: 0;
  1348. * The enable bit for slave SCL stretch function. 1: Enable. 0: Disable. The SCL
  1349. * output line will be stretched low when reg_slave_scl_stretch_en is 1 and stretch
  1350. * event happens. The stretch cause can be seen in reg_stretch_cause.
  1351. */
  1352. #define I2C_SLAVE_SCL_STRETCH_EN (BIT(10))
  1353. #define I2C_SLAVE_SCL_STRETCH_EN_M (I2C_SLAVE_SCL_STRETCH_EN_V << I2C_SLAVE_SCL_STRETCH_EN_S)
  1354. #define I2C_SLAVE_SCL_STRETCH_EN_V 0x00000001U
  1355. #define I2C_SLAVE_SCL_STRETCH_EN_S 10
  1356. /** I2C_SLAVE_SCL_STRETCH_CLR : WT; bitpos: [11]; default: 0;
  1357. * Set this bit to clear the I2C slave SCL stretch function.
  1358. */
  1359. #define I2C_SLAVE_SCL_STRETCH_CLR (BIT(11))
  1360. #define I2C_SLAVE_SCL_STRETCH_CLR_M (I2C_SLAVE_SCL_STRETCH_CLR_V << I2C_SLAVE_SCL_STRETCH_CLR_S)
  1361. #define I2C_SLAVE_SCL_STRETCH_CLR_V 0x00000001U
  1362. #define I2C_SLAVE_SCL_STRETCH_CLR_S 11
  1363. /** I2C_SLAVE_BYTE_ACK_CTL_EN : R/W; bitpos: [12]; default: 0;
  1364. * The enable bit for slave to control ACK level function.
  1365. */
  1366. #define I2C_SLAVE_BYTE_ACK_CTL_EN (BIT(12))
  1367. #define I2C_SLAVE_BYTE_ACK_CTL_EN_M (I2C_SLAVE_BYTE_ACK_CTL_EN_V << I2C_SLAVE_BYTE_ACK_CTL_EN_S)
  1368. #define I2C_SLAVE_BYTE_ACK_CTL_EN_V 0x00000001U
  1369. #define I2C_SLAVE_BYTE_ACK_CTL_EN_S 12
  1370. /** I2C_SLAVE_BYTE_ACK_LVL : R/W; bitpos: [13]; default: 0;
  1371. * Set the ACK level when slave controlling ACK level function enables.
  1372. */
  1373. #define I2C_SLAVE_BYTE_ACK_LVL (BIT(13))
  1374. #define I2C_SLAVE_BYTE_ACK_LVL_M (I2C_SLAVE_BYTE_ACK_LVL_V << I2C_SLAVE_BYTE_ACK_LVL_S)
  1375. #define I2C_SLAVE_BYTE_ACK_LVL_V 0x00000001U
  1376. #define I2C_SLAVE_BYTE_ACK_LVL_S 13
  1377. /** I2C_DATE_REG register
  1378. * Version register
  1379. */
  1380. #define I2C_DATE_REG(i) (REG_I2C_BASE(i) + 0xf8)
  1381. /** I2C_DATE : R/W; bitpos: [31:0]; default: 35656050;
  1382. * This is the the version register.
  1383. */
  1384. #define I2C_DATE 0xFFFFFFFFU
  1385. #define I2C_DATE_M (I2C_DATE_V << I2C_DATE_S)
  1386. #define I2C_DATE_V 0xFFFFFFFFU
  1387. #define I2C_DATE_S 0
  1388. /** I2C_TXFIFO_START_ADDR_REG register
  1389. * I2C TXFIFO base address register
  1390. */
  1391. #define I2C_TXFIFO_START_ADDR_REG(i) (REG_I2C_BASE(i) + 0x100)
  1392. /** I2C_TXFIFO_START_ADDR : HRO; bitpos: [31:0]; default: 0;
  1393. * This is the I2C txfifo first address.
  1394. */
  1395. #define I2C_TXFIFO_START_ADDR 0xFFFFFFFFU
  1396. #define I2C_TXFIFO_START_ADDR_M (I2C_TXFIFO_START_ADDR_V << I2C_TXFIFO_START_ADDR_S)
  1397. #define I2C_TXFIFO_START_ADDR_V 0xFFFFFFFFU
  1398. #define I2C_TXFIFO_START_ADDR_S 0
  1399. /** I2C_RXFIFO_START_ADDR_REG register
  1400. * I2C RXFIFO base address register
  1401. */
  1402. #define I2C_RXFIFO_START_ADDR_REG(i) (REG_I2C_BASE(i) + 0x180)
  1403. /** I2C_RXFIFO_START_ADDR : HRO; bitpos: [31:0]; default: 0;
  1404. * This is the I2C rxfifo first address.
  1405. */
  1406. #define I2C_RXFIFO_START_ADDR 0xFFFFFFFFU
  1407. #define I2C_RXFIFO_START_ADDR_M (I2C_RXFIFO_START_ADDR_V << I2C_RXFIFO_START_ADDR_S)
  1408. #define I2C_RXFIFO_START_ADDR_V 0xFFFFFFFFU
  1409. #define I2C_RXFIFO_START_ADDR_S 0
  1410. #ifdef __cplusplus
  1411. }
  1412. #endif