SPDIFRX Linux driver

Revision as of 16:02, 11 December 2019 by Registered User


Template:ArticleMainWriter Template:ArticleApprovedVersion


1. Article purpose[edit source]

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

2. Short Description[edit source]

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

3. Configuration[edit source]

3.1. Kernel Configuration[edit source]

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 source]

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

4. How to use[edit source]

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 IEC 958 status bits from the input audio stream. A sleep state can be configured for SPDIFRX input pin, in the device tree, to save power. If this sleep state is defined, the control can be used to retrieve IEC status bits, only when a record of the audio stream is active.

5. How to debug[edit source]

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 source]

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

7. References[edit source]