# 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_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_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

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_DAC
	bool
	help
	  Enable RA FSP DAC driver

endif # HAS_RENESAS_RA_FSP

if HAS_RENESAS_RZ_FSP

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_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_MHU
	bool
	help
	  Enable RZ FSP MHU driver

config USE_RZ_FSP_CPG
	bool
	help
	  Enable RZ FSP CLOCK CONTROL driver

endif
