SAI Linux driver

Revision as of 08:01, 22 October 2019 by Nathalie Sangouard (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

1 Article purpose

This article introduces the SAI Linux® driver for the SAI internal peripheral.

2 Short Description

The SAI[1] Linux driver is an ASoC CPU DAI driver implemented in the Linux ALSA framework.

3 Configuration

3.1 Kernel Configuration

Activate the SAI[1] Linux driver in the kernel configuration using the Linux Menuconfig tool: 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

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/
  • procfs entries:
$ 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.

7 References