Difference between revisions of "SAI Linux driver"
[quality revision] | [quality revision] |
m
|
Contents
1 Article purpose[edit]
This article introduces the SAI Linux® driver for the SAI internal peripheral.
2 Short Description[edit]
The SAI[1] Linux driver is an ASoC CPU DAI driver implemented in the Linux ALSA framework.
3 Configuration[edit]
3.1 Kernel Configuration[edit]
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[edit]
Refer to the SAI device tree configuration article when configuring the SAI Linux kernel driver.
4 How to use[edit]
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[edit]
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
6 Source code location[edit]
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[edit]
<noinclude> {{ArticleBasedOnModel | [[Linux driver article model]]}} {{ArticleMainWriter | OlivierM}} {{ ArticleApprovedVersion| OlivierM | ArnaudP | No previous approved version | AnneJ - 16Oct'18 - 9229 | 05Nov'18}} [[Category:ALSA]]</noinclude> == Article purpose == This article introduces the SAI Linux<sup>®</sup> driver for the [[SAI internal peripheral]]. == Short Description == The SAI<ref name="SAI internal peripheral">[[SAI internal peripheral]]</ref> Linux driver is an ASoC CPU DAI driver implemented in the Linux [[ALSA_overview|ALSA framework]]. == Configuration == === Kernel Configuration === Activate the SAI<ref name="SAI internal peripheral"/> Linux driver in the kernel configuration using the Linux Menuconfig tool: [[Menuconfig or how to configure kernel]].<pre> [*] 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</pre> === Device tree === Refer to the [[SAI device tree configuration]] article when configuring the SAI Linux kernel driver. == How to use == The SAI Linux driver can be accessed from userland through an ALSA device. Refer to [[ALSA_overview#How_to_use|ALSA overview]] for information on how to list and use ALSA devices. ==How to trace and debug== The [[Debugfs|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#How_to_trace_and_debug_the_framework|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.<div style="margin-left: 2em;"> $ cat /sys/kernel/debug/regmap/xxx.audio-controller/registers</div> * procfs entries: :* '''asound''': refer to [[ALSA_overview#How_to_debug]] :* '''interrupts''': allow to check interrupts.<div style="margin-left: 2em;"> $ cat /proc/interrupts</div> == Source code location == The STM32 SAI peripheral includes two independent audio subblocks that share common resources. The driver source code reflects this architecture. {{CodeSource | Linux kernel | sound/soc/stm/stm32_sai.c}}: handles common resources such as clock, interrupt, reset and shared register. {{CodeSource | Linux kernel | sound/soc/stm/stm32_sai_sub.c}}: handles the resources dedicated to each subblock. ==References==<references /> <noinclude> {{ArticleBasedOnModel | Linux driver article model}} {{PublicationRequestId | 9229 | 16-10-2018 | AnneJ}} [[Category:ALSA]]</noinclude>
Line 1: | Line 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Article purpose == |
== Article purpose == |
||
This article introduces the SAI Linux<sup>®</sup> driver for the [[SAI internal peripheral]]. |
This article introduces the SAI Linux<sup>®</sup> driver for the [[SAI internal peripheral]]. |
||
Line 59: | Line 51: | ||
==References== |
==References== |
||
<references /> |
<references /> |
||
+ | |||
+ | <noinclude> |
||
+ | {{ArticleBasedOnModel | Linux driver article model}} |
||
+ | {{PublicationRequestId | 9229 | 16-10-2018 | AnneJ}} |
||
+ | [[Category:ALSA]] |
||
+ | </noinclude> |