# Renesas FSP HAL config

# Copyright (c) 2024-2025 Renesas Electronics Corporation
# SPDX-License-Identifier: Apache-2.0

config HAS_RENESAS_RA_FSP
	bool
	help
	  Enable Renesas RA FSP support

config HAS_RENESAS_RZ_FSP
	bool
	help
	  Enable Renesas RZ FSP support

if HAS_RENESAS_RA_FSP

config USE_RA_FSP_SCI_B_UART
	bool
	help
	  Enable RA FSP SCI-B UART driver

config USE_RA_FSP_SPI
	bool
	help
	  Enable RA FSP SPI driver

config USE_RA_FSP_I3C
	bool
	help
	  Enable RA FSP I3C driver

config USE_RA_FSP_DMA
	bool
	help
	  Enable RA FSP DMA driver

config USE_RA_FSP_DTC
	bool
	help
	  Enable RA FSP DTC driver

config USE_RA_FSP_I2C_IIC
	bool
	help
	  Enable Renesas RA I2C IIC Master driver

config USE_RA_FSP_SCI_B_I2C
	bool
	help
	  Enable RA FSP SCI-B I2C driver

config USE_RA_FSP_SCI_UART
	bool
	help
	  Enable RA FSP SCI UART driver

config USE_RA_FSP_ADC
	bool
	help
	  Enable RA FSP ADC driver

config USE_RA_FSP_SCE
	bool
	help
	  Enable RA FSP SCE driver

config USE_RA_FSP_MRAM
	bool
	help
	  Enable RA FSP MRAM driver

if USE_RA_FSP_SCE

config HAS_RENESAS_RA_RSIP_E51A
	bool
	default y
	depends on DT_HAS_RENESAS_RA_RSIP_E51A_TRNG_ENABLED
	help
	  Includes RSIP-E51A implementation for SCE driver

config HAS_RENESAS_RA_SCE9
	bool
	default y
	depends on DT_HAS_RENESAS_RA_SCE9_RNG_ENABLED
	help
	  Includes SCE9 implementation for SCE driver

config HAS_RENESAS_RA_SCE7
	bool
	default y
	depends on DT_HAS_RENESAS_RA_SCE7_RNG_ENABLED
	help
	  Includes SCE7 implementation for SCE driver

config HAS_RENESAS_RA_SCE5
	bool
	default y
	depends on DT_HAS_RENESAS_RA_SCE5_RNG_ENABLED
	help
	  Includes SCE5 implementation for SCE driver

config HAS_RENESAS_RA_TRNG
	bool
	default y
	depends on DT_HAS_RENESAS_RA_TRNG_ENABLED
	help
	  Includes TRNG implementation for SCE driver

endif

config USE_RA_FSP_SPI_B
	bool
	help
	  Enable RA FSP SPI-B driver

config USE_RA_FSP_FLASH_HP
	bool
	help
	  Enable RA FSP FLASH HP driver

config USE_RA_FSP_GPT
	bool
	help
	  Enable RA FSP GPT driver

config USE_RA_FSP_AGT
	bool
	help
	  Enable RA FSP AGT driver

config USE_RA_FSP_CANFD
	bool
	help
	  Enable RA FSP CANFD driver

config USE_RA_FSP_ETHER_PHY
	bool
	help
	  Enable RA FSP Ethernet phy driver

config USE_RA_FSP_ETHER
	bool
	help
	  Enable RA FSP Ethernet driver

config USE_RA_FSP_USB_DEVICE
	bool
	help
	  Enable RA FSP USB Device Controller driver

config USE_RA_FSP_SDRAM
	bool
	help
	  Enable RA FSP SDRAM support

config USE_RA_FSP_DISPLAY
	bool
	help
	  Enable RA FSP Display driver

config USE_RA_FSP_MIPI_DSI
	bool
	help
	  Enable RA FSP MIPI DSI driver

config USE_RA_FSP_SDHI
	bool
	help
	  Enable RA FSP SDHI driver

config USE_RA_FSP_CRC
	bool
	help
	  Enable RA FSP CRC driver

config USE_RA_FSP_DAC
	bool
	help
	  Enable RA FSP DAC driver

config USE_RA_FSP_ACMPHS
	bool
	help
	  Enable RA FSP ACMPHS driver

config USE_RA_FSP_LVD
	bool
	help
	  Enable RA FSP LVD driver

config USE_RA_FSP_WDT
	bool
	help
	  Enable RA FSP WDT driver

config USE_RA_FSP_ULPT
	bool
	help
	  Enable RA FSP ULPT driver

config USE_RA_FSP_LPM
	bool
	default y
	depends on PM
	help
	  Enable RA FSP LPM driver

config USE_RA_FSP_OSPI_B_NOR_FLASH
	bool
	help
	  Enable RA FSP Octal-SPI driver

config USE_RA_FSP_ELC
	bool
	help
	  Enable RA FSP ELC driver

config USE_RA_FSP_SSI
	bool
	help
	  Enable RA FSP I2S SSI driver

config USE_RA_FSP_IOPORT
	bool
	help
	  Enable RA FSP IOPORT driver

config USE_RA_FSP_CTSU
	bool
	select USE_RA_FSP_IOPORT
	help
	  Enable RA FSP CTSU driver

config USE_RA_FSP_TOUCH
	bool
	depends on USE_RA_FSP_CTSU
	help
	  Enable RA FSP TOUCH library

config USE_RA_FSP_QSPI_NOR_FLASH
	bool
	help
	  Enable RA FSP Quad-SPI driver

config USE_RA_FSP_CEU
	bool
	help
	  Enable RA FSP CEU driver

config USE_RA_FSP_IPC
	bool
	help
	  Enable RA FSP IPC driver

config USE_RA_FSP_RTC
	bool
	help
	  Enable RA FSP RTC driver

endif # HAS_RENESAS_RA_FSP

if HAS_RENESAS_RZ_FSP

config USE_RZ_FSP_ADC
	bool
	help
	  Enable RZ FSP ADC driver

config USE_RZ_FSP_IOPORT
	bool
	help
	  Enable RZ FSP IOPORT driver

config USE_RZ_FSP_SCIF_UART
	bool
	help
	  Enable RZ FSP SCIF UART driver

config USE_RZ_FSP_IIC_MASTER
	bool
	help
	  Enable RZ FSP IIC MASTER driver

config USE_RZ_FSP_RIIC_MASTER
	bool
	help
	  Enable RZ FSP RIIC MASTER driver

config USE_RZ_FSP_GTM
	bool
	help
	  Enable RZ FSP GTM driver

config USE_RZ_FSP_GPT
	bool
	help
	  Enable RZ FSP GPT driver

config USE_RZ_FSP_EXT_IRQ
	bool
	help
	  Enable RZ FSP External IRQ driver

config USE_RZ_FSP_DMA
	bool
	help
	  Enable RZ FSP DMA driver

config USE_RZ_FSP_MHU
	bool
	help
	  Enable RZ FSP MHU driver

config USE_RZ_FSP_CANFD
	bool
	help
	  Enable RZ FSP CANFD driver

config USE_RZ_FSP_CPG
	bool
	help
	  Enable RZ FSP CLOCK CONTROL driver

config USE_RZ_FSP_CGC
	bool
	help
	  Enable RZ FSP CGC driver

config USE_RZ_FSP_RSPI_SPI
	bool
	help
	  Enable RZ FSP RSPI driver

config USE_RZ_FSP_SCI_UART
	bool
	help
	  Enable RZ FSP SCI UART driver

config USE_RZ_FSP_MTU
	bool
	help
	  Enable RZ FSP MTU driver

config USE_RZ_FSP_CMTW
	bool
	help
	  Enable RZ FSP CMTW driver

config USE_RZ_FSP_SPI
	bool
	help
	  Enable RZ FSP SPI driver

config USE_RZ_FSP_WDT
	bool
	help
	  Enable RZ FSP WDT driver

config USE_RZ_FSP_QSPI_XSPI
	bool
	help
	  Enable RZ FSP QSPI XSPI driver

config USE_RZ_FSP_QSPI_SPIBSC
	bool
	help
	  Enable RZ FSP QSPI SPIBSC driver

endif

config HAS_RENESAS_RX_RDP
	bool
	help
	  Enable Renesas RX RDP support

if HAS_RENESAS_RX_RDP

config USE_RX_RDP_MPC
	bool
	help
	  Enable RX RDP MPC driver

config USE_RX_RDP_GPIO
	bool
	help
	  Enable RX RDP MPC driver

config USE_RX_RDP_SCI_UART
	bool
	help
	  Enable RX RDP SCI UART driver

config USE_RX_RDP_RSPI
	bool
	help
	  Enable RX RDP RSPI driver

config USE_RX_RDP_I2C
	bool
	help
	  Enable RX RDP I2C driver

config USE_RX_RDP_FLASH
	bool
	help
	  Enable RX RDP Flash driver

config USE_RX_RDP_ADC
	bool
	help
	  Enable RX RDP ADC driver

config USE_RX_RDP_IWDT
	bool
	help
	  Enable RX RDP IWDT driver

config USE_RX_RDP_CTSU
	bool
	help
	  Enable RX RDP CTSU driver

config USE_RX_RDP_LVD
	bool
	help
	  Enable RX RDP LVD driver

config USE_RX_RDP_LPC
	bool
	default y
	depends on PM
	help
	  Enable RX RDP LPC driver

endif # HAS_RENESAS_RX_RDP
