View source for Neo 1973 audio subsystem
From Openmoko
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Return to Neo 1973 audio subsystem.
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Return to Neo 1973 audio subsystem.
In the center of the Neo1973 audio subsystem is the WM8753 (the "Wolfson Codec"), which implements record (ADCs), playback (DACs), and signal mixing. On the stereo output is the LM4857 amplifier, which drives the stereo speakers, the mono earpiece and the headphones. Sound from and to GSM is received from and sent to the GSM modem via analog connections. There's a digital mono interface for sound from and to the Bluetooth chip.
In my experience this works but I have to fiddle with the connection a bit before I get stereo output. The audio also comes out both the speaker and headphones.
alsactl -f /etc/stereoout.state restore madplay myfavoritesong.mp3
Another simple test (assuming you have USB Networking configured) is to listen to a radio stream:
wget -O - http://radioparadise.steadyhost.com:8050 | madplay -
If for some reason you're missing stereoout.state, try getting a similar copy (a couple of volume levels are different is all)
wget http://opensource.wolfsonmicro.com/~gg/neo1973/stereoout.state
This is the default case.
Neo Mode is GSM Handset Amp Mode is Call Speaker
This should be supported by ASoC 0.13rc3 (-moko7 kernel) on.
ASoC 0.13.3 should have same functionality but has renamed the soundcard to neo1973.
https://people.openmoko.org/laforge/gta01/gta01b_v2/alsa/gsmhandset.state
For ASoC 0.13.3 http://opensource.wolfsonmicro.com/~gg/neo1973/gsmhandset.state
This is also a quite common case, since we ship the headset with the phone
Headset Detection is done via GPIO on S3C2410
Neo Mode is GSM Headset Amp Mode is Headphones
Supported in ASoC 0.13.3
http://opensource.wolfsonmicro.com/~gg/neo1973/gsmheadset.state
Headset detection via software
Neo Mode is GSM Bluetooth Amp Mode is Off
Should be support by ASoC 0.13.3
Example of how to setup PCM->BT link.
http://opensource.wolfsonmicro.com/~gg/bluetooth-pcm/bluetooth_pcm.c
http://opensource.wolfsonmicro.com/~gg/neo1973/gsmbluetooth.state
For example, using a voip app on the phone with a bt voice headset. This would also be a good way to work on the bluetooth driver without requiring a working GSM and placing a lot of calls.
See ticket 583 for a state file that should route system audio *out* to the headset. The codec does not allow for duplex system audio connected to a headset, so audio in is still using the mic.
This is an important mode since it is also required for ringtone playback
This is working since ASoC 0.13rc2 (-moko6 kernel)
This should also work on ASoC 0.13.3
https://people.openmoko.org/laforge/gta01/gta01b_v2/alsa/stereoout.state
For ASoC 0.13.3 http://opensource.wolfsonmicro.com/~gg/neo1973/stereoout.state
This is working since ASoC 0.13rc2 (-moko6 kernel)
One way to do this is to use a pulse plugin for bluetooth audio. Pulse would be routed either to the plugin or the default route to the codec. The plugin would watch for headset connect/disconnect events generated by a bluez audio daemon to keep the list of available output devices current.
There is early work on the bluez daemon to handle this. It has been combined with an alsa plugin in the bluez tree but the alsa plugin probably will not be sufficient for neo.
This is mainly used to record notes
UNKNOWN
This is a nice wishlist item. The user should be able to receive the full-duplex audio from the wolfson codec, and record it using the S3C2410 IIS.
FIXME
UNKNOWN
FIXME
UNKNOWN
The userspace sound control deamon might be a separate process or (more likely) part of some larger general hardware management daemon.
It will provide the following features:
In order to provide the desired functionality, the daemon first needs to be capable of doing audio playback.
If the user is listening to music on the headset, do we want to mix the ring tones only into the headset audio, or actually interrupt and play it on the speaker?
Can be an option configurable by the user.