linux audio for smartphones · 2017. 11. 7. · linux audio for smartphones author: mark brown...

15
www.wolfsonmicro.com 1 Linux Audio for Smartphones System integration basics April 2011 © 2011 Wolfson Microelectronics plc

Upload: others

Post on 14-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com1

Linux Audio for Smartphones

System integration basics

April 2011© 2011 Wolfson Microelectronics plc

Page 2: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

• Android audio stack overview

• Modern smartphone audio subsystems

• Traditional solutions

• ASoC – the Linux solution• Design overview

• Brief introduction to chip drivers

• Walk through of system audio driver construction

• Debugging tips

• Future directions

Overview

2 © 2011 Wolfson Microelectronics plc April 2011

Page 3: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

Android audio stack

3 © 2011 Wolfson Microelectronics plc April 2011

MediaPlayerMediaRecorder

AudioFlinger

libaudio

Applications

Page 4: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

Modern smartphone audio subsystems

4 April 2011© 2011 Wolfson Microelectronics plc

CPU

Mixing

Earpiece

HDMI

Speaker

Headset Dock

BluetoothCellularmodem

DSP

Page 5: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

Flexibility and complexity

5 © 2011 Wolfson Microelectronics plc April 2011

Page 6: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

Traditional driver model

6 © 2011 Wolfson Microelectronics plc April 2011

Memory Processing Analogue

Page 7: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

• Monolithic driver for each card• No structure for managing off-CPU hardware

• Very little reuse

• Tight coupling between application and kernel code• Per-use case register settings

• Detailed register level knowledge of components

• Time consuming

Traditional driver model

7 © 2011 Wolfson Microelectronics plc April 2011

Page 8: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

• ASoC embedded audio framework• Merged since 2.6.21, April 2007

• Provides standard ALSA interface to applications

• Reusable drivers for each chip

• Minimal per-system drivers

• Use case configuration done by userspace

• Automatic and transparent power management

• More reuse, less coupling

The Linux solution

8 © 2011 Wolfson Microelectronics plc April 2011

Page 9: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

• Looks for audio paths connecting inputs to outputs

• Powers only components in an active path

• Automatically activates DACs and ADCs

Dynamic Audio Power Management

9 © 2011 Wolfson Microelectronics plc April 2011

FM radio

DAC

Mixer

Speaker

Headset

Page 10: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

• Four classes of control• Audio processing controls (eg, volume, effects)

• Audio routing controls (DAPM controls and routes)

• Power controls (DAPM widgets, bias)

• Stream control (Digital audio streaming)

• Mostly direct mapping into register map• SOC_DOUBLE_R_TLV("DAC1 Volume", WM8994_DAC1_LEFT_VOLUME,

WM8994_DAC1_RIGHT_VOLUME, 1, 96, 0, digital_tlv),

ASoC CODEC drivers

10 © 2011 Wolfson Microelectronics plc April 2011

Page 11: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

http://opensource.wolfsonmicro.com/content/speyside-audio

Driver integration walkthrough

11 © 2011 Wolfson Microelectronics plc April 2011

S3C6410/WM0010

WM8915CODEC

“Baseband”

WM9081Amplifier

Headset

Speaker

Subwoofer

Mics

Page 12: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

• AudioPolicyManager and AudioHardware• platform/hardware/alsa_sound – Generic ALSA, asound.conf, LGPL

• devices/samsung/crespo – Nexus S, hard coded, Apache licensed

• Getting use cases• Devices specified when streams are opened

• setMode()

• Applying use cases• Run external utilities

• Use asound.conf

• Call raw ALSA control APIs

• Apply settings with ALSA UCM

• Using common base use cases helps

Application layer

12 © 2011 Wolfson Microelectronics plc April 2011

Page 13: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

• Data in debugfs• CONFIG_DEBUG_FS

• mount –t debugfs /dev/null /debug

• codec_reg – Register map

• dapm_pop_time – log sequences

• dapm directorySPKL: Off in 0 out 1

in "DAC2L" "DAC2L"

out "static" "SPKL PGA"

• Tools:• git://git.opensource.wolfsonmicro.com/asoc-tools.git

Debugging tips - DAPM

13 © 2011 Wolfson Microelectronics plc April 2011

Page 14: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

• Audio stuck – check clocking

• Silent audio – check volumes and mutes

• Use bypass paths to bisect

• Turn volumes up to maximum

• Make sure machine drivers check error codes

• Check kernel logs for errors

• 2.6.38 and later support trace points• http://www.sirena.org.uk/log/2011/01/22/tracing-asoc-with-trace-points/

Debugging tips - general

14 © 2011 Wolfson Microelectronics plc April 2011

Page 15: Linux Audio for Smartphones · 2017. 11. 7. · Linux Audio for Smartphones Author: Mark Brown Created Date: 4/11/2011 4:36:55 AM

www.wolfsonmicro.com

• Nicer handling of digital basebands

• Resolve headset detection API compatibility

• Greater use of DSP• Enhanced features – ambient noise cancellation, beam forming,

offloaded decompression, speaker compensation

• Even more dynamic reconfiguration of the audio subsystem

• Coefficient management and in-system calibration

• Use case development and management• Media controller API

• User interfaces for configuration development

• ASoC conference, 4th-5th May• http://www.slimlogic.co.uk/?p=268

Future work

15 © 2011 Wolfson Microelectronics plc April 2011