diff --git a/keyboards/handwired/onekey/rp2040/config.h b/keyboards/handwired/onekey/rp2040/config.h index 0563ebfa5f1..0030e97b0fe 100644 --- a/keyboards/handwired/onekey/rp2040/config.h +++ b/keyboards/handwired/onekey/rp2040/config.h @@ -3,9 +3,6 @@ #pragma once - -#define DEBUG_MATRIX_SCAN_RATE - #define QMK_WAITING_TEST_BUSY_PIN GP8 #define QMK_WAITING_TEST_YIELD_PIN GP9 diff --git a/keyboards/handwired/onekey/rp2040/keyboard.json b/keyboards/handwired/onekey/rp2040/keyboard.json index 40eb8962322..6f1fdbb86b3 100644 --- a/keyboards/handwired/onekey/rp2040/keyboard.json +++ b/keyboards/handwired/onekey/rp2040/keyboard.json @@ -10,6 +10,7 @@ "pin": "GP25" }, "ws2812": { + "driver": "vendor", "pin": "GP25" } } diff --git a/platforms/chibios/boards/common/ld/RP2040_FLASH_TIMECRIT.ld b/platforms/chibios/boards/common/ld/RP2040_FLASH_TIMECRIT.ld deleted file mode 100644 index 66ed4ce086a..00000000000 --- a/platforms/chibios/boards/common/ld/RP2040_FLASH_TIMECRIT.ld +++ /dev/null @@ -1,117 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2021 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/* - * RP2040 memory setup. - */ -MEMORY -{ - flash0 (rx) : org = 0x00000000, len = 16k /* ROM */ - flash1 (rx) : org = 0x10000000, len = DEFINED(FLASH_LEN) ? FLASH_LEN : 2048k /* XIP */ - flash2 (rx) : org = 0x00000000, len = 0 - flash3 (rx) : org = 0x00000000, len = 0 - flash4 (rx) : org = 0x00000000, len = 0 - flash5 (rx) : org = 0x00000000, len = 0 - flash6 (rx) : org = 0x00000000, len = 0 - flash7 (rx) : org = 0x00000000, len = 0 - ram0 (wx) : org = 0x20000000, len = 256k /* SRAM0 striped */ - ram1 (wx) : org = 0x00000000, len = 256k /* SRAM0 non striped */ - ram2 (wx) : org = 0x00000000, len = 0 - ram3 (wx) : org = 0x00000000, len = 0 - ram4 (wx) : org = 0x20040000, len = 4k /* SRAM4 */ - ram5 (wx) : org = 0x20041000, len = 4k /* SRAM5 */ - ram6 (wx) : org = 0x00000000, len = 0 - ram7 (wx) : org = 0x20041f00, len = 256 /* SRAM5 boot */ -} - -/* For each data/text section two region are defined, a virtual region - and a load region (_LMA suffix).*/ - -/* Flash region to be used for exception vectors.*/ -REGION_ALIAS("VECTORS_FLASH", flash1); -REGION_ALIAS("VECTORS_FLASH_LMA", flash1); - -/* Flash region to be used for constructors and destructors.*/ -REGION_ALIAS("XTORS_FLASH", flash1); -REGION_ALIAS("XTORS_FLASH_LMA", flash1); - -/* Flash region to be used for code text.*/ -REGION_ALIAS("TEXT_FLASH", flash1); -REGION_ALIAS("TEXT_FLASH_LMA", flash1); - -/* Flash region to be used for read only data.*/ -REGION_ALIAS("RODATA_FLASH", flash1); -REGION_ALIAS("RODATA_FLASH_LMA", flash1); - -/* Flash region to be used for various.*/ -REGION_ALIAS("VARIOUS_FLASH", flash1); -REGION_ALIAS("VARIOUS_FLASH_LMA", flash1); - -/* Flash region to be used for RAM(n) initialization data.*/ -REGION_ALIAS("RAM_INIT_FLASH_LMA", flash1); - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts.*/ -REGION_ALIAS("MAIN_STACK_RAM", ram4); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("PROCESS_STACK_RAM", ram4); - -/* RAM region to be used for Main stack. This stack accommodates the processing - of all exceptions and interrupts.*/ -REGION_ALIAS("C1_MAIN_STACK_RAM", ram5); - -/* RAM region to be used for the process stack. This is the stack used by - the main() function.*/ -REGION_ALIAS("C1_PROCESS_STACK_RAM", ram5); - -/* RAM region to be used for data segment.*/ -REGION_ALIAS("DATA_RAM", ram0); -REGION_ALIAS("DATA_RAM_LMA", flash1); - -/* RAM region to be used for BSS segment.*/ -REGION_ALIAS("BSS_RAM", ram0); - -/* RAM region to be used for the default heap.*/ -REGION_ALIAS("HEAP_RAM", ram0); - -SECTIONS -{ - .flash_begin : { - __flash_binary_start = .; - } > flash1 - - .boot2 : { - __boot2_start__ = .; - KEEP (*(.boot2)) - __boot2_end__ = .; - } > flash1 -} - -/* Generic rules inclusion.*/ -INCLUDE rules_stacks.ld -INCLUDE rules_stacks_c1.ld -INCLUDE RP2040_rules_code_with_boot2.ld -INCLUDE RP2040_rules_data_with_timecrit.ld -INCLUDE rules_memory.ld - -SECTIONS -{ - .flash_end : { - __flash_binary_end = .; - } > flash1 -} diff --git a/platforms/chibios/boards/common/ld/RP2040_rules_data_with_timecrit.ld b/platforms/chibios/boards/common/ld/RP2040_rules_data_with_timecrit.ld deleted file mode 100644 index a9a47be983f..00000000000 --- a/platforms/chibios/boards/common/ld/RP2040_rules_data_with_timecrit.ld +++ /dev/null @@ -1,46 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -SECTIONS -{ - .data : ALIGN(4) - { - PROVIDE(_textdata = LOADADDR(.data)); - PROVIDE(_data = .); - __textdata_base__ = LOADADDR(.data); - __data_base__ = .; - *(vtable) - *(.time_critical*) - . = ALIGN(4); - *(.data) - *(.data.*) - *(.ramtext) - . = ALIGN(4); - PROVIDE(_edata = .); - __data_end__ = .; - } > DATA_RAM AT > DATA_RAM_LMA - - .bss (NOLOAD) : ALIGN(4) - { - __bss_base__ = .; - *(.bss) - *(.bss.*) - *(COMMON) - . = ALIGN(4); - __bss_end__ = .; - PROVIDE(end = .); - } > BSS_RAM -} diff --git a/platforms/chibios/bootloaders/rp2040.c b/platforms/chibios/bootloaders/rp2040.c index 524d13e636f..eefaf377557 100644 --- a/platforms/chibios/bootloaders/rp2040.c +++ b/platforms/chibios/bootloaders/rp2040.c @@ -6,6 +6,7 @@ #include "gpio.h" #include "wait.h" #include "pico/bootrom.h" +#include "pico/runtime_init.h" #if !defined(RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED) # define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U @@ -39,7 +40,7 @@ const uint32_t magic_token = 0xCAFEB0BA; void __late_init(void) { // All clocks have to be enabled before jumping to the bootloader function, // otherwise the bootrom will be stuck infinitely. - clocks_init(); + runtime_init_clocks(); if (magic_location != magic_token) { magic_location = magic_token; diff --git a/platforms/chibios/mcu_selection.mk b/platforms/chibios/mcu_selection.mk index 086a2b31c60..ccf977eccee 100644 --- a/platforms/chibios/mcu_selection.mk +++ b/platforms/chibios/mcu_selection.mk @@ -159,8 +159,8 @@ ifneq ($(findstring RP2040, $(MCU)),) # Linker script to use # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ # or /ld/ + MCU_LDSCRIPT ?= RP2040_FLASH STARTUPLD_CONTRIB = $(CHIBIOS_CONTRIB)/os/common/startup/ARMCMx/compilers/GCC/ld - MCU_LDSCRIPT ?= RP2040_FLASH_TIMECRIT LDFLAGS += -L $(STARTUPLD_CONTRIB) # Startup code to use diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk index cf9fac251e4..9184e6e1f6e 100644 --- a/platforms/chibios/platform.mk +++ b/platforms/chibios/platform.mk @@ -302,11 +302,14 @@ EXTRAINCDIRS += $(CHIBIOS)/os/license \ # QMK specific MCU family support selection. ############################################################################## ifneq ("$(wildcard $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)/$(MCU_SERIES).mk)","") - # Either by MCU series e.g. STM32/STM32F1xx.mk or... + # MCU series e.g. STM32/STM32F1xx.mk include $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)/$(MCU_SERIES).mk else ifneq ("$(wildcard $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)/$(MCU_FAMILY).mk)","") - # By MCU family e.g. STM32/STM32.mk + # MCU family e.g. STM32/STM32.mk include $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)/$(MCU_FAMILY).mk +else ifneq ("$(wildcard $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)/$(MCU_SERIES)/$(MCU_SERIES).mk)","") + # MCU series in subfolders e.g. RP/RP2040/RP2040.mk + include $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)/$(MCU_SERIES)/$(MCU_SERIES).mk endif # diff --git a/platforms/chibios/vendors/RP/RP2040.mk b/platforms/chibios/vendors/RP/RP2040.mk deleted file mode 100644 index 94f023d72b7..00000000000 --- a/platforms/chibios/vendors/RP/RP2040.mk +++ /dev/null @@ -1,101 +0,0 @@ -# -# Raspberry Pi RP2040 specific drivers -############################################################################## -COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/vendor/$(MCU_FAMILY)/$(MCU_SERIES) - -ifeq ($(strip $(WS2812_DRIVER)), vendor) - OPT_DEFS += -DRP_DMA_REQUIRED=TRUE -endif - -# -# Raspberry Pi Pico SDK Support -############################################################################## -ADEFS += -DCRT0_VTOR_INIT=1 \ - -DCRT0_EXTRA_CORES_NUMBER=0 \ - -DCRT0_INIT_VECTORS=1 - -CFLAGS += -DPICO_NO_FPGA_CHECK \ - -DNDEBUG - -# -# Pico SDK source and header files needed by QMK and ChibiOS -############################################################################## -PICOSDKROOT := $(TOP_DIR)/lib/pico-sdk - -PICOSDKSRC = $(PICOSDKROOT)/src/rp2_common/hardware_clocks/clocks.c \ - $(PICOSDKROOT)/src/rp2_common/hardware_pll/pll.c \ - $(PICOSDKROOT)/src/rp2_common/hardware_pio/pio.c \ - $(PICOSDKROOT)/src/rp2_common/hardware_timer/timer.c \ - $(PICOSDKROOT)/src/rp2_common/hardware_flash/flash.c \ - $(PICOSDKROOT)/src/rp2_common/hardware_gpio/gpio.c \ - $(PICOSDKROOT)/src/rp2_common/hardware_claim/claim.c \ - $(PICOSDKROOT)/src/rp2_common/hardware_watchdog/watchdog.c \ - $(PICOSDKROOT)/src/rp2_common/hardware_xosc/xosc.c \ - $(PICOSDKROOT)/src/rp2_common/pico_bootrom/bootrom.c - -PICOSDKINC = $(CHIBIOS)//os/various/pico_bindings/dumb/include \ - $(PICOSDKROOT)/src/common/pico_base/include \ - $(PICOSDKROOT)/src/rp2_common/pico_platform/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_base/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_clocks/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_claim/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_flash/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_gpio/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_irq/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_pll/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_pio/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_sync/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_timer/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_resets/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_watchdog/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_xosc/include \ - $(PICOSDKROOT)/src/rp2040/hardware_regs/include \ - $(PICOSDKROOT)/src/rp2040/hardware_structs/include \ - $(PICOSDKROOT)/src/boards/include \ - $(PICOSDKROOT)/src/rp2_common/pico_bootrom/include - -PLATFORM_SRC += $(PICOSDKSRC) -EXTRAINCDIRS += $(PICOSDKINC) - -PLATFORM_RP2040_PATH := $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY) - -PLATFORM_SRC += $(PLATFORM_RP2040_PATH)/stage2_bootloaders.c \ - $(PLATFORM_RP2040_PATH)/pico_sdk_shims.c - -EXTRAINCDIRS += $(PLATFORM_RP2040_PATH) - -# -# RP2040 optimized compiler intrinsics -############################################################################## - -# The RP2040 sdk provides optimized compiler intrinsics which override the GCC -# built-ins. Some of these functions are located in the bootrom of the RP2040. -# Execution of these functions is realized via a vtable that is populated on -# bootup. This mechanism needs startup code and linker script support from -# ChibiOS, which is currently not implemented thus these functions are disabled -# ATM. -PICOSDKINTRINSICSSRC = $(PICOSDKROOT)/src/rp2_common/pico_divider/divider.S \ - $(PICOSDKROOT)/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S - -PICOSDKINTRINSICSINC = $(PICOSDKROOT)/src/common/pico_base/include \ - $(PICOSDKROOT)/src/rp2_common/pico_platfrom/include \ - $(PICOSDKROOT)/src/rp2_common/hardware_divider/include - -# integer division intrinsics utilizing the RP2040 hardware divider -OPT_DEFS += -DPICO_DIVIDER_IN_RAM=1 -OPT_DEFS += -DPICO_DIVIDER_DISABLE_INTERRUPTS=1 - -CFLAGS += -Wl,--wrap=__aeabi_idiv -CFLAGS += -Wl,--wrap=__aeabi_idivmod -CFLAGS += -Wl,--wrap=__aeabi_ldivmod -CFLAGS += -Wl,--wrap=__aeabi_uidiv -CFLAGS += -Wl,--wrap=__aeabi_uidivmod -CFLAGS += -Wl,--wrap=__aeabi_uldivmod - -# 64bit integer intrinsics -OPT_DEFS += -DPICO_INT64_OPS_IN_RAM=1 - -CFLAGS += -Wl,--wrap=__aeabi_lmul - -PLATFORM_SRC += $(PICOSDKINTRINSICSSRC) -EXTRAINCDIRS += $(PICOSDKINTRINSICSINC) diff --git a/platforms/chibios/vendors/RP/RP2040/RP2040.mk b/platforms/chibios/vendors/RP/RP2040/RP2040.mk new file mode 100644 index 00000000000..e332d1551c9 --- /dev/null +++ b/platforms/chibios/vendors/RP/RP2040/RP2040.mk @@ -0,0 +1,52 @@ +PLATFORM_RP_PATH := $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY) +PLATFORM_RP2040_PATH := $(PLATFORM_RP_PATH)/$(MCU_SERIES) + +include $(PLATFORM_RP_PATH)/rp_common.mk + +# +# RP2040 specific source and header files needed by QMK and ChibiOS +############################################################################## +RP2040_INC = $(PICOSDKROOT)/src/rp2040/hardware_regs/include \ + $(PICOSDKROOT)/src/rp2040/hardware_structs/include \ + $(PICOSDKROOT)/src/rp2040/pico_platform/include \ + $(PLATFORM_RP2040_PATH) + +RP2040_SRC = $(PLATFORM_RP2040_PATH)/stage2_bootloaders.c + +CFLAGS += -DPICO_RP2040=1 + +# +# RP2040 optimized compiler intrinsics +############################################################################## + +# The RP2040 sdk provides optimized compiler intrinsics which override the GCC +# built-ins. Some of these functions are located in the bootrom of the RP2040. +# Execution of these functions is realized via a vtable that is populated on +# bootup. This mechanism needs startup code and linker script support from +# ChibiOS, which is currently not implemented thus these functions are disabled +# ATM. +RP2040_SRC += $(PICOSDKROOT)/src/rp2_common/hardware_divider/divider.S \ + $(PICOSDKROOT)/src/rp2_common/pico_divider/divider_hardware.S \ + $(PICOSDKROOT)/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S + +RP2040_INC += $(PICOSDKROOT)/src/rp2_common/hardware_divider/include \ + $(PICOSDKROOT)/src/common/pico_divider_headers/include + +# integer division intrinsics utilizing the RP2040 hardware divider +OPT_DEFS += -DPICO_DIVIDER_IN_RAM=1 +OPT_DEFS += -DPICO_DIVIDER_DISABLE_INTERRUPTS=1 + +CFLAGS += -Wl,--wrap=__aeabi_idiv +CFLAGS += -Wl,--wrap=__aeabi_idivmod +CFLAGS += -Wl,--wrap=__aeabi_ldivmod +CFLAGS += -Wl,--wrap=__aeabi_uidiv +CFLAGS += -Wl,--wrap=__aeabi_uidivmod +CFLAGS += -Wl,--wrap=__aeabi_uldivmod + +# 64bit integer intrinsics +OPT_DEFS += -DPICO_INT64_OPS_IN_RAM=1 + +CFLAGS += -Wl,--wrap=__aeabi_lmul + +PLATFORM_SRC += $(RP2040_SRC) +EXTRAINCDIRS += $(RP2040_INC) diff --git a/platforms/chibios/vendors/RP/_pin_defs.h b/platforms/chibios/vendors/RP/RP2040/_pin_defs.h similarity index 100% rename from platforms/chibios/vendors/RP/_pin_defs.h rename to platforms/chibios/vendors/RP/RP2040/_pin_defs.h diff --git a/platforms/chibios/vendors/RP/stage2_bootloaders.c b/platforms/chibios/vendors/RP/RP2040/stage2_bootloaders.c similarity index 100% rename from platforms/chibios/vendors/RP/stage2_bootloaders.c rename to platforms/chibios/vendors/RP/RP2040/stage2_bootloaders.c diff --git a/platforms/chibios/vendors/RP/pico_sdk_shims.h b/platforms/chibios/vendors/RP/pico_sdk_shims.h new file mode 100644 index 00000000000..d9bbd94750c --- /dev/null +++ b/platforms/chibios/vendors/RP/pico_sdk_shims.h @@ -0,0 +1,12 @@ +// Copyright 2024 Stefan Kerkmann +// SPDX-License-Identifier: GPL-2.0-or-later + +#ifndef __ASSEMBLER__ + +#define __not_in_flash(group) __attribute__((section(".ramtext." group))) + +#else + +#define RAM_SECTION_NAME(x) .ramtext.##x + +#endif diff --git a/platforms/chibios/vendors/RP/rp_common.mk b/platforms/chibios/vendors/RP/rp_common.mk new file mode 100644 index 00000000000..fdbb3329815 --- /dev/null +++ b/platforms/chibios/vendors/RP/rp_common.mk @@ -0,0 +1,74 @@ +# +# Raspberry Pi specific drivers, same for all RP2xxx based boards +############################################################################## +COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/vendor/$(MCU_FAMILY)/rp2040 + +ifeq ($(strip $(WS2812_DRIVER)), vendor) + OPT_DEFS += -DRP_DMA_REQUIRED=TRUE +endif + +# +# Raspberry Pi Pico SDK Support +############################################################################## +ADEFS += -DCRT0_VTOR_INIT=1 \ + -DCRT0_EXTRA_CORES_NUMBER=0 \ + -DCRT0_INIT_VECTORS=1 \ + -DPICO_CONFIG_RTOS_ADAPTER_HEADER=$(PLATFORM_RP_PATH)/pico_sdk_shims.h + +CFLAGS += -DNDEBUG \ + -DPICO_CONFIG_RTOS_ADAPTER_HEADER=$(PLATFORM_RP_PATH)/pico_sdk_shims.h + +# +# Pico SDK source and header files needed by QMK and ChibiOS +############################################################################## +PICOSDKROOT := $(TOP_DIR)/lib/pico-sdk + +PICOSDKSRC = $(PICOSDKROOT)/src/common/hardware_claim/claim.c \ + $(PICOSDKROOT)/src/rp2_common/hardware_clocks/clocks.c \ + $(PICOSDKROOT)/src/rp2_common/hardware_flash/flash.c \ + $(PICOSDKROOT)/src/rp2_common/hardware_gpio/gpio.c \ + $(PICOSDKROOT)/src/rp2_common/hardware_pio/pio.c \ + $(PICOSDKROOT)/src/rp2_common/hardware_pll/pll.c \ + $(PICOSDKROOT)/src/rp2_common/hardware_ticks/ticks.c \ + $(PICOSDKROOT)/src/rp2_common/hardware_timer/timer.c \ + $(PICOSDKROOT)/src/rp2_common/hardware_watchdog/watchdog.c \ + $(PICOSDKROOT)/src/rp2_common/hardware_xosc/xosc.c \ + $(PICOSDKROOT)/src/rp2_common/pico_bootrom/bootrom.c \ + $(PICOSDKROOT)/src/rp2_common/pico_runtime_init/runtime_init_clocks.c \ + $(PICOSDKROOT)/src/rp2_common/pico_runtime_init/runtime_init.c + +PICOSDKINC = $(CHIBIOS)/os/various/pico_bindings/dumb/include \ + $(PICOSDKROOT)/src/boards/include \ + $(PICOSDKROOT)/src/common/boot_picobin_headers/include \ + $(PICOSDKROOT)/src/common/boot_picoboot_headers/include \ + $(PICOSDKROOT)/src/common/hardware_claim/include \ + $(PICOSDKROOT)/src/common/pico_base_headers/include \ + $(PICOSDKROOT)/src/rp2_common/boot_bootrom_headers/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_base/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_boot_lock/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_clocks/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_flash/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_gpio/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_irq/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_pio/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_pll/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_resets/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_sync_spin_lock/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_sync/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_ticks/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_timer/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_watchdog/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_xosc/include \ + $(PICOSDKROOT)/src/rp2_common/pico_bootrom/include \ + $(PICOSDKROOT)/src/rp2_common/pico_flash/include \ + $(PICOSDKROOT)/src/rp2_common/pico_platform_compiler/include \ + $(PICOSDKROOT)/src/rp2_common/pico_platform_panic/include \ + $(PICOSDKROOT)/src/rp2_common/pico_platform_sections/include \ + $(PICOSDKROOT)/src/rp2_common/pico_runtime_init/include \ + $(PICOSDKROOT)/src/rp2_common/pico_runtime/include + +PICOSDKSRC += $(PLATFORM_RP_PATH)/pico_sdk_shims.c +PICOSDKINC += $(PLATFORM_RP_PATH) + +PLATFORM_SRC += $(PICOSDKSRC) +EXTRAINCDIRS += $(PICOSDKINC)