# RV32M1 SoC RISC-V core default configuration values

# Copyright (c) 2018 Foundries.io Ltd
# SPDX-License-Identifier: Apache-2.0

if SOC_OPENISA_RV32M1

# 32 from event unit + 32 * (1 + max enabled INTMUX channel)
config NUM_IRQS
	default 288 if RV32M1_INTMUX_CHANNEL_7
	default 256 if RV32M1_INTMUX_CHANNEL_6
	default 224 if RV32M1_INTMUX_CHANNEL_5
	default 192 if RV32M1_INTMUX_CHANNEL_4
	default 160 if RV32M1_INTMUX_CHANNEL_3
	default 128 if RV32M1_INTMUX_CHANNEL_2
	default 96 if RV32M1_INTMUX_CHANNEL_1
	default 64 if RV32M1_INTMUX_CHANNEL_0
	default 32

config RISCV_GENERIC_TOOLCHAIN
	default y if "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "zephyr"
	default n

config RISCV_SOC_CONTEXT_SAVE
	default y if SOC_OPENISA_RV32M1_RI5CY

config RISCV_SOC_OFFSETS
	default y

config RISCV_SOC_INTERRUPT_INIT
	default y

config RISCV_MCAUSE_EXCEPTION_MASK
	default 0x1F

# We need to disable the watchdog out of reset, as it's enabled by
# default. Use the WDOG_INIT hook for doing that.
config WDOG_INIT
	def_bool y

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 8000000

if MULTI_LEVEL_INTERRUPTS

config MAX_IRQ_PER_AGGREGATOR
	default 32

config 2ND_LEVEL_INTERRUPTS
	default y

config 2ND_LVL_ISR_TBL_OFFSET
	default 32

config NUM_2ND_LEVEL_AGGREGATORS
	default 8 if RV32M1_INTMUX_CHANNEL_7
	default 7 if RV32M1_INTMUX_CHANNEL_6
	default 6 if RV32M1_INTMUX_CHANNEL_5
	default 5 if RV32M1_INTMUX_CHANNEL_4
	default 4 if RV32M1_INTMUX_CHANNEL_3
	default 3 if RV32M1_INTMUX_CHANNEL_2
	default 2 if RV32M1_INTMUX_CHANNEL_1
	default 1		# just channel 0

config 2ND_LVL_INTR_00_OFFSET
	default 24

config 2ND_LVL_INTR_01_OFFSET
	int
	default 25

config 2ND_LVL_INTR_02_OFFSET
	int
	default 26

config 2ND_LVL_INTR_03_OFFSET
	int
	default 27

config 2ND_LVL_INTR_04_OFFSET
	int
	default 28

config 2ND_LVL_INTR_05_OFFSET
	int
	default 29

config 2ND_LVL_INTR_06_OFFSET
	int
	default 30

config 2ND_LVL_INTR_07_OFFSET
	int
	default 31

config RV32M1_INTMUX_CHANNEL_0
	default y

config RV32M1_INTMUX_CHANNEL_1
	default y

config RV32M1_INTMUX_CHANNEL_2
	default y

config RV32M1_INTMUX_CHANNEL_3
	default y

config RV32M1_INTMUX_CHANNEL_4
	default y

config RV32M1_INTMUX_CHANNEL_5
	default y

config RV32M1_INTMUX_CHANNEL_6
	default y

config RV32M1_INTMUX_CHANNEL_7
	default y

endif # MULTI_LEVEL_INTERRUPTS

endif # SOC_OPENISA_RV32M1
