커널버전은 2.6.21 이구요, ac97사용할려고 하는데요
waveplay로 wav파일을 열때 문제가 생깁니다.
waveplay에서는 open("/dev/dsp", O_WRONLY..
일때 문제가 발생한것을 확인했구요
커널에서는
arch/arm/mach-pxa/dma.c
118 static int __init pxa_dma_init (void)
119 {
120 int ret;
122 ret = request_irq (IRQ_DMA, dma_irq_handler, 0, "DMA", NULL);
124 if (ret)
125 printk (KERN_CRIT "Wow! Can't register IRQ for DMAn");
126 return ret;
127 }
등록은 되어서 /proc/interrupt에 DMA등록은되는데
37 int pxa_request_dma (char *name, pxa_dma_prio prio,
38 void (*irq_handler)(int, void *),
39 void *data)
40 {
...
63 if (found) {
64 DCSR(i) = DCSR_STARTINTR|DCSR_ENDINTR|DCSR_BUSERR; <<<----쓰지를 못합니다.
위 함수가 불려졌을때
dma 레지스터인 DCSR에 쓰지를 못하고 Unhandled fault 가 발생하네요;;
dma자체가 동작을 안하는것 같은데 추가로 어디를 봐야될지 모르겠습니다.
아래 로그 첨부합니다.
Unhandled fault: imprecise external abort (0x416) at 0x4012b8cc
Internal error: : 416 [#1]
Modules linked in:
CPU: 0
PC is at vprintk+0x2e4/0x2e8
LR is at pxa_request_dma+0x8c/0x110
pc : [<c00389d0>] lr : [<c002ca34>] Not tainted
sp : c37f1d50 ip : c0311324 fp : c37f1d78
r10: c01f8914 r9 : c0c12ae0 r8 : c034a668
r7 : c02eca88 r6 : a0000013 r5 : 00000008 r4 : f2000020
r3 : 00000000 r2 : 00000001 r1 : 00000000 r0 : c02c7120
Flags: nZCv IRQs off FIQs on Mode SVC_32 Segment user
Control: 397F
Table: A0F04000 DAC: 00000015
Process wavplay (pid: 902, stack limit = 0xc37f0250)
Stack: (0xc37f1d50 to 0xc37f2000)
1d40: c3ebfae0 fffffff4 c0c12ae0 00000000
1d60: c0eb8000 ffffffff c034579c c37f1db0 c37f1d7c c01f8b64 c002c9b4 00000000
1d80: 00000012 ffffffff 00000000 c37f1dec c37f1e08 c3ebfac0 c0c1f600 c0d2be40
1da0: 00000000 c37f1dcc c37f1db4 c01dd828 c01f8a54 c0c12ae0 c37f1e30 00000000
1dc0: c37f1e78 c37f1dd0 c01e9fc4 c01dd7d0 0000000e 00000003 c0c1f708 c0c1f714
1de0: c37f0000 00000001 c0d380c4 c01384e8 00000000 00000000 c0caad40 c0034480
1e00: c0c1f714 c0c1f714 00000000 00000000 00000000 00000000 00000000 00000000
1e20: 00000000 00000000 00000000 00000000 70766177 0079616c 00000000 00000000
1e40: c0082a00 c0161f4c c0cc6a00 00e00003 c027d960 00000000 00000003 c0d2be40
1e60: c0d380c4 c37f0000 00000000 c37f1e9c c37f1e7c c01d1b80 c01e9d7c c0c23960
1e80: c0d380c4 00000000 00000000 c0d2be40 c37f1ec4 c37f1ea0 c0082c34 c01d1a3c
1ea0: 00000003 c0d2be40 c0d380c4 c0082ae4 c03f3220 c37bb41c c37f1eec c37f1ec8
1ec0: c007f16c c0082af0 c0d2be40 c37f1f0c 00000000 c3e5b000 ffffff9c 00016cf0
1ee0: c37f1f04 c37f1ef0 c007f288 c007f078 00000000 00000001 c37f1f70 c37f1f08
1f00: c007f2dc c007f260 c37f1f0c c37bb41c c03f3220 00000000 00000000 00000000
1f20: 00000101 00000001 00000000 c37f0000 c0d0eec8 c0d0eec0 ffffffe8 00016cf0
1f40: c37f1f70 c37f1f50 c007f48c c0095368 00000002 00000000 c0d2be40 00000001
1f60: 00000004 c37f1f94 c37f1f74 c007f610 c007f2a8 000180a4 000180a0 00000001
1f80: 00000005 c0023d44 c37f1fa4 c37f1f98 c007f678 c007f5cc 00000000 c37f1fa8
1fa0: c0023d0c c007f660 000180a4 000180a0 0000ca48 00000001 00000000 00000000
1fc0: 000180a4 000180a0 00000001 00018050 000161e8 000164e8 00016cf0 00000000
1fe0: 00000000 be834b88 00003d10 400df1a0 60000010 0000ca48 00030664 e92d4ff0
Backtrace:
[<c002c9a8>] (pxa_request_dma+0x0/0x110) from [<c01f8b64>] (pxa2xx_pcm_open+0x11c/0x188)
[<c01f8a48>] (pxa2xx_pcm_open+0x0/0x188) from [<c01dd828>] (snd_pcm_open_substream+0x64/0xac)
[<c01dd7c4>] (snd_pcm_open_substream+0x0/0xac) from [<c01e9fc4>] (snd_pcm_oss_open+0x254/0x448)
r5 = 00000000 r4 = C37F1E30
[<c01e9d70>] (snd_pcm_oss_open+0x0/0x448) from [<c01d1b80>] (soundcore_open+0x150/0x1d8)
[<c01d1a30>] (soundcore_open+0x0/0x1d8) from [<c0082c34>] (chrdev_open+0x150/0x168)
r8 = C0D2BE40 r7 = 00000000 r6 = 00000000 r5 = C0D380C4
r4 = C0C23960
[<c0082ae4>] (chrdev_open+0x0/0x168) from [<c007f16c>] (__dentry_open+0x100/0x1e8)
r8 = C37BB41C r7 = C03F3220 r6 = C0082AE4 r5 = C0D380C4
r4 = C0D2BE40
[<c007f06c>] (__dentry_open+0x0/0x1e8) from [<c007f288>] (nameidata_to_filp+0x34/0x48)
[<c007f254>] (nameidata_to_filp+0x0/0x48) from [<c007f2dc>] (do_filp_open+0x40/0x48)
r4 = 00000001
[<c007f29c>] (do_filp_open+0x0/0x48) from [<c007f610>] (do_sys_open+0x50/0x94)
r5 = 00000004 r4 = 00000001
[<c007f5c0>] (do_sys_open+0x0/0x94) from [<c007f678>] (sys_open+0x24/0x28)
r8 = C0023D44 r7 = 00000005 r6 = 00000001 r5 = 000180A0
r4 = 000180A4
[<c007f654>] (sys_open+0x0/0x28) from [<c0023d0c>] (__sys_trace_return+0x0/0x34)
Code: c00273f4 3b9aca00 c02c75e8 c034bae4 (c034bb78)
) = -1 ENOENT (No such file or directory)