Lines Matching refs:base
35 static void smartcard_emvsim_CompleteSendData(EMVSIM_Type *base, smartcard_context_t *context);
36 static void smartcard_emvsim_StartSendData(EMVSIM_Type *base, smartcard_context_t *context);
37 static void smartcard_emvsim_CompleteReceiveData(EMVSIM_Type *base, smartcard_context_t *context);
38 static void smartcard_emvsim_StartReceiveData(EMVSIM_Type *base, smartcard_context_t *context);
39 static void smartcard_emvsim_SetTransferType(EMVSIM_Type *base,
42 static uint32_t smartcard_emvsim_GetInstance(EMVSIM_Type *base);
53 static uint32_t smartcard_emvsim_GetInstance(EMVSIM_Type *base) in smartcard_emvsim_GetInstance() argument
61 if (s_emvsimBases[instance] == base) in smartcard_emvsim_GetInstance()
77 static void smartcard_emvsim_CompleteSendData(EMVSIM_Type *base, smartcard_context_t *context) in smartcard_emvsim_CompleteSendData() argument
82 base->INT_MASK |= (EMVSIM_INT_MASK_ETC_IM_MASK | EMVSIM_INT_MASK_TDT_IM_MASK); in smartcard_emvsim_CompleteSendData()
85 base->CTRL &= ~EMVSIM_CTRL_XMT_EN_MASK; in smartcard_emvsim_CompleteSendData()
87 base->RX_STATUS = EMVSIM_RX_STATUS_RX_DATA_MASK; in smartcard_emvsim_CompleteSendData()
89 base->CTRL |= EMVSIM_CTRL_RCV_EN_MASK; in smartcard_emvsim_CompleteSendData()
108 static void smartcard_emvsim_CompleteReceiveData(EMVSIM_Type *base, smartcard_context_t *context) in smartcard_emvsim_CompleteReceiveData() argument
113 base->INT_MASK |= (EMVSIM_INT_MASK_RDT_IM_MASK | EMVSIM_INT_MASK_RX_DATA_IM_MASK); in smartcard_emvsim_CompleteReceiveData()
116 while (((base->RX_STATUS & EMVSIM_RX_STATUS_RX_CNT_MASK) != 0u) && ((context->xSize) > 0u)) in smartcard_emvsim_CompleteReceiveData()
119 *context->xBuff = (uint8_t)(base->RX_BUF); in smartcard_emvsim_CompleteReceiveData()
139 static void smartcard_emvsim_StartSendData(EMVSIM_Type *base, smartcard_context_t *context) in smartcard_emvsim_StartSendData() argument
150 control = base->CTRL; in smartcard_emvsim_StartSendData()
151 base->CTRL = 0u; in smartcard_emvsim_StartSendData()
152 base->TX_GETU = context->cardParams.GTN; in smartcard_emvsim_StartSendData()
154 base->TX_STATUS = EMVSIM_TX_STATUS_GPCNT1_TO_MASK; in smartcard_emvsim_StartSendData()
156 base->INT_MASK |= EMVSIM_INT_MASK_GPCNT1_IM_MASK; in smartcard_emvsim_StartSendData()
158 base->GPCNT1_VAL = delay; in smartcard_emvsim_StartSendData()
160 base->CLKCFG = in smartcard_emvsim_StartSendData()
161 …(base->CLKCFG & ~EMVSIM_CLKCFG_GPCNT1_CLK_SEL_MASK) | EMVSIM_CLKCFG_GPCNT1_CLK_SEL(kEMVSIM_GPCRxCl… in smartcard_emvsim_StartSendData()
163 base->CTRL |= EMVSIM_CTRL_RCV_EN_MASK; in smartcard_emvsim_StartSendData()
165 while ((base->TX_STATUS & EMVSIM_TX_STATUS_GPCNT1_TO_MASK) == 0u) in smartcard_emvsim_StartSendData()
169 base->TX_STATUS = EMVSIM_TX_STATUS_GPCNT1_TO_MASK; in smartcard_emvsim_StartSendData()
170 base->CLKCFG &= ~EMVSIM_CLKCFG_GPCNT1_CLK_SEL_MASK; in smartcard_emvsim_StartSendData()
172 base->CTRL = control & ~(EMVSIM_CTRL_XMT_EN_MASK | EMVSIM_CTRL_RCV_EN_MASK); in smartcard_emvsim_StartSendData()
178 base->CTRL |= EMVSIM_CTRL_FLSH_TX_MASK; in smartcard_emvsim_StartSendData()
181 base->CTRL |= EMVSIM_CTRL_XMT_EN_MASK; in smartcard_emvsim_StartSendData()
184 base->TX_THD &= ~EMVSIM_TX_THD_TDT_MASK; in smartcard_emvsim_StartSendData()
187 base->INT_MASK &= ~EMVSIM_INT_MASK_TDT_IM_MASK; in smartcard_emvsim_StartSendData()
196 static void smartcard_emvsim_StartReceiveData(EMVSIM_Type *base, smartcard_context_t *context) in smartcard_emvsim_StartReceiveData() argument
203 base->INT_MASK &= ~EMVSIM_INT_MASK_BWT_ERR_IM_MASK; in smartcard_emvsim_StartReceiveData()
205 base->CTRL &= ~EMVSIM_CTRL_XMT_EN_MASK; in smartcard_emvsim_StartReceiveData()
207 base->CTRL |= EMVSIM_CTRL_RCV_EN_MASK; in smartcard_emvsim_StartReceiveData()
214 rx_thd = (base->RX_THD & ~EMVSIM_RX_THD_RDT_MASK); in smartcard_emvsim_StartReceiveData()
216 base->RX_THD = rx_thd; in smartcard_emvsim_StartReceiveData()
220 base->RX_THD = ((base->RX_THD & ~EMVSIM_RX_THD_RDT_MASK) | context->rxFifoThreshold); in smartcard_emvsim_StartReceiveData()
224 base->INT_MASK &= ~EMVSIM_INT_MASK_RDT_IM_MASK; in smartcard_emvsim_StartReceiveData()
230 base->INT_MASK &= ~EMVSIM_INT_MASK_RX_DATA_IM_MASK; in smartcard_emvsim_StartReceiveData()
240 static void smartcard_emvsim_SetTransferType(EMVSIM_Type *base, in smartcard_emvsim_SetTransferType() argument
255 …base->CTRL &= ~(EMVSIM_CTRL_RCVR_11_MASK | EMVSIM_CTRL_XMT_CRC_LRC_MASK | EMVSIM_CTRL_LRC_EN_MASK | in smartcard_emvsim_SetTransferType()
264 … base->DIVISOR = (((uint32_t)context->cardParams.Fi / context->cardParams.currentD) & 0x1FFu); in smartcard_emvsim_SetTransferType()
269 base->CWT_VAL = temp16; in smartcard_emvsim_SetTransferType()
270 base->BWT_VAL = temp16; in smartcard_emvsim_SetTransferType()
274 base->TX_GETU = context->cardParams.GTN; in smartcard_emvsim_SetTransferType()
277 base->RX_THD = EMVSIM_RX_THD_RDT(1); in smartcard_emvsim_SetTransferType()
279 …tdt = (uint8_t)(((base->PARAM & EMVSIM_PARAM_TX_FIFO_DEPTH_MASK) >> EMVSIM_PARAM_TX_FIFO_DEPTH_SHI… in smartcard_emvsim_SetTransferType()
280 … base->TX_THD = (EMVSIM_TX_THD_TNCK_THD(SMARTCARD_EMV_TX_NACK_THRESHOLD) | EMVSIM_TX_THD_TDT(tdt)); in smartcard_emvsim_SetTransferType()
282 base->RX_STATUS = 0xFFFFFFFFu; in smartcard_emvsim_SetTransferType()
284 base->INT_MASK &= ~EMVSIM_INT_MASK_TNACK_IM_MASK; in smartcard_emvsim_SetTransferType()
293 base->CTRL &= in smartcard_emvsim_SetTransferType()
300 base->CWT_VAL = temp16; in smartcard_emvsim_SetTransferType()
301 base->BWT_VAL = temp16; in smartcard_emvsim_SetTransferType()
307 base->TX_GETU = context->cardParams.GTN; in smartcard_emvsim_SetTransferType()
310 … base->RX_THD = (EMVSIM_RX_THD_RNCK_THD(SMARTCARD_EMV_RX_NACK_THRESHOLD) | EMVSIM_RX_THD_RDT(1)); in smartcard_emvsim_SetTransferType()
312 …tdt = (uint8_t)(((base->PARAM & EMVSIM_PARAM_TX_FIFO_DEPTH_MASK) >> EMVSIM_PARAM_TX_FIFO_DEPTH_SHI… in smartcard_emvsim_SetTransferType()
313 … base->TX_THD = (EMVSIM_TX_THD_TNCK_THD(SMARTCARD_EMV_TX_NACK_THRESHOLD) | EMVSIM_TX_THD_TDT(tdt)); in smartcard_emvsim_SetTransferType()
315 base->INT_MASK &= ~EMVSIM_INT_MASK_TNACK_IM_MASK; in smartcard_emvsim_SetTransferType()
317 base->CTRL |= in smartcard_emvsim_SetTransferType()
324 base->CTRL &= ~(EMVSIM_CTRL_CWT_EN_MASK | EMVSIM_CTRL_BWT_EN_MASK | EMVSIM_CTRL_ANACK_MASK | in smartcard_emvsim_SetTransferType()
331 base->BWT_VAL = bwiVal + 100u; in smartcard_emvsim_SetTransferType()
333 base->BWT_VAL = bwiVal; in smartcard_emvsim_SetTransferType()
357 base->CWT_VAL = temp16; in smartcard_emvsim_SetTransferType()
359 base->BGT_VAL = context->cardParams.BGI; in smartcard_emvsim_SetTransferType()
363 base->TX_GETU = context->cardParams.GTN; in smartcard_emvsim_SetTransferType()
366 … base->CTRL |= (EMVSIM_CTRL_RCVR_11_MASK | EMVSIM_CTRL_CWT_EN_MASK | EMVSIM_CTRL_BWT_EN_MASK); in smartcard_emvsim_SetTransferType()
368 … base->RX_THD = (EMVSIM_RX_THD_RNCK_THD(SMARTCARD_EMV_RX_NACK_THRESHOLD) | EMVSIM_RX_THD_RDT(1)); in smartcard_emvsim_SetTransferType()
370 …tdt = (uint8_t)(((base->PARAM & EMVSIM_PARAM_TX_FIFO_DEPTH_MASK) >> EMVSIM_PARAM_TX_FIFO_DEPTH_SHI… in smartcard_emvsim_SetTransferType()
371 … base->TX_THD = (EMVSIM_TX_THD_TDT(tdt) | EMVSIM_TX_THD_TNCK_THD(SMARTCARD_EMV_TX_NACK_THRESHOLD)); in smartcard_emvsim_SetTransferType()
414 status_t SMARTCARD_EMVSIM_Init(EMVSIM_Type *base, smartcard_context_t *context, uint32_t srcClock_H… in SMARTCARD_EMVSIM_Init() argument
416 assert((NULL != base)); in SMARTCARD_EMVSIM_Init()
423 uint32_t instance = smartcard_emvsim_GetInstance(base); in SMARTCARD_EMVSIM_Init()
432 context->base = base; in SMARTCARD_EMVSIM_Init()
434 base->CLKCFG = 0u; in SMARTCARD_EMVSIM_Init()
435 base->DIVISOR = 372u; in SMARTCARD_EMVSIM_Init()
436 base->CTRL = 0x300u; in SMARTCARD_EMVSIM_Init()
437 base->INT_MASK = 0x7FFFu; in SMARTCARD_EMVSIM_Init()
438 base->RX_THD = 1u; in SMARTCARD_EMVSIM_Init()
439 base->TX_THD = 0u; in SMARTCARD_EMVSIM_Init()
440 base->PCSR = 0x1000000u; in SMARTCARD_EMVSIM_Init()
441 base->TX_GETU = 0u; in SMARTCARD_EMVSIM_Init()
442 base->CWT_VAL = 0xFFFFu; in SMARTCARD_EMVSIM_Init()
443 base->BWT_VAL = 0xFFFFFFFFu; in SMARTCARD_EMVSIM_Init()
444 base->BGT_VAL = 0u; in SMARTCARD_EMVSIM_Init()
445 base->GPCNT0_VAL = 0xFFFFu; in SMARTCARD_EMVSIM_Init()
446 base->GPCNT1_VAL = 0xFFFFu; in SMARTCARD_EMVSIM_Init()
448 smartcard_emvsim_SetTransferType(base, context, kSMARTCARD_SetupATRMode); in SMARTCARD_EMVSIM_Init()
451 … (uint8_t)((base->PARAM & EMVSIM_PARAM_TX_FIFO_DEPTH_MASK) >> EMVSIM_PARAM_TX_FIFO_DEPTH_SHIFT); in SMARTCARD_EMVSIM_Init()
454 … (uint8_t)((base->PARAM & EMVSIM_PARAM_RX_FIFO_DEPTH_MASK) >> EMVSIM_PARAM_RX_FIFO_DEPTH_SHIFT); in SMARTCARD_EMVSIM_Init()
469 base->CTRL &= ~EMVSIM_CTRL_XMT_EN_MASK & ~EMVSIM_CTRL_RCV_EN_MASK; in SMARTCARD_EMVSIM_Init()
480 void SMARTCARD_EMVSIM_Deinit(EMVSIM_Type *base) in SMARTCARD_EMVSIM_Deinit() argument
486 if ((base->TX_STATUS & EMVSIM_TX_STATUS_TX_CNT_MASK) != 0u) in SMARTCARD_EMVSIM_Deinit()
488 while ((base->TX_STATUS & EMVSIM_TX_STATUS_ETCF_MASK) == 0u) in SMARTCARD_EMVSIM_Deinit()
492 instance = smartcard_emvsim_GetInstance(base); in SMARTCARD_EMVSIM_Deinit()
494 base->CTRL &= ~EMVSIM_CTRL_XMT_EN_MASK & ~EMVSIM_CTRL_RCV_EN_MASK; in SMARTCARD_EMVSIM_Deinit()
525 status_t SMARTCARD_EMVSIM_TransferNonBlocking(EMVSIM_Type *base, smartcard_context_t *context, smar… in SMARTCARD_EMVSIM_TransferNonBlocking() argument
538 if (0 != SMARTCARD_EMVSIM_GetTransferRemainingBytes(base, context)) in SMARTCARD_EMVSIM_TransferNonBlocking()
562 smartcard_emvsim_StartReceiveData(base, context); in SMARTCARD_EMVSIM_TransferNonBlocking()
569 smartcard_emvsim_StartSendData(base, context); in SMARTCARD_EMVSIM_TransferNonBlocking()
592 int32_t SMARTCARD_EMVSIM_GetTransferRemainingBytes(EMVSIM_Type *base, smartcard_context_t *context) in SMARTCARD_EMVSIM_GetTransferRemainingBytes() argument
605 … count += ((base->TX_STATUS & EMVSIM_TX_STATUS_TX_CNT_MASK) >> EMVSIM_TX_STATUS_TX_CNT_SHIFT); in SMARTCARD_EMVSIM_GetTransferRemainingBytes()
625 status_t SMARTCARD_EMVSIM_AbortTransfer(EMVSIM_Type *base, smartcard_context_t *context) in SMARTCARD_EMVSIM_AbortTransfer() argument
642 smartcard_emvsim_CompleteReceiveData(base, context); in SMARTCARD_EMVSIM_AbortTransfer()
646 smartcard_emvsim_CompleteSendData(base, context); in SMARTCARD_EMVSIM_AbortTransfer()
662 void SMARTCARD_EMVSIM_IRQHandler(EMVSIM_Type *base, smartcard_context_t *context) in SMARTCARD_EMVSIM_IRQHandler() argument
671 …if (((base->PCSR & EMVSIM_PCSR_SPDIM_MASK) == 0u) && ((base->PCSR & EMVSIM_PCSR_SPDIF_MASK) != 0u)) in SMARTCARD_EMVSIM_IRQHandler()
674 base->PCSR |= EMVSIM_PCSR_SPDIF_MASK; in SMARTCARD_EMVSIM_IRQHandler()
676 if (((emvsim_presence_detect_edge_t)(uint32_t)((base->PCSR & EMVSIM_PCSR_SPDES_MASK) >> in SMARTCARD_EMVSIM_IRQHandler()
678 ((emvsim_presence_detect_status_t)(uint32_t)((base->PCSR & EMVSIM_PCSR_SPDP_MASK) >> in SMARTCARD_EMVSIM_IRQHandler()
681 base->PCSR |= EMVSIM_PCSR_SPDES_MASK; in SMARTCARD_EMVSIM_IRQHandler()
683 if (((emvsim_presence_detect_edge_t)(uint32_t)((base->PCSR & EMVSIM_PCSR_SPDES_MASK) >> in SMARTCARD_EMVSIM_IRQHandler()
685 ((emvsim_presence_detect_status_t)(uint32_t)((base->PCSR & EMVSIM_PCSR_SPDP_MASK) >> in SMARTCARD_EMVSIM_IRQHandler()
688 base->PCSR &= ~EMVSIM_PCSR_SPDES_MASK; in SMARTCARD_EMVSIM_IRQHandler()
699 …if (((base->INT_MASK & EMVSIM_INT_MASK_GPCNT0_IM_MASK) >> EMVSIM_INT_MASK_GPCNT0_IM_SHIFT == 0u) && in SMARTCARD_EMVSIM_IRQHandler()
700 ((base->TX_STATUS & EMVSIM_TX_STATUS_GPCNT0_TO_MASK) != 0u)) in SMARTCARD_EMVSIM_IRQHandler()
703 base->CLKCFG &= ~(EMVSIM_CLKCFG_GPCNT0_CLK_SEL_MASK | EMVSIM_CLKCFG_GPCNT1_CLK_SEL_MASK); in SMARTCARD_EMVSIM_IRQHandler()
706 base->INT_MASK |= EMVSIM_INT_MASK_GPCNT0_IM_MASK; in SMARTCARD_EMVSIM_IRQHandler()
707 base->TX_STATUS = EMVSIM_TX_STATUS_GPCNT0_TO_MASK; in SMARTCARD_EMVSIM_IRQHandler()
709 base->CTRL &= ~EMVSIM_CTRL_RCV_EN_MASK; in SMARTCARD_EMVSIM_IRQHandler()
710 base->CTRL |= EMVSIM_CTRL_RCV_EN_MASK; in SMARTCARD_EMVSIM_IRQHandler()
713 smartcard_emvsim_CompleteReceiveData(base, context); in SMARTCARD_EMVSIM_IRQHandler()
717 if (((base->INT_MASK & EMVSIM_INT_MASK_GPCNT1_IM_MASK) == 0u) && in SMARTCARD_EMVSIM_IRQHandler()
718 ((base->TX_STATUS & EMVSIM_TX_STATUS_GPCNT1_TO_MASK) != 0u)) in SMARTCARD_EMVSIM_IRQHandler()
720 base->CLKCFG &= ~EMVSIM_CLKCFG_GPCNT1_CLK_SEL_MASK; in SMARTCARD_EMVSIM_IRQHandler()
722 base->INT_MASK |= EMVSIM_INT_MASK_GPCNT1_IM_MASK; in SMARTCARD_EMVSIM_IRQHandler()
723 base->TX_STATUS = EMVSIM_TX_STATUS_GPCNT1_TO_MASK; in SMARTCARD_EMVSIM_IRQHandler()
726 smartcard_emvsim_CompleteReceiveData(base, context); in SMARTCARD_EMVSIM_IRQHandler()
735 if ((base->RX_STATUS & EMVSIM_RX_STATUS_PEF_MASK) != 0u) in SMARTCARD_EMVSIM_IRQHandler()
739 base->RX_STATUS = EMVSIM_RX_STATUS_PEF_MASK; in SMARTCARD_EMVSIM_IRQHandler()
742 if ((base->TX_STATUS & EMVSIM_TX_STATUS_TNTE_MASK) != 0u) in SMARTCARD_EMVSIM_IRQHandler()
746 base->INT_MASK |= EMVSIM_INT_MASK_TNACK_IM_MASK; in SMARTCARD_EMVSIM_IRQHandler()
748 base->TX_STATUS = EMVSIM_TX_STATUS_TNTE_MASK; in SMARTCARD_EMVSIM_IRQHandler()
750 smartcard_emvsim_CompleteSendData(base, context); in SMARTCARD_EMVSIM_IRQHandler()
754 if ((base->RX_STATUS & EMVSIM_RX_STATUS_RTE_MASK) != 0u) in SMARTCARD_EMVSIM_IRQHandler()
758 base->RX_STATUS = EMVSIM_RX_STATUS_RTE_MASK; in SMARTCARD_EMVSIM_IRQHandler()
761 smartcard_emvsim_CompleteReceiveData(base, context); in SMARTCARD_EMVSIM_IRQHandler()
765 if (((base->INT_MASK & EMVSIM_INT_MASK_CWT_ERR_IM_MASK) == 0u) && in SMARTCARD_EMVSIM_IRQHandler()
766 ((base->RX_STATUS & EMVSIM_RX_STATUS_CWT_ERR_MASK) != 0u)) in SMARTCARD_EMVSIM_IRQHandler()
768 base->INT_MASK |= EMVSIM_INT_MASK_CWT_ERR_IM_MASK; in SMARTCARD_EMVSIM_IRQHandler()
770 base->CTRL &= ~EMVSIM_CTRL_CWT_EN_MASK; in SMARTCARD_EMVSIM_IRQHandler()
772 base->RX_STATUS = EMVSIM_RX_STATUS_CWT_ERR_MASK; in SMARTCARD_EMVSIM_IRQHandler()
774 base->CTRL |= EMVSIM_CTRL_CWT_EN_MASK; in SMARTCARD_EMVSIM_IRQHandler()
787 smartcard_emvsim_CompleteReceiveData(base, context); in SMARTCARD_EMVSIM_IRQHandler()
791 if (((base->INT_MASK & EMVSIM_INT_MASK_BWT_ERR_IM_MASK) == 0u) && in SMARTCARD_EMVSIM_IRQHandler()
792 ((base->RX_STATUS & EMVSIM_RX_STATUS_BWT_ERR_MASK) != 0u)) in SMARTCARD_EMVSIM_IRQHandler()
794 base->INT_MASK |= EMVSIM_INT_MASK_BWT_ERR_IM_MASK; in SMARTCARD_EMVSIM_IRQHandler()
796 base->CTRL &= ~EMVSIM_CTRL_BWT_EN_MASK; in SMARTCARD_EMVSIM_IRQHandler()
798 base->RX_STATUS = EMVSIM_RX_STATUS_BWT_ERR_MASK; in SMARTCARD_EMVSIM_IRQHandler()
800 base->CTRL |= EMVSIM_CTRL_BWT_EN_MASK; in SMARTCARD_EMVSIM_IRQHandler()
813 (void)SMARTCARD_EMVSIM_Control(base, context, kSMARTCARD_ResetWaitTimeMultiplier, 1u); in SMARTCARD_EMVSIM_IRQHandler()
817 smartcard_emvsim_CompleteReceiveData(base, context); in SMARTCARD_EMVSIM_IRQHandler()
823 if (((base->INT_MASK & EMVSIM_INT_MASK_RX_DATA_IM_MASK) == 0u) && in SMARTCARD_EMVSIM_IRQHandler()
824 ((base->RX_STATUS & EMVSIM_RX_STATUS_RX_DATA_MASK) != 0u)) in SMARTCARD_EMVSIM_IRQHandler()
827 ((base->INT_MASK & EMVSIM_INT_MASK_BWT_ERR_IM_MASK) == 0u)) in SMARTCARD_EMVSIM_IRQHandler()
831 base->RX_STATUS = EMVSIM_RX_STATUS_CWT_ERR_MASK; in SMARTCARD_EMVSIM_IRQHandler()
833 base->CTRL |= EMVSIM_CTRL_CWT_EN_MASK; in SMARTCARD_EMVSIM_IRQHandler()
835 …base->INT_MASK = (base->INT_MASK & ~EMVSIM_INT_MASK_CWT_ERR_IM_MASK) | EMVSIM_INT_MASK_BWT_ERR_IM_… in SMARTCARD_EMVSIM_IRQHandler()
838 base->INT_MASK |= EMVSIM_INT_MASK_RX_DATA_IM_MASK; in SMARTCARD_EMVSIM_IRQHandler()
842 if (((base->INT_MASK & EMVSIM_INT_MASK_RDT_IM_MASK) == 0u) && in SMARTCARD_EMVSIM_IRQHandler()
843 ((base->RX_STATUS & EMVSIM_RX_STATUS_RDTF_MASK) != 0u)) in SMARTCARD_EMVSIM_IRQHandler()
848 (void)(base->RX_BUF); in SMARTCARD_EMVSIM_IRQHandler()
850 if ((base->CTRL & EMVSIM_CTRL_ICM_MASK) != 0u) in SMARTCARD_EMVSIM_IRQHandler()
859 …(smartcard_card_convention_t)(uint32_t)((base->CTRL & EMVSIM_CTRL_IC_MASK) >> EMVSIM_CTRL_IC_SHIFT… in SMARTCARD_EMVSIM_IRQHandler()
863 … base->CLKCFG &= ~(EMVSIM_CLKCFG_GPCNT0_CLK_SEL_MASK | EMVSIM_CLKCFG_GPCNT1_CLK_SEL_MASK); in SMARTCARD_EMVSIM_IRQHandler()
864 base->INT_MASK |= EMVSIM_INT_MASK_GPCNT0_IM_MASK; in SMARTCARD_EMVSIM_IRQHandler()
865 smartcard_emvsim_CompleteReceiveData(base, context); in SMARTCARD_EMVSIM_IRQHandler()
869 … base->CLKCFG &= ~(EMVSIM_CLKCFG_GPCNT0_CLK_SEL_MASK | EMVSIM_CLKCFG_GPCNT1_CLK_SEL_MASK); in SMARTCARD_EMVSIM_IRQHandler()
871 base->CLKCFG |= EMVSIM_CLKCFG_GPCNT1_CLK_SEL(kEMVSIM_GPCTxClock); in SMARTCARD_EMVSIM_IRQHandler()
873 …base->INT_MASK = (base->INT_MASK & ~EMVSIM_INT_MASK_GPCNT1_IM_MASK) | EMVSIM_INT_MASK_GPCNT0_IM_MA… in SMARTCARD_EMVSIM_IRQHandler()
875 smartcard_emvsim_CompleteReceiveData(base, context); in SMARTCARD_EMVSIM_IRQHandler()
881 while (((base->RX_STATUS & EMVSIM_RX_STATUS_RX_CNT_MASK) != 0u) && ((context->xSize) > 0u)) in SMARTCARD_EMVSIM_IRQHandler()
884 *context->xBuff = (uint8_t)(base->RX_BUF); in SMARTCARD_EMVSIM_IRQHandler()
892 smartcard_emvsim_CompleteReceiveData(base, context); in SMARTCARD_EMVSIM_IRQHandler()
902 rx_thd = (base->RX_THD & ~EMVSIM_RX_THD_RDT_MASK); in SMARTCARD_EMVSIM_IRQHandler()
904 base->RX_THD = rx_thd; in SMARTCARD_EMVSIM_IRQHandler()
910 if (((base->INT_MASK & EMVSIM_INT_MASK_ETC_IM_MASK) == 0u) && in SMARTCARD_EMVSIM_IRQHandler()
911 ((base->TX_STATUS & EMVSIM_TX_STATUS_ETCF_MASK) != 0u)) in SMARTCARD_EMVSIM_IRQHandler()
913 smartcard_emvsim_CompleteSendData(base, context); in SMARTCARD_EMVSIM_IRQHandler()
917 if (((base->INT_MASK & EMVSIM_INT_MASK_TDT_IM_MASK) == 0u) && in SMARTCARD_EMVSIM_IRQHandler()
918 ((base->TX_STATUS & EMVSIM_TX_STATUS_TDTF_MASK) != 0u)) in SMARTCARD_EMVSIM_IRQHandler()
922 smartcard_emvsim_CompleteSendData(base, context); in SMARTCARD_EMVSIM_IRQHandler()
928 base->INT_MASK |= EMVSIM_INT_MASK_TDT_IM_MASK; in SMARTCARD_EMVSIM_IRQHandler()
930 base->TX_GETU = 0; in SMARTCARD_EMVSIM_IRQHandler()
933 base->TX_BUF = *(context->xBuff); in SMARTCARD_EMVSIM_IRQHandler()
939 base->TX_STATUS |= EMVSIM_TX_STATUS_ETCF_MASK; in SMARTCARD_EMVSIM_IRQHandler()
940 base->INT_MASK &= ~EMVSIM_INT_MASK_ETC_IM_MASK; in SMARTCARD_EMVSIM_IRQHandler()
945 size_t getu_tail = (size_t)(base->TX_GETU > 0u); in SMARTCARD_EMVSIM_IRQHandler()
946 … while (((context->txFifoEntryCount - (uint8_t)((base->TX_STATUS & EMVSIM_TX_STATUS_TX_CNT_MASK) >> in SMARTCARD_EMVSIM_IRQHandler()
951 base->TX_BUF = *(context->xBuff); in SMARTCARD_EMVSIM_IRQHandler()
959 base->INT_MASK |= EMVSIM_INT_MASK_TDT_IM_MASK; in SMARTCARD_EMVSIM_IRQHandler()
962 base->TX_STATUS |= EMVSIM_TX_STATUS_ETCF_MASK; in SMARTCARD_EMVSIM_IRQHandler()
963 base->INT_MASK &= ~EMVSIM_INT_MASK_ETC_IM_MASK; in SMARTCARD_EMVSIM_IRQHandler()
981 status_t SMARTCARD_EMVSIM_Control(EMVSIM_Type *base, in SMARTCARD_EMVSIM_Control() argument
1005 base->CTRL &= ~EMVSIM_CTRL_RCV_EN_MASK; in SMARTCARD_EMVSIM_Control()
1007 base->CLKCFG &= ~EMVSIM_CLKCFG_GPCNT1_CLK_SEL_MASK; in SMARTCARD_EMVSIM_Control()
1008 base->TX_STATUS = EMVSIM_TX_STATUS_GPCNT1_TO_MASK; in SMARTCARD_EMVSIM_Control()
1009 base->INT_MASK |= EMVSIM_INT_MASK_GPCNT1_IM_MASK; in SMARTCARD_EMVSIM_Control()
1013 base->INT_MASK &= ~EMVSIM_INT_MASK_BGT_ERR_IM_MASK; in SMARTCARD_EMVSIM_Control()
1017 base->INT_MASK |= EMVSIM_INT_MASK_BGT_ERR_IM_MASK; in SMARTCARD_EMVSIM_Control()
1021 base->CTRL &= ~(EMVSIM_CTRL_CWT_EN_MASK | EMVSIM_CTRL_BWT_EN_MASK); in SMARTCARD_EMVSIM_Control()
1022 base->CTRL |= (EMVSIM_CTRL_CWT_EN_MASK | EMVSIM_CTRL_BWT_EN_MASK); in SMARTCARD_EMVSIM_Control()
1026 base->INT_MASK |= EMVSIM_INT_MASK_BGT_ERR_IM_MASK; in SMARTCARD_EMVSIM_Control()
1028 base->INT_MASK &= (~EMVSIM_INT_MASK_CWT_ERR_IM_MASK & ~EMVSIM_INT_MASK_BWT_ERR_IM_MASK); in SMARTCARD_EMVSIM_Control()
1032 base->INT_MASK |= (EMVSIM_INT_MASK_CWT_ERR_IM_MASK | EMVSIM_INT_MASK_BWT_ERR_IM_MASK); in SMARTCARD_EMVSIM_Control()
1036 base->CTRL &= ~EMVSIM_CTRL_CWT_EN_MASK; in SMARTCARD_EMVSIM_Control()
1037 base->CTRL |= EMVSIM_CTRL_CWT_EN_MASK; in SMARTCARD_EMVSIM_Control()
1040 base->CTRL |= EMVSIM_CTRL_CWT_EN_MASK; in SMARTCARD_EMVSIM_Control()
1042 base->INT_MASK &= ~EMVSIM_INT_MASK_CWT_ERR_IM_MASK; in SMARTCARD_EMVSIM_Control()
1046 base->CTRL &= ~EMVSIM_CTRL_CWT_EN_MASK; in SMARTCARD_EMVSIM_Control()
1048 base->INT_MASK |= EMVSIM_INT_MASK_CWT_ERR_IM_MASK; in SMARTCARD_EMVSIM_Control()
1052 base->CTRL &= ~EMVSIM_CTRL_BWT_EN_MASK; in SMARTCARD_EMVSIM_Control()
1053 base->CTRL |= EMVSIM_CTRL_BWT_EN_MASK; in SMARTCARD_EMVSIM_Control()
1056 base->CTRL |= EMVSIM_CTRL_BWT_EN_MASK; in SMARTCARD_EMVSIM_Control()
1058 base->INT_MASK &= ~EMVSIM_INT_MASK_BWT_ERR_IM_MASK; in SMARTCARD_EMVSIM_Control()
1062 base->INT_MASK |= EMVSIM_INT_MASK_BWT_ERR_IM_MASK; in SMARTCARD_EMVSIM_Control()
1066 base->RX_STATUS = 0xFFFFFFFFu; in SMARTCARD_EMVSIM_Control()
1070 base->CTRL |= EMVSIM_CTRL_ICM_MASK; in SMARTCARD_EMVSIM_Control()
1071 base->CTRL |= EMVSIM_CTRL_RCV_EN_MASK; in SMARTCARD_EMVSIM_Control()
1075 base->CTRL |= EMVSIM_CTRL_ANACK_MASK; in SMARTCARD_EMVSIM_Control()
1079 base->CTRL &= ~EMVSIM_CTRL_ANACK_MASK; in SMARTCARD_EMVSIM_Control()
1083 … base->DIVISOR = (((uint32_t)context->cardParams.Fi / context->cardParams.currentD) & 0x1FFu); in SMARTCARD_EMVSIM_Control()
1087 smartcard_emvsim_SetTransferType(base, context, kSMARTCARD_SetupATRMode); in SMARTCARD_EMVSIM_Control()
1091 smartcard_emvsim_SetTransferType(base, context, kSMARTCARD_SetupT0Mode); in SMARTCARD_EMVSIM_Control()
1095 smartcard_emvsim_SetTransferType(base, context, kSMARTCARD_SetupT1Mode); in SMARTCARD_EMVSIM_Control()
1099 base->CTRL |= EMVSIM_CTRL_RCV_EN_MASK; in SMARTCARD_EMVSIM_Control()
1101 base->RX_THD = ((base->RX_THD & ~EMVSIM_RX_THD_RDT_MASK) | 1u); in SMARTCARD_EMVSIM_Control()
1103 base->INT_MASK &= ~EMVSIM_INT_MASK_RDT_IM_MASK; in SMARTCARD_EMVSIM_Control()
1107 base->CTRL &= ~EMVSIM_CTRL_RCV_EN_MASK; in SMARTCARD_EMVSIM_Control()
1111 base->CTRL |= EMVSIM_CTRL_XMT_EN_MASK; in SMARTCARD_EMVSIM_Control()
1115 base->CTRL &= ~EMVSIM_CTRL_XMT_EN_MASK; in SMARTCARD_EMVSIM_Control()
1118 base->CTRL &= ~EMVSIM_CTRL_BWT_EN_MASK; in SMARTCARD_EMVSIM_Control()
1126 base->BWT_VAL = temp32; in SMARTCARD_EMVSIM_Control()
1136 base->CTRL |= EMVSIM_CTRL_BWT_EN_MASK; in SMARTCARD_EMVSIM_Control()