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.

AM625: I2C driver crash at boot time with tisdk11 linux

Part Number: AM625

Hello,

The I2C driver crash has boot time when deferencing a null pointer.

The same test has been done with SDK10 and their is no issue.

The effect is that the I2C0 bus is not working at all none of the peripheral respond to the i2c detect command. The device tree has been verify their is no error in the pinmux.

The issue is reproductible 100% of time on our board design based on AM625 SK EVM board.

Here is the kernel logs :

I also give you the kernel message regarding the i2c0 issue ( I add in the bootargs irqpoll):

[    1.089821] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
[    1.090292] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
[    1.098889] Mem abort info:
[    1.107443]   ESR = 0x0000000096000004
[    1.107460] ti-sci-intr bus@f0000:interrupt-controller@a00000: Interrupt Router 3 domain created
[    1.111275]   EC = 0x25: DABT (current EL), IL = 32 bits
[    1.125694]   SET = 0, FnV = 0
[    1.128823]   EA = 0, S1PTW = 0
[    1.128921] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
[    1.132031]   FSC = 0x04: level 0 translation fault
[    1.132036] Data abort info:
[    1.148686]   ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
[    1.149875] ti-udma 485c0100.dma-controller: Number of rings: 82
[    1.154306]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
[    1.154311]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
[    1.154316] [0000000000000000] user address but active_mm is swapper
[    1.154323] Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP
[    1.154330] Modules linked in:
[    1.187044] CPU: 0 UID: 0 PID: 66 Comm: irq/25-20000000 Not tainted 6.12.35-ti-00915-ge3e551586dfa #1
[    1.196473] Hardware name: Actia Base Device Tree v00.00 (DT)
[    1.202343] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    1.209460] pc : omap_i2c_transmit_data.isra.0+0x70/0x1ac
[    1.214992] lr : omap_i2c_xfer_data+0x244/0x320
[    1.219624] sp : ffff800081da3d10
[    1.223004] x29: ffff800081da3d10 x28: ffff8000800be07c x27: ffff800081419f10
[    1.230305] x26: 0000000000000064 x25: ffff00000445e880 x24: 0000000000000002
[    1.237605] x23: 0000000000000000 x22: ffff800081089cf8 x21: 00000000ffffbfef
[    1.244904] x20: 0000000000000000 x19: ffff00000445e880 x18: 0000000000000000
[    1.252204] x17: ffff8000814ef0b0 x16: 000000008de01e61 x15: ffff000077b7fa40
[    1.259503] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000304
[    1.266802] x11: 0000000000000001 x10: 0000000000000000 x9 : 0000000000000003
[    1.274102] x8 : ffff800081da3cc8 x7 : ffffffffffffffff x6 : 0000000000000000
[    1.281401] x5 : ffff800080deb1f0 x4 : 0000000000000000 x3 : ffff80008165d000
[    1.288700] x2 : 0000000000000000 x1 : 0000000000000001 x0 : 0000000000000000
[    1.296000] Call trace:
[    1.298493]  omap_i2c_transmit_data.isra.0+0x70/0x1ac
[    1.303659]  omap_i2c_xfer_data+0x244/0x320
[    1.307935]  omap_i2c_isr_thread+0x1c/0xd8
[    1.312122]  irq_thread_fn+0x2c/0xa8
[    1.315779]  irq_thread+0x16c/0x2f4
[    1.319345]  kthread+0x110/0x114
[    1.322645]  ret_from_fork+0x10/0x20
[    1.326304] Code: 91000401 b9405666 f9003261 d1000447 (39400001) 
[    1.332530] ---[ end trace 0000000000000000 ]---
[    1.337303] genirq: exiting task "irq/25-20000000" (66) is an active IRQ thread (irq 25)

Thanks for your help.