Introduction to SoundWire
summary
SoundWire is a MIPI audio bus: a 2-pin clock+data serial, dual-data-rate link with dynamic frame sizes, runtime clock scaling to 12.8 MHz and a built-in bulk transfer channel for large blobs. It supports both PCM and PDM, exposes up to 11 slaves and 15 logical data ports (port 0 = bulk), uses 48-bit device IDs with master-assigned 4-bit device numbers, and requires software-driven enumeration. A Linux subsystem is already merged into Linux 4.16 with streaming in 4.20 and Intel/Cadence controller patches in-tree; bank switching enables glitch-free runtime stream changes.
AI-written summary · about
chapters (27)
- 0:00Introduction
- 1:14Bit Standards
- 1:45Existing Audio Standards
- 4:21How does SoundWire work
- 6:24SoundWire Protocol
- 8:19At Runtime
- 11:10Master
- 13:45Data Ports
- 15:14Frame
- 17:38Frame Examples
- 19:21Control Work
- 22:51Device Address
- 24:44Device Number
- 26:17Enumeration
- 27:04Slave Status
- 27:22Dynamic Device Number
- 28:05Disco
- 29:35Linux
- 32:41Bus Master API
- 33:36Master Ops
- 36:55Slave Driver
- 38:02Slave Operations
- 38:26Disco Properties
- 39:40ReadWrite APIs
- 40:09Audio Stream
- 41:31Prepare Stream
- 42:42Configuration Spec
related talks
26mDeviceTrees - MIPI SoundWire® Device Class for Audio (SDCA) and classic ACPI-DT...
46mI3C in Tomorrow's Design
42mEmbedded Audio Policies Made Easy with WirePlumber
42mSoftware ISP FOSS Support for MIPI Cameras
33mDo It Faster: How We Supercharged Linux To Work With Blazing Fast ADCs for IIO
55mBluetooth on Embedded Linux Systems Deep Dive
13mIoT True Wireless Stereo Applications Shine with RISC-V and HiFi DSP
41mBeyond Complex Cameras: Complex Video Graphs Using PipeWire
