From 37655297e6e8f758a9e96090bf425a1d9e3ff7d8 Mon Sep 17 00:00:00 2001 From: Gao Pan Date: Fri, 19 Jan 2018 11:12:15 +0800 Subject: [PATCH] MLK-17416 imx8: sim: add usleep_range() before reading SPDP Bit Card Presence Detect Status Bit SPDP in EMV_SIM_PCSR is synchronized by two posedge of low_ref_clk which is 32KHz. So there should be 1.5 low_ref_clk cycles(about 90us) before reading SPDP Bit. Signed-off-by: Gao Pan Acked-by: Fugang Duan (cherry pick from: 42a733a62525725d145ce6b55dfc94f1f5ff0a9d) Signed-off-by: Joakim Zhang --- drivers/mxc/sim/imx_emvsim.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/mxc/sim/imx_emvsim.c b/drivers/mxc/sim/imx_emvsim.c index ecb345121634..ee8dde917537 100644 --- a/drivers/mxc/sim/imx_emvsim.c +++ b/drivers/mxc/sim/imx_emvsim.c @@ -752,6 +752,7 @@ static void emvsim_start(struct emvsim_t *emvsim) clk_div = (clk_rate + emvsim->clk_rate - 1) / emvsim->clk_rate; __raw_writel(clk_div, emvsim->ioaddr + EMV_SIM_CLKCFG); + usleep_range(90, 100); /* SPDP=0: SIM Presence Detect pin is low, default PRESENT status */ if (__raw_readl(emvsim->ioaddr + EMV_SIM_PCSR) & SPDP) { emvsim->present = SIM_PRESENT_REMOVED; -- 2.17.1