Research Pre Audio

From WebOS Internals
Jump to navigation Jump to search

This side should cover the audio architecture used on the Palm Pre.

Hardware

The used TWL4030 PMIC covers the audio part. TODO: datasheet available?

Soundcards

root@castle:/var/home/root# aplay -l    
**** List of PLAYBACK Hardware Devices ****
card 0: mcbsp2 [twl4030-i2s (mcbsp2)], device 0: omap-mcbsp-pcm [omap-mcbsp-pcm]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: mcbsp3 [btsco (mcbsp3)], device 0: omap-mcbsp-pcm [omap-mcbsp-pcm]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Scripts

Palm uses scripts to configure the lower levels of the sound system that are executed inside the kernel. Audiod triggers them over a sysfs interface.

echo "#list" > /sys/devices/platform/twl4030_audio/scdebug
for example lists you all available scripts over the kernel message output which you can view with dmesg. You can also try
#all
#volume
#init

These scripts can be triggered by writing is name as a string into

/sys/devices/platform/twl4030_audio/scrun

A good start to dive into this is sound/arm/omap-twl4030/script.c in the kernel patch from palm.

New scripts are inserted into the kernel list via:

/sys/devices/platform/twl4030_audio/scinit

This is also handled by audiod. The scripts can be found in /etc/audio

strace audiod

this script restarts the audiod with an attached strace which is saved in ./audio.log:

#!/bin/sh
#Make sure audiod gets not restarted when we kill it
mv /usr/sbin/audiod /usr/sbin/audiod-backup
kill $(pidof audiod)

sleep 2

strace -x -s 10000 -f -F -o audio.log audiod-backup &
echo "press any key to return to normal mode"
read foo
kill $(pidof audiod-backup)

sleep 2

#Bring the system into a useable state again           
mv /usr/sbin/audiod-backup /usr/sbin/audiod
sh /etc/event.d/audiod