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

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

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

Jump to solution
1,187 Views
binoyjayan
Contributor III

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

Labels (1)
0 Kudos
Reply
1 Solution
918 Views
binoyjayan
Contributor III

Hi All,

It finally worked for me by patching i2c-mxs.c.

See thread :

Conflict on 2 I2C buses

View solution in original post

0 Kudos
Reply
1 Reply
919 Views
binoyjayan
Contributor III

Hi All,

It finally worked for me by patching i2c-mxs.c.

See thread :

Conflict on 2 I2C buses

0 Kudos
Reply