# Copyright (c) 2023 Enphase Energy
# SPDX-License-Identifier: Apache-2.0

if SOC_SERIES_AM6X

# Workaround for not being able to have commas in macro arguments
DT_CHOSEN_Z_FLASH := zephyr,flash

config FLASH_SIZE
	default $(dt_chosen_reg_size_int,$(DT_CHOSEN_Z_FLASH),0,K)

config FLASH_BASE_ADDRESS
	default $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_FLASH))

config NUM_IRQS
	int
	default 64 if SOC_SERIES_AM6X_M4
	default 280 if SOC_SERIES_AM6X_A53

config SYS_CLOCK_HW_CYCLES_PER_SEC
	int
	default 400000000 if SOC_SERIES_AM6X_M4
	default 200000000 if SOC_SERIES_AM6X_A53

config PINCTRL
	default y

if SERIAL

config UART_NS16550
	default y

config UART_NS16550_TI_K3
	default y if SOC_SERIES_AM6X_M4

choice UART_NS16550_VARIANT
	default UART_NS16550_VARIANT_NS16750
endchoice

endif # SERIAL

config BUILD_OUTPUT_BIN
	default n if SOC_SERIES_AM6X_M4

endif # SOC_SERIES_AM6X
