Lines Matching refs:i2c
55 void MXC_I2C_RevA_AsyncCallback(mxc_i2c_reva_regs_t *i2c, int retVal);
56 void MXC_I2C_RevA_AsyncStop(mxc_i2c_reva_regs_t *i2c);
57 void MXC_I2C_RevA_AbortAsync(mxc_i2c_reva_regs_t *i2c);
60 void MXC_I2C_RevA_SlaveAsyncHandler(mxc_i2c_reva_regs_t *i2c, mxc_i2c_reva_slave_handler_t callback,
66 int MXC_I2C_RevA_Init(mxc_i2c_reva_regs_t *i2c, int masterMode, unsigned int slaveAddr) in MXC_I2C_RevA_Init() argument
71 if (i2c == NULL) { in MXC_I2C_RevA_Init()
75 i2cNum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_Init()
77 if ((err = MXC_I2C_Recover((mxc_i2c_regs_t *)i2c, 16)) != E_NO_ERROR) { in MXC_I2C_RevA_Init()
81 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_EN; in MXC_I2C_RevA_Init()
83 MXC_I2C_ClearRXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_Init()
84 MXC_I2C_ClearTXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_Init()
86 MXC_I2C_SetTXThreshold((mxc_i2c_regs_t *)i2c, 2); // set TX threshold to 2 bytes in MXC_I2C_RevA_Init()
87 MXC_I2C_SetRXThreshold((mxc_i2c_regs_t *)i2c, 6); // set RX threshold to 6 bytes in MXC_I2C_RevA_Init()
90 MXC_I2C_SetSlaveAddr((mxc_i2c_regs_t *)i2c, slaveAddr, 0); in MXC_I2C_RevA_Init()
91 states[MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c)].master = 0; in MXC_I2C_RevA_Init()
93 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_MST_MODE; in MXC_I2C_RevA_Init()
94 states[MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c)].master = 1; in MXC_I2C_RevA_Init()
107 int MXC_I2C_RevA_SetSlaveAddr(mxc_i2c_reva_regs_t *i2c, unsigned int slaveAddr, int idx) in MXC_I2C_RevA_SetSlaveAddr() argument
109 if (i2c == NULL) { in MXC_I2C_RevA_SetSlaveAddr()
113 if (idx >= (sizeof(i2c->slave_multi) / sizeof(uint32_t))) { in MXC_I2C_RevA_SetSlaveAddr()
122 i2c->slave_multi[idx] = 0; in MXC_I2C_RevA_SetSlaveAddr()
126 i2c->slave_multi[idx] = MXC_F_I2C_REVA_SLAVE_MULTI_EXT_ADDR_EN; in MXC_I2C_RevA_SetSlaveAddr()
129 i2c->slave_multi[idx] |= slaveAddr; in MXC_I2C_RevA_SetSlaveAddr()
134 int MXC_I2C_RevA_Shutdown(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_Shutdown() argument
138 if (i2c == NULL) { in MXC_I2C_RevA_Shutdown()
142 i2cNum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_Shutdown()
144 i2c->ctrl = 0; in MXC_I2C_RevA_Shutdown()
145 i2c->inten0 = 0; in MXC_I2C_RevA_Shutdown()
146 i2c->inten1 = 0; in MXC_I2C_RevA_Shutdown()
147 i2c->intfl0 = i2c->intfl0; in MXC_I2C_RevA_Shutdown()
148 i2c->intfl1 = i2c->intfl1; in MXC_I2C_RevA_Shutdown()
149 i2c->rxctrl0 = 0; in MXC_I2C_RevA_Shutdown()
150 i2c->rxctrl1 = 0; in MXC_I2C_RevA_Shutdown()
151 i2c->txctrl0 = 0; in MXC_I2C_RevA_Shutdown()
152 i2c->txctrl1 = 0; in MXC_I2C_RevA_Shutdown()
156 MXC_I2C_ClearRXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_Shutdown()
157 MXC_I2C_ClearTXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_Shutdown()
179 int MXC_I2C_RevA_SetFrequency(mxc_i2c_reva_regs_t *i2c, unsigned int hz) in MXC_I2C_RevA_SetFrequency() argument
183 if (i2c == NULL) { in MXC_I2C_RevA_SetFrequency()
209 i2c->hsclk = (hsLowClks | hsHiClks); in MXC_I2C_RevA_SetFrequency()
211 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_HS_EN; in MXC_I2C_RevA_SetFrequency()
234 i2c->clklo = lowClks & MXC_F_I2C_REVA_CLKLO_LO; in MXC_I2C_RevA_SetFrequency()
235 i2c->clkhi = hiClks & MXC_F_I2C_REVA_CLKHI_HI; in MXC_I2C_RevA_SetFrequency()
238 return MXC_I2C_GetFrequency((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_SetFrequency()
241 unsigned int MXC_I2C_RevA_GetFrequency(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_GetFrequency() argument
246 if (i2c->ctrl & MXC_F_I2C_REVA_CTRL_HS_EN) { in MXC_I2C_RevA_GetFrequency()
248 sclCycles += (i2c->hsclk & MXC_F_I2C_REVA_HSCLK_LO) >> MXC_F_I2C_REVA_HSCLK_LO_POS; in MXC_I2C_RevA_GetFrequency()
249 sclCycles += (i2c->hsclk & MXC_F_I2C_REVA_HSCLK_HI) >> MXC_F_I2C_REVA_HSCLK_HI_POS; in MXC_I2C_RevA_GetFrequency()
252 sclCycles += (i2c->clklo & MXC_F_I2C_REVA_CLKLO_LO); in MXC_I2C_RevA_GetFrequency()
253 sclCycles += (i2c->clkhi & MXC_F_I2C_REVA_CLKHI_HI); in MXC_I2C_RevA_GetFrequency()
259 int MXC_I2C_RevA_ReadyForSleep(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_ReadyForSleep() argument
261 if (MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c) < 0) { in MXC_I2C_RevA_ReadyForSleep()
265 if (AsyncRequests[MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c)] != NULL) { in MXC_I2C_RevA_ReadyForSleep()
272 int MXC_I2C_RevA_SetClockStretching(mxc_i2c_reva_regs_t *i2c, int enable) in MXC_I2C_RevA_SetClockStretching() argument
274 if (i2c == NULL) { in MXC_I2C_RevA_SetClockStretching()
279 i2c->ctrl &= ~MXC_F_I2C_REVA_CTRL_CLKSTR_DIS; in MXC_I2C_RevA_SetClockStretching()
281 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_CLKSTR_DIS; in MXC_I2C_RevA_SetClockStretching()
287 int MXC_I2C_RevA_GetClockStretching(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_GetClockStretching() argument
289 if (i2c == NULL) { in MXC_I2C_RevA_GetClockStretching()
293 return !((i2c->ctrl & MXC_F_I2C_REVA_CTRL_CLKSTR_DIS) >> MXC_F_I2C_REVA_CTRL_CLKSTR_DIS_POS); in MXC_I2C_RevA_GetClockStretching()
296 int MXC_I2C_RevA_DMA_Init(mxc_i2c_reva_regs_t *i2c, mxc_dma_reva_regs_t *dma, bool use_dma_tx, in MXC_I2C_RevA_DMA_Init() argument
303 if (i2c == NULL || dma == NULL) { in MXC_I2C_RevA_DMA_Init()
307 i2cNum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_DMA_Init()
397 int MXC_I2C_RevA_DMA_GetTXChannel(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_DMA_GetTXChannel() argument
401 if (i2c == NULL) { in MXC_I2C_RevA_DMA_GetTXChannel()
405 i2cNum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_DMA_GetTXChannel()
410 int MXC_I2C_RevA_DMA_GetRXChannel(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_DMA_GetRXChannel() argument
414 if (i2c == NULL) { in MXC_I2C_RevA_DMA_GetRXChannel()
418 i2cNum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_DMA_GetRXChannel()
423 int MXC_I2C_RevA_DMA_SetRequestSelect(mxc_i2c_reva_regs_t *i2c, mxc_dma_reva_regs_t *dma, in MXC_I2C_RevA_DMA_SetRequestSelect() argument
430 if (i2c == NULL || dma == NULL) { in MXC_I2C_RevA_DMA_SetRequestSelect()
434 i2cNum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_DMA_SetRequestSelect()
454 int MXC_I2C_RevA_Start(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_Start() argument
456 if (i2c == NULL) { in MXC_I2C_RevA_Start()
461 if (i2c->mstctrl & MXC_F_I2C_REVA_MSTCTRL_START) { in MXC_I2C_RevA_Start()
462 i2c->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_RESTART; in MXC_I2C_RevA_Start()
464 i2c->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_START; // No check for start generation in MXC_I2C_RevA_Start()
470 int MXC_I2C_RevA_Stop(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_Stop() argument
472 if (i2c == NULL) { in MXC_I2C_RevA_Stop()
476 i2c->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_STOP; in MXC_I2C_RevA_Stop()
478 while (i2c->mstctrl & MXC_F_I2C_REVA_MSTCTRL_STOP) {} in MXC_I2C_RevA_Stop()
483 int MXC_I2C_RevA_WriteByte(mxc_i2c_reva_regs_t *i2c, unsigned char byte) in MXC_I2C_RevA_WriteByte() argument
485 if (i2c == NULL) { in MXC_I2C_RevA_WriteByte()
489 if (!(i2c->status & MXC_F_I2C_REVA_STATUS_TX_EM)) { in MXC_I2C_RevA_WriteByte()
495 MXC_I2C_ClearFlags((mxc_i2c_regs_t *)i2c, MXC_I2C_REVA_INTFL0_MASK, MXC_I2C_REVA_INTFL1_MASK); in MXC_I2C_RevA_WriteByte()
496 i2c->fifo = byte; in MXC_I2C_RevA_WriteByte()
498 while (!(i2c->status & MXC_F_I2C_REVA_STATUS_TX_EM)) {} in MXC_I2C_RevA_WriteByte()
500 return i2c->intfl0 & MXC_F_I2C_REVA_INTFL0_DATA_ERR; in MXC_I2C_RevA_WriteByte()
503 int MXC_I2C_RevA_ReadByte(mxc_i2c_reva_regs_t *i2c, unsigned char *byte, int ack) in MXC_I2C_RevA_ReadByte() argument
505 if ((i2c == NULL) || (byte == NULL)) { in MXC_I2C_RevA_ReadByte()
509 if (i2c->status & MXC_F_I2C_REVA_STATUS_RX_EM) { in MXC_I2C_RevA_ReadByte()
513 *byte = (uint8_t)(i2c->fifo & MXC_F_I2C_REVA_FIFO_DATA); in MXC_I2C_RevA_ReadByte()
516 i2c->ctrl &= ~MXC_F_I2C_REVA_CTRL_IRXM_ACK; in MXC_I2C_RevA_ReadByte()
518 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_IRXM_ACK; in MXC_I2C_RevA_ReadByte()
524 int MXC_I2C_RevA_ReadByteInteractive(mxc_i2c_reva_regs_t *i2c, unsigned char *byte, in MXC_I2C_RevA_ReadByteInteractive() argument
527 if ((i2c == NULL) || (byte == NULL)) { in MXC_I2C_RevA_ReadByteInteractive()
531 if (!(i2c->status & MXC_F_I2C_REVA_STATUS_RX_EM)) { in MXC_I2C_RevA_ReadByteInteractive()
535 *byte = (uint8_t)(i2c->fifo & MXC_F_I2C_REVA_FIFO_DATA); in MXC_I2C_RevA_ReadByteInteractive()
538 i2c->ctrl &= ~MXC_F_I2C_REVA_CTRL_IRXM_ACK_POS; in MXC_I2C_RevA_ReadByteInteractive()
540 i2c->ctrl |= (!!getAck((mxc_i2c_reva_regs_t *)i2c, *byte)) in MXC_I2C_RevA_ReadByteInteractive()
547 int MXC_I2C_RevA_Write(mxc_i2c_reva_regs_t *i2c, unsigned char *bytes, unsigned int *len) in MXC_I2C_RevA_Write() argument
552 if (i2c == NULL) { in MXC_I2C_RevA_Write()
561 int retVal = MXC_I2C_WriteByte((mxc_i2c_regs_t *)i2c, bytes[written]); in MXC_I2C_RevA_Write()
576 int MXC_I2C_RevA_Read(mxc_i2c_reva_regs_t *i2c, unsigned char *bytes, unsigned int *len, int ack) in MXC_I2C_RevA_Read() argument
580 if (i2c == NULL) { in MXC_I2C_RevA_Read()
589 int retVal = MXC_I2C_ReadByte((mxc_i2c_regs_t *)i2c, &(bytes[read]), 1); in MXC_I2C_RevA_Read()
599 return MXC_I2C_ReadByte((mxc_i2c_regs_t *)i2c, &(bytes[read]), ack); in MXC_I2C_RevA_Read()
602 int MXC_I2C_RevA_ReadRXFIFO(mxc_i2c_reva_regs_t *i2c, volatile unsigned char *bytes, in MXC_I2C_RevA_ReadRXFIFO() argument
607 if ((i2c == NULL) || (bytes == NULL)) { in MXC_I2C_RevA_ReadRXFIFO()
611 while ((len > read) && (!(i2c->status & MXC_F_I2C_REVA_STATUS_RX_EM))) { in MXC_I2C_RevA_ReadRXFIFO()
612 bytes[read++] = i2c->fifo; in MXC_I2C_RevA_ReadRXFIFO()
618 int MXC_I2C_RevA_ReadRXFIFODMA(mxc_i2c_reva_regs_t *i2c, unsigned char *bytes, unsigned int len, in MXC_I2C_RevA_ReadRXFIFODMA() argument
624 if ((i2c == NULL) || (bytes == NULL)) { in MXC_I2C_RevA_ReadRXFIFODMA()
628 i2cNum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_ReadRXFIFODMA()
641 i2c->dma |= MXC_F_I2C_REVA_DMA_RX_EN; in MXC_I2C_RevA_ReadRXFIFODMA()
646 int MXC_I2C_RevA_GetRXFIFOAvailable(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_GetRXFIFOAvailable() argument
648 if (i2c == NULL) { in MXC_I2C_RevA_GetRXFIFOAvailable()
652 return (i2c->rxctrl1 & MXC_F_I2C_REVA_RXCTRL1_LVL) >> MXC_F_I2C_REVA_RXCTRL1_LVL_POS; in MXC_I2C_RevA_GetRXFIFOAvailable()
655 int MXC_I2C_RevA_WriteTXFIFO(mxc_i2c_reva_regs_t *i2c, volatile unsigned char *bytes, in MXC_I2C_RevA_WriteTXFIFO() argument
660 if ((i2c == NULL) || (bytes == NULL)) { in MXC_I2C_RevA_WriteTXFIFO()
664 while ((len > written) && (!(i2c->status & MXC_F_I2C_REVA_STATUS_TX_FULL))) { in MXC_I2C_RevA_WriteTXFIFO()
665 i2c->fifo = bytes[written++]; in MXC_I2C_RevA_WriteTXFIFO()
671 int MXC_I2C_RevA_WriteTXFIFODMA(mxc_i2c_reva_regs_t *i2c, unsigned char *bytes, unsigned int len, in MXC_I2C_RevA_WriteTXFIFODMA() argument
677 if ((i2c == NULL) || (bytes == NULL)) { in MXC_I2C_RevA_WriteTXFIFODMA()
681 i2cNum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_WriteTXFIFODMA()
683 i2c->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_START; in MXC_I2C_RevA_WriteTXFIFODMA()
696 i2c->dma |= MXC_F_I2C_REVA_DMA_TX_EN; in MXC_I2C_RevA_WriteTXFIFODMA()
701 int MXC_I2C_RevA_GetTXFIFOAvailable(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_GetTXFIFOAvailable() argument
703 if (i2c == NULL) { in MXC_I2C_RevA_GetTXFIFOAvailable()
707 int txFIFOlen = (i2c->fifolen & MXC_F_I2C_REVA_FIFOLEN_TX_DEPTH) >> in MXC_I2C_RevA_GetTXFIFOAvailable()
710 ((i2c->txctrl1 & MXC_F_I2C_REVA_TXCTRL1_LVL) >> MXC_F_I2C_REVA_TXCTRL1_LVL_POS); in MXC_I2C_RevA_GetTXFIFOAvailable()
713 void MXC_I2C_RevA_ClearRXFIFO(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_ClearRXFIFO() argument
715 i2c->rxctrl0 |= MXC_F_I2C_REVA_RXCTRL0_FLUSH; in MXC_I2C_RevA_ClearRXFIFO()
717 while (i2c->rxctrl0 & MXC_F_I2C_REVA_RXCTRL0_FLUSH) {} in MXC_I2C_RevA_ClearRXFIFO()
720 void MXC_I2C_RevA_ClearTXFIFO(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_ClearTXFIFO() argument
722 i2c->txctrl0 |= MXC_F_I2C_REVA_TXCTRL0_FLUSH; in MXC_I2C_RevA_ClearTXFIFO()
724 while (i2c->txctrl0 & MXC_F_I2C_REVA_TXCTRL0_FLUSH) {} in MXC_I2C_RevA_ClearTXFIFO()
727 int MXC_I2C_RevA_GetFlags(mxc_i2c_reva_regs_t *i2c, unsigned int *flags0, unsigned int *flags1) in MXC_I2C_RevA_GetFlags() argument
729 if (i2c == NULL) { in MXC_I2C_RevA_GetFlags()
737 *flags0 = i2c->intfl0; in MXC_I2C_RevA_GetFlags()
738 *flags1 = i2c->intfl1; in MXC_I2C_RevA_GetFlags()
743 void MXC_I2C_RevA_ClearFlags(mxc_i2c_reva_regs_t *i2c, unsigned int flags0, unsigned int flags1) in MXC_I2C_RevA_ClearFlags() argument
745 i2c->intfl0 = flags0; in MXC_I2C_RevA_ClearFlags()
746 i2c->intfl1 = flags1; in MXC_I2C_RevA_ClearFlags()
749 void MXC_I2C_RevA_EnableInt(mxc_i2c_reva_regs_t *i2c, unsigned int flags0, unsigned int flags1) in MXC_I2C_RevA_EnableInt() argument
751 i2c->inten0 |= flags0; in MXC_I2C_RevA_EnableInt()
752 i2c->inten1 |= flags1; in MXC_I2C_RevA_EnableInt()
755 void MXC_I2C_RevA_DisableInt(mxc_i2c_reva_regs_t *i2c, unsigned int flags0, unsigned int flags1) in MXC_I2C_RevA_DisableInt() argument
757 i2c->inten0 &= ~flags0; in MXC_I2C_RevA_DisableInt()
758 i2c->inten1 &= ~flags1; in MXC_I2C_RevA_DisableInt()
761 int MXC_I2C_RevA_Recover(mxc_i2c_reva_regs_t *i2c, unsigned int retries) in MXC_I2C_RevA_Recover() argument
766 if (i2c == NULL) { in MXC_I2C_RevA_Recover()
772 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_EN; in MXC_I2C_RevA_Recover()
773 int swBit = i2c->ctrl & MXC_F_I2C_REVA_CTRL_BB_MODE; in MXC_I2C_RevA_Recover()
775 if (i2c == NULL) { in MXC_I2C_RevA_Recover()
779 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_BB_MODE; in MXC_I2C_RevA_Recover()
785 i2c->ctrl &= ~MXC_F_I2C_REVA_CTRL_SCL_OUT; in MXC_I2C_RevA_Recover()
789 if (i2c->ctrl & MXC_F_I2C_REVA_CTRL_SCL) { in MXC_I2C_RevA_Recover()
790 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_SCL_OUT | MXC_F_I2C_REVA_CTRL_SDA_OUT; in MXC_I2C_RevA_Recover()
795 i2c->ctrl &= ~MXC_F_I2C_REVA_CTRL_SDA_OUT; in MXC_I2C_RevA_Recover()
799 if (i2c->ctrl & MXC_F_I2C_REVA_CTRL_SDA) { in MXC_I2C_RevA_Recover()
800 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_SCL_OUT | MXC_F_I2C_REVA_CTRL_SDA_OUT; in MXC_I2C_RevA_Recover()
805 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_SDA_OUT; in MXC_I2C_RevA_Recover()
809 if (!(i2c->ctrl & MXC_F_I2C_REVA_CTRL_SDA)) { in MXC_I2C_RevA_Recover()
810 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_SCL_OUT | MXC_F_I2C_REVA_CTRL_SDA_OUT; in MXC_I2C_RevA_Recover()
815 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_SCL_OUT; in MXC_I2C_RevA_Recover()
819 if (i2c->ctrl & MXC_F_I2C_REVA_CTRL_SCL) { in MXC_I2C_RevA_Recover()
826 i2c->ctrl &= ~MXC_F_I2C_REVA_CTRL_BB_MODE; in MXC_I2C_RevA_Recover()
829 i2c->ctrl &= ~MXC_F_I2C_REVA_CTRL_EN; in MXC_I2C_RevA_Recover()
834 void MXC_I2C_RevA_EnablePreload(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_EnablePreload() argument
836 i2c->txctrl0 |= MXC_F_I2C_REVA_TXCTRL0_PRELOAD_MODE; in MXC_I2C_RevA_EnablePreload()
839 void MXC_I2C_RevA_DisablePreload(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_DisablePreload() argument
841 i2c->txctrl0 &= ~MXC_F_I2C_REVA_TXCTRL0_PRELOAD_MODE; in MXC_I2C_RevA_DisablePreload()
844 void MXC_I2C_RevA_EnableGeneralCall(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_EnableGeneralCall() argument
846 i2c->ctrl |= MXC_F_I2C_REVA_CTRL_GC_ADDR_EN; in MXC_I2C_RevA_EnableGeneralCall()
849 void MXC_I2C_RevA_DisableGeneralCall(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_DisableGeneralCall() argument
851 i2c->ctrl &= ~MXC_F_I2C_REVA_CTRL_GC_ADDR_EN; in MXC_I2C_RevA_DisableGeneralCall()
854 void MXC_I2C_RevA_SetTimeout(mxc_i2c_reva_regs_t *i2c, unsigned int timeout) in MXC_I2C_RevA_SetTimeout() argument
856 i2c->timeout |= (timeout & 0xFFFF); in MXC_I2C_RevA_SetTimeout()
859 unsigned int MXC_I2C_RevA_GetTimeout(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_GetTimeout() argument
861 return (i2c->timeout & 0xFFFF); in MXC_I2C_RevA_GetTimeout()
870 mxc_i2c_reva_regs_t *i2c = req->i2c; // Save off pointer for faster access in MXC_I2C_RevA_MasterTransaction() local
878 if (MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c) < 0) { in MXC_I2C_RevA_MasterTransaction()
882 if (!(i2c->ctrl & MXC_F_I2C_REVA_CTRL_MST_MODE)) { in MXC_I2C_RevA_MasterTransaction()
902 MXC_I2C_ClearFlags((mxc_i2c_regs_t *)i2c, MXC_I2C_REVA_INTFL0_MASK, in MXC_I2C_RevA_MasterTransaction()
904 MXC_I2C_ClearTXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_MasterTransaction()
905 MXC_I2C_ClearRXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_MasterTransaction()
906 i2c->inten0 = 0; in MXC_I2C_RevA_MasterTransaction()
907 i2c->inten1 = 0; in MXC_I2C_RevA_MasterTransaction()
911 i2c->fifo = (req->addr << 1) & ~0x1; in MXC_I2C_RevA_MasterTransaction()
912 i2c->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_START; in MXC_I2C_RevA_MasterTransaction()
916 if (i2c->intfl0 & MXC_F_I2C_REVA_INTFL0_TX_THD) { in MXC_I2C_RevA_MasterTransaction()
917 written += MXC_I2C_WriteTXFIFO((mxc_i2c_regs_t *)i2c, &req->tx_buf[written], in MXC_I2C_RevA_MasterTransaction()
919 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_TX_THD; in MXC_I2C_RevA_MasterTransaction()
922 if (i2c->intfl0 & MXC_I2C_REVA_ERROR) { in MXC_I2C_RevA_MasterTransaction()
924 MXC_I2C_Stop((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_MasterTransaction()
929 MXC_I2C_ClearFlags((mxc_i2c_regs_t *)i2c, in MXC_I2C_RevA_MasterTransaction()
934 i2c->rxctrl1 = 0; in MXC_I2C_RevA_MasterTransaction()
936 i2c->rxctrl1 = req->rx_len; // 0 for 256, otherwise number of bytes to read in MXC_I2C_RevA_MasterTransaction()
939 MXC_I2C_Start((mxc_i2c_regs_t *)i2c); // Start or Restart as needed in MXC_I2C_RevA_MasterTransaction()
941 while (i2c->mstctrl & MXC_F_I2C_REVA_MSTCTRL_RESTART) {} in MXC_I2C_RevA_MasterTransaction()
943 i2c->fifo = (req->addr << 1) | 0x1; // Load slave address with read bit. in MXC_I2C_RevA_MasterTransaction()
947 if (i2c->intfl0 & (MXC_F_I2C_REVA_INTFL0_RX_THD | MXC_F_I2C_REVA_INTFL0_DONE)) { in MXC_I2C_RevA_MasterTransaction()
949 MXC_I2C_ReadRXFIFO((mxc_i2c_regs_t *)i2c, &req->rx_buf[read], req->rx_len - read); in MXC_I2C_RevA_MasterTransaction()
950 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_RX_THD; in MXC_I2C_RevA_MasterTransaction()
953 if (i2c->intfl0 & MXC_I2C_REVA_ERROR) { in MXC_I2C_RevA_MasterTransaction()
955 MXC_I2C_Stop((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_MasterTransaction()
959 if ((i2c->intfl0 & MXC_F_I2C_REVA_INTFL0_DONE) && (req->rx_len > read) && in MXC_I2C_RevA_MasterTransaction()
960 (MXC_I2C_RevA_GetRXFIFOAvailable(i2c) == 0)) { in MXC_I2C_RevA_MasterTransaction()
962 i2c->rxctrl1 = 0; in MXC_I2C_RevA_MasterTransaction()
964 i2c->rxctrl1 = (req->rx_len - read); // 0 for 256, otherwise number of bytes to read in MXC_I2C_RevA_MasterTransaction()
967 i2c->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_RESTART; in MXC_I2C_RevA_MasterTransaction()
968 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_DONE; in MXC_I2C_RevA_MasterTransaction()
969 i2c->fifo = (req->addr << 1) | 0x1; // Load slave address with read bit. in MXC_I2C_RevA_MasterTransaction()
974 i2c->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_RESTART; in MXC_I2C_RevA_MasterTransaction()
976 i2c->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_STOP; in MXC_I2C_RevA_MasterTransaction()
978 while (!(i2c->intfl0 & MXC_F_I2C_REVA_INTFL0_STOP)) {} in MXC_I2C_RevA_MasterTransaction()
982 while (!(i2c->intfl0 & MXC_F_I2C_REVA_INTFL0_DONE)) {} in MXC_I2C_RevA_MasterTransaction()
985 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_DONE | MXC_F_I2C_REVA_INTFL0_STOP; in MXC_I2C_RevA_MasterTransaction()
987 if (i2c->intfl0 & MXC_I2C_REVA_ERROR) { in MXC_I2C_RevA_MasterTransaction()
996 int i2cNum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)(req->i2c)); in MXC_I2C_RevA_MasterTransactionAsync()
997 mxc_i2c_reva_regs_t *i2c = req->i2c; in MXC_I2C_RevA_MasterTransactionAsync() local
1003 if (!(i2c->ctrl & MXC_F_I2C_REVA_CTRL_MST_MODE)) { in MXC_I2C_RevA_MasterTransactionAsync()
1015 MXC_I2C_ClearFlags((mxc_i2c_regs_t *)i2c, MXC_I2C_REVA_INTFL0_MASK, in MXC_I2C_RevA_MasterTransactionAsync()
1017 MXC_I2C_ClearTXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_MasterTransactionAsync()
1018 MXC_I2C_ClearRXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_MasterTransactionAsync()
1020 i2c->inten0 = MXC_I2C_REVA_ERROR; in MXC_I2C_RevA_MasterTransactionAsync()
1023 i2c->fifo = (req->addr << 1) & ~0x1; // Load the slave address with write bit set in MXC_I2C_RevA_MasterTransactionAsync()
1025 i2c->fifo = (req->addr << 1) | 0x1; // Load the slave address with read bit set in MXC_I2C_RevA_MasterTransactionAsync()
1029 i2c->rxctrl1 = 0; in MXC_I2C_RevA_MasterTransactionAsync()
1031 i2c->rxctrl1 = req->rx_len; // 0 for 256, otherwise number of bytes to read in MXC_I2C_RevA_MasterTransactionAsync()
1035 i2c->inten0 |= (MXC_F_I2C_REVA_INTEN0_RX_THD | MXC_F_I2C_REVA_INTEN0_DONE); in MXC_I2C_RevA_MasterTransactionAsync()
1041 MXC_I2C_Start((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_MasterTransactionAsync()
1057 mxc_i2c_reva_regs_t *i2c = req->i2c; // Save off pointer for faster access in MXC_I2C_RevA_MasterTransactionDMA() local
1058 i2cNum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_MasterTransactionDMA()
1068 if (!(i2c->ctrl & MXC_F_I2C_REVA_CTRL_MST_MODE)) { in MXC_I2C_RevA_MasterTransactionDMA()
1076 MXC_I2C_ClearFlags((mxc_i2c_regs_t *)i2c, MXC_I2C_REVA_INTFL0_MASK, in MXC_I2C_RevA_MasterTransactionDMA()
1078 MXC_I2C_ClearTXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_MasterTransactionDMA()
1079 MXC_I2C_ClearRXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_MasterTransactionDMA()
1081 MXC_I2C_SetTXThreshold((mxc_i2c_regs_t *)i2c, 2); in MXC_I2C_RevA_MasterTransactionDMA()
1082 MXC_I2C_SetRXThreshold((mxc_i2c_regs_t *)i2c, 1); in MXC_I2C_RevA_MasterTransactionDMA()
1090 error = MXC_I2C_DMA_Init((mxc_i2c_regs_t *)i2c, (mxc_dma_regs_t *)dma, true, true); in MXC_I2C_RevA_MasterTransactionDMA()
1096 error = MXC_I2C_DMA_SetRequestSelect((mxc_i2c_regs_t *)i2c, req->tx_buf, req->rx_buf); in MXC_I2C_RevA_MasterTransactionDMA()
1103 i2c->fifo = ((req->addr) << 1) & ~0x1; // Load the slave address with write bit set in MXC_I2C_RevA_MasterTransactionDMA()
1106 MXC_I2C_WriteTXFIFODMA((mxc_i2c_regs_t *)i2c, req->tx_buf, req->tx_len, NULL, dma); in MXC_I2C_RevA_MasterTransactionDMA()
1108 MXC_I2C_WriteTXFIFODMA((mxc_i2c_regs_t *)i2c, req->tx_buf, req->tx_len, NULL); in MXC_I2C_RevA_MasterTransactionDMA()
1120 i2c->rxctrl1 = 0; in MXC_I2C_RevA_MasterTransactionDMA()
1122 i2c->rxctrl1 = req->rx_len; // 0 for 256, otherwise number of bytes to read in MXC_I2C_RevA_MasterTransactionDMA()
1125 MXC_I2C_Start((mxc_i2c_regs_t *)i2c); // Start or Restart as needed in MXC_I2C_RevA_MasterTransactionDMA()
1127 while (i2c->mstctrl & MXC_F_I2C_REVA_MSTCTRL_RESTART) {} in MXC_I2C_RevA_MasterTransactionDMA()
1129 i2c->fifo = ((req->addr) << 1) | 0x1; // Load the slave address with write bit set in MXC_I2C_RevA_MasterTransactionDMA()
1132 MXC_I2C_ReadRXFIFODMA((mxc_i2c_regs_t *)i2c, req->rx_buf, req->rx_len, NULL, dma); in MXC_I2C_RevA_MasterTransactionDMA()
1134 MXC_I2C_ReadRXFIFODMA((mxc_i2c_regs_t *)i2c, req->rx_buf, req->rx_len, NULL); in MXC_I2C_RevA_MasterTransactionDMA()
1156 (temp_req->i2c)->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_RESTART; in MXC_I2C_RevA_DMACallback()
1158 (temp_req->i2c)->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_STOP; in MXC_I2C_RevA_DMACallback()
1173 (temp_req->i2c)->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_RESTART; in MXC_I2C_RevA_DMACallback()
1175 (temp_req->i2c)->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_STOP; in MXC_I2C_RevA_DMACallback()
1187 int MXC_I2C_RevA_SlaveTransaction(mxc_i2c_reva_regs_t *i2c, mxc_i2c_reva_slave_handler_t callback, in MXC_I2C_RevA_SlaveTransaction() argument
1196 if (MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c) < 0) { in MXC_I2C_RevA_SlaveTransaction()
1200 if (i2c->ctrl & MXC_F_I2C_REVA_CTRL_MST_MODE) { in MXC_I2C_RevA_SlaveTransaction()
1204 MXC_I2C_ClearFlags((mxc_i2c_regs_t *)i2c, MXC_I2C_REVA_INTFL0_MASK, in MXC_I2C_RevA_SlaveTransaction()
1206 MXC_I2C_ClearTXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_SlaveTransaction()
1207 MXC_I2C_ClearRXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_SlaveTransaction()
1227 MXC_I2C_RevA_SlaveAsyncHandler(i2c, callback, int_en, &retVal); in MXC_I2C_RevA_SlaveTransaction()
1233 int MXC_I2C_RevA_SlaveTransactionAsync(mxc_i2c_reva_regs_t *i2c, in MXC_I2C_RevA_SlaveTransactionAsync() argument
1237 int i2cnum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_SlaveTransactionAsync()
1243 if (i2c->ctrl & MXC_F_I2C_REVA_CTRL_MST_MODE) { in MXC_I2C_RevA_SlaveTransactionAsync()
1251 MXC_I2C_ClearFlags((mxc_i2c_regs_t *)i2c, MXC_I2C_REVA_INTFL0_MASK, in MXC_I2C_RevA_SlaveTransactionAsync()
1253 MXC_I2C_ClearTXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_SlaveTransactionAsync()
1254 MXC_I2C_ClearRXFIFO((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_SlaveTransactionAsync()
1255 MXC_I2C_SetTXThreshold((mxc_i2c_regs_t *)i2c, 1); // set TX threshold to 2 bytes in MXC_I2C_RevA_SlaveTransactionAsync()
1256 MXC_I2C_SetRXThreshold((mxc_i2c_regs_t *)i2c, 1); // set RX threshold to 6 bytes in MXC_I2C_RevA_SlaveTransactionAsync()
1259 i2c->inten0 = interruptCheck; in MXC_I2C_RevA_SlaveTransactionAsync()
1264 int MXC_I2C_RevA_SetRXThreshold(mxc_i2c_reva_regs_t *i2c, unsigned int numBytes) in MXC_I2C_RevA_SetRXThreshold() argument
1266 unsigned int rxFIFOlen = (i2c->fifolen & MXC_F_I2C_REVA_FIFOLEN_RX_DEPTH) >> in MXC_I2C_RevA_SetRXThreshold()
1273 i2c->rxctrl0 = (i2c->rxctrl0 & ~MXC_F_I2C_REVA_RXCTRL0_THD_LVL) | in MXC_I2C_RevA_SetRXThreshold()
1278 unsigned int MXC_I2C_RevA_GetRXThreshold(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_GetRXThreshold() argument
1280 return (i2c->rxctrl0 & MXC_F_I2C_REVA_RXCTRL0_THD_LVL) >> MXC_F_I2C_REVA_RXCTRL0_THD_LVL_POS; in MXC_I2C_RevA_GetRXThreshold()
1283 int MXC_I2C_RevA_SetTXThreshold(mxc_i2c_reva_regs_t *i2c, unsigned int numBytes) in MXC_I2C_RevA_SetTXThreshold() argument
1285 unsigned int txFIFOlen = (i2c->fifolen & MXC_F_I2C_REVA_FIFOLEN_TX_DEPTH) >> in MXC_I2C_RevA_SetTXThreshold()
1292 i2c->txctrl0 = (i2c->txctrl0 & ~MXC_F_I2C_REVA_TXCTRL0_THD_LVL) | in MXC_I2C_RevA_SetTXThreshold()
1297 unsigned int MXC_I2C_RevA_GetTXThreshold(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_GetTXThreshold() argument
1299 return (i2c->txctrl0 & MXC_F_I2C_REVA_TXCTRL0_THD_LVL) >> MXC_F_I2C_REVA_TXCTRL0_THD_LVL_POS; in MXC_I2C_RevA_GetTXThreshold()
1302 void MXC_I2C_RevA_AsyncCallback(mxc_i2c_reva_regs_t *i2c, int retVal) in MXC_I2C_RevA_AsyncCallback() argument
1307 (mxc_i2c_reva_req_t *)AsyncRequests[MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c)]; in MXC_I2C_RevA_AsyncCallback()
1314 void MXC_I2C_RevA_AsyncStop(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_AsyncStop() argument
1317 i2c->inten0 = 0; in MXC_I2C_RevA_AsyncStop()
1318 i2c->inten1 = 0; in MXC_I2C_RevA_AsyncStop()
1320 i2c->intfl0 = i2c->intfl0; in MXC_I2C_RevA_AsyncStop()
1321 i2c->intfl1 = i2c->intfl1; in MXC_I2C_RevA_AsyncStop()
1325 AsyncRequests[MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c)] = NULL; in MXC_I2C_RevA_AsyncStop()
1328 void MXC_I2C_RevA_AbortAsync(mxc_i2c_reva_regs_t *i2c) in MXC_I2C_RevA_AbortAsync() argument
1332 MXC_I2C_RevA_AsyncCallback(i2c, E_ABORT); in MXC_I2C_RevA_AbortAsync()
1333 MXC_I2C_RevA_AsyncStop(i2c); in MXC_I2C_RevA_AbortAsync()
1340 mxc_i2c_reva_regs_t *i2c = (mxc_i2c_reva_regs_t *)MXC_I2C_GET_BASE(i2cNum); in MXC_I2C_RevA_MasterAsyncHandler() local
1344 if (i2c->intfl0 & MXC_I2C_REVA_ERROR) { in MXC_I2C_RevA_MasterAsyncHandler()
1346 i2c->intfl0 = i2c->intfl0; in MXC_I2C_RevA_MasterAsyncHandler()
1347 i2c->intfl1 = i2c->intfl1; in MXC_I2C_RevA_MasterAsyncHandler()
1348 i2c->inten0 = 0; in MXC_I2C_RevA_MasterAsyncHandler()
1349 i2c->inten1 = 0; in MXC_I2C_RevA_MasterAsyncHandler()
1351 MXC_I2C_Stop((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_MasterAsyncHandler()
1352 MXC_I2C_RevA_AsyncCallback(i2c, E_COMM_ERR); in MXC_I2C_RevA_MasterAsyncHandler()
1353 MXC_I2C_RevA_AsyncStop(i2c); in MXC_I2C_RevA_MasterAsyncHandler()
1360 if (i2c->intfl0 & MXC_F_I2C_REVA_INTFL0_TX_THD) { in MXC_I2C_RevA_MasterAsyncHandler()
1361 written += MXC_I2C_WriteTXFIFO((mxc_i2c_regs_t *)i2c, &req->tx_buf[written], in MXC_I2C_RevA_MasterAsyncHandler()
1363 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_TX_THD; in MXC_I2C_RevA_MasterAsyncHandler()
1368 i2c->inten0 |= MXC_F_I2C_REVA_INTEN0_TX_THD; in MXC_I2C_RevA_MasterAsyncHandler()
1370 i2c->inten0 &= ~(MXC_F_I2C_REVA_INTEN0_TX_THD); in MXC_I2C_RevA_MasterAsyncHandler()
1375 i2c->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_RESTART; in MXC_I2C_RevA_MasterAsyncHandler()
1376 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_DONE; in MXC_I2C_RevA_MasterAsyncHandler()
1377 i2c->inten0 |= (MXC_F_I2C_REVA_INTEN0_DONE); in MXC_I2C_RevA_MasterAsyncHandler()
1383 if (i2c->intfl0 & (MXC_F_I2C_REVA_INTFL0_RX_THD | MXC_F_I2C_REVA_INTFL0_DONE)) { in MXC_I2C_RevA_MasterAsyncHandler()
1385 MXC_I2C_ReadRXFIFO((mxc_i2c_regs_t *)i2c, &req->rx_buf[read], req->rx_len - read); in MXC_I2C_RevA_MasterAsyncHandler()
1386 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_RX_THD; in MXC_I2C_RevA_MasterAsyncHandler()
1392 (i2c->intfl0 & MXC_F_I2C_REVA_INTFL0_DONE)) { in MXC_I2C_RevA_MasterAsyncHandler()
1393 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_DONE; in MXC_I2C_RevA_MasterAsyncHandler()
1397 i2c->fifo = (req->addr << 1) | 0x1; // Load slave address with read bit. in MXC_I2C_RevA_MasterAsyncHandler()
1402 i2c->rxctrl1 = 0; in MXC_I2C_RevA_MasterAsyncHandler()
1404 i2c->rxctrl1 = (req->rx_len - read); // 0 for 256, otherwise number of bytes to read in MXC_I2C_RevA_MasterAsyncHandler()
1409 i2c->inten0 |= (MXC_F_I2C_REVA_INTEN0_RX_THD | MXC_F_I2C_REVA_INTEN0_DONE); in MXC_I2C_RevA_MasterAsyncHandler()
1411 i2c->inten0 &= ~(MXC_F_I2C_REVA_INTEN0_RX_THD | MXC_F_I2C_REVA_INTEN0_DONE); in MXC_I2C_RevA_MasterAsyncHandler()
1418 i2c->inten0 = 0; in MXC_I2C_RevA_MasterAsyncHandler()
1419 i2c->inten1 = 0; in MXC_I2C_RevA_MasterAsyncHandler()
1420 i2c->intfl0 = i2c->intfl0; in MXC_I2C_RevA_MasterAsyncHandler()
1421 i2c->intfl1 = i2c->intfl1; in MXC_I2C_RevA_MasterAsyncHandler()
1425 i2c->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_RESTART; in MXC_I2C_RevA_MasterAsyncHandler()
1427 i2c->mstctrl |= MXC_F_I2C_REVA_MSTCTRL_STOP; in MXC_I2C_RevA_MasterAsyncHandler()
1431 MXC_I2C_RevA_AsyncCallback(i2c, E_NO_ERROR); in MXC_I2C_RevA_MasterAsyncHandler()
1434 MXC_I2C_RevA_AsyncStop(i2c); in MXC_I2C_RevA_MasterAsyncHandler()
1442 void MXC_I2C_RevA_SlaveAsyncHandler(mxc_i2c_reva_regs_t *i2c, mxc_i2c_reva_slave_handler_t callback, in MXC_I2C_RevA_SlaveAsyncHandler() argument
1445 uint32_t tFlags = i2c->intfl0; in MXC_I2C_RevA_SlaveAsyncHandler()
1454 callback(i2c, MXC_I2C_REVA_EVT_TRANS_COMP, retVal); in MXC_I2C_RevA_SlaveAsyncHandler()
1457 MXC_I2C_RevA_ClearFlags(i2c, MXC_I2C_REVA_INTFL0_MASK, in MXC_I2C_RevA_SlaveAsyncHandler()
1459 MXC_I2C_RevA_ClearTXFIFO(i2c); in MXC_I2C_RevA_SlaveAsyncHandler()
1460 MXC_I2C_RevA_ClearRXFIFO(i2c); in MXC_I2C_RevA_SlaveAsyncHandler()
1463 AsyncRequests[MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c)] = NULL; in MXC_I2C_RevA_SlaveAsyncHandler()
1470 callback(i2c, MXC_I2C_REVA_EVT_RX_THRESH, NULL); in MXC_I2C_RevA_SlaveAsyncHandler()
1473 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_RX_THD; in MXC_I2C_RevA_SlaveAsyncHandler()
1476 if (i2c->intfl1 & MXC_F_I2C_REVA_INTFL1_RX_OV) { in MXC_I2C_RevA_SlaveAsyncHandler()
1478 callback(i2c, MXC_I2C_REVA_EVT_OVERFLOW, NULL); in MXC_I2C_RevA_SlaveAsyncHandler()
1481 i2c->intfl1 = MXC_F_I2C_REVA_INTFL1_RX_OV; in MXC_I2C_RevA_SlaveAsyncHandler()
1490 callback(i2c, MXC_I2C_REVA_EVT_TX_THRESH, NULL); in MXC_I2C_RevA_SlaveAsyncHandler()
1493 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_TX_THD; in MXC_I2C_RevA_SlaveAsyncHandler()
1496 if (i2c->intfl1 & MXC_F_I2C_REVA_INTFL1_TX_UN) { in MXC_I2C_RevA_SlaveAsyncHandler()
1498 callback(i2c, MXC_I2C_REVA_EVT_UNDERFLOW, NULL); in MXC_I2C_RevA_SlaveAsyncHandler()
1501 i2c->intfl1 = MXC_F_I2C_REVA_INTFL1_TX_UN; in MXC_I2C_RevA_SlaveAsyncHandler()
1508 callback(i2c, MXC_I2C_REVA_EVT_TRANS_COMP, retVal); in MXC_I2C_RevA_SlaveAsyncHandler()
1511 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_TX_LOCKOUT; in MXC_I2C_RevA_SlaveAsyncHandler()
1514 AsyncRequests[MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c)] = NULL; in MXC_I2C_RevA_SlaveAsyncHandler()
1525 callback(i2c, MXC_I2C_REVA_EVT_TRANS_COMP, retVal); in MXC_I2C_RevA_SlaveAsyncHandler()
1528 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_STOP; in MXC_I2C_RevA_SlaveAsyncHandler()
1531 AsyncRequests[MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c)] = NULL; in MXC_I2C_RevA_SlaveAsyncHandler()
1534 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_DONE; in MXC_I2C_RevA_SlaveAsyncHandler()
1545 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_STOP; in MXC_I2C_RevA_SlaveAsyncHandler()
1548 if (i2c->ctrl & MXC_F_I2C_REVA_CTRL_READ) { in MXC_I2C_RevA_SlaveAsyncHandler()
1551 callback(i2c, MXC_I2C_REVA_EVT_MASTER_RD, NULL); in MXC_I2C_RevA_SlaveAsyncHandler()
1554 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_RD_ADDR_MATCH; in MXC_I2C_RevA_SlaveAsyncHandler()
1555 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_ADDR_MATCH; in MXC_I2C_RevA_SlaveAsyncHandler()
1556 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_TX_LOCKOUT; in MXC_I2C_RevA_SlaveAsyncHandler()
1564 callback(i2c, MXC_I2C_REVA_EVT_MASTER_WR, NULL); in MXC_I2C_RevA_SlaveAsyncHandler()
1567 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_WR_ADDR_MATCH; in MXC_I2C_RevA_SlaveAsyncHandler()
1568 i2c->intfl0 = MXC_F_I2C_REVA_INTFL0_ADDR_MATCH; in MXC_I2C_RevA_SlaveAsyncHandler()
1577 void MXC_I2C_RevA_AsyncHandler(mxc_i2c_reva_regs_t *i2c, uint32_t interruptCheck) in MXC_I2C_RevA_AsyncHandler() argument
1579 int i2cNum = MXC_I2C_GET_IDX((mxc_i2c_regs_t *)i2c); in MXC_I2C_RevA_AsyncHandler()
1587 if (i2c->ctrl & MXC_F_I2C_REVA_CTRL_MST_MODE) { in MXC_I2C_RevA_AsyncHandler()
1592 int_en[0] = i2c->inten0; in MXC_I2C_RevA_AsyncHandler()
1593 int_en[1] = i2c->inten1; in MXC_I2C_RevA_AsyncHandler()
1595 MXC_I2C_RevA_SlaveAsyncHandler(i2c, callback, int_en, &slaveRetVal); in MXC_I2C_RevA_AsyncHandler()
1597 i2c->inten0 = int_en[0]; in MXC_I2C_RevA_AsyncHandler()
1598 i2c->inten1 = int_en[1]; in MXC_I2C_RevA_AsyncHandler()