# Copyright 2022-2024 NXP
# SPDX-License-Identifier: Apache-2.0

if SOC_SERIES_RW6XX

config ROM_START_OFFSET
	default 0x400 if BOOTLOADER_MCUBOOT
	default 0x1300 if NXP_RW6XX_BOOT_HEADER

config NUM_IRQS
	default 129
if CORTEX_M_SYSTICK

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 260000000

endif # CORTEX_M_SYSTICK

# The base address is determined from the zephyr,flash node with the following
# precedence:
# FlexSPI base address (if flash node is on a FlexSPI bus)
# node reg property (used for memory regions such as SRAM)

# Workaround for not being able to have commas in macro arguments

DT_CHOSEN_Z_FLASH := zephyr,flash
DT_COMPAT_FLEXSPI := nxp,imx-flexspi

# Macros to shorten Kconfig definitions
DT_CHOSEN_FLASH_NODE := $(dt_chosen_path,$(DT_CHOSEN_Z_FLASH))
DT_CHOSEN_FLASH_PARENT := $(dt_node_parent,$(DT_CHOSEN_FLASH_NODE))

config FLASH_BASE_ADDRESS
	default $(dt_node_reg_addr_hex,$(DT_CHOSEN_FLASH_PARENT),1) \
		if $(dt_node_has_compat,$(DT_CHOSEN_FLASH_PARENT),$(DT_COMPAT_FLEXSPI))
	default $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_FLASH))

# The RW6xx has no internal flash. If the flash node has a size property,
# use that over the reg property. This is used for the external flash
# present on the board. Otherwise, fallback to the reg property
config FLASH_SIZE
	default $(dt_node_int_prop_int,$(DT_CHOSEN_FLASH_NODE),size,Kb) \
		if $(dt_node_has_prop,$(DT_CHOSEN_FLASH_NODE),size)
	default $(dt_chosen_reg_size_int,$(DT_CHOSEN_Z_FLASH),0,K)

if NXP_RW_ROM_RAMLOADER

FLASH_BASE := $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_FLASH))
FLEXSPI_BASE := $(dt_node_reg_addr_hex,/soc/spi@134000,1)
config BUILD_OUTPUT_ADJUST_LMA
	default "$(FLEXSPI_BASE) - $(FLASH_BASE)"

endif # NXP_RW_ROM_RAMLOADER

if FLASH_MCUX_FLEXSPI_XIP

# Avoid RWW hazards by defaulting logging to disabled
choice FLASH_LOG_LEVEL_CHOICE
	default FLASH_LOG_LEVEL_OFF
endchoice

choice MEMC_LOG_LEVEL_CHOICE
	default MEMC_LOG_LEVEL_OFF
endchoice

# Code relocation is needed when MEMC driver is enabled
config CODE_DATA_RELOCATION_SRAM
	default y if MEMC

endif # FLASH_MCUX_FLEXSPI_XIP

choice USB_MCUX_CONTROLLER_TYPE
	default USB_DC_NXP_EHCI
endchoice

endif # SOC_SERIES_RW6XX
