This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Some times delay in calling ISR function of Atmel mxt224T touch driver.

Other Parts Discussed in Thread: DM3730

Hi All,

I am working on custom board(DM3730 ) which has Gingerbread (kernel-2.6.37) OS. I have connected a Atmel mxt224T touch panel to it. To test the touch panel i am using the touch test application. The issue is, some times initial touch coordinates are missing when i draw line on the touch screen. By debugging i found that, at touch coordinates missing case, there is considerable delay(more than 250ms) in calling the ISR of the touch panel. In normal case ISR is called with in 40ms. After ISR is called, immediately worker thread is called with very less latency. In the thread function i am doing I2C read, writes to get the touch data.

In mxt224T touch driver, requesting irq is as below.

request_threaded_irq(client->irq, mxt_hard_isr, mxt_interrupt, IRQF_TRIGGER_LOW | IRQF_ONESHOT, client->name, data);


What is the reason to have 250ms latency in callilng the hard ISR function?

Thanks in advance.

BR,
Kishore



  • Hi Kishore,
    I suggest you to start debugging by printing all received data through the I2C bus. It is very possible the missed data for initial touch coordinates to due to touch controller. Therefore you could connect an oscilloscope to check whether the touch controller sends all expected events.
    About latency of 250 ms you can use an oscilloscope to detect when start condition event appears according Figure 17-6 from DM37xx TRM and verify which side generates this delay. For example you can use some not used gpio which could be rised when try to transmit I2C data for synchronization.

    BR
    Tsvetolin Shulev
  • Hi Tsvetolin Shulev,

    Hi have conformed the latency by comparing the delay between interrupt line and unused gpio raising on the Oscilloscope. Whenever the latency is above 250ms, then only initial coordinates are missing i.e at this instant only touch controller is itself missing the touch coordiantes reporting. I have printed all the touch coordinates reported.

    BR
    Kishore
  • Hi Tsvetolin Shulev,

    I have observed this behavior on only Atmel touch controller. With other logic touch panel on the same board , it is working fine without any delay. Can you advise what causes the ISR calling delays by the touch controllers.

    NOTE:
    * Touch performance is improved by the command "echo 0 > /debug/pm_debug/sleep_while_idle" . This will disable the device going into idle state.

    BR
    Kishore