SAI Linux driver
1 Article purpose
This article introduces the SAI Linux® driver for the SAI internal peripheral.
2 Short Description
3.1 Kernel Configuration
[*] Device Drivers [*] Sound card support [*] Advanced Linux Sound Architecture [*] ALSA for SoC audio support STMicroelectronics STM32 SOC audio support [*] STM32 SAI interface (Serial Audio Interface) support
3.2 Device tree
Refer to the SAI device tree configuration article when configuring the SAI Linux kernel driver.
4 How to use
The SAI Linux driver can be accessed from userland through an ALSA device. Refer to ALSA overview for information on how to list and use ALSA devices.
5 How to trace and debug
The debugfs and procfs file system can be checked to get information on the SAI driver and the resources it uses. A non-exhaustive list of these file system entries is provided below. Refer to ALSA overview for more details on debugging tools.
- debugfs entries:
$ cat /sys/kernel/debug/regmap/xxx.audio-controller/registers
- procfs entries:
- asound: refer to ALSA_overview#How_to_debug
- interrupts: allow to check interrupts.
$ cat /proc/interrupts
6 Source code location
The STM32 SAI peripheral includes two independent audio subblocks that share common resources. The driver source code reflects this architecture.
sound/soc/stm/stm32_sai.c : handles common resources such as clock, interrupt, reset and shared register.
sound/soc/stm/stm32_sai_sub.c : handles the resources dedicated to each subblock.