SAI Linux driver
目录
Article purpose
本文介绍了适用于SAI internal peripheral的SAI Linux® 驱动程序。
Short Description
SAI[1] Linux驱动程序是在Linux ALSA framework中实现的ASoC CPU DAI驱动程序。
Configuration
Kernel Configuration
使用Linux Menuconfig工具在内核配置中激活SAI [1] Linux驱动程序: Menuconfig or how to configure kernel.
[*] 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
Device tree
配置SAI Linux内核驱动时,请参考SAI device tree configuration 文章。
How to use
可以通过ALSA设备从用户域访问SAI Linux驱动程序。有关如何列出和使用ALSA设备的信息,请参考ALSA overview 。
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:
- asoc: refer to ALSA_overview#How_to_monitor
- clk: refer to Clock_overview#How_to_monitor_with_debugfs to get information on clocks.
- pinctrl: refer to Pinctrl_overview#How_to_monitor to get information on pins.
- regmap: allow to monitor SAI peripheral registers.
$ 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
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| |}} sound/soc/stm/stm32_sai.c : handles common resources such as clock, interrupt, reset and shared register.
sound/soc/stm/stm32_sai_sub.c| |}} sound/soc/stm/stm32_sai_sub.c : handles the resources dedicated to each subblock.