Difference between revisions of "SPDIFRX Linux driver"

[checked revision] [quality revision]
m
 


Template:ArticleMainWriter Template:ArticleApprovedVersion


1 Article purpose[edit]

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

2 Short Description[edit]

The SPDIFRX[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 SPDIFRX[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 S/PDIF receiver (SPDIFRX) support

3.2 Device tree[edit]

Refer to the SPDIFRX device tree configuration article when configuring the SPDIFRX Linux kernel driver.

4 How to use[edit]

The SPDIFRX driver is accessed from userland through an ALSA device. Refer to ALSA overview to see how to list and use ALSA devices.

The SPDFIRX driver exposes an alsa control, which allows to retrieve the IEC958 IEC 958 status bits from the input audio stream.

Warning.png

The configuration of the SPDIFRX input pin in the device tree, may put some restrictions on the use of

IEC958

this control. Thus, in some configuration, the control can be used only when an audio stream is captured. Refer to the SPDIFRX device tree configuration article, to find details about SPDIFRX configuration.


5 How to debug[edit]

The debugfs and procfs file systems can be checked to get information about the SPDFIRX driver and the resources it uses. A none exhaustive list of these file system entries is provided below. Refer to ALSA overview to get more details about debugging tools.

  • debugfs entries:
$ cat /sys/kernel/debug/regmap/xxx.audio-controller/registers
  • procfs entries:
$ cat /proc/interrupts

6 Source code location[edit]

sound/soc/stm/stm32_spdifrx.c : implements the SPDIFRX driver.

7 References[edit]

{{PublicationRequestId | 9234 | 2018-10-22 | BrunoB}

<noinclude>

{{ArticleBasedOnModel | [[Linux driver article model]]}}
{{ArticleMainWriter | OlivierM}}
{{ ArticleApprovedVersion| OlivierM | ArnaudP |<No previous approved version>| BrunoB - 16Oct'18 - 9234 | 22Oct'18 }}
{{ReviewsComments|-- [[User:Arnaud Pouliquen|Arnaud Pouliquen]] ([[User talk:Arnaud Pouliquen|talk]]) 17:48, 21 January 2020 (CET)<br />to migrate at the end of the article + link broken}}
[[Category:ALSA]]</noinclude>

== Article purpose ==
This article introduces the SPDIFRX Linux<sup>&reg;</sup> driver for the [[SPDIFRX internal peripheral]].

== Short Description ==
The SPDIFRX<ref name="SPDIFRX internal peripheral">[[SPDIFRX internal peripheral]]</ref> Linux driver is an ASoC CPU DAI driver implemented in the Linux [[ALSA_overview|ALSA framework]].

== Configuration ==

=== Kernel Configuration ===
Activate the SPDIFRX<ref name="SPDIFRX 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 S/PDIF receiver (SPDIFRX) support</pre>


=== Device tree ===
Refer to the [[SPDIFRX device tree configuration]] article when configuring the SPDIFRX Linux kernel driver.

== How to use ==
The SPDIFRX driver is accessed from userland through an ALSA device. Refer to [[ALSA_overview#How_to_use|ALSA overview]] to see how to list and use ALSA devices.

The SPDFIRX driver exposes an alsa control, which allows to retrieve the IEC958 IEC 958 status bits from
the input audio stream. 

{{Warning|The configuration of the SPDIFRX input pin in the device tree, may put some restrictions on the use of IEC958this control. Thus, in some configuration, the control can be used only when an audio stream is captured. Refer to the [[SPDIFRX device tree configuration]] article, to find details about SPDIFRX configuration.

{{ReviewsComments|-- [[User:Arnaud Pouliquen|Arnaud Pouliquen]] ([[User talk:Arnaud Pouliquen|talk]]) 17:47, 21 January 2020 (CET)<br />put restriction under warning message}}

== How to debug ==
The [[Debugfs|debugfs]] and procfs file systems can be checked to get information about the SPDFIRX driver and the resources it uses. A none exhaustive list of these file system entries is provided below. Refer to [[ALSA_overview#How_to_trace_and_debug_the_framework|ALSA overview]] to get more details about 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 SPDIFRX 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 ==
{{CodeSource | Linux kernel | sound/soc/stm/stm32_spdifrx.c}}: implements the SPDIFRX driver.

==References==<references />

<noinclude>

{{ArticleBasedOnModel | Peripheral or framework device tree configuration model}}
{{PublicationRequestId | 9234 | 2018-10-22 | BrunoB}

[[Category:ALSA]]</noinclude>
Line 1: Line 1:
<noinclude>
 
{{ArticleBasedOnModel | [[Linux driver article model]]}}
 
{{ArticleMainWriter | OlivierM}}
 
{{ ArticleApprovedVersion| OlivierM | ArnaudP |<No previous approved version>| BrunoB - 16Oct'18 - 9234 | 22Oct'18 }}
 
{{ReviewsComments|-- [[User:Arnaud Pouliquen|Arnaud Pouliquen]] ([[User talk:Arnaud Pouliquen|talk]]) 17:48, 21 January 2020 (CET)<br />to migrate at the end of the article + link broken}}
 
[[Category:ALSA]]
 
</noinclude>
 
 
 
== Article purpose ==
 
== Article purpose ==
 
This article introduces the SPDIFRX Linux<sup>&reg;</sup> driver for the [[SPDIFRX internal peripheral]].
 
This article introduces the SPDIFRX Linux<sup>&reg;</sup> driver for the [[SPDIFRX internal peripheral]].
Line 32: Line 24:
 
The SPDIFRX driver is accessed from userland through an ALSA device. Refer to [[ALSA_overview#How_to_use|ALSA overview]] to see how to list and use ALSA devices.
 
The SPDIFRX driver is accessed from userland through an ALSA device. Refer to [[ALSA_overview#How_to_use|ALSA overview]] to see how to list and use ALSA devices.
   
The SPDFIRX driver exposes an alsa control, which allows to retrieve the IEC 958 status bits from
+
The SPDFIRX driver exposes an alsa control, which allows to retrieve the IEC958 status bits from
the input audio stream. The configuration of the SPDIFRX input pin in the device tree, may put some restrictions on the use of this control. Thus, in some configuration, the control can be used only when an audio stream is captured. Refer to the [[SPDIFRX device tree configuration]] article, to find details about SPDIFRX configuration.
+
the input audio stream.  
{{ReviewsComments|-- [[User:Arnaud Pouliquen|Arnaud Pouliquen]] ([[User talk:Arnaud Pouliquen|talk]]) 17:47, 21 January 2020 (CET)<br />put restriction under warning message}}
+
{{Warning|The configuration of the SPDIFRX input pin in the device tree, may put some restrictions on the use of IEC958 control. Thus, in some configuration, the control can be used only when an audio stream is captured. Refer to the [[SPDIFRX device tree configuration]] article, to find details about SPDIFRX configuration.}}
   
 
== How to debug ==
 
== How to debug ==
Line 59: Line 51:
 
==References==
 
==References==
 
<references />
 
<references />
  +
  +
<noinclude>
  +
{{ArticleBasedOnModel | Peripheral or framework device tree configuration model}}
  +
{{PublicationRequestId | 9234 | 2018-10-22 | BrunoB}
  +
  +
[[Category:ALSA]]
  +
</noinclude>