From 2728603fe6d73e805a539d337fd01051c46ca806 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 19 Nov 2021 18:41:02 +0000 Subject: Move tmk_core/common/ (#13918) --- tmk_core/arm_atsam.mk | 67 --- tmk_core/avr.mk | 179 ------ tmk_core/chibios.mk | 436 -------------- tmk_core/common.mk | 16 - tmk_core/common/arm_atsam/_timer.h | 19 - tmk_core/common/arm_atsam/_wait.h | 22 - tmk_core/common/arm_atsam/atomic_util.h | 37 -- tmk_core/common/arm_atsam/bootloader.c | 57 -- tmk_core/common/arm_atsam/eeprom.c | 184 ------ tmk_core/common/arm_atsam/gpio.h | 77 --- tmk_core/common/arm_atsam/pin_defs.h | 84 --- tmk_core/common/arm_atsam/platform.c | 21 - tmk_core/common/arm_atsam/platform_deps.h | 18 - tmk_core/common/arm_atsam/suspend.c | 77 --- tmk_core/common/arm_atsam/timer.c | 19 - tmk_core/common/atomic_util.h | 32 -- tmk_core/common/avr/_print.h | 33 -- tmk_core/common/avr/_timer.h | 19 - tmk_core/common/avr/_wait.h | 49 -- tmk_core/common/avr/atomic_util.h | 22 - tmk_core/common/avr/bootloader.c | 293 ---------- tmk_core/common/avr/bootloader_size.c | 21 - tmk_core/common/avr/gpio.h | 49 -- tmk_core/common/avr/pin_defs.h | 128 ----- tmk_core/common/avr/platform.c | 21 - tmk_core/common/avr/platform_deps.h | 20 - tmk_core/common/avr/printf.c | 20 - tmk_core/common/avr/printf.mk | 2 - tmk_core/common/avr/sleep_led.c | 124 ---- tmk_core/common/avr/suspend.c | 152 ----- tmk_core/common/avr/timer.c | 133 ----- tmk_core/common/avr/timer_avr.h | 39 -- tmk_core/common/avr/xprintf.S | 498 ---------------- tmk_core/common/avr/xprintf.h | 103 ---- tmk_core/common/bootloader.h | 21 - tmk_core/common/chibios/_timer.h | 19 - tmk_core/common/chibios/_wait.c | 89 --- tmk_core/common/chibios/_wait.h | 60 -- tmk_core/common/chibios/atomic_util.h | 37 -- tmk_core/common/chibios/bootloader.c | 145 ----- tmk_core/common/chibios/chibios_config.h | 78 --- tmk_core/common/chibios/eeprom_stm32.c | 687 ---------------------- tmk_core/common/chibios/eeprom_stm32.h | 33 -- tmk_core/common/chibios/eeprom_stm32_defs.h | 74 --- tmk_core/common/chibios/eeprom_teensy.c | 795 -------------------------- tmk_core/common/chibios/flash_stm32.c | 208 ------- tmk_core/common/chibios/flash_stm32.h | 44 -- tmk_core/common/chibios/gd32v_compatibility.h | 120 ---- tmk_core/common/chibios/gpio.h | 50 -- tmk_core/common/chibios/pin_defs.h | 323 ----------- tmk_core/common/chibios/platform.c | 22 - tmk_core/common/chibios/platform_deps.h | 19 - tmk_core/common/chibios/sleep_led.c | 192 ------- tmk_core/common/chibios/suspend.c | 92 --- tmk_core/common/chibios/syscall-fallbacks.c | 110 ---- tmk_core/common/chibios/timer.c | 47 -- tmk_core/common/chibios/wait.c | 41 -- tmk_core/common/eeprom.h | 21 - tmk_core/common/gpio.h | 22 - tmk_core/common/pin_defs.h | 23 - tmk_core/common/progmem.h | 19 - tmk_core/common/sleep_led.h | 17 - tmk_core/common/suspend.h | 20 - tmk_core/common/test/_wait.h | 22 - tmk_core/common/test/bootloader.c | 19 - tmk_core/common/test/eeprom.c | 95 --- tmk_core/common/test/eeprom_stm32_tests.cpp | 438 -------------- tmk_core/common/test/flash_stm32_mock.c | 49 -- tmk_core/common/test/hal.h | 18 - tmk_core/common/test/platform.c | 21 - tmk_core/common/test/platform.h | 18 - tmk_core/common/test/platform_deps.h | 18 - tmk_core/common/test/rules.mk | 24 - tmk_core/common/test/suspend.c | 15 - tmk_core/common/test/testlist.mk | 1 - tmk_core/common/test/timer.c | 33 -- tmk_core/common/timer.h | 67 --- tmk_core/common/wait.h | 30 - tmk_core/native.mk | 34 -- tmk_core/protocol.mk | 2 - tmk_core/rules.mk | 2 +- 81 files changed, 1 insertion(+), 7404 deletions(-) delete mode 100644 tmk_core/arm_atsam.mk delete mode 100644 tmk_core/avr.mk delete mode 100644 tmk_core/chibios.mk delete mode 100644 tmk_core/common.mk delete mode 100644 tmk_core/common/arm_atsam/_timer.h delete mode 100644 tmk_core/common/arm_atsam/_wait.h delete mode 100644 tmk_core/common/arm_atsam/atomic_util.h delete mode 100644 tmk_core/common/arm_atsam/bootloader.c delete mode 100644 tmk_core/common/arm_atsam/eeprom.c delete mode 100644 tmk_core/common/arm_atsam/gpio.h delete mode 100644 tmk_core/common/arm_atsam/pin_defs.h delete mode 100644 tmk_core/common/arm_atsam/platform.c delete mode 100644 tmk_core/common/arm_atsam/platform_deps.h delete mode 100644 tmk_core/common/arm_atsam/suspend.c delete mode 100644 tmk_core/common/arm_atsam/timer.c delete mode 100644 tmk_core/common/atomic_util.h delete mode 100644 tmk_core/common/avr/_print.h delete mode 100644 tmk_core/common/avr/_timer.h delete mode 100644 tmk_core/common/avr/_wait.h delete mode 100644 tmk_core/common/avr/atomic_util.h delete mode 100644 tmk_core/common/avr/bootloader.c delete mode 100644 tmk_core/common/avr/bootloader_size.c delete mode 100644 tmk_core/common/avr/gpio.h delete mode 100644 tmk_core/common/avr/pin_defs.h delete mode 100644 tmk_core/common/avr/platform.c delete mode 100644 tmk_core/common/avr/platform_deps.h delete mode 100644 tmk_core/common/avr/printf.c delete mode 100644 tmk_core/common/avr/printf.mk delete mode 100644 tmk_core/common/avr/sleep_led.c delete mode 100644 tmk_core/common/avr/suspend.c delete mode 100644 tmk_core/common/avr/timer.c delete mode 100644 tmk_core/common/avr/timer_avr.h delete mode 100644 tmk_core/common/avr/xprintf.S delete mode 100644 tmk_core/common/avr/xprintf.h delete mode 100644 tmk_core/common/bootloader.h delete mode 100644 tmk_core/common/chibios/_timer.h delete mode 100644 tmk_core/common/chibios/_wait.c delete mode 100644 tmk_core/common/chibios/_wait.h delete mode 100644 tmk_core/common/chibios/atomic_util.h delete mode 100644 tmk_core/common/chibios/bootloader.c delete mode 100644 tmk_core/common/chibios/chibios_config.h delete mode 100644 tmk_core/common/chibios/eeprom_stm32.c delete mode 100644 tmk_core/common/chibios/eeprom_stm32.h delete mode 100644 tmk_core/common/chibios/eeprom_stm32_defs.h delete mode 100644 tmk_core/common/chibios/eeprom_teensy.c delete mode 100644 tmk_core/common/chibios/flash_stm32.c delete mode 100644 tmk_core/common/chibios/flash_stm32.h delete mode 100644 tmk_core/common/chibios/gd32v_compatibility.h delete mode 100644 tmk_core/common/chibios/gpio.h delete mode 100644 tmk_core/common/chibios/pin_defs.h delete mode 100644 tmk_core/common/chibios/platform.c delete mode 100644 tmk_core/common/chibios/platform_deps.h delete mode 100644 tmk_core/common/chibios/sleep_led.c delete mode 100644 tmk_core/common/chibios/suspend.c delete mode 100644 tmk_core/common/chibios/syscall-fallbacks.c delete mode 100644 tmk_core/common/chibios/timer.c delete mode 100644 tmk_core/common/chibios/wait.c delete mode 100644 tmk_core/common/eeprom.h delete mode 100644 tmk_core/common/gpio.h delete mode 100644 tmk_core/common/pin_defs.h delete mode 100644 tmk_core/common/progmem.h delete mode 100644 tmk_core/common/sleep_led.h delete mode 100644 tmk_core/common/suspend.h delete mode 100644 tmk_core/common/test/_wait.h delete mode 100644 tmk_core/common/test/bootloader.c delete mode 100644 tmk_core/common/test/eeprom.c delete mode 100644 tmk_core/common/test/eeprom_stm32_tests.cpp delete mode 100644 tmk_core/common/test/flash_stm32_mock.c delete mode 100644 tmk_core/common/test/hal.h delete mode 100644 tmk_core/common/test/platform.c delete mode 100644 tmk_core/common/test/platform.h delete mode 100644 tmk_core/common/test/platform_deps.h delete mode 100644 tmk_core/common/test/rules.mk delete mode 100644 tmk_core/common/test/suspend.c delete mode 100644 tmk_core/common/test/testlist.mk delete mode 100644 tmk_core/common/test/timer.c delete mode 100644 tmk_core/common/timer.h delete mode 100644 tmk_core/common/wait.h delete mode 100644 tmk_core/native.mk (limited to 'tmk_core') diff --git a/tmk_core/arm_atsam.mk b/tmk_core/arm_atsam.mk deleted file mode 100644 index b49bf764d7..0000000000 --- a/tmk_core/arm_atsam.mk +++ /dev/null @@ -1,67 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- -############################################################################## -# Compiler settings -# -CC = $(CC_PREFIX) arm-none-eabi-gcc -OBJCOPY = arm-none-eabi-objcopy -OBJDUMP = arm-none-eabi-objdump -SIZE = arm-none-eabi-size -AR = arm-none-eabi-ar -NM = arm-none-eabi-nm -HEX = $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature -EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) -BIN = - -COMMON_VPATH += $(LIB_PATH)/arm_atsam/packs/atmel/SAMD51_DFP/1.0.70/include -COMMON_VPATH += $(LIB_PATH)/arm_atsam/packs/arm/cmsis/5.0.1/CMSIS/Include - -COMPILEFLAGS += -funsigned-char -COMPILEFLAGS += -funsigned-bitfields -COMPILEFLAGS += -ffunction-sections -COMPILEFLAGS += -fshort-enums -COMPILEFLAGS += -fno-inline-small-functions -COMPILEFLAGS += -fno-strict-aliasing -COMPILEFLAGS += -mfloat-abi=hard -COMPILEFLAGS += -mfpu=fpv4-sp-d16 -COMPILEFLAGS += -mthumb - -#ALLOW_WARNINGS = yes - -CFLAGS += $(COMPILEFLAGS) - -CXXFLAGS += $(COMPILEFLAGS) -CXXFLAGS += -fno-exceptions -std=c++11 - -LDFLAGS +=-Wl,--gc-sections -LDFLAGS += -Wl,-Map="%OUT%%PROJ_NAME%.map" -LDFLAGS += -Wl,--start-group -LDFLAGS += -Wl,--end-group -LDFLAGS += --specs=rdimon.specs -LDFLAGS += -T$(LIB_PATH)/arm_atsam/packs/atmel/SAMD51_DFP/1.0.70/gcc/gcc/samd51j18a_flash.ld - -OPT_DEFS += -DPROTOCOL_ARM_ATSAM - -MCUFLAGS = -mcpu=$(MCU) -MCUFLAGS += -D__$(ARM_ATSAM)__ - -# List any extra directories to look for libraries here. -# Each directory must be seperated by a space. -# Use forward slashes for directory separators. -# For a directory that has spaces, enclose it in quotes. -EXTRALIBDIRS = - -cpfirmware: warn-arm_atsam -.INTERMEDIATE: warn-arm_atsam -warn-arm_atsam: $(FIRMWARE_FORMAT) - $(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) - $(info This MCU support package has a lack of support from the upstream provider (Massdrop).) - $(info There are currently questions about valid licensing, and at this stage it's likely) - $(info their boards and supporting code will be removed from QMK in the near future. Please) - $(info contact Massdrop for support, and encourage them to align their future board design) - $(info choices to gain proper license compatibility with QMK.) - $(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) - -# Convert hex to bin. -bin: $(BUILD_DIR)/$(TARGET).hex - $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin - $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk deleted file mode 100644 index c52262273e..0000000000 --- a/tmk_core/avr.mk +++ /dev/null @@ -1,179 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- -############################################################################## -# Compiler settings -# -CC = $(CC_PREFIX) avr-gcc -OBJCOPY = avr-objcopy -OBJDUMP = avr-objdump -SIZE = avr-size -AR = avr-ar -NM = avr-nm -HEX = $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature -EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) -BIN = - -COMPILEFLAGS += -funsigned-char -COMPILEFLAGS += -funsigned-bitfields -COMPILEFLAGS += -ffunction-sections -COMPILEFLAGS += -fdata-sections -COMPILEFLAGS += -fpack-struct -COMPILEFLAGS += -fshort-enums - -ASFLAGS += $(AVR_ASFLAGS) - -CFLAGS += $(COMPILEFLAGS) $(AVR_CFLAGS) -CFLAGS += -fno-inline-small-functions -CFLAGS += -fno-strict-aliasing - -CXXFLAGS += $(COMPILEFLAGS) -CXXFLAGS += -fno-exceptions -std=c++11 - -LDFLAGS +=-Wl,--gc-sections - -OPT_DEFS += -DF_CPU=$(F_CPU)UL - -MCUFLAGS = -mmcu=$(MCU) - -# List any extra directories to look for libraries here. -# Each directory must be seperated by a space. -# Use forward slashes for directory separators. -# For a directory that has spaces, enclose it in quotes. -EXTRALIBDIRS = - - -#---------------- External Memory Options ---------------- - -# 64 KB of external RAM, starting after internal RAM (ATmega128!), -# used for variables (.data/.bss) and heap (malloc()). -#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff - -# 64 KB of external RAM, starting after internal RAM (ATmega128!), -# only used for heap (malloc()). -#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff - -EXTMEMOPTS = - -#---------------- Debugging Options ---------------- - -# Debugging format. -# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs. -# AVR Studio 4.10 requires dwarf-2. -# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run. -DEBUG = dwarf-2 - -# For simulavr only - target MCU frequency. -DEBUG_MFREQ = $(F_CPU) - -# Set the DEBUG_UI to either gdb or insight. -# DEBUG_UI = gdb -DEBUG_UI = insight - -# Set the debugging back-end to either avarice, simulavr. -DEBUG_BACKEND = avarice -#DEBUG_BACKEND = simulavr - -# GDB Init Filename. -GDBINIT_FILE = __avr_gdbinit - -# When using avarice settings for the JTAG -JTAG_DEV = /dev/com1 - -# Debugging port used to communicate between GDB / avarice / simulavr. -DEBUG_PORT = 4242 - -# Debugging host used to communicate between GDB / avarice / simulavr, normally -# just set to localhost unless doing some sort of crazy debugging when -# avarice is running on a different computer. -DEBUG_HOST = localhost - -#============================================================================ - -# Convert hex to bin. -bin: $(BUILD_DIR)/$(TARGET).hex -ifeq ($(BOOTLOADER),lufa-ms) - $(eval BIN_PADDING=$(shell n=`expr 32768 - $(BOOTLOADER_SIZE)` && echo $$(($$n)) || echo 0)) - $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin --pad-to $(BIN_PADDING) -else - $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin -endif - $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; - -# copy bin to FLASH.bin -flashbin: bin - $(COPY) $(BUILD_DIR)/$(TARGET).bin FLASH.bin; - -# Generate avr-gdb config/init file which does the following: -# define the reset signal, load the target file, connect to target, and set -# a breakpoint at main(). -gdb-config: - @$(REMOVE) $(GDBINIT_FILE) - @echo define reset >> $(GDBINIT_FILE) - @echo SIGNAL SIGHUP >> $(GDBINIT_FILE) - @echo end >> $(GDBINIT_FILE) - @echo file $(BUILD_DIR)/$(TARGET).elf >> $(GDBINIT_FILE) - @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE) -ifeq ($(DEBUG_BACKEND),simulavr) - @echo load >> $(GDBINIT_FILE) -endif - @echo break main >> $(GDBINIT_FILE) - -debug: gdb-config $(BUILD_DIR)/$(TARGET).elf -ifeq ($(DEBUG_BACKEND), avarice) - @echo Starting AVaRICE - Press enter when "waiting to connect" message displays. - @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \ - $(BUILD_DIR)/$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT) - @$(WINSHELL) /c pause - -else - @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \ - $(DEBUG_MFREQ) --port $(DEBUG_PORT) -endif - @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE) - - - - -# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. -COFFCONVERT = $(OBJCOPY) --debugging -COFFCONVERT += --change-section-address .data-0x800000 -COFFCONVERT += --change-section-address .bss-0x800000 -COFFCONVERT += --change-section-address .noinit-0x800000 -COFFCONVERT += --change-section-address .eeprom-0x810000 - - - -coff: $(BUILD_DIR)/$(TARGET).elf - @$(SECHO) $(MSG_COFF) $(BUILD_DIR)/$(TARGET).cof - $(COFFCONVERT) -O coff-avr $< $(BUILD_DIR)/$(TARGET).cof - - -extcoff: $(BUILD_DIR)/$(TARGET).elf - @$(SECHO) $(MSG_EXTENDED_COFF) $(BUILD_DIR)/$(TARGET).cof - $(COFFCONVERT) -O coff-ext-avr $< $(BUILD_DIR)/$(TARGET).cof - -ifeq ($(strip $(BOOTLOADER)), qmk-dfu) -QMK_BOOTLOADER_TYPE = DFU -else ifeq ($(strip $(BOOTLOADER)), qmk-hid) -QMK_BOOTLOADER_TYPE = HID -endif - -bootloader: -ifeq ($(strip $(QMK_BOOTLOADER_TYPE)),) - $(error Please set BOOTLOADER to "qmk-dfu" or "qmk-hid" first!) -else - make -C lib/lufa/Bootloaders/$(QMK_BOOTLOADER_TYPE)/ clean - $(QMK_BIN) generate-dfu-header --quiet --keyboard $(KEYBOARD) --output lib/lufa/Bootloaders/$(QMK_BOOTLOADER_TYPE)/Keyboard.h - $(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) -D__ASSEMBLER__ $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) - $(eval PROGRAM_SIZE_KB=$(shell n=`expr $(MAX_SIZE) / 1024` && echo $$(($$n)) || echo 0)) - $(eval BOOT_SECTION_SIZE_KB=$(shell n=`expr $(BOOTLOADER_SIZE) / 1024` && echo $$(($$n)) || echo 0)) - $(eval FLASH_SIZE_KB=$(shell n=`expr $(PROGRAM_SIZE_KB) + $(BOOT_SECTION_SIZE_KB)` && echo $$(($$n)) || echo 0)) - make -C lib/lufa/Bootloaders/$(QMK_BOOTLOADER_TYPE)/ MCU=$(MCU) ARCH=$(ARCH) F_CPU=$(F_CPU) FLASH_SIZE_KB=$(FLASH_SIZE_KB) BOOT_SECTION_SIZE_KB=$(BOOT_SECTION_SIZE_KB) - printf "Bootloader$(QMK_BOOTLOADER_TYPE).hex copied to $(TARGET)_bootloader.hex\n" - cp lib/lufa/Bootloaders/$(QMK_BOOTLOADER_TYPE)/Bootloader$(QMK_BOOTLOADER_TYPE).hex $(TARGET)_bootloader.hex -endif - -production: $(BUILD_DIR)/$(TARGET).hex bootloader cpfirmware - @cat $(BUILD_DIR)/$(TARGET).hex | awk '/^:00000001FF/ == 0' > $(TARGET)_production.hex - @cat $(TARGET)_bootloader.hex >> $(TARGET)_production.hex - echo "File sizes:" - $(SIZE) $(TARGET).hex $(TARGET)_bootloader.hex $(TARGET)_production.hex diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk deleted file mode 100644 index 6b298732c2..0000000000 --- a/tmk_core/chibios.mk +++ /dev/null @@ -1,436 +0,0 @@ -# Hey Emacs, this is a -*- makefile -*- -############################################################################## -# Architecture or project specific options -# - -# Stack size to be allocated to the Cortex-M process stack. This stack is -# the stack used by the main() thread. -ifeq ($(USE_PROCESS_STACKSIZE),) - USE_PROCESS_STACKSIZE = 0x800 -endif - -# Stack size to the allocated to the Cortex-M main/exceptions stack. This -# stack is used for processing interrupts and exceptions. -ifeq ($(USE_EXCEPTIONS_STACKSIZE),) - USE_EXCEPTIONS_STACKSIZE = 0x400 -endif - -# -# Architecture or project specific options -############################################################################## - -############################################################################## -# Project, sources and paths -# - -# Imported source files and paths -OPT_OS = chibios -CHIBIOS = $(TOP_DIR)/lib/chibios -CHIBIOS_CONTRIB = $(TOP_DIR)/lib/chibios-contrib - -# -# Startup, Port and Platform support selection -############################################################################## - -ifeq ($(strip $(MCU)), risc-v) - # RISC-V Support - # As of 7.4.2021 there is only one supported RISC-V platform in Chibios-Contrib, - # therefore all required settings are hard-coded - STARTUP_MK = $(CHIBIOS_CONTRIB)/os/common/startup/RISCV-ECLIC/compilers/GCC/mk/startup_$(MCU_STARTUP).mk - PORT_V = $(CHIBIOS_CONTRIB)/os/common/ports/RISCV-ECLIC/compilers/GCC/mk/port.mk - RULESPATH = $(CHIBIOS_CONTRIB)/os/common/startup/RISCV-ECLIC/compilers/GCC - PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/GD/GD32VF103/platform.mk -else - # ARM Support - CHIBIOS_PORT ?= - ifeq ("$(CHIBIOS_PORT)","") - CHIBIOS_PORT = ARMv$(ARMV)-M - endif - - # Startup files. Try a few different locations, for compability with old versions and - # for things hardware in the contrib repository - STARTUP_MK = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk - ifeq ("$(wildcard $(STARTUP_MK))","") - STARTUP_MK = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk - ifeq ("$(wildcard $(STARTUP_MK))","") - STARTUP_MK = $(CHIBIOS_CONTRIB)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_$(MCU_STARTUP).mk - endif - endif - - # Port files. Try a few different locations, for compability with old versions and - # for things hardware in the contrib repository - PORT_V = $(CHIBIOS)/os/common/ports/$(CHIBIOS_PORT)/compilers/GCC/mk/port.mk - ifeq ("$(wildcard $(PORT_V))","") - PORT_V = $(CHIBIOS)/os/rt/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk - ifeq ("$(wildcard $(PORT_V))","") - PORT_V = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v$(ARMV)m.mk - endif - endif - - # Rules location. Try a few different locations, for compability with old versions and - # for things hardware in the contrib repository - RULESPATH = $(CHIBIOS)/os/common/ports/$(CHIBIOS_PORT)/compilers/GCC - ifeq ("$(wildcard $(RULESPATH)/rules.mk)","") - RULESPATH = $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC - ifeq ("$(wildcard $(RULESPATH)/rules.mk)","") - RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC - endif - endif -endif - -ifeq ("$(PLATFORM_NAME)","") - PLATFORM_NAME = platform -endif - -ifeq ("$(wildcard $(PLATFORM_MK))","") - PLATFORM_MK = $(CHIBIOS)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/$(PLATFORM_NAME).mk - ifeq ("$(wildcard $(PLATFORM_MK))","") - PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)/$(PLATFORM_NAME).mk - endif -endif - -include $(STARTUP_MK) -include $(PORT_V) -include $(PLATFORM_MK) - -# -# Board support selection. -############################################################################## - -BOARD_MK := - -ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/board.mk)","") - BOARD_PATH = $(KEYBOARD_PATH_5) - BOARD_MK += $(KEYBOARD_PATH_5)/boards/$(BOARD)/board.mk -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/board.mk)","") - BOARD_PATH = $(KEYBOARD_PATH_4) - BOARD_MK += $(KEYBOARD_PATH_4)/boards/$(BOARD)/board.mk -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/board.mk)","") - BOARD_PATH = $(KEYBOARD_PATH_3) - BOARD_MK += $(KEYBOARD_PATH_3)/boards/$(BOARD)/board.mk -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/board.mk)","") - BOARD_PATH = $(KEYBOARD_PATH_2) - BOARD_MK += $(KEYBOARD_PATH_2)/boards/$(BOARD)/board.mk -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/board.mk)","") - BOARD_PATH = $(KEYBOARD_PATH_1) - BOARD_MK += $(KEYBOARD_PATH_1)/boards/$(BOARD)/board.mk -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/board/board.mk)","") - BOARD_PATH = $(TOP_DIR)/platforms/chibios/boards/$(BOARD) - BOARD_MK += $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/board/board.mk - KEYBOARD_PATHS += $(BOARD_PATH)/configs - ifneq ("$(wildcard $(BOARD_PATH)/rules.mk)","") - include $(BOARD_PATH)/rules.mk - endif -endif - -ifeq ("$(wildcard $(BOARD_MK))","") - BOARD_MK = $(CHIBIOS)/os/hal/boards/$(BOARD)/board.mk - ifeq ("$(wildcard $(BOARD_MK))","") - BOARD_MK = $(CHIBIOS_CONTRIB)/os/hal/boards/$(BOARD)/board.mk - endif -endif - -include $(BOARD_MK) - -# -# Bootloader selection. -############################################################################## - -# Set bootloader address if supplied. -ifdef STM32_BOOTLOADER_ADDRESS - OPT_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS) -endif - -# Work out if we need to set up the include for the bootloader definitions -ifneq ("$(wildcard $(KEYBOARD_PATH_5)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_5)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_5)/boards/$(BOARD)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_4)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_4)/boards/$(BOARD)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_3)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_3)/boards/$(BOARD)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_2)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_2)/boards/$(BOARD)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_1)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h)","") - OPT_DEFS += -include $(KEYBOARD_PATH_1)/boards/$(BOARD)/bootloader_defs.h -else ifneq ("$(wildcard $(BOARD_PATH)/configs/bootloader_defs.h)","") - OPT_DEFS += -include $(BOARD_PATH)/configs/bootloader_defs.h -endif - -# -# ChibiOS config selection. -############################################################################## - -# Work out the config file directories -ifneq ("$(wildcard $(KEYBOARD_PATH_5)/chconf.h)","") - CHCONFDIR = $(KEYBOARD_PATH_5) -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/chconf.h)","") - CHCONFDIR = $(KEYBOARD_PATH_4) -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/chconf.h)","") - CHCONFDIR = $(KEYBOARD_PATH_3) -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/chconf.h)","") - CHCONFDIR = $(KEYBOARD_PATH_2) -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/chconf.h)","") - CHCONFDIR = $(KEYBOARD_PATH_1) -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs/chconf.h)","") - CHCONFDIR = $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs -else ifneq ("$(wildcard $(TOP_DIR)/platforms/boards/chibios/common/configs/chconf.h)","") - CHCONFDIR = $(TOP_DIR)/platforms/chibios/boards/common/configs -endif - -# -# HAL config selection. -############################################################################## - -ifneq ("$(wildcard $(KEYBOARD_PATH_5)/halconf.h)","") - HALCONFDIR = $(KEYBOARD_PATH_5) -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/halconf.h)","") - HALCONFDIR = $(KEYBOARD_PATH_4) -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/halconf.h)","") - HALCONFDIR = $(KEYBOARD_PATH_3) -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/halconf.h)","") - HALCONFDIR = $(KEYBOARD_PATH_2) -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/halconf.h)","") - HALCONFDIR = $(KEYBOARD_PATH_1) -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs/halconf.h)","") - HALCONFDIR = $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/common/configs/halconf.h)","") - HALCONFDIR = $(TOP_DIR)/platforms/chibios/boards/common/configs -endif - -# -# Linker script selection. -############################################################################## - -ifneq ("$(wildcard $(KEYBOARD_PATH_5)/ld/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(KEYBOARD_PATH_5)/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/ld/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(KEYBOARD_PATH_4)/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/ld/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(KEYBOARD_PATH_3)/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/ld/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(KEYBOARD_PATH_2)/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(KEYBOARD_PATH_1)/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld/$(MCU_LDSCRIPT).ld)","") - LDFLAGS += -L$(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld - LDSCRIPT = $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/common/ld/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(TOP_DIR)/platforms/chibios/boards/common/ld/$(MCU_LDSCRIPT).ld -else ifneq ("$(wildcard $(STARTUPLD_CONTRIB)/$(MCU_LDSCRIPT).ld)","") - LDSCRIPT = $(STARTUPLD_CONTRIB)/$(MCU_LDSCRIPT).ld - USE_CHIBIOS_CONTRIB = yes -else - LDSCRIPT = $(STARTUPLD)/$(MCU_LDSCRIPT).ld -endif - -# -# Include ChibiOS makefiles. -############################################################################## - -# HAL-OSAL files (optional). -include $(CHIBIOS)/os/hal/hal.mk --include $(CHIBIOS)/os/hal/osal/rt/osal.mk # ChibiOS <= 19.x --include $(CHIBIOS)/os/hal/osal/rt-nil/osal.mk # ChibiOS >= 20.x -# RTOS files (optional). -include $(CHIBIOS)/os/rt/rt.mk -# Other files (optional). -include $(CHIBIOS)/os/hal/lib/streams/streams.mk - -PLATFORM_SRC = \ - $(STARTUPSRC) \ - $(KERNSRC) \ - $(PORTSRC) \ - $(OSALSRC) \ - $(HALSRC) \ - $(PLATFORMSRC) \ - $(BOARDSRC) \ - $(STREAMSSRC) \ - $(CHIBIOS)/os/various/syscalls.c \ - $(PLATFORM_COMMON_DIR)/syscall-fallbacks.c \ - $(PLATFORM_COMMON_DIR)/wait.c - -# Ensure the ASM files are not subjected to LTO -- it'll strip out interrupt handlers otherwise. -QUANTUM_LIB_SRC += $(STARTUPASM) $(PORTASM) $(OSALASM) $(PLATFORMASM) - -PLATFORM_SRC := $(patsubst $(TOP_DIR)/%,%,$(PLATFORM_SRC)) - -EXTRAINCDIRS += $(CHIBIOS)/os/license $(CHIBIOS)/os/oslib/include \ - $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs \ - $(TOP_DIR)/platforms/chibios/boards/common/configs \ - $(HALCONFDIR) $(CHCONFDIR) \ - $(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \ - $(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \ - $(STREAMSINC) $(CHIBIOS)/os/various $(COMMON_VPATH) - -# -# ChibiOS-Contrib -############################################################################## - -# Work out if we're using ChibiOS-Contrib by checking if halconf_community.h exists -ifneq ("$(wildcard $(KEYBOARD_PATH_5)/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -else ifneq ("$(wildcard $(KEYBOARD_PATH_4)/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -else ifneq ("$(wildcard $(KEYBOARD_PATH_3)/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -else ifneq ("$(wildcard $(KEYBOARD_PATH_2)/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -else ifneq ("$(wildcard $(KEYBOARD_PATH_1)/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -else ifneq ("$(wildcard $(TOP_DIR)/platforms/chibios/boards/$(BOARD)/configs/halconf_community.h)","") - USE_CHIBIOS_CONTRIB = yes -endif - -ifeq ($(strip $(USE_CHIBIOS_CONTRIB)),yes) - include $(CHIBIOS_CONTRIB)/os/hal/hal.mk - PLATFORM_SRC += $(PLATFORMSRC_CONTRIB) $(HALSRC_CONTRIB) - EXTRAINCDIRS += $(PLATFORMINC_CONTRIB) $(HALINC_CONTRIB) $(CHIBIOS_CONTRIB)/os/various -endif - -# -# Project, sources and paths -############################################################################## - -############################################################################## -# Injected configs -# -ifneq ("$(wildcard $(BOARD_PATH)/configs/config.h)","") - CONFIG_H += $(BOARD_PATH)/configs/config.h -endif -ifneq ("$(wildcard $(BOARD_PATH)/configs/post_config.h)","") - POST_CONFIG_H += $(BOARD_PATH)/configs/post_config.h -endif - -############################################################################## -# Compiler and Linker configuration -# - -# Use defined stack sizes of the main thread in linker scripts -LDSYMBOLS =--defsym=__process_stack_size__=$(USE_PROCESS_STACKSIZE),--defsym=__main_stack_size__=$(USE_EXCEPTIONS_STACKSIZE) - -# Shared Compiler flags for all toolchains -SHARED_CFLAGS = -fomit-frame-pointer \ - -ffunction-sections \ - -fdata-sections \ - -fno-common \ - -fshort-wchar - -# Shared Linker flags for all toolchains -SHARED_LDFLAGS = -T $(LDSCRIPT) \ - -Wl,$(LDSYMBOLS) \ - -Wl,--gc-sections \ - -nostartfiles - -ifeq ($(strip $(MCU)), risc-v) - # RISC-V toolchain specific configuration - # Find suitable GCC compiler - ifeq ($(strip $(TOOLCHAIN)),) - ifneq ($(shell which riscv32-unknown-elf-gcc 2>/dev/null),) - TOOLCHAIN = riscv32-unknown-elf- - else - ifneq ($(shell which riscv64-unknown-elf-gcc 2>/dev/null),) - TOOLCHAIN = riscv64-unknown-elf- - else - $(error "No RISC-V toolchain found. Can't find riscv32-unknown-elf-gcc or riscv64-unknown-elf-gcc found in your systems PATH variable. Please install a valid toolchain and make it accessible!") - endif - endif - endif - - # Default to compiling with picolibc for RISC-V targets if available, - # which is available by default on current (bullseye) debian based systems. - ifeq ($(shell $(TOOLCHAIN)gcc --specs=picolibc.specs -E - 2>/dev/null >/dev/null . - */ -#pragma once - -// The platform is 32-bit, so prefer 32-bit timers to avoid overflow -#define FAST_TIMER_T_SIZE 32 diff --git a/tmk_core/common/arm_atsam/_wait.h b/tmk_core/common/arm_atsam/_wait.h deleted file mode 100644 index 41b686b56c..0000000000 --- a/tmk_core/common/arm_atsam/_wait.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include "clks.h" - -#define wait_ms(ms) CLK_delay_ms(ms) -#define wait_us(us) CLK_delay_us(us) -#define waitInputPinDelay() diff --git a/tmk_core/common/arm_atsam/atomic_util.h b/tmk_core/common/arm_atsam/atomic_util.h deleted file mode 100644 index 848542d23a..0000000000 --- a/tmk_core/common/arm_atsam/atomic_util.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include "samd51j18a.h" - -static __inline__ uint8_t __interrupt_disable__(void) { - __disable_irq(); - - return 1; -} - -static __inline__ void __interrupt_enable__(const uint8_t *__s) { - __enable_irq(); - - __asm__ volatile("" ::: "memory"); - (void)__s; -} - -#define ATOMIC_BLOCK(type) for (type, __ToDo = __interrupt_disable__(); __ToDo; __ToDo = 0) -#define ATOMIC_FORCEON uint8_t sreg_save __attribute__((__cleanup__(__interrupt_enable__))) = 0 - -#define ATOMIC_BLOCK_RESTORESTATE _Static_assert(0, "ATOMIC_BLOCK_RESTORESTATE not implemented") -#define ATOMIC_BLOCK_FORCEON ATOMIC_BLOCK(ATOMIC_FORCEON) diff --git a/tmk_core/common/arm_atsam/bootloader.c b/tmk_core/common/arm_atsam/bootloader.c deleted file mode 100644 index 9015b00aab..0000000000 --- a/tmk_core/common/arm_atsam/bootloader.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright 2017 Fred Sundvik - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "bootloader.h" -#include "samd51j18a.h" -#include "md_bootloader.h" - -// Set watchdog timer to reset. Directs the bootloader to stay in programming mode. -void bootloader_jump(void) { -#ifdef KEYBOARD_massdrop_ctrl - // CTRL keyboards released with bootloader version below must use RAM method. Otherwise use WDT method. - uint8_t ver_ram_method[] = "v2.18Jun 22 2018 17:28:08"; // The version to match (NULL terminated by compiler) - uint8_t *ver_check = ver_ram_method; // Pointer to version match string for traversal - uint8_t *ver_rom = (uint8_t *)0x21A0; // Pointer to address in ROM where this specific bootloader version would exist - - while (*ver_check && *ver_rom == *ver_check) { // While there are check version characters to match and bootloader's version matches check's version - ver_check++; // Move check version pointer to next character - ver_rom++; // Move ROM version pointer to next character - } - - if (!*ver_check) { // If check version pointer is NULL, all characters have matched - *MAGIC_ADDR = BOOTLOADER_MAGIC; // Set magic number into RAM - NVIC_SystemReset(); // Perform system reset - while (1) { - } // Won't get here - } -#endif - - WDT->CTRLA.bit.ENABLE = 0; - while (WDT->SYNCBUSY.bit.ENABLE) { - } - while (WDT->CTRLA.bit.ENABLE) { - } - WDT->CONFIG.bit.WINDOW = 0; - WDT->CONFIG.bit.PER = 0; - WDT->EWCTRL.bit.EWOFFSET = 0; - WDT->CTRLA.bit.ENABLE = 1; - while (WDT->SYNCBUSY.bit.ENABLE) { - } - while (!WDT->CTRLA.bit.ENABLE) { - } - while (1) { - } // Wait on timeout -} diff --git a/tmk_core/common/arm_atsam/eeprom.c b/tmk_core/common/arm_atsam/eeprom.c deleted file mode 100644 index ff1a692623..0000000000 --- a/tmk_core/common/arm_atsam/eeprom.c +++ /dev/null @@ -1,184 +0,0 @@ -/* Copyright 2017 Fred Sundvik - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "eeprom.h" -#include "debug.h" -#include "samd51j18a.h" -#include "core_cm4.h" -#include "component/nvmctrl.h" - -#ifndef EEPROM_SIZE -# include "eeconfig.h" -# define EEPROM_SIZE (((EECONFIG_SIZE + 3) / 4) * 4) // based off eeconfig's current usage, aligned to 4-byte sizes, to deal with LTO -#endif - -#ifndef MAX -# define MAX(X, Y) ((X) > (Y) ? (X) : (Y)) -#endif - -#ifndef BUSY_RETRIES -# define BUSY_RETRIES 10000 -#endif - -// #define DEBUG_EEPROM_OUTPUT - -/* - * Debug print utils - */ -#if defined(DEBUG_EEPROM_OUTPUT) -# define eeprom_printf(fmt, ...) xprintf(fmt, ##__VA_ARGS__); -#else /* NO_DEBUG */ -# define eeprom_printf(fmt, ...) -#endif /* NO_DEBUG */ - -__attribute__((aligned(4))) static uint8_t buffer[EEPROM_SIZE] = {0}; -volatile uint8_t * SmartEEPROM8 = (uint8_t *)SEEPROM_ADDR; - -static inline bool eeprom_is_busy(void) { - int timeout = BUSY_RETRIES; - while (NVMCTRL->SEESTAT.bit.BUSY && timeout-- > 0) - ; - - return NVMCTRL->SEESTAT.bit.BUSY; -} - -static uint32_t get_virtual_eeprom_size(void) { - // clang-format off - static const uint32_t VIRTUAL_EEPROM_MAP[11][8] = { - /* 4 8 16 32 64 128 256 512 */ - /* 0*/ { 0, 0, 0, 0, 0, 0, 0, 0 }, - /* 1*/ { 512, 1024, 2048, 4096, 4096, 4096, 4096, 4096 }, - /* 2*/ { 512, 1024, 2048, 4096, 8192, 8192, 8192, 8192 }, - /* 3*/ { 512, 1024, 2048, 4096, 8192, 16384, 16384, 16384 }, - /* 4*/ { 512, 1024, 2048, 4096, 8192, 16384, 16384, 16384 }, - /* 5*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 32768 }, - /* 6*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 32768 }, - /* 7*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 32768 }, - /* 8*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 32768 }, - /* 9*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 }, - /*10*/ { 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 }, - }; - // clang-format on - - static uint32_t virtual_eeprom_size = UINT32_MAX; - if (virtual_eeprom_size == UINT32_MAX) { - virtual_eeprom_size = VIRTUAL_EEPROM_MAP[NVMCTRL->SEESTAT.bit.PSZ][NVMCTRL->SEESTAT.bit.SBLK]; - } - // eeprom_printf("get_virtual_eeprom_size:: %d:%d:%d\n", NVMCTRL->SEESTAT.bit.PSZ, NVMCTRL->SEESTAT.bit.SBLK, virtual_eeprom_size); - return virtual_eeprom_size; -} - -uint8_t eeprom_read_byte(const uint8_t *addr) { - uintptr_t offset = (uintptr_t)addr; - if (offset >= MAX(EEPROM_SIZE, get_virtual_eeprom_size())) { - eeprom_printf("eeprom_read_byte:: out of bounds\n"); - return 0x0; - } - - if (get_virtual_eeprom_size() == 0) { - return buffer[offset]; - } - - if (eeprom_is_busy()) { - eeprom_printf("eeprom_write_byte:: timeout\n"); - return 0x0; - } - - return SmartEEPROM8[offset]; -} - -void eeprom_write_byte(uint8_t *addr, uint8_t value) { - uintptr_t offset = (uintptr_t)addr; - if (offset >= MAX(EEPROM_SIZE, get_virtual_eeprom_size())) { - eeprom_printf("eeprom_write_byte:: out of bounds\n"); - return; - } - - if (get_virtual_eeprom_size() == 0) { - buffer[offset] = value; - return; - } - - if (eeprom_is_busy()) { - eeprom_printf("eeprom_write_byte:: timeout\n"); - return; - } - - SmartEEPROM8[offset] = value; -} - -uint16_t eeprom_read_word(const uint16_t *addr) { - const uint8_t *p = (const uint8_t *)addr; - return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8); -} - -uint32_t eeprom_read_dword(const uint32_t *addr) { - const uint8_t *p = (const uint8_t *)addr; - return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8) | (eeprom_read_byte(p + 2) << 16) | (eeprom_read_byte(p + 3) << 24); -} - -void eeprom_read_block(void *buf, const void *addr, size_t len) { - const uint8_t *p = (const uint8_t *)addr; - uint8_t * dest = (uint8_t *)buf; - while (len--) { - *dest++ = eeprom_read_byte(p++); - } -} - -void eeprom_write_word(uint16_t *addr, uint16_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p, value >> 8); -} - -void eeprom_write_dword(uint32_t *addr, uint32_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p++, value >> 8); - eeprom_write_byte(p++, value >> 16); - eeprom_write_byte(p, value >> 24); -} - -void eeprom_write_block(const void *buf, void *addr, size_t len) { - uint8_t * p = (uint8_t *)addr; - const uint8_t *src = (const uint8_t *)buf; - while (len--) { - eeprom_write_byte(p++, *src++); - } -} - -void eeprom_update_byte(uint8_t *addr, uint8_t value) { eeprom_write_byte(addr, value); } - -void eeprom_update_word(uint16_t *addr, uint16_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p, value >> 8); -} - -void eeprom_update_dword(uint32_t *addr, uint32_t value) { - uint8_t *p = (uint8_t *)addr; - eeprom_write_byte(p++, value); - eeprom_write_byte(p++, value >> 8); - eeprom_write_byte(p++, value >> 16); - eeprom_write_byte(p, value >> 24); -} - -void eeprom_update_block(const void *buf, void *addr, size_t len) { - uint8_t * p = (uint8_t *)addr; - const uint8_t *src = (const uint8_t *)buf; - while (len--) { - eeprom_write_byte(p++, *src++); - } -} diff --git a/tmk_core/common/arm_atsam/gpio.h b/tmk_core/common/arm_atsam/gpio.h deleted file mode 100644 index 915ed0ef4f..0000000000 --- a/tmk_core/common/arm_atsam/gpio.h +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include "stdint.h" -#include "samd51j18a.h" - -#include "pin_defs.h" - -typedef uint8_t pin_t; - -#define SAMD_PORT(pin) ((pin & 0x20) >> 5) -#define SAMD_PIN(pin) (pin & 0x1f) -#define SAMD_PIN_MASK(pin) (1 << (pin & 0x1f)) - -#define setPinInput(pin) \ - do { \ - PORT->Group[SAMD_PORT(pin)].PINCFG[SAMD_PIN(pin)].bit.INEN = 1; \ - PORT->Group[SAMD_PORT(pin)].DIRCLR.reg = SAMD_PIN_MASK(pin); \ - } while (0) - -#define setPinInputHigh(pin) \ - do { \ - PORT->Group[SAMD_PORT(pin)].DIRCLR.reg = SAMD_PIN_MASK(pin); \ - PORT->Group[SAMD_PORT(pin)].OUTSET.reg = SAMD_PIN_MASK(pin); \ - PORT->Group[SAMD_PORT(pin)].PINCFG[SAMD_PIN(pin)].bit.INEN = 1; \ - PORT->Group[SAMD_PORT(pin)].PINCFG[SAMD_PIN(pin)].bit.PULLEN = 1; \ - } while (0) - -#define setPinInputLow(pin) \ - do { \ - PORT->Group[SAMD_PORT(pin)].DIRCLR.reg = SAMD_PIN_MASK(pin); \ - PORT->Group[SAMD_PORT(pin)].OUTCLR.reg = SAMD_PIN_MASK(pin); \ - PORT->Group[SAMD_PORT(pin)].PINCFG[SAMD_PIN(pin)].bit.INEN = 1; \ - PORT->Group[SAMD_PORT(pin)].PINCFG[SAMD_PIN(pin)].bit.PULLEN = 1; \ - } while (0) - -#define setPinOutput(pin) \ - do { \ - PORT->Group[SAMD_PORT(pin)].DIRSET.reg = SAMD_PIN_MASK(pin); \ - PORT->Group[SAMD_PORT(pin)].OUTCLR.reg = SAMD_PIN_MASK(pin); \ - } while (0) - -#define writePinHigh(pin) \ - do { \ - PORT->Group[SAMD_PORT(pin)].OUTSET.reg = SAMD_PIN_MASK(pin); \ - } while (0) - -#define writePinLow(pin) \ - do { \ - PORT->Group[SAMD_PORT(pin)].OUTCLR.reg = SAMD_PIN_MASK(pin); \ - } while (0) - -#define writePin(pin, level) \ - do { \ - if (level) \ - PORT->Group[SAMD_PORT(pin)].OUTSET.reg = SAMD_PIN_MASK(pin); \ - else \ - PORT->Group[SAMD_PORT(pin)].OUTCLR.reg = SAMD_PIN_MASK(pin); \ - } while (0) - -#define readPin(pin) ((PORT->Group[SAMD_PORT(pin)].IN.reg & SAMD_PIN_MASK(pin)) != 0) - -#define togglePin(pin) (PORT->Group[SAMD_PORT(pin)].OUTTGL.reg = SAMD_PIN_MASK(pin)) diff --git a/tmk_core/common/arm_atsam/pin_defs.h b/tmk_core/common/arm_atsam/pin_defs.h deleted file mode 100644 index 5b50b23910..0000000000 --- a/tmk_core/common/arm_atsam/pin_defs.h +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#include "samd51j18a.h" - -#define A00 PIN_PA00 -#define A01 PIN_PA01 -#define A02 PIN_PA02 -#define A03 PIN_PA03 -#define A04 PIN_PA04 -#define A05 PIN_PA05 -#define A06 PIN_PA06 -#define A07 PIN_PA07 -#define A08 PIN_PA08 -#define A09 PIN_PA09 -#define A10 PIN_PA10 -#define A11 PIN_PA11 -#define A12 PIN_PA12 -#define A13 PIN_PA13 -#define A14 PIN_PA14 -#define A15 PIN_PA15 -#define A16 PIN_PA16 -#define A17 PIN_PA17 -#define A18 PIN_PA18 -#define A19 PIN_PA19 -#define A20 PIN_PA20 -#define A21 PIN_PA21 -#define A22 PIN_PA22 -#define A23 PIN_PA23 -#define A24 PIN_PA24 -#define A25 PIN_PA25 -#define A26 PIN_PA26 -#define A27 PIN_PA27 -#define A28 PIN_PA28 -#define A29 PIN_PA29 -#define A30 PIN_PA30 -#define A31 PIN_PA31 - -#define B00 PIN_PB00 -#define B01 PIN_PB01 -#define B02 PIN_PB02 -#define B03 PIN_PB03 -#define B04 PIN_PB04 -#define B05 PIN_PB05 -#define B06 PIN_PB06 -#define B07 PIN_PB07 -#define B08 PIN_PB08 -#define B09 PIN_PB09 -#define B10 PIN_PB10 -#define B11 PIN_PB11 -#define B12 PIN_PB12 -#define B13 PIN_PB13 -#define B14 PIN_PB14 -#define B15 PIN_PB15 -#define B16 PIN_PB16 -#define B17 PIN_PB17 -#define B18 PIN_PB18 -#define B19 PIN_PB19 -#define B20 PIN_PB20 -#define B21 PIN_PB21 -#define B22 PIN_PB22 -#define B23 PIN_PB23 -#define B24 PIN_PB24 -#define B25 PIN_PB25 -#define B26 PIN_PB26 -#define B27 PIN_PB27 -#define B28 PIN_PB28 -#define B29 PIN_PB29 -#define B30 PIN_PB30 -#define B31 PIN_PB31 diff --git a/tmk_core/common/arm_atsam/platform.c b/tmk_core/common/arm_atsam/platform.c deleted file mode 100644 index 3e35b4fe4c..0000000000 --- a/tmk_core/common/arm_atsam/platform.c +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "platform_deps.h" - -void platform_setup(void) { - // do nothing -} diff --git a/tmk_core/common/arm_atsam/platform_deps.h b/tmk_core/common/arm_atsam/platform_deps.h deleted file mode 100644 index f296d1d535..0000000000 --- a/tmk_core/common/arm_atsam/platform_deps.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -// here just to please the build diff --git a/tmk_core/common/arm_atsam/suspend.c b/tmk_core/common/arm_atsam/suspend.c deleted file mode 100644 index e51426128d..0000000000 --- a/tmk_core/common/arm_atsam/suspend.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "matrix.h" -#include "i2c_master.h" -#include "md_rgb_matrix.h" -#include "suspend.h" - -/** \brief Suspend idle - * - * FIXME: needs doc - */ -void suspend_idle(uint8_t time) { /* Note: Not used anywhere currently */ -} - -/** \brief Run user level Power down - * - * FIXME: needs doc - */ -__attribute__((weak)) void suspend_power_down_user(void) {} - -/** \brief Run keyboard level Power down - * - * FIXME: needs doc - */ -__attribute__((weak)) void suspend_power_down_kb(void) { suspend_power_down_user(); } - -/** \brief Suspend power down - * - * FIXME: needs doc - */ -void suspend_power_down(void) { -#ifdef RGB_MATRIX_ENABLE - I2C3733_Control_Set(0); // Disable LED driver -#endif - - suspend_power_down_kb(); -} - -__attribute__((weak)) void matrix_power_up(void) {} -__attribute__((weak)) void matrix_power_down(void) {} -bool suspend_wakeup_condition(void) { - matrix_power_up(); - matrix_scan(); - matrix_power_down(); - for (uint8_t r = 0; r < MATRIX_ROWS; r++) { - if (matrix_get_row(r)) return true; - } - return false; -} - -/** \brief run user level code immediately after wakeup - * - * FIXME: needs doc - */ -__attribute__((weak)) void suspend_wakeup_init_user(void) {} - -/** \brief run keyboard level code immediately after wakeup - * - * FIXME: needs doc - */ -__attribute__((weak)) void suspend_wakeup_init_kb(void) { suspend_wakeup_init_user(); } - -/** \brief run immediately after wakeup - * - * FIXME: needs doc - */ -void suspend_wakeup_init(void) { -#ifdef RGB_MATRIX_ENABLE -# ifdef USE_MASSDROP_CONFIGURATOR - if (led_enabled) { - I2C3733_Control_Set(1); - } -# else - I2C3733_Control_Set(1); -# endif -#endif - - suspend_wakeup_init_kb(); -} diff --git a/tmk_core/common/arm_atsam/timer.c b/tmk_core/common/arm_atsam/timer.c deleted file mode 100644 index b835dd5e75..0000000000 --- a/tmk_core/common/arm_atsam/timer.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "samd51j18a.h" -#include "timer.h" -#include "tmk_core/protocol/arm_atsam/clks.h" - -void set_time(uint64_t tset) { ms_clk = tset; } - -void timer_init(void) { timer_clear(); } - -uint16_t timer_read(void) { return (uint16_t)ms_clk; } - -uint32_t timer_read32(void) { return (uint32_t)ms_clk; } - -uint64_t timer_read64(void) { return ms_clk; } - -uint16_t timer_elapsed(uint16_t tlast) { return TIMER_DIFF_16(timer_read(), tlast); } - -uint32_t timer_elapsed32(uint32_t tlast) { return TIMER_DIFF_32(timer_read32(), tlast); } - -void timer_clear(void) { set_time(0); } diff --git a/tmk_core/common/atomic_util.h b/tmk_core/common/atomic_util.h deleted file mode 100644 index 2c95302a13..0000000000 --- a/tmk_core/common/atomic_util.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright 2021 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -// Macro to help make GPIO and other controls atomic. - -#ifndef IGNORE_ATOMIC_BLOCK -# if __has_include_next("atomic_util.h") -# include_next "atomic_util.h" /* Include the platforms atomic.h */ -# else -# define ATOMIC_BLOCK _Static_assert(0, "ATOMIC_BLOCK not implemented") -# define ATOMIC_BLOCK_RESTORESTATE _Static_assert(0, "ATOMIC_BLOCK_RESTORESTATE not implemented") -# define ATOMIC_BLOCK_FORCEON _Static_assert(0, "ATOMIC_BLOCK_FORCEON not implemented") -# endif -#else /* do nothing atomic macro */ -# define ATOMIC_BLOCK for (uint8_t __ToDo = 1; __ToDo; __ToDo = 0) -# define ATOMIC_BLOCK_RESTORESTATE ATOMIC_BLOCK -# define ATOMIC_BLOCK_FORCEON ATOMIC_BLOCK -#endif diff --git a/tmk_core/common/avr/_print.h b/tmk_core/common/avr/_print.h deleted file mode 100644 index 5c1fdd26d8..0000000000 --- a/tmk_core/common/avr/_print.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright 2012 Jun Wako */ -/* Very basic print functions, intended to be used with usb_debug_only.c - * http://www.pjrc.com/teensy/ - * Copyright (c) 2008 PJRC.COM, LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#pragma once - -#include "avr/xprintf.h" - -// Create user & normal print defines -#define print(s) xputs(PSTR(s)) -#define println(s) xputs(PSTR(s "\r\n")) -#define uprint(s) xputs(PSTR(s)) -#define uprintln(s) xputs(PSTR(s "\r\n")) -#define uprintf(fmt, ...) __xprintf(PSTR(fmt), ##__VA_ARGS__) \ No newline at end of file diff --git a/tmk_core/common/avr/_timer.h b/tmk_core/common/avr/_timer.h deleted file mode 100644 index b81e0f68b7..0000000000 --- a/tmk_core/common/avr/_timer.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright 2021 Simon Arlott - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Fr