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