Difference between revisions of "SAI Linux driver"

[quality revision] [quality revision]
m
 
 


Template:ArticleMainWriter Template:ArticleApprovedVersion


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:
$ cat /sys/kernel/debug/regmap/xxx.audio-controller/registers
  • procfs entries:
$ 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>&reg;</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:
<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 ==
 
== Article purpose ==
 
This article introduces the SAI Linux<sup>&reg;</sup> driver for the [[SAI internal peripheral]].
 
This article introduces the SAI Linux<sup>&reg;</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>