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

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

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

跳至解决方案
1,072 次查看
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

标签 (1)
标记 (4)
0 项奖励
回复
1 解答
803 次查看
binoyjayan
Contributor III

Hi All,

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

See thread :

Conflict on 2 I2C buses

在原帖中查看解决方案

0 项奖励
回复
1 回复
804 次查看
binoyjayan
Contributor III

Hi All,

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

See thread :

Conflict on 2 I2C buses

0 项奖励
回复