Boot Linux faster!

Check our new training course

Boot Linux faster!

Check our new training course
and Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

# Kconfig.defconfig: RV32M1 SoC RISC-V core default configuration values
#
# Copyright (c) 2018 Foundries.io Ltd
#
# SPDX-License-Identifier: Apache-2.0

if SOC_OPENISA_RV32M1_RISCV32

config SOC
	string
	default "openisa_rv32m1"

# 32 from event unit + 32 * (1 + max enabled INTMUX channel)
config NUM_IRQS
	int
	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 XIP
	bool
	default y

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

config RISCV_SOC_CONTEXT_SAVE
	bool
	default y if SOC_OPENISA_RV32M1_RI5CY

config RISCV_SOC_INTERRUPT_INIT
	bool
	default y

# 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

# Built-in flash allocated to each chip. This configuration
# assumes the Arm cores are disabled, as these base addresses
# contain the Arm core vector tables if they are used.
config RISCV32_RV32M1_ROM_BASE_ADDR
	hex
	default 0x00000000 if SOC_OPENISA_RV32M1_RI5CY
	default 0x01000000 if SOC_OPENISA_RV32M1_ZERO_RISCY

config RISCV32_RV32M1_ROM_SIZE
	hex
	default 0x000FFF00 if SOC_OPENISA_RV32M1_RI5CY
	default 0x0003FF00 if SOC_OPENISA_RV32M1_ZERO_RISCY

config RISCV32_RV32M1_RAM_BASE_ADDR
	hex
	default 0x20000000 if SOC_OPENISA_RV32M1_RI5CY
	default 0x09000000 if SOC_OPENISA_RV32M1_ZERO_RISCY

config RISCV32_RV32M1_RAM_SIZE
	hex
	default 0x00030000 if SOC_OPENISA_RV32M1_RI5CY
	default 0x00020000 if SOC_OPENISA_RV32M1_ZERO_RISCY

# The event unit looks for vector tables at the end of each core's
# flash space. These vector tables are not relocatable.
config RISCV32_RV32M1_VECTOR_BASE_ADDR
	hex
	default 0x000FFF00 if SOC_OPENISA_RV32M1_RI5CY
	default 0x0103FF00 if SOC_OPENISA_RV32M1_ZERO_RISCY

config RISCV32_RV32M1_VECTOR_SIZE
	hex
	default 0x100

config SYS_CLOCK_HW_CYCLES_PER_SEC
	int
	default 8000000 if SOC_OPENISA_RV32M1_RI5CY # SIRC at 8MHz

if MULTI_LEVEL_INTERRUPTS

config MAX_IRQ_PER_AGGREGATOR
	int
	default 32

config 2ND_LEVEL_INTERRUPTS
	def_bool y

config 2ND_LVL_ISR_TBL_OFFSET
	int
	default 32

config NUM_2ND_LEVEL_AGGREGATORS
	int
	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
	int
	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
	def_bool y

config RV32M1_INTMUX_CHANNEL_0
	def_bool y

config RV32M1_INTMUX_CHANNEL_1
	def_bool y

config RV32M1_INTMUX_CHANNEL_2
	def_bool y

config RV32M1_INTMUX_CHANNEL_3
	def_bool y

config RV32M1_INTMUX_CHANNEL_4
	def_bool y

config RV32M1_INTMUX_CHANNEL_5
	def_bool y

config RV32M1_INTMUX_CHANNEL_6
	def_bool y

config RV32M1_INTMUX_CHANNEL_7
	def_bool y

endif # MULTI_LEVEL_INTERRUPTS

config PINMUX_RV32M1
	def_bool y

if GPIO

config GPIO_RV32M1
	def_bool y

endif # GPIO

if SERIAL

config UART_RV32M1_LPUART
	def_bool y

endif # SERIAL

endif # SOC_OPENISA_RV32M1_RISCV32