Browse Source

drivers: i2s: Initial driver support for SSIE on Renesas RA

Add i2s driver support for Renesas RA SSIE

Signed-off-by: Khoa Tran <khoa.tran.yj@bp.renesas.com>
pull/91646/head
Khoa Tran 2 months ago committed by Benjamin Cabé
parent
commit
e84ea05dd4
  1. 1
      drivers/i2s/CMakeLists.txt
  2. 32
      drivers/i2s/Kconfig.renesas_ra
  3. 1174
      drivers/i2s/i2s_renesas_ra_ssie.c
  4. 62
      dts/bindings/i2s/renesas,ra-i2s-ssie.yaml
  5. 5
      modules/Kconfig.renesas

1
drivers/i2s/CMakeLists.txt

@ -17,3 +17,4 @@ zephyr_library_sources_ifdef(CONFIG_I2S_ESP32 i2s_esp32.c) @@ -17,3 +17,4 @@ zephyr_library_sources_ifdef(CONFIG_I2S_ESP32 i2s_esp32.c)
zephyr_library_sources_ifdef(CONFIG_I2S_SILABS_SIWX91X i2s_silabs_siwx91x.c)
zephyr_library_sources_ifdef(CONFIG_I2S_TEST i2s_test.c)
zephyr_library_sources_ifdef(CONFIG_I2S_STM32_SAI i2s_stm32_sai.c)
zephyr_library_sources_ifdef(CONFIG_I2S_RENESAS_RA_SSIE i2s_renesas_ra_ssie.c)

32
drivers/i2s/Kconfig.renesas_ra

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
# Renesas RA Family
# Copyright (c) 2025 Renesas Electronics Corporation
# SPDX-License-Identifier: Apache-2.0
config I2S_RENESAS_RA_SSIE
bool "Renesas RA I2S SSIE"
default y
depends on DT_HAS_RENESAS_RA_I2S_SSIE_ENABLED
select USE_RA_FSP_SSI
select PINCTRL
help
Enable Renesas RA I2S SSIE Driver.
if I2S_RENESAS_RA_SSIE
config I2S_RENESAS_RA_SSIE_DTC
bool "DTC on Transmission and Reception"
default y
select USE_RA_FSP_DTC
help
Enable DTC on transmission and reception
config I2S_RENESAS_RA_SSIE_RX_BLOCK_COUNT
int "RX queue length"
default 4
config I2S_RENESAS_RA_SSIE_TX_BLOCK_COUNT
int "TX queue length"
default 4
endif # I2S_RENESAS_RA_SSIE

1174
drivers/i2s/i2s_renesas_ra_ssie.c

File diff suppressed because it is too large Load Diff

62
dts/bindings/i2s/renesas,ra-i2s-ssie.yaml

@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
# Copyright (c) 2025 Renesas Electronics Corporation
# SPDX-License-Identifier: Apache-2.0
description: Renesas RA I2S controller
compatible: "renesas,ra-i2s-ssie"
include: [i2s-controller.yaml, pinctrl-device.yaml]
properties:
reg:
required: true
channel:
required: true
type: int
clocks:
required: true
clock-names:
required: true
enum:
- "pclk"
- "audio-clock"
pinctrl-0:
required: true
pinctrl-names:
required: true
interrupts:
required: true
interrupt-names:
required: true
enum:
- "ssi_txi"
- "ssi_rxi"
- "ssi_if"
- "ssi_rt"
description: |
A list of interrupt identifiers that correspond to the interrupt lines
provided in the `interrupts` property. The names must be listed in the
same order as their matching entries in `interrupts`.
Common configurations based on the operating mode:
- Full-duplex mode: "ssi_txi", "ssi_rxi", "ssi_if"
"ssi_txi": Transmit interrupt
"ssi_rxi": Receive interrupt
"ssi_if" : Idle/Error interrupt
- Half-duplex mode: "ssi_rt", "ssi_if"
"ssi_rt" : Combined receive/transmit interrupt
"ssi_if" : Idle/Error interrupt
full-duplex:
type: boolean
description: |
Indicates whether the device node supports full-duplex operation.

5
modules/Kconfig.renesas

@ -191,6 +191,11 @@ config USE_RA_FSP_ELC @@ -191,6 +191,11 @@ config USE_RA_FSP_ELC
help
Enable RA FSP ELC driver
config USE_RA_FSP_SSI
bool
help
Enable RA FSP I2S SSI driver
endif # HAS_RENESAS_RA_FSP
if HAS_RENESAS_RZ_FSP

Loading…
Cancel
Save