mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-11-29 14:40:38 +00:00
Compare commits
No commits in common. "80cc6ad1877addf065e4ee46d595cfc2c7c56b71" and "b7274343913eb3e019f0dc08fa8f7774165e787d" have entirely different histories.
80cc6ad187
...
b727434391
@ -182,8 +182,7 @@ endif
|
|||||||
|
|
||||||
include $(BUILDDEFS_PATH)/converters.mk
|
include $(BUILDDEFS_PATH)/converters.mk
|
||||||
|
|
||||||
MCU_ORIG := $(MCU)
|
include $(BUILDDEFS_PATH)/mcu_selection.mk
|
||||||
include $(wildcard $(PLATFORM_PATH)/*/mcu_selection.mk)
|
|
||||||
|
|
||||||
# PLATFORM_KEY should be detected in info.json via key 'processor' (or rules.mk 'MCU')
|
# PLATFORM_KEY should be detected in info.json via key 'processor' (or rules.mk 'MCU')
|
||||||
ifeq ($(PLATFORM_KEY),)
|
ifeq ($(PLATFORM_KEY),)
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
MCU_ORIG := $(MCU)
|
||||||
|
|
||||||
ifneq ($(findstring MKL26Z64, $(MCU)),)
|
ifneq ($(findstring MKL26Z64, $(MCU)),)
|
||||||
# Cortex version
|
# Cortex version
|
||||||
MCU = cortex-m0plus
|
MCU = cortex-m0plus
|
||||||
@ -823,3 +825,99 @@ ifneq ($(findstring GD32VF103, $(MCU)),)
|
|||||||
|
|
||||||
USE_FPU ?= no
|
USE_FPU ?= no
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647 at90usb1286 at90usb1287))
|
||||||
|
PROTOCOL = LUFA
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
#
|
||||||
|
# This will be an integer division of F_USB below, as it is sourced by
|
||||||
|
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||||
|
# does not *change* the processor frequency - it should merely be updated to
|
||||||
|
# reflect the processor speed set externally so that the code can use accurate
|
||||||
|
# software delays.
|
||||||
|
F_CPU ?= 16000000
|
||||||
|
|
||||||
|
# LUFA specific
|
||||||
|
#
|
||||||
|
# Target architecture (see library "Board Types" documentation).
|
||||||
|
ARCH = AVR8
|
||||||
|
|
||||||
|
# Input clock frequency.
|
||||||
|
# This will define a symbol, F_USB, in all source code files equal to the
|
||||||
|
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||||
|
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||||
|
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||||
|
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||||
|
# at the end, this will be done automatically to create a 32-bit value in your
|
||||||
|
# source code.
|
||||||
|
#
|
||||||
|
# If no clock division is performed on the input clock inside the AVR (via the
|
||||||
|
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||||
|
F_USB ?= $(F_CPU)
|
||||||
|
|
||||||
|
# Interrupt driven control endpoint task
|
||||||
|
ifeq (,$(filter $(NO_INTERRUPT_CONTROL_ENDPOINT),yes))
|
||||||
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
endif
|
||||||
|
ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2))
|
||||||
|
NO_I2C = yes
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq (,$(filter $(MCU),atmega32a))
|
||||||
|
# MCU name for avrdude
|
||||||
|
AVRDUDE_MCU = m32
|
||||||
|
|
||||||
|
PROTOCOL = VUSB
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
F_CPU ?= 12000000
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq (,$(filter $(MCU),atmega328p))
|
||||||
|
# MCU name for avrdude
|
||||||
|
AVRDUDE_MCU = m328p
|
||||||
|
|
||||||
|
PROTOCOL = VUSB
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
F_CPU ?= 16000000
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq (,$(filter $(MCU),atmega328))
|
||||||
|
# MCU name for avrdude
|
||||||
|
AVRDUDE_MCU = m328
|
||||||
|
|
||||||
|
PROTOCOL = VUSB
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
F_CPU ?= 16000000
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq (,$(filter $(MCU),attiny85))
|
||||||
|
PROTOCOL = VUSB
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
F_CPU ?= 16500000
|
||||||
|
endif
|
@ -24,13 +24,9 @@
|
|||||||
# define ATOMIC_BLOCK _Static_assert(0, "ATOMIC_BLOCK not implemented")
|
# 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_RESTORESTATE _Static_assert(0, "ATOMIC_BLOCK_RESTORESTATE not implemented")
|
||||||
# define ATOMIC_BLOCK_FORCEON _Static_assert(0, "ATOMIC_BLOCK_FORCEON not implemented")
|
# define ATOMIC_BLOCK_FORCEON _Static_assert(0, "ATOMIC_BLOCK_FORCEON not implemented")
|
||||||
# define ATOMIC_FORCEON _Static_assert(0, "ATOMIC_FORCEON not implemented")
|
|
||||||
# define ATOMIC_RESTORESTATE _Static_assert(0, "ATOMIC_RESTORESTATE not implemented")
|
|
||||||
# endif
|
# endif
|
||||||
#else /* do nothing atomic macro */
|
#else /* do nothing atomic macro */
|
||||||
# define ATOMIC_BLOCK(t) for (uint8_t __ToDo = 1; __ToDo; __ToDo = 0)
|
# define ATOMIC_BLOCK for (uint8_t __ToDo = 1; __ToDo; __ToDo = 0)
|
||||||
# define ATOMIC_FORCEON
|
# define ATOMIC_BLOCK_RESTORESTATE ATOMIC_BLOCK
|
||||||
# define ATOMIC_RESTORESTATE
|
# define ATOMIC_BLOCK_FORCEON ATOMIC_BLOCK
|
||||||
# define ATOMIC_BLOCK_RESTORESTATE ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
|
|
||||||
# define ATOMIC_BLOCK_FORCEON ATOMIC_BLOCK(ATOMIC_FORCEON)
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,95 +0,0 @@
|
|||||||
ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647 at90usb1286 at90usb1287))
|
|
||||||
PROTOCOL = LUFA
|
|
||||||
|
|
||||||
# Processor frequency.
|
|
||||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
|
||||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
|
||||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
|
||||||
# automatically to create a 32-bit value in your source code.
|
|
||||||
#
|
|
||||||
# This will be an integer division of F_USB below, as it is sourced by
|
|
||||||
# F_USB after it has run through any CPU prescalers. Note that this value
|
|
||||||
# does not *change* the processor frequency - it should merely be updated to
|
|
||||||
# reflect the processor speed set externally so that the code can use accurate
|
|
||||||
# software delays.
|
|
||||||
F_CPU ?= 16000000
|
|
||||||
|
|
||||||
# LUFA specific
|
|
||||||
#
|
|
||||||
# Target architecture (see library "Board Types" documentation).
|
|
||||||
ARCH = AVR8
|
|
||||||
|
|
||||||
# Input clock frequency.
|
|
||||||
# This will define a symbol, F_USB, in all source code files equal to the
|
|
||||||
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
|
||||||
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
|
||||||
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
|
||||||
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
|
||||||
# at the end, this will be done automatically to create a 32-bit value in your
|
|
||||||
# source code.
|
|
||||||
#
|
|
||||||
# If no clock division is performed on the input clock inside the AVR (via the
|
|
||||||
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
|
||||||
F_USB ?= $(F_CPU)
|
|
||||||
|
|
||||||
# Interrupt driven control endpoint task
|
|
||||||
ifeq (,$(filter $(NO_INTERRUPT_CONTROL_ENDPOINT),yes))
|
|
||||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
|
||||||
endif
|
|
||||||
ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2))
|
|
||||||
NO_I2C = yes
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq (,$(filter $(MCU),atmega32a))
|
|
||||||
# MCU name for avrdude
|
|
||||||
AVRDUDE_MCU = m32
|
|
||||||
|
|
||||||
PROTOCOL = VUSB
|
|
||||||
|
|
||||||
# Processor frequency.
|
|
||||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
|
||||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
|
||||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
|
||||||
# automatically to create a 32-bit value in your source code.
|
|
||||||
F_CPU ?= 12000000
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq (,$(filter $(MCU),atmega328p))
|
|
||||||
# MCU name for avrdude
|
|
||||||
AVRDUDE_MCU = m328p
|
|
||||||
|
|
||||||
PROTOCOL = VUSB
|
|
||||||
|
|
||||||
# Processor frequency.
|
|
||||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
|
||||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
|
||||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
|
||||||
# automatically to create a 32-bit value in your source code.
|
|
||||||
F_CPU ?= 16000000
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq (,$(filter $(MCU),atmega328))
|
|
||||||
# MCU name for avrdude
|
|
||||||
AVRDUDE_MCU = m328
|
|
||||||
|
|
||||||
PROTOCOL = VUSB
|
|
||||||
|
|
||||||
# Processor frequency.
|
|
||||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
|
||||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
|
||||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
|
||||||
# automatically to create a 32-bit value in your source code.
|
|
||||||
F_CPU ?= 16000000
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq (,$(filter $(MCU),attiny85))
|
|
||||||
PROTOCOL = VUSB
|
|
||||||
|
|
||||||
# Processor frequency.
|
|
||||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
|
||||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
|
||||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
|
||||||
# automatically to create a 32-bit value in your source code.
|
|
||||||
F_CPU ?= 16500000
|
|
||||||
endif
|
|
@ -30,19 +30,8 @@ static __inline__ void __interrupt_enable__(const uint8_t *__s) {
|
|||||||
(void)__s;
|
(void)__s;
|
||||||
}
|
}
|
||||||
|
|
||||||
static __inline__ syssts_t __interrupt_lock__(void) {
|
#define ATOMIC_BLOCK(type) for (type, __ToDo = __interrupt_disable__(); __ToDo; __ToDo = 0)
|
||||||
return chSysGetStatusAndLockX();
|
#define ATOMIC_FORCEON uint8_t sreg_save __attribute__((__cleanup__(__interrupt_enable__))) = 0
|
||||||
}
|
|
||||||
|
|
||||||
static __inline__ void __interrupt_unlock__(const syssts_t *__s) {
|
#define ATOMIC_BLOCK_RESTORESTATE _Static_assert(0, "ATOMIC_BLOCK_RESTORESTATE not implemented")
|
||||||
chSysRestoreStatusX(*__s);
|
|
||||||
|
|
||||||
__asm__ volatile("" ::: "memory");
|
|
||||||
}
|
|
||||||
|
|
||||||
#define ATOMIC_BLOCK(type) for (type, __ToDo = 1; __ToDo; __ToDo = 0)
|
|
||||||
#define ATOMIC_FORCEON uint8_t status_save __attribute__((__cleanup__(__interrupt_enable__))) = __interrupt_disable__()
|
|
||||||
#define ATOMIC_RESTORESTATE syssts_t status_save __attribute__((__cleanup__(__interrupt_unlock__))) = __interrupt_lock__()
|
|
||||||
|
|
||||||
#define ATOMIC_BLOCK_RESTORESTATE ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
|
|
||||||
#define ATOMIC_BLOCK_FORCEON ATOMIC_BLOCK(ATOMIC_FORCEON)
|
#define ATOMIC_BLOCK_FORCEON ATOMIC_BLOCK(ATOMIC_FORCEON)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <util/atomic.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include "atomic_util.h"
|
|
||||||
|
|
||||||
#ifndef RBUF_SIZE
|
#ifndef RBUF_SIZE
|
||||||
# define RBUF_SIZE 32
|
# define RBUF_SIZE 32
|
||||||
|
Loading…
Reference in New Issue
Block a user