Our device uses TSC_ADC for touch panel operation.
When FSM_BUSY in ADCSTAT register becomes busy, touch panel operation does not work.
Please let me know the conditions to be FSM busy.
We changed the source code of the titsc_irq() function in ti_am335x_tsc.c as follows.
[Before]----------------------------------------------------------------------
if (irqclr) {
titsc_writel(ts_dev, REG_IRQSTATUS, irqclr);
if (status & IRQENB_EOS)
am335x_tsc_se_set_cache(ts_dev->mfd_tscadc, ts_dev->step_mask);
return IRQ_HANDLED;
}
return IRQ_NONE;
-------------------------------------------------------------------------------
[After]------------------------------------------------------------------------
if (irqclr) {
titsc_writel(ts_dev, REG_IRQSTATUS, irqclr);
am335x_tsc_se_set_cache(ts_dev->mfd_tscadc, ts_dev->step_mask);
return IRQ_HANDLED;
}
return IRQ_NONE;
-------------------------------------------------------------------------------
Our source code changes no longer cause FSM busy.
Are the source code changes we made correct?
If this change we made is correct, why is FSM busy no longer occurring?
Best Regards,
Chihiro