Openmoko Bug #2073: voice-recording.state + arecord: Unable to handle kernel NULL pointer dereference at virtual address 00000000

Openmoko Public Trac bugs at
Wed Feb 18 09:43:29 CET 2009

#2073: voice-recording.state + arecord: Unable to handle kernel NULL pointer
dereference at virtual address 00000000
 Reporter:  lindi    |          Owner:  openmoko-devel
     Type:  defect   |         Status:  new           
 Priority:  high     |      Milestone:                
Component:  unknown  |        Version:                
 Severity:  normal   |       Keywords:  ALSA          
 Haspatch:  1        |      Blockedby:                
Estimated:           |    Patchreview:                
 Blocking:           |   Reproducible:  always        

Comment(by PaulFertser):

 Please don't do both.

 As now Mark Brown has finally received a GTA02 he is the most likely to
 fix any remaining breakage. I also studied the datasheet and the sources
 and now feel more confident with these issues, but fixing everything
 properly needs time.

 You should consider that last patch of mine as a dirty hack to "get by"
 while waiting for a proper solution. But as there is no reason to use DAI
 1 mode anyway (as DAI 2 with voip state works ok), i consider that it's

 First of all, to understand this DAI stuff, please take a look at the new
 routing diagrams i posted at .

 The basic idea is that WM8753 has 2 physical DAIs (Digital Audio
 Interfaces), one connected to BT module (Bluetooth DAI) and the other
 connected to SoC (!HiFi DAI). These DAIs are exposed from the ALSA layer
 as 2 devices (WM8753 !HiFi WM8753 and Voice WM8753) on one card
 (neo1973-gta02). ALSA names for those are hw:0,0 and hw:0,1 respectively.

 It also has 3 DACs (called Vx aka Voice DAC and Left/Right aka !HiFi DAC)
 and one ADC. All those DAC/ADCs can be connected in 4 mutually exclusive
 combinations to the DAIs. Also a switch exists that allows feeding both
 DAIs at the same time with the same ADC signal in any of these 4 modes.

 In my understanding any operation (like setting format and rate) on a DAI
 should affect all DAC/ADCs connected to it on the time of operation
 (depending on currently selected DAI mode). Usually, format setting occurs
 when some application (aplay/arecord) opens a pcm for playback/capture.
 But transferring sound through Bluetooth DAI to/from SoC is impossible and
 therefore a special utility is needed to set DAC/ADC parameters, currently
 connected to the BT DAI. This is an example of such utility: .

 As to the bug itself, i think we have 3 issues here:

 First issue is that when we have a "dummy" DAI (that is, it's not
 connected to any DAC/ADC) kernel oopses on closing the pcm. Seems that it
 needs to be fixed properly.

 Second issue is that in my understanding DAI 1 is defined incorrectly
 because in this mode HiFi DAI is connected to Vx DAC and ADC, so it
 shouldn't be dummy and should set parameters for those DAC and ADC.
 Bluetooth DAI for this mode should be dummy instead.

 Third issue is s3c24xx_pcm_pointer crash that probably should be
 investigated independently.

Ticket URL: <> <>
openmoko trac

More information about the devel mailing list