AnsweredAssumed Answered

Two I2C devices does not work together - fails in dmaengine.c

Question asked by Binoy Jayan on Jun 9, 2013

Hi all,

 

I have two I2c devices installed in my i.MX28 based board. A keypad and a semtech touch device, one on i2c bus #1 and bus #2.

When i work with them seperately it both work fine. But when i press a key on the keypad and at the same time touch the screen, the kernel crashes in the code dmaengine.c in the function mxs_dma_cooked (line #227).  The following line forces the kernel to crash:

 

arch/arm/plat-mxs/dmaengine.c   :  line 227 -->                 BUG_ON(sem != pchan->active_num);

 

From the code it looks like when I press both devices simultaneously, the code fails to be completely re-entrant and thus making the active active channel on the head of the list list different from the one being used. Has anyone encountered a similar issue?

 

I am attaching the logs for reference.. It includes application logs as well as evtest logs along with the kernel stack trace...

Original Attachment has been moved to: touch_keypad_err.log.zip

Outcomes