drivers: i3c: Support I3C driver for STM32.

This commit introduces support for the I3C driver on STM32, enabling
functionality APIs for I3C controllers.

Signed-off-by: Mohammad Badawi <zephyr@exalt.ps>
Signed-off-by: Sara Touqan <zephyr@exalt.ps>
This commit is contained in:
Sara Touqan 2024-11-19 12:59:02 +02:00 committed by Benjamin Cabé
parent 3b33aa5450
commit 10ba888fda
4 changed files with 2213 additions and 0 deletions

View file

@ -41,6 +41,11 @@ zephyr_library_sources_ifdef(
i3c_npcx.c i3c_npcx.c
) )
zephyr_library_sources_ifdef(
CONFIG_I3C_STM32
i3c_stm32.c
)
zephyr_library_sources_ifdef( zephyr_library_sources_ifdef(
CONFIG_I3C_TEST CONFIG_I3C_TEST
i3c_test.c i3c_test.c

View file

@ -123,5 +123,6 @@ rsource "Kconfig.nxp"
rsource "Kconfig.cdns" rsource "Kconfig.cdns"
rsource "Kconfig.npcx" rsource "Kconfig.npcx"
rsource "Kconfig.test" rsource "Kconfig.test"
rsource "Kconfig.stm32"
endif # I3C endif # I3C

36
drivers/i3c/Kconfig.stm32 Normal file
View file

@ -0,0 +1,36 @@
# Copyright (c) 2024 EXALT Technologies.
#
# SPDX-License-Identifier: Apache-2.0
module = I3C_STM32
module-str = i3c_stm32
source "subsys/logging/Kconfig.template.log_config"
config I3C_STM32
bool "STM32 I3C driver support"
depends on DT_HAS_ST_STM32_I3C_ENABLED
select I3C_IBI_WORKQUEUE if I3C_USE_IBI
default y
help
Enable support for I3C on STM32 microcontrollers.
if I3C_STM32
config I3C_STM32_DMA
bool "STM32 I3C DMA driver support"
select DMA
help
Enables support for I3C DMA mode on STM32 microcontrollers.
config I3C_STM32_DMA_FIFO_HEAP_SIZE
int "Status FIFO and control FIFO heap"
depends on I3C_STM32_DMA
default 2048
help
Configures the heap size for dynamically allocating the regions for
storing status FIFO and control FIFO words which will be used by the DMA.
This value depends on the maximum number of messages that will be sent
during a single transfer. 2KB guarantees enough heap size for sending 256
messages on a single transfer.
endif # I3C_STM32

2171
drivers/i3c/i3c_stm32.c Normal file

File diff suppressed because it is too large Load diff