1
0
Fork 0

MLK-22214 mxc: emvsim: clean up the code in ATR stage

Clean up the code in ATR stage.

Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Acked-by: Fugang Duan <fugang.duan@nxp.com>
5.4-rM2-2.2.x-imx-squashed
Joakim Zhang 2019-05-23 09:49:15 +08:00 committed by Dong Aisheng
parent 05d7253157
commit 88a1ff5c08
1 changed files with 8 additions and 5 deletions

View File

@ -403,6 +403,10 @@ static void emvsim_receive_atr_set(struct emvsim_t *emvsim)
{
u32 reg_data;
/* GPCNT0 with Card clock is for ATR maximum delay
* GPCNT1 with ETU clock is for ART maximum duration
*/
emvsim_mask_timer1_int(emvsim);
__raw_writel(0x0, emvsim->ioaddr + EMV_SIM_GPCNT1_VAL);
emvsim_set_gpctimer1_clk(emvsim, SIM_CNTL_GPCNT_ETU_CLK);
emvsim_set_rx(emvsim, 1);
@ -601,10 +605,6 @@ static irqreturn_t emvsim_irq_handler(int irq, void *dev_id)
reg_data &= ~(GPCNT1_IM | CWT_ERR_IM | RX_DATA_IM);
__raw_writel(reg_data, emvsim->ioaddr + EMV_SIM_INT_MASK);
reg_data = __raw_readl(emvsim->ioaddr + EMV_SIM_TX_STATUS);
reg_data |= GPCNT1_TO;
__raw_writel(reg_data, emvsim->ioaddr + EMV_SIM_TX_STATUS);
reg_data = SIM_RCV_THRESHOLD_RTH(0) | SIM_RCV_THRESHOLD_RDT(rdt);
__raw_writel(reg_data, emvsim->ioaddr + EMV_SIM_RX_THD);
@ -1139,12 +1139,15 @@ static long emvsim_ioctl(struct file *file,
timeout = wait_for_completion_interruptible_timeout(
&emvsim->xfer_done, emvsim->timeout);
emvsim_set_rx(emvsim, 0);
emvsim_set_tx(emvsim, 0);
reg_data = __raw_readl(emvsim->ioaddr + EMV_SIM_CTRL);
reg_data &= ~CWT_EN;
__raw_writel(reg_data, emvsim->ioaddr + EMV_SIM_CTRL);
reg_data = __raw_readl(emvsim->ioaddr + EMV_SIM_INT_MASK);
reg_data |= (GPCNT0_IM | CWT_ERR_IM);
reg_data |= (GPCNT0_IM | GPCNT1_IM | CWT_ERR_IM | RX_DATA_IM);
__raw_writel(reg_data, emvsim->ioaddr + EMV_SIM_INT_MASK);
if (timeout == 0) {