import realtek rt5621 audio IC, but linux driver failed

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

import realtek rt5621 audio IC, but linux driver failed

1,021 Views
zhangenvi
Contributor I

Dear all,

      base on MX53,version R10.3,andriod 2.3.4 , when I import rt5621 codec driver. Debug message as follow:

 

       Cirrus Logic CS42888 ALSA SoC Codec Driver
No device for DAI RT5621
No device for DAI rt5621 Reserved
mxc_spdif mxc_spdif.0: MXC SPDIF Audio Transmitter
No device for codec mxc spdif
No device for DAI mxc spdif
No device for DAI imx-ssi-1-0
No device for DAI imx-ssi-1-1
No device for DAI imx-ssi-2-0
No device for DAI imx-ssi-2-1
No device for DAI imx-spdif-dai
envi 1
envi 2
envi 3
envi 4
RT5621 Audio Codec 0.07 alsa 1.0.23
Unable to handle kernel NULL pointer dereference at virtual address 0000017c
pgd = 80004000
[0000017c] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT
last sysfs file:
Modules linked in:
CPU: 0    Not tainted  (2.6.35.3-svn12 #104)
PC is at __down_write_nested+0x28/0x13c
LR is at snd_ctl_add+0x4c/0x1cc
pc : [<804872cc>]    lr : [<8034e1d8>]    psr: a0000093
sp : df039e00  ip : df039e50  fp : 00000000
r10: 00000000  r9 : 80916360  r8 : 80915230
r7 : df41a200  r6 : 0000017c  r5 : df197500  r4 : 00000000
r3 : a0000013  r2 : df038000  r1 : 00000002  r0 : 0000017c
Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c5387d  Table: 70004019  DAC: 00000017
Process swapper (pid: 1, stack limit = 0xdf0382e8)
Stack: (0xdf039e00 to 0xdf03a000)
9e00: 00000000 00000000 00000000 00000000 00000001 00000000 df197500 8034e1d8
9e20: 00000000 00000002 00000000 00000000 43525341 00000000 00000000 00000000
9e40: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9e60: 00000000 804bd108 00000000 df400700 df41a200 80915230 80916360 00000000
9e80: 00000000 80371518 80916858 df400700 00000001 df41a200 80915230 80367a18
9ea0: df419f00 00000000 df419720 00000000 00000001 809159c4 00000001 80916858
9ec0: 80915230 80916860 00000000 00000000 00000000 00000000 00000000 80367c84
9ee0: df41a208 df039f18 80236344 809152a8 00000000 80237098 df41a208 80236204
9f00: df41a208 df039f18 80236344 00000000 00000000 80235760 df006948 df418034
9f20: df41a208 df41a208 df41a23c 808f5160 00000000 8023640c df41a208 df41a210
9f40: 808f5160 802355a4 df41a208 802341b0 df41a210 00000000 00000021 801e2918
9f60: df41a200 80916798 00000001 df41a200 00000000 00000000 00000013 00000000
9f80: 00000000 00000000 00000000 80237678 809b56c8 80916798 00000001 00000013
9fa0: 00000000 800260ec 80026074 8002faf4 00000001 80039384 00000000 00000000
9fc0: 00000000 00000170 808e0b14 8002f994 8002faf4 8003a9e0 00000013 00000000
9fe0: 00000000 8000842c 00000000 80008380 8003a9e0 8003a9e0 42055190 7a1908cc
[<804872cc>] (__down_write_nested+0x28/0x13c) from [<8034e1d8>] (snd_ctl_add+0x4c/0x1cc)
[<8034e1d8>] (snd_ctl_add+0x4c/0x1cc) from [<80371518>] (imx_3stack_rt5621_init+0x2c/0x98)
[<80371518>] (imx_3stack_rt5621_init+0x2c/0x98) from [<80367a18>] (snd_soc_instantiate_cards+0x2a0/0x49c)
[<80367a18>] (snd_soc_instantiate_cards+0x2a0/0x49c) from [<80367c84>] (soc_probe+0x70/0xb0)
[<80367c84>] (soc_probe+0x70/0xb0) from [<80237098>] (platform_drv_probe+0x18/0x1c)
[<80237098>] (platform_drv_probe+0x18/0x1c) from [<80236204>] (driver_probe_device+0xc8/0x184)
[<80236204>] (driver_probe_device+0xc8/0x184) from [<80235760>] (bus_for_each_drv+0x48/0x84)
[<80235760>] (bus_for_each_drv+0x48/0x84) from [<8023640c>] (device_attach+0x64/0x88)
[<8023640c>] (device_attach+0x64/0x88) from [<802355a4>] (bus_probe_device+0x24/0x40)
[<802355a4>] (bus_probe_device+0x24/0x40) from [<802341b0>] (device_add+0x348/0x4b8)
[<802341b0>] (device_add+0x348/0x4b8) from [<80237678>] (platform_device_add+0x104/0x160)
[<80237678>] (platform_device_add+0x104/0x160) from [<800260ec>] (imx_3stack_init+0x78/0xd0)
unwind: Unknown symbol address 800260ec
unwind: Index not found 800260ec
Code: e3c2203f e5921004 e2811001 e5821004 (e5902000)
---[ end trace e6fce7a6efec512d ]---
note: swapper[1] exited with preempt_count 2
Kernel panic - not syncing: Attempted to kill init!
[<8003e578>] (unwind_backtrace+0x0/0xf0) from [<80485158>] (panic+0x6c/0xe0)
[<80485158>] (panic+0x6c/0xe0) from [<8006d844>] (do_exit+0x68/0x660)
[<8006d844>] (do_exit+0x68/0x660) from [<8003d434>] (die+0x2c8/0x304)
[<8003d434>] (die+0x2c8/0x304) from [<8003f3e8>] (__do_kernel_fault+0x64/0x84)
[<8003f3e8>] (__do_kernel_fault+0x64/0x84) from [<8003f5c8>] (do_page_fault+0x1c0/0x1d4)
[<8003f5c8>] (do_page_fault+0x1c0/0x1d4) from [<800392c8>] (do_DataAbort+0x34/0x94)
[<800392c8>] (do_DataAbort+0x34/0x94) from [<80039a2c>] (__dabt_svc+0x4c/0x60)
Exception stack(0xdf039db8 to 0xdf039e00)
9da0:                                                       0000017c 00000002
9dc0: df038000 a0000013 00000000 df197500 0000017c df41a200 80915230 80916360
9de0: 00000000 00000000 df039e50 df039e00 8034e1d8 804872cc a0000093 ffffffff
[<80039a2c>] (__dabt_svc+0x4c/0x60) from [<804872cc>] (__down_write_nested+0x28/0x13c)
[<804872cc>] (__down_write_nested+0x28/0x13c) from [<8034e1d8>] (snd_ctl_add+0x4c/0x1cc)
[<8034e1d8>] (snd_ctl_add+0x4c/0x1cc) from [<80371518>] (imx_3stack_rt5621_init+0x2c/0x98)
[<80371518>] (imx_3stack_rt5621_init+0x2c/0x98) from [<80367a18>] (snd_soc_instantiate_cards+0x2a0/0x49c)
[<80367a18>] (snd_soc_instantiate_cards+0x2a0/0x49c) from [<80367c84>] (soc_probe+0x70/0xb0)
[<80367c84>] (soc_probe+0x70/0xb0) from [<80237098>] (platform_drv_probe+0x18/0x1c)
[<80237098>] (platform_drv_probe+0x18/0x1c) from [<80236204>] (driver_probe_device+0xc8/0x184)
[<80236204>] (driver_probe_device+0xc8/0x184) from [<80235760>] (bus_for_each_drv+0x48/0x84)
[<80235760>] (bus_for_each_drv+0x48/0x84) from [<8023640c>] (device_attach+0x64/0x88)
[<8023640c>] (device_attach+0x64/0x88) from [<802355a4>] (bus_probe_device+0x24/0x40)
[<802355a4>] (bus_probe_device+0x24/0x40) from [<802341b0>] (device_add+0x348/0x4b8)
[<802341b0>] (device_add+0x348/0x4b8) from [<80237678>] (platform_device_add+0x104/0x160)
[<80237678>] (platform_device_add+0x104/0x160) from [<800260ec>] (imx_3stack_init+0x78/0xd0)
unwind: Unknown symbol address 800260ec
unwind: Index not found 800260ec
mmc0: Timeout waiting for hardware interrupt.
mxsdhci: ============== REGISTER DUMP ==============
mxsdhci: Sys addr: 0x00000000 | Version:  0x00001201
mxsdhci: Blk size: 0x00000000 | Blk cnt:  0x00000001
mxsdhci: Argument: 0x00000000 | Trn mode: 0x29020000
mxsdhci: Present:  0xff880008 | Host ctl: 0x00000121
mxsdhci: Clock:    0x000010ff
mxsdhci: Int stat: 0x00000000
mxsdhci: Int enab: 0x117f010f | Sig enab: 0x117f000f
mxsdhci: Caps:     0x07f30000
mxsdhci: ===========================================

 

Unable to handle kernel NULL pointer dereference at virtual address 0000017c, what's wrong whit it?

Tkank you very much.

Tags (1)
0 Kudos
5 Replies

804 Views
zhangenvi
Contributor I
this issue has been sloved. the device was not bound to a driver because i2c type name is not right. Thank you all.
0 Kudos

804 Views
fabio_estevam
NXP Employee
NXP Employee

Then you should debug inside device_attach() to search for the exact pointer that is causing the NULL pointer dereference.

 

Regards,

 

Fabio Estevam


0 Kudos

804 Views
zhangenvi
Contributor I
you are right, I have try it by printk's. Hang at the point:device_attach(). But no way!
0 Kudos

804 Views
fabio_estevam
NXP Employee
NXP Employee

As we don´t have access to imx_3stack_rt5621_init , it is hard to tell what is wrong. You should add some printk´s in this file and see exaclty the line that is causing the kernel crash. Looks like you are trying to access a NULL pointer.

 

Regards,

 

Fabio Estevam

0 Kudos

804 Views
zhangenvi
Contributor I
In my opinion, linux kernel register rt5621 driver failed, and create file of NULL node. Then handle the kernel NULL pointer.But how to solve it?
0 Kudos