# Raspberry Pi RP2XXX MCU line

# Copyright (c) 2021 Nordic Semiconductor ASA
# Copyright (c) 2021 Yonatan Schachter
# SPDX-License-Identifier: Apache-2.0

config SOC_SERIES_RP2XXX
	select ARM
	select CPU_CORTEX_M0PLUS
	select CPU_CORTEX_M_HAS_SYSTICK
	select CPU_CORTEX_M_HAS_VTOR
	select CPU_HAS_ARM_MPU
	select HAS_RPI_PICO
	select XIP
	select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE
	help
	  Enable support for Raspberry Pi RP2 MCU series

config RP2_REQUIRES_SECOND_STAGE_BOOT
	bool
	default y if FLASH_LOAD_OFFSET = 0x100

# Flash type used by the SoC. The board should select the one used.

config RP2_FLASH_W25Q080
	bool
	help
	  Configure RP2 to use a W25Q080 flash chip, or similar. Should be selected
	  by the board definition, not the user.

config RP2_FLASH_GENERIC_03H
	bool
	help
	  Configure RP2 to use a flash chip supporting the standard 03h command.
	  Should be selected by the board definition, not the user.

config RP2_FLASH_IS25LP080
	bool
	help
	  Configure RP2 to use a IS25LP080 flash chip, or similar. Should be selected
	  by the board definition, not the user.

config RP2_FLASH_W25X10CL
	bool
	help
	  Configure RP2 to use a W25X10CL flash chip, or similar. Should be selected
	  by the board definition, not the user.

config RP2_FLASH_AT25SF128A
	bool
	help
	  Configure RP2 to use a AT25SF128A flash chip, or similar. Should be selected
	  by the board definition, not the user.
