# SPDX-License-Identifier: Apache-2.0

if BOARD_RV32M1_VEGA

config BOARD
	default "rv32m1_vega_ri5cy" if SOC_OPENISA_RV32M1_RI5CY
	default "rv32m1_vega_zero_riscy" if SOC_OPENISA_RV32M1_ZERO_RISCY

if UART_RV32M1_LPUART

config UART_RV32M1_LPUART_0
	default y if UART_CONSOLE

endif # UART_RV32M1

if PINMUX_RV32M1

config PINMUX_RV32M1_PORTA
	default y

config PINMUX_RV32M1_PORTB
	default y

config PINMUX_RV32M1_PORTC
	default y

config PINMUX_RV32M1_PORTD
	default y

config PINMUX_RV32M1_PORTE
	default y if RV32M1_INTMUX

endif # PINMUX_RV32M1

if GPIO_RV32M1

config GPIO_RV32M1_PORTA
	default y

config GPIO_RV32M1_PORTB
	default y if RV32M1_INTMUX

config GPIO_RV32M1_PORTC
	default y if RV32M1_INTMUX

config GPIO_RV32M1_PORTD
	default y if RV32M1_INTMUX

config GPIO_RV32M1_PORTE
	default y if RV32M1_INTMUX

endif # GPIO_RV32M1

if SERIAL

config UART_RV32M1_LPUART
	default y

endif # SERIAL

if I2C

config I2C_0
	def_bool y

config I2C_3
	def_bool y if RV32M1_INTMUX

endif # I2C

endif # BOARD_RV32M1_VEGA
