forked from mirrors/qmk_firmware
121 lines
5.8 KiB
Makefile
121 lines
5.8 KiB
Makefile
#
|
|
# 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/hardware_i2c/i2c.c \
|
|
$(PICOSDKROOT)/src/rp2_common/hardware_irq/irq.c \
|
|
$(PICOSDKROOT)/src/rp2_common/hardware_irq/irq_handler_chain.S \
|
|
$(PICOSDKROOT)/src/rp2_common/hardware_timer/timer.c \
|
|
$(PICOSDKROOT)/src/rp2_common/hardware_dma/dma.c \
|
|
$(PICOSDKROOT)/src/rp2_common/pico_bootrom/bootrom.c \
|
|
$(PICOSDKROOT)/src/common/pico_time/time.c \
|
|
$(PICOSDKROOT)/src/common/pico_time/timeout_helper.c \
|
|
$(PICOSDKROOT)/src/common/pico_util/datetime.c \
|
|
$(PICOSDKROOT)/src/common/pico_util/pheap.c \
|
|
$(PICOSDKROOT)/src/common/pico_util/queue.c \
|
|
$(PICOSDKROOT)/src/common/pico_sync/critical_section.c \
|
|
$(PICOSDKROOT)/src/common/pico_sync/lock_core.c \
|
|
$(PICOSDKROOT)/src/common/pico_sync/mutex.c \
|
|
$(PICOSDKROOT)/src/common/pico_sync/sem.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/rp2_common/hardware_i2c/include \
|
|
$(PICOSDKROOT)/src/rp2_common/hardware_timer/include \
|
|
$(PICOSDKROOT)/src/rp2_common/hardware_dma/include \
|
|
$(PICOSDKROOT)/src/rp2040/hardware_regs/include \
|
|
$(PICOSDKROOT)/src/rp2040/hardware_structs/include \
|
|
$(PICOSDKROOT)/src/boards/include \
|
|
$(PICOSDKROOT)/src/rp2_common/pico_bootrom/include \
|
|
$(PICOSDKROOT)/src/common/pico_time/include \
|
|
$(PICOSDKROOT)/src/common/pico_util/include \
|
|
$(PICOSDKROOT)/src/common/pico_sync/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)
|