www.wolfsonmicro.com1
LinuxAudioforSmartphones
Systemintegrationbasics
April2011?2011WolfsonMicroelectronicsplc
www.wolfsonmicro.com
?Androidaudiostackoverview
?Modernsmartphoneaudiosubsystems
?Traditionalsolutions
?ASoC–theLinuxsolution
?Designoverview
?Briefintroductiontochipdrivers
?Walkthroughofsystemaudiodriverconstruction
?Debuggingtips
?Futuredirections
Overview
2?2011WolfsonMicroelectronicsplcApril2011
www.wolfsonmicro.com
Androidaudiostack
3?2011WolfsonMicroelectronicsplcApril2011
MediaPlayer
MediaRecorder
AudioFlinger
libaudio
Applications
www.wolfsonmicro.com
Modernsmartphoneaudiosubsystems
4April2011?2011WolfsonMicroelectronicsplc
CPU
Mixing
Earpiece
HDMI
Speaker
HeadsetDock
BluetoothCellularmodem
DSP
www.wolfsonmicro.com
Flexibilityandcomplexity
5?2011WolfsonMicroelectronicsplcApril2011
www.wolfsonmicro.com
Traditionaldrivermodel
6?2011WolfsonMicroelectronicsplcApril2011
MemoryProcessingAnalogue
www.wolfsonmicro.com
?Monolithicdriverforeachcard
?Nostructureformanagingoff-CPUhardware
?Verylittlereuse
?Tightcouplingbetweenapplicationandkernelcode
?Per-usecaseregistersettings
?Detailedregisterlevelknowledgeofcomponents
?Timeconsuming
Traditionaldrivermodel
7?2011WolfsonMicroelectronicsplcApril2011
www.wolfsonmicro.com
?ASoCembeddedaudioframework
?Mergedsince2.6.21,April2007
?ProvidesstandardALSAinterfacetoapplications
?Reusabledriversforeachchip
?Minimalper-systemdrivers
?Usecaseconfigurationdonebyuserspace
?Automaticandtransparentpowermanagement
?Morereuse,lesscoupling
TheLinuxsolution
8?2011WolfsonMicroelectronicsplcApril2011
www.wolfsonmicro.com
?Looksforaudiopathsconnectinginputstooutputs
?Powersonlycomponentsinanactivepath
?AutomaticallyactivatesDACsandADCs
DynamicAudioPowerManagement
9?2011WolfsonMicroelectronicsplcApril2011
FMradio
DAC
Mixer
Speaker
Headset
www.wolfsonmicro.com
?Fourclassesofcontrol
?Audioprocessingcontrols(eg,volume,effects)
?Audioroutingcontrols(DAPMcontrolsandroutes)
?Powercontrols(DAPMwidgets,bias)
?Streamcontrol(Digitalaudiostreaming)
?Mostlydirectmappingintoregistermap
?SOC_DOUBLE_R_TLV("DAC1Volume",WM8994_DAC1_LEFT_VOLUME,
WM8994_DAC1_RIGHT_VOLUME,1,96,0,digital_tlv),
ASoCCODECdrivers
10?2011WolfsonMicroelectronicsplcApril2011
www.wolfsonmicro.com
http://opensource.wolfsonmicro.com/content/speyside-audio
Driverintegrationwalkthrough
11?2011WolfsonMicroelectronicsplcApril2011
S3C6410/
WM0010
WM8915
CODEC
“Baseband”
WM9081
Amplifier
Headset
Speaker
Subwoofer
Mics
www.wolfsonmicro.com
?AudioPolicyManagerandAudioHardware
?platform/hardware/alsa_sound–GenericALSA,asound.conf,LGPL
?devices/samsung/crespo–NexusS,hardcoded,Apachelicensed
?Gettingusecases
?Devicesspecifiedwhenstreamsareopened
?setMode()
?Applyingusecases
?Runexternalutilities
?Useasound.conf
?CallrawALSAcontrolAPIs
?ApplysettingswithALSAUCM
?Usingcommonbaseusecaseshelps
Applicationlayer
12?2011WolfsonMicroelectronicsplcApril2011
www.wolfsonmicro.com
?Dataindebugfs
?CONFIG_DEBUG_FS
?mount–tdebugfs/dev/null/debug
?codec_reg–Registermap
?dapm_pop_time–logsequences
?dapmdirectory
SPKL:Offin0out1
in"DAC2L""DAC2L"
out"static""SPKLPGA"
?Tools:
?git://git.opensource.wolfsonmicro.com/asoc-tools.git
Debuggingtips-DAPM
13?2011WolfsonMicroelectronicsplcApril2011
www.wolfsonmicro.com
?Audiostuck–checkclocking
?Silentaudio–checkvolumesandmutes
?Usebypasspathstobisect
?Turnvolumesuptomaximum
?Makesuremachinedriverscheckerrorcodes
?Checkkernellogsforerrors
?2.6.38andlatersupporttracepoints
?http://www.sirena.org.uk/log/2011/01/22/tracing-asoc-with-trace-points/
Debuggingtips-general
14?2011WolfsonMicroelectronicsplcApril2011
www.wolfsonmicro.com
?Nicerhandlingofdigitalbasebands
?ResolveheadsetdetectionAPIcompatibility
?GreateruseofDSP
?Enhancedfeatures–ambientnoisecancellation,beamforming,
offloadeddecompression,speakercompensation
?Evenmoredynamicreconfigurationoftheaudiosubsystem
?Coefficientmanagementandin-systemcalibration
?Usecasedevelopmentandmanagement
?MediacontrollerAPI
?Userinterfacesforconfigurationdevelopment
?ASoCconference,4th-5thMay
?http://www.slimlogic.co.uk/?p=268
Futurework
15?2011WolfsonMicroelectronicsplcApril2011
|
|