Merge pull request #14782 from benpicco/cpu/sam0_common-full
cpu/sam0_common: add all parts to Kconfig
This commit is contained in:
commit
53187c5ef7
@ -1,3 +1,5 @@
|
|||||||
|
CPU_FAM := $(shell echo $(CPU_MODEL) | cut -c -6)
|
||||||
|
|
||||||
FEATURES_PROVIDED += periph_cpuid
|
FEATURES_PROVIDED += periph_cpuid
|
||||||
FEATURES_PROVIDED += periph_dma
|
FEATURES_PROVIDED += periph_dma
|
||||||
FEATURES_PROVIDED += periph_flashpage
|
FEATURES_PROVIDED += periph_flashpage
|
||||||
|
|||||||
35
cpu/sam0_common/dist/kconfig_gen.sh
vendored
Executable file
35
cpu/sam0_common/dist/kconfig_gen.sh
vendored
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Generate Kconfig file for all parts of a sam0 family
|
||||||
|
# based on the available vendor files.
|
||||||
|
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
echo "usage: $0 <family>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
FAM=$1
|
||||||
|
FAM_UC=$(echo $FAM | tr a-z A-Z)
|
||||||
|
|
||||||
|
VENDOR_FILES=$(dirname $0)/../include/vendor/$FAM/*/$FAM?*.h
|
||||||
|
|
||||||
|
{
|
||||||
|
echo '## CPU Models'
|
||||||
|
for i in $VENDOR_FILES; do
|
||||||
|
MODEL_LC=$(basename $i .h)
|
||||||
|
MODEL_UC=$(echo $MODEL_LC | tr a-z A-Z)
|
||||||
|
|
||||||
|
echo "config CPU_MODEL_$MODEL_UC"
|
||||||
|
echo " bool"
|
||||||
|
echo " select CPU_FAM_$FAM_UC"
|
||||||
|
echo ""
|
||||||
|
done
|
||||||
|
|
||||||
|
echo 'config CPU_MODEL'
|
||||||
|
for i in $VENDOR_FILES; do
|
||||||
|
MODEL_LC=$(basename $i .h)
|
||||||
|
MODEL_UC=$(echo $MODEL_LC | tr a-z A-Z)
|
||||||
|
printf ' default "%s" if CPU_MODEL_%s\n' $MODEL_LC $MODEL_UC
|
||||||
|
done
|
||||||
|
} > Kconfig.$FAM
|
||||||
@ -78,7 +78,7 @@ extern "C" {
|
|||||||
#define CPU_IRQ_NUMOF PERIPH_COUNT_IRQn
|
#define CPU_IRQ_NUMOF PERIPH_COUNT_IRQn
|
||||||
#define CPU_FLASH_BASE FLASH_ADDR
|
#define CPU_FLASH_BASE FLASH_ADDR
|
||||||
|
|
||||||
#ifdef CPU_SAML1X
|
#ifdef CPU_COMMON_SAML1X
|
||||||
#define CPU_FLASH_RWWEE_BASE DATAFLASH_ADDR
|
#define CPU_FLASH_RWWEE_BASE DATAFLASH_ADDR
|
||||||
#else
|
#else
|
||||||
#define CPU_FLASH_RWWEE_BASE NVMCTRL_RWW_EEPROM_ADDR
|
#define CPU_FLASH_RWWEE_BASE NVMCTRL_RWW_EEPROM_ADDR
|
||||||
|
|||||||
@ -623,9 +623,9 @@ static inline uint8_t sercom_id(const void *sercom)
|
|||||||
static inline void sercom_clk_en(void *sercom)
|
static inline void sercom_clk_en(void *sercom)
|
||||||
{
|
{
|
||||||
const uint8_t id = sercom_id(sercom);
|
const uint8_t id = sercom_id(sercom);
|
||||||
#if defined(CPU_FAM_SAMD21)
|
#if defined(CPU_COMMON_SAMD21)
|
||||||
PM->APBCMASK.reg |= (PM_APBCMASK_SERCOM0 << id);
|
PM->APBCMASK.reg |= (PM_APBCMASK_SERCOM0 << id);
|
||||||
#elif defined (CPU_FAM_SAMD5X)
|
#elif defined (CPU_COMMON_SAMD5X)
|
||||||
if (id < 2) {
|
if (id < 2) {
|
||||||
MCLK->APBAMASK.reg |= (1 << (id + 12));
|
MCLK->APBAMASK.reg |= (1 << (id + 12));
|
||||||
} else if (id < 4) {
|
} else if (id < 4) {
|
||||||
@ -637,11 +637,11 @@ static inline void sercom_clk_en(void *sercom)
|
|||||||
if (id < 5) {
|
if (id < 5) {
|
||||||
MCLK->APBCMASK.reg |= (MCLK_APBCMASK_SERCOM0 << id);
|
MCLK->APBCMASK.reg |= (MCLK_APBCMASK_SERCOM0 << id);
|
||||||
}
|
}
|
||||||
#if defined(CPU_FAM_SAML21)
|
#if defined(CPU_COMMON_SAML21)
|
||||||
else {
|
else {
|
||||||
MCLK->APBDMASK.reg |= (MCLK_APBDMASK_SERCOM5);
|
MCLK->APBDMASK.reg |= (MCLK_APBDMASK_SERCOM5);
|
||||||
}
|
}
|
||||||
#endif /* CPU_FAM_SAML21 */
|
#endif /* CPU_COMMON_SAML21 */
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -653,9 +653,9 @@ static inline void sercom_clk_en(void *sercom)
|
|||||||
static inline void sercom_clk_dis(void *sercom)
|
static inline void sercom_clk_dis(void *sercom)
|
||||||
{
|
{
|
||||||
const uint8_t id = sercom_id(sercom);
|
const uint8_t id = sercom_id(sercom);
|
||||||
#if defined(CPU_FAM_SAMD21)
|
#if defined(CPU_COMMON_SAMD21)
|
||||||
PM->APBCMASK.reg &= ~(PM_APBCMASK_SERCOM0 << id);
|
PM->APBCMASK.reg &= ~(PM_APBCMASK_SERCOM0 << id);
|
||||||
#elif defined (CPU_FAM_SAMD5X)
|
#elif defined (CPU_COMMON_SAMD5X)
|
||||||
if (id < 2) {
|
if (id < 2) {
|
||||||
MCLK->APBAMASK.reg &= ~(1 << (id + 12));
|
MCLK->APBAMASK.reg &= ~(1 << (id + 12));
|
||||||
} else if (id < 4) {
|
} else if (id < 4) {
|
||||||
@ -667,15 +667,15 @@ static inline void sercom_clk_dis(void *sercom)
|
|||||||
if (id < 5) {
|
if (id < 5) {
|
||||||
MCLK->APBCMASK.reg &= ~(MCLK_APBCMASK_SERCOM0 << id);
|
MCLK->APBCMASK.reg &= ~(MCLK_APBCMASK_SERCOM0 << id);
|
||||||
}
|
}
|
||||||
#if defined (CPU_FAM_SAML21)
|
#if defined (CPU_COMMON_SAML21)
|
||||||
else {
|
else {
|
||||||
MCLK->APBDMASK.reg &= ~(MCLK_APBDMASK_SERCOM5);
|
MCLK->APBDMASK.reg &= ~(MCLK_APBDMASK_SERCOM5);
|
||||||
}
|
}
|
||||||
#endif /* CPU_FAM_SAML21 */
|
#endif /* CPU_COMMON_SAML21 */
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CPU_FAM_SAMD5X
|
#ifdef CPU_COMMON_SAMD5X
|
||||||
static inline uint8_t _sercom_gclk_id_core(uint8_t sercom_id) {
|
static inline uint8_t _sercom_gclk_id_core(uint8_t sercom_id) {
|
||||||
if (sercom_id < 2)
|
if (sercom_id < 2)
|
||||||
return sercom_id + 7;
|
return sercom_id + 7;
|
||||||
@ -696,21 +696,21 @@ static inline void sercom_set_gen(void *sercom, uint8_t gclk)
|
|||||||
{
|
{
|
||||||
const uint8_t id = sercom_id(sercom);
|
const uint8_t id = sercom_id(sercom);
|
||||||
sam0_gclk_enable(gclk);
|
sam0_gclk_enable(gclk);
|
||||||
#if defined(CPU_FAM_SAMD21)
|
#if defined(CPU_COMMON_SAMD21)
|
||||||
GCLK->CLKCTRL.reg = (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN(gclk) |
|
GCLK->CLKCTRL.reg = (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN(gclk) |
|
||||||
(SERCOM0_GCLK_ID_CORE + id));
|
(SERCOM0_GCLK_ID_CORE + id));
|
||||||
while (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY) {}
|
while (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY) {}
|
||||||
#elif defined(CPU_FAM_SAMD5X)
|
#elif defined(CPU_COMMON_SAMD5X)
|
||||||
GCLK->PCHCTRL[_sercom_gclk_id_core(id)].reg = (GCLK_PCHCTRL_CHEN | GCLK_PCHCTRL_GEN(gclk));
|
GCLK->PCHCTRL[_sercom_gclk_id_core(id)].reg = (GCLK_PCHCTRL_CHEN | GCLK_PCHCTRL_GEN(gclk));
|
||||||
#else
|
#else
|
||||||
if (id < 5) {
|
if (id < 5) {
|
||||||
GCLK->PCHCTRL[SERCOM0_GCLK_ID_CORE + id].reg = (GCLK_PCHCTRL_CHEN | GCLK_PCHCTRL_GEN(gclk));
|
GCLK->PCHCTRL[SERCOM0_GCLK_ID_CORE + id].reg = (GCLK_PCHCTRL_CHEN | GCLK_PCHCTRL_GEN(gclk));
|
||||||
}
|
}
|
||||||
#if defined(CPU_FAM_SAML21)
|
#if defined(CPU_COMMON_SAML21)
|
||||||
else {
|
else {
|
||||||
GCLK->PCHCTRL[SERCOM5_GCLK_ID_CORE].reg = (GCLK_PCHCTRL_CHEN | GCLK_PCHCTRL_GEN(gclk));
|
GCLK->PCHCTRL[SERCOM5_GCLK_ID_CORE].reg = (GCLK_PCHCTRL_CHEN | GCLK_PCHCTRL_GEN(gclk));
|
||||||
}
|
}
|
||||||
#endif /* CPU_FAM_SAML21 */
|
#endif /* CPU_COMMON_SAML21 */
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -821,7 +821,7 @@ typedef struct {
|
|||||||
/**
|
/**
|
||||||
* @brief Move the DMA descriptors to the LP SRAM. Required on the SAML21
|
* @brief Move the DMA descriptors to the LP SRAM. Required on the SAML21
|
||||||
*/
|
*/
|
||||||
#if defined(CPU_FAM_SAML21) || defined(DOXYGEN)
|
#if defined(CPU_COMMON_SAML21) || defined(DOXYGEN)
|
||||||
#define DMA_DESCRIPTOR_IN_LPSRAM
|
#define DMA_DESCRIPTOR_IN_LPSRAM
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -76,11 +76,13 @@ static inline void _wait_syncbusy(void)
|
|||||||
static void _adc_poweroff(void)
|
static void _adc_poweroff(void)
|
||||||
{
|
{
|
||||||
_wait_syncbusy();
|
_wait_syncbusy();
|
||||||
|
|
||||||
/* Disable */
|
/* Disable */
|
||||||
ADC_DEV->CTRLA.reg &= ~ADC_CTRLA_ENABLE;
|
ADC_DEV->CTRLA.reg &= ~ADC_CTRLA_ENABLE;
|
||||||
_wait_syncbusy();
|
_wait_syncbusy();
|
||||||
|
|
||||||
/* Disable bandgap */
|
/* Disable bandgap */
|
||||||
#ifdef CPU_SAMD21
|
#ifdef SYSCTRL_VREF_BGOUTEN
|
||||||
if (ADC_REF_DEFAULT == ADC_REFCTRL_REFSEL_INT1V) {
|
if (ADC_REF_DEFAULT == ADC_REFCTRL_REFSEL_INT1V) {
|
||||||
SYSCTRL->VREF.reg &= ~SYSCTRL_VREF_BGOUTEN;
|
SYSCTRL->VREF.reg &= ~SYSCTRL_VREF_BGOUTEN;
|
||||||
}
|
}
|
||||||
@ -95,12 +97,14 @@ static void _setup_clock(void)
|
|||||||
{
|
{
|
||||||
/* Enable gclk in case we are the only user */
|
/* Enable gclk in case we are the only user */
|
||||||
sam0_gclk_enable(ADC_GCLK_SRC);
|
sam0_gclk_enable(ADC_GCLK_SRC);
|
||||||
#ifdef CPU_SAMD21
|
|
||||||
|
#ifdef PM_APBCMASK_ADC
|
||||||
/* Power On */
|
/* Power On */
|
||||||
PM->APBCMASK.reg |= PM_APBCMASK_ADC;
|
PM->APBCMASK.reg |= PM_APBCMASK_ADC;
|
||||||
/* GCLK Setup */
|
/* GCLK Setup */
|
||||||
GCLK->CLKCTRL.reg = (uint32_t)(GCLK_CLKCTRL_CLKEN
|
GCLK->CLKCTRL.reg = GCLK_CLKCTRL_CLKEN
|
||||||
| GCLK_CLKCTRL_GEN(ADC_GCLK_SRC) | (GCLK_CLKCTRL_ID(ADC_GCLK_ID)));
|
| GCLK_CLKCTRL_GEN(ADC_GCLK_SRC)
|
||||||
|
| GCLK_CLKCTRL_ID(ADC_GCLK_ID);
|
||||||
/* Configure prescaler */
|
/* Configure prescaler */
|
||||||
ADC_DEV->CTRLB.reg = ADC_PRESCALER;
|
ADC_DEV->CTRLB.reg = ADC_PRESCALER;
|
||||||
#else
|
#else
|
||||||
@ -143,7 +147,7 @@ static void _setup_clock(void)
|
|||||||
|
|
||||||
static void _setup_calibration(void)
|
static void _setup_calibration(void)
|
||||||
{
|
{
|
||||||
#ifdef CPU_SAMD21
|
#ifdef ADC_CALIB_BIAS_CAL
|
||||||
/* Load the fixed device calibration constants */
|
/* Load the fixed device calibration constants */
|
||||||
ADC_DEV->CALIB.reg =
|
ADC_DEV->CALIB.reg =
|
||||||
ADC_CALIB_BIAS_CAL((*(uint32_t*)ADC_FUSES_BIASCAL_ADDR >>
|
ADC_CALIB_BIAS_CAL((*(uint32_t*)ADC_FUSES_BIASCAL_ADDR >>
|
||||||
@ -186,12 +190,15 @@ static int _adc_configure(adc_res_t res)
|
|||||||
(res == ADC_RES_12BIT))){
|
(res == ADC_RES_12BIT))){
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_adc_poweroff();
|
_adc_poweroff();
|
||||||
|
|
||||||
if (ADC_DEV->CTRLA.reg & ADC_CTRLA_SWRST ||
|
if (ADC_DEV->CTRLA.reg & ADC_CTRLA_SWRST ||
|
||||||
ADC_DEV->CTRLA.reg & ADC_CTRLA_ENABLE ) {
|
ADC_DEV->CTRLA.reg & ADC_CTRLA_ENABLE ) {
|
||||||
DEBUG("adc: not ready\n");
|
DEBUG("adc: not ready\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_setup_clock();
|
_setup_clock();
|
||||||
_setup_calibration();
|
_setup_calibration();
|
||||||
|
|
||||||
@ -211,7 +218,7 @@ static int _adc_configure(adc_res_t res)
|
|||||||
/* Disable all interrupts */
|
/* Disable all interrupts */
|
||||||
ADC_DEV->INTENCLR.reg = 0xFF;
|
ADC_DEV->INTENCLR.reg = 0xFF;
|
||||||
|
|
||||||
#ifdef CPU_SAMD21
|
#ifdef SYSCTRL_VREF_BGOUTEN
|
||||||
/* Enable bandgap if VREF is internal 1V */
|
/* Enable bandgap if VREF is internal 1V */
|
||||||
if (ADC_REF_DEFAULT == ADC_REFCTRL_REFSEL_INT1V) {
|
if (ADC_REF_DEFAULT == ADC_REFCTRL_REFSEL_INT1V) {
|
||||||
SYSCTRL->VREF.reg |= SYSCTRL_VREF_BGOUTEN;
|
SYSCTRL->VREF.reg |= SYSCTRL_VREF_BGOUTEN;
|
||||||
@ -235,10 +242,12 @@ int adc_init(adc_t line)
|
|||||||
DEBUG("adc: line arg not applicable\n");
|
DEBUG("adc: line arg not applicable\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_prep();
|
_prep();
|
||||||
gpio_init(adc_channels[line].pin, GPIO_IN);
|
gpio_init(adc_channels[line].pin, GPIO_IN);
|
||||||
gpio_init_mux(adc_channels[line].pin, GPIO_MUX_B);
|
gpio_init_mux(adc_channels[line].pin, GPIO_MUX_B);
|
||||||
_done();
|
_done();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,22 +257,30 @@ int32_t adc_sample(adc_t line, adc_res_t res)
|
|||||||
DEBUG("adc: line arg not applicable\n");
|
DEBUG("adc: line arg not applicable\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_prep();
|
_prep();
|
||||||
|
|
||||||
if (_adc_configure(res) != 0) {
|
if (_adc_configure(res) != 0) {
|
||||||
_done();
|
_done();
|
||||||
DEBUG("adc: configuration failed\n");
|
DEBUG("adc: configuration failed\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
ADC_DEV->INPUTCTRL.reg = ADC_GAIN_FACTOR_DEFAULT |
|
|
||||||
adc_channels[line].muxpos | ADC_NEG_INPUT;
|
ADC_DEV->INPUTCTRL.reg = ADC_GAIN_FACTOR_DEFAULT
|
||||||
|
| adc_channels[line].muxpos
|
||||||
|
| ADC_NEG_INPUT;
|
||||||
_wait_syncbusy();
|
_wait_syncbusy();
|
||||||
|
|
||||||
/* Start the conversion */
|
/* Start the conversion */
|
||||||
ADC_DEV->SWTRIG.reg = ADC_SWTRIG_START;
|
ADC_DEV->SWTRIG.reg = ADC_SWTRIG_START;
|
||||||
|
|
||||||
/* Wait for the result */
|
/* Wait for the result */
|
||||||
while (!(ADC_DEV->INTFLAG.reg & ADC_INTFLAG_RESRDY)) {}
|
while (!(ADC_DEV->INTFLAG.reg & ADC_INTFLAG_RESRDY)) {}
|
||||||
|
|
||||||
int result = ADC_DEV->RESULT.reg;
|
int result = ADC_DEV->RESULT.reg;
|
||||||
|
|
||||||
_adc_poweroff();
|
_adc_poweroff();
|
||||||
_done();
|
_done();
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
#include "periph/cpuid.h"
|
#include "periph/cpuid.h"
|
||||||
|
|
||||||
#ifdef CPU_SAMD5X
|
#ifdef CPU_COMMON_SAMD5X
|
||||||
#define WORD0 (*(volatile uint32_t *)0x008061FC)
|
#define WORD0 (*(volatile uint32_t *)0x008061FC)
|
||||||
#define WORD1 (*(volatile uint32_t *)0x00806010)
|
#define WORD1 (*(volatile uint32_t *)0x00806010)
|
||||||
#define WORD2 (*(volatile uint32_t *)0x00806014)
|
#define WORD2 (*(volatile uint32_t *)0x00806014)
|
||||||
|
|||||||
@ -81,7 +81,7 @@ void dma_init(void)
|
|||||||
NVIC_EnableIRQ(DMAC_1_IRQn);
|
NVIC_EnableIRQ(DMAC_1_IRQn);
|
||||||
NVIC_EnableIRQ(DMAC_2_IRQn);
|
NVIC_EnableIRQ(DMAC_2_IRQn);
|
||||||
NVIC_EnableIRQ(DMAC_3_IRQn);
|
NVIC_EnableIRQ(DMAC_3_IRQn);
|
||||||
#elif defined(CPU_FAM_SAMD5X)
|
#elif defined(CPU_COMMON_SAMD5X)
|
||||||
NVIC_EnableIRQ(DMAC_0_IRQn);
|
NVIC_EnableIRQ(DMAC_0_IRQn);
|
||||||
NVIC_EnableIRQ(DMAC_1_IRQn);
|
NVIC_EnableIRQ(DMAC_1_IRQn);
|
||||||
NVIC_EnableIRQ(DMAC_2_IRQn);
|
NVIC_EnableIRQ(DMAC_2_IRQn);
|
||||||
|
|||||||
@ -139,7 +139,7 @@ static void _erase_page(void* page, void (*cmd_erase)(void))
|
|||||||
/* ADDR drives the hardware (16-bit) address to the NVM when a command is executed using CMDEX.
|
/* ADDR drives the hardware (16-bit) address to the NVM when a command is executed using CMDEX.
|
||||||
* 8-bit addresses must be shifted one bit to the right before writing to this register.
|
* 8-bit addresses must be shifted one bit to the right before writing to this register.
|
||||||
*/
|
*/
|
||||||
#if defined(CPU_SAMD21) || defined(CPU_SAML21)
|
#if defined(CPU_COMMON_SAMD21) || defined(CPU_COMMON_SAML21)
|
||||||
page_addr >>= 1;
|
page_addr >>= 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -49,7 +49,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Number of external interrupt lines
|
* @brief Number of external interrupt lines
|
||||||
*/
|
*/
|
||||||
#ifdef CPU_SAML1X
|
#ifdef CPU_COMMON_SAML1X
|
||||||
#define NUMOF_IRQS (8U)
|
#define NUMOF_IRQS (8U)
|
||||||
#else
|
#else
|
||||||
#define NUMOF_IRQS (16U)
|
#define NUMOF_IRQS (16U)
|
||||||
@ -180,7 +180,7 @@ void gpio_write(gpio_t pin, int value)
|
|||||||
|
|
||||||
#ifdef MODULE_PERIPH_GPIO_IRQ
|
#ifdef MODULE_PERIPH_GPIO_IRQ
|
||||||
|
|
||||||
#ifdef CPU_FAM_SAMD21
|
#ifdef CPU_COMMON_SAMD21
|
||||||
#define EIC_SYNC() while (_EIC->STATUS.bit.SYNCBUSY)
|
#define EIC_SYNC() while (_EIC->STATUS.bit.SYNCBUSY)
|
||||||
#else
|
#else
|
||||||
#define EIC_SYNC() while (_EIC->SYNCBUSY.bit.ENABLE)
|
#define EIC_SYNC() while (_EIC->SYNCBUSY.bit.ENABLE)
|
||||||
@ -212,14 +212,14 @@ int gpio_init_int(gpio_t pin, gpio_mode_t mode, gpio_flank_t flank,
|
|||||||
/* configure pin as input and set MUX to peripheral function A */
|
/* configure pin as input and set MUX to peripheral function A */
|
||||||
gpio_init(pin, mode);
|
gpio_init(pin, mode);
|
||||||
gpio_init_mux(pin, GPIO_MUX_A);
|
gpio_init_mux(pin, GPIO_MUX_A);
|
||||||
#ifdef CPU_FAM_SAMD21
|
#ifdef CPU_COMMON_SAMD21
|
||||||
/* enable clocks for the EIC module */
|
/* enable clocks for the EIC module */
|
||||||
PM->APBAMASK.reg |= PM_APBAMASK_EIC;
|
PM->APBAMASK.reg |= PM_APBAMASK_EIC;
|
||||||
GCLK->CLKCTRL.reg = EIC_GCLK_ID
|
GCLK->CLKCTRL.reg = EIC_GCLK_ID
|
||||||
| GCLK_CLKCTRL_CLKEN
|
| GCLK_CLKCTRL_CLKEN
|
||||||
| GCLK_CLKCTRL_GEN(CONFIG_SAM0_GCLK_GPIO);
|
| GCLK_CLKCTRL_GEN(CONFIG_SAM0_GCLK_GPIO);
|
||||||
while (GCLK->STATUS.bit.SYNCBUSY) {}
|
while (GCLK->STATUS.bit.SYNCBUSY) {}
|
||||||
#else /* CPU_FAM_SAML21 */
|
#else /* CPU_COMMON_SAML21 */
|
||||||
/* enable clocks for the EIC module */
|
/* enable clocks for the EIC module */
|
||||||
MCLK->APBAMASK.reg |= MCLK_APBAMASK_EIC;
|
MCLK->APBAMASK.reg |= MCLK_APBAMASK_EIC;
|
||||||
GCLK->PCHCTRL[EIC_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | GCLK_PCHCTRL_GEN(CONFIG_SAM0_GCLK_GPIO);
|
GCLK->PCHCTRL[EIC_GCLK_ID].reg = GCLK_PCHCTRL_CHEN | GCLK_PCHCTRL_GEN(CONFIG_SAM0_GCLK_GPIO);
|
||||||
@ -231,10 +231,10 @@ int gpio_init_int(gpio_t pin, gpio_mode_t mode, gpio_flank_t flank,
|
|||||||
_EIC->CONFIG[exti >> 3].reg &= ~(0xf << ((exti & 0x7) * 4));
|
_EIC->CONFIG[exti >> 3].reg &= ~(0xf << ((exti & 0x7) * 4));
|
||||||
_EIC->CONFIG[exti >> 3].reg |= (flank << ((exti & 0x7) * 4));
|
_EIC->CONFIG[exti >> 3].reg |= (flank << ((exti & 0x7) * 4));
|
||||||
/* enable the global EIC interrupt */
|
/* enable the global EIC interrupt */
|
||||||
#ifdef CPU_SAML1X
|
#ifdef CPU_COMMON_SAML1X
|
||||||
/* EXTI[4..7] are binded to EIC_OTHER_IRQn */
|
/* EXTI[4..7] are binded to EIC_OTHER_IRQn */
|
||||||
NVIC_EnableIRQ((exti > 3 )? EIC_OTHER_IRQn : (EIC_0_IRQn + exti));
|
NVIC_EnableIRQ((exti > 3 )? EIC_OTHER_IRQn : (EIC_0_IRQn + exti));
|
||||||
#elif defined(CPU_SAMD5X)
|
#elif defined(CPU_COMMON_SAMD5X)
|
||||||
NVIC_EnableIRQ(EIC_0_IRQn + exti);
|
NVIC_EnableIRQ(EIC_0_IRQn + exti);
|
||||||
#else
|
#else
|
||||||
NVIC_EnableIRQ(EIC_IRQn);
|
NVIC_EnableIRQ(EIC_IRQn);
|
||||||
@ -242,12 +242,12 @@ int gpio_init_int(gpio_t pin, gpio_mode_t mode, gpio_flank_t flank,
|
|||||||
/* clear interrupt flag and enable the interrupt line and line wakeup */
|
/* clear interrupt flag and enable the interrupt line and line wakeup */
|
||||||
_EIC->INTFLAG.reg = (1 << exti);
|
_EIC->INTFLAG.reg = (1 << exti);
|
||||||
_EIC->INTENSET.reg = (1 << exti);
|
_EIC->INTENSET.reg = (1 << exti);
|
||||||
#ifdef CPU_FAM_SAMD21
|
#ifdef CPU_COMMON_SAMD21
|
||||||
_EIC->WAKEUP.reg |= (1 << exti);
|
_EIC->WAKEUP.reg |= (1 << exti);
|
||||||
/* enable the EIC module*/
|
/* enable the EIC module*/
|
||||||
_EIC->CTRL.reg = EIC_CTRL_ENABLE;
|
_EIC->CTRL.reg = EIC_CTRL_ENABLE;
|
||||||
EIC_SYNC();
|
EIC_SYNC();
|
||||||
#else /* CPU_FAM_SAML21 */
|
#else /* CPU_COMMON_SAML21 */
|
||||||
/* enable the EIC module*/
|
/* enable the EIC module*/
|
||||||
_EIC->CTRLA.reg = EIC_CTRLA_ENABLE;
|
_EIC->CTRLA.reg = EIC_CTRLA_ENABLE;
|
||||||
EIC_SYNC();
|
EIC_SYNC();
|
||||||
@ -256,7 +256,7 @@ int gpio_init_int(gpio_t pin, gpio_mode_t mode, gpio_flank_t flank,
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline static void reenable_eic(gpio_eic_clock_t clock) {
|
inline static void reenable_eic(gpio_eic_clock_t clock) {
|
||||||
#if defined(CPU_SAMD21)
|
#if defined(CPU_COMMON_SAMD21)
|
||||||
if (clock == _EIC_CLOCK_SLOW) {
|
if (clock == _EIC_CLOCK_SLOW) {
|
||||||
GCLK->CLKCTRL.reg = EIC_GCLK_ID
|
GCLK->CLKCTRL.reg = EIC_GCLK_ID
|
||||||
| GCLK_CLKCTRL_CLKEN
|
| GCLK_CLKCTRL_CLKEN
|
||||||
@ -339,7 +339,7 @@ void gpio_irq_disable(gpio_t pin)
|
|||||||
_EIC->INTENCLR.reg = (1 << exti);
|
_EIC->INTENCLR.reg = (1 << exti);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CPU_SAML1X)
|
#if defined(CPU_COMMON_SAML1X)
|
||||||
void isr_eic_other(void)
|
void isr_eic_other(void)
|
||||||
#else
|
#else
|
||||||
void isr_eic(void)
|
void isr_eic(void)
|
||||||
@ -360,7 +360,7 @@ void isr_eic(void)
|
|||||||
cortexm_isr_end();
|
cortexm_isr_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CPU_SAML1X) || defined(CPU_SAMD5X)
|
#if defined(CPU_COMMON_SAML1X) || defined(CPU_COMMON_SAMD5X)
|
||||||
|
|
||||||
#define ISR_EICn(n) \
|
#define ISR_EICn(n) \
|
||||||
void isr_eic ## n (void) \
|
void isr_eic ## n (void) \
|
||||||
@ -374,7 +374,7 @@ ISR_EICn(0)
|
|||||||
ISR_EICn(1)
|
ISR_EICn(1)
|
||||||
ISR_EICn(2)
|
ISR_EICn(2)
|
||||||
ISR_EICn(3)
|
ISR_EICn(3)
|
||||||
#if defined(CPU_SAMD5X)
|
#if defined(CPU_COMMON_SAMD5X)
|
||||||
ISR_EICn(4)
|
ISR_EICn(4)
|
||||||
ISR_EICn(5)
|
ISR_EICn(5)
|
||||||
ISR_EICn(6)
|
ISR_EICn(6)
|
||||||
@ -389,8 +389,8 @@ ISR_EICn(13)
|
|||||||
ISR_EICn(14)
|
ISR_EICn(14)
|
||||||
ISR_EICn(15)
|
ISR_EICn(15)
|
||||||
#endif /* NUMOF_IRQS > 8 */
|
#endif /* NUMOF_IRQS > 8 */
|
||||||
#endif /* CPU_SAMD5X */
|
#endif /* CPU_COMMON_SAMD5X */
|
||||||
#endif /* CPU_SAML1X || CPU_SAMD5X */
|
#endif /* CPU_COMMON_SAML1X || CPU_COMMON_SAMD5X */
|
||||||
|
|
||||||
#else /* MODULE_PERIPH_GPIO_IRQ */
|
#else /* MODULE_PERIPH_GPIO_IRQ */
|
||||||
|
|
||||||
|
|||||||
@ -45,7 +45,7 @@
|
|||||||
#define BUSSTATE_OWNER SERCOM_I2CM_STATUS_BUSSTATE(2)
|
#define BUSSTATE_OWNER SERCOM_I2CM_STATUS_BUSSTATE(2)
|
||||||
#define BUSSTATE_BUSY SERCOM_I2CM_STATUS_BUSSTATE(3)
|
#define BUSSTATE_BUSY SERCOM_I2CM_STATUS_BUSSTATE(3)
|
||||||
|
|
||||||
#if defined(CPU_SAML21) || defined(CPU_SAML1X) || defined(CPU_SAMD5X)
|
#if defined(CPU_COMMON_SAML21) || defined(CPU_COMMON_SAML1X) || defined(CPU_COMMON_SAMD5X)
|
||||||
#define SERCOM_I2CM_CTRLA_MODE_I2C_MASTER SERCOM_I2CM_CTRLA_MODE(5)
|
#define SERCOM_I2CM_CTRLA_MODE_I2C_MASTER SERCOM_I2CM_CTRLA_MODE(5)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -131,7 +131,7 @@ static inline void _rtt_reset(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CPU_SAMD21
|
#ifdef CPU_COMMON_SAMD21
|
||||||
static void _rtc_clock_setup(void)
|
static void _rtc_clock_setup(void)
|
||||||
{
|
{
|
||||||
/* Use 1024 Hz GCLK */
|
/* Use 1024 Hz GCLK */
|
||||||
@ -150,7 +150,7 @@ static void _rtt_clock_setup(void)
|
|||||||
while (GCLK->STATUS.bit.SYNCBUSY) {}
|
while (GCLK->STATUS.bit.SYNCBUSY) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* CPU_SAMD21 - Clock Setup */
|
#else /* CPU_COMMON_SAMD21 - Clock Setup */
|
||||||
|
|
||||||
static void _rtc_clock_setup(void)
|
static void _rtc_clock_setup(void)
|
||||||
{
|
{
|
||||||
@ -192,7 +192,7 @@ static void _rtt_clock_setup(void)
|
|||||||
#error "No clock source for RTT selected. "
|
#error "No clock source for RTT selected. "
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif /* !CPU_SAMD21 - Clock Setup */
|
#endif /* !CPU_COMMON_SAMD21 - Clock Setup */
|
||||||
|
|
||||||
static void _rtc_init(void)
|
static void _rtc_init(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -233,14 +233,14 @@ static void _blocking_transfer(spi_t bus, const void *out, void *in, size_t len)
|
|||||||
|
|
||||||
static void _dma_execute(spi_t bus)
|
static void _dma_execute(spi_t bus)
|
||||||
{
|
{
|
||||||
#if defined(CPU_FAM_SAMD21)
|
#if defined(CPU_COMMON_SAMD21)
|
||||||
pm_block(SAMD21_PM_IDLE_1);
|
pm_block(SAMD21_PM_IDLE_1);
|
||||||
#endif
|
#endif
|
||||||
dma_start(_dma_state[bus].rx_dma);
|
dma_start(_dma_state[bus].rx_dma);
|
||||||
dma_start(_dma_state[bus].tx_dma);
|
dma_start(_dma_state[bus].tx_dma);
|
||||||
|
|
||||||
dma_wait(_dma_state[bus].rx_dma);
|
dma_wait(_dma_state[bus].rx_dma);
|
||||||
#if defined(CPU_FAM_SAMD21)
|
#if defined(CPU_COMMON_SAMD21)
|
||||||
pm_unblock(SAMD21_PM_IDLE_1);
|
pm_unblock(SAMD21_PM_IDLE_1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,7 +32,7 @@
|
|||||||
#define ENABLE_DEBUG (0)
|
#define ENABLE_DEBUG (0)
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
#if defined (CPU_SAML1X) || defined (CPU_SAMD5X)
|
#if defined (CPU_COMMON_SAML1X) || defined (CPU_COMMON_SAMD5X)
|
||||||
#define UART_HAS_TX_ISR
|
#define UART_HAS_TX_ISR
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -242,7 +242,7 @@ static inline void _poweron(sam0_common_usb_t *dev)
|
|||||||
PM->APBBMASK.reg |= PM_APBBMASK_USB;
|
PM->APBBMASK.reg |= PM_APBBMASK_USB;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CPU_FAM_SAMD21)
|
#if defined(CPU_COMMON_SAMD21)
|
||||||
GCLK->CLKCTRL.reg = GCLK_CLKCTRL_CLKEN
|
GCLK->CLKCTRL.reg = GCLK_CLKCTRL_CLKEN
|
||||||
| GCLK_CLKCTRL_GEN(dev->config->gclk_src)
|
| GCLK_CLKCTRL_GEN(dev->config->gclk_src)
|
||||||
| GCLK_CLKCTRL_ID(USB_GCLK_ID);
|
| GCLK_CLKCTRL_ID(USB_GCLK_ID);
|
||||||
@ -294,14 +294,14 @@ static usbdev_ep_t *_usbdev_new_ep(usbdev_t *dev, usb_ep_type_t type,
|
|||||||
|
|
||||||
static void _block_pm(void)
|
static void _block_pm(void)
|
||||||
{
|
{
|
||||||
#if defined(CPU_FAM_SAMD21)
|
#if defined(CPU_COMMON_SAMD21)
|
||||||
pm_block(SAMD21_PM_IDLE_1);
|
pm_block(SAMD21_PM_IDLE_1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _unblock_pm(void)
|
static void _unblock_pm(void)
|
||||||
{
|
{
|
||||||
#if defined(CPU_FAM_SAMD21)
|
#if defined(CPU_COMMON_SAMD21)
|
||||||
pm_unblock(SAMD21_PM_IDLE_1);
|
pm_unblock(SAMD21_PM_IDLE_1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -363,7 +363,7 @@ static void _usbdev_init(usbdev_t *dev)
|
|||||||
_block_pm();
|
_block_pm();
|
||||||
usbdev->usbdev.cb(&usbdev->usbdev, USBDEV_EVENT_HOST_CONNECT);
|
usbdev->usbdev.cb(&usbdev->usbdev, USBDEV_EVENT_HOST_CONNECT);
|
||||||
/* Interrupt configuration */
|
/* Interrupt configuration */
|
||||||
#ifdef CPU_FAM_SAMD5X
|
#ifdef CPU_COMMON_SAMD5X
|
||||||
NVIC_EnableIRQ(USB_0_IRQn);
|
NVIC_EnableIRQ(USB_0_IRQn);
|
||||||
NVIC_EnableIRQ(USB_1_IRQn);
|
NVIC_EnableIRQ(USB_1_IRQn);
|
||||||
NVIC_EnableIRQ(USB_2_IRQn);
|
NVIC_EnableIRQ(USB_2_IRQn);
|
||||||
|
|||||||
@ -45,7 +45,7 @@
|
|||||||
static inline void _set_enable(bool on)
|
static inline void _set_enable(bool on)
|
||||||
{
|
{
|
||||||
/* work around strange watchdog behaviour if IDLE2 is used on samd21 */
|
/* work around strange watchdog behaviour if IDLE2 is used on samd21 */
|
||||||
#ifdef CPU_FAM_SAMD21
|
#ifdef CPU_COMMON_SAMD21
|
||||||
if (on) {
|
if (on) {
|
||||||
pm_block(1);
|
pm_block(1);
|
||||||
}
|
}
|
||||||
@ -80,7 +80,7 @@ static uint32_t ms_to_per(uint32_t ms)
|
|||||||
return 29 - __builtin_clz(cycles - 1);
|
return 29 - __builtin_clz(cycles - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CPU_SAMD21
|
#ifdef CPU_COMMON_SAMD21
|
||||||
static void _wdt_clock_setup(void)
|
static void _wdt_clock_setup(void)
|
||||||
{
|
{
|
||||||
/* Connect to GCLK3 (~1.024 kHz) */
|
/* Connect to GCLK3 (~1.024 kHz) */
|
||||||
|
|||||||
@ -5,33 +5,20 @@
|
|||||||
# directory for more details.
|
# directory for more details.
|
||||||
#
|
#
|
||||||
|
|
||||||
config CPU_FAM_SAMD21
|
config CPU_COMMON_SAMD21
|
||||||
bool
|
bool
|
||||||
select CPU_COMMON_SAM0
|
select CPU_COMMON_SAM0
|
||||||
select CPU_CORE_CORTEX_M0PLUS
|
select CPU_CORE_CORTEX_M0PLUS
|
||||||
select HAS_CPU_SAMD21
|
select HAS_CPU_SAMD21
|
||||||
select HAS_PUF_SRAM
|
select HAS_PUF_SRAM
|
||||||
|
|
||||||
## CPU Models
|
config CPU_FAM_SAMD21
|
||||||
config CPU_MODEL_SAMD21E18A
|
|
||||||
bool
|
bool
|
||||||
select CPU_FAM_SAMD21
|
select CPU_COMMON_SAMD21
|
||||||
|
|
||||||
config CPU_MODEL_SAMD21G18A
|
config CPU_FAM_SAMR21
|
||||||
bool
|
bool
|
||||||
select CPU_FAM_SAMD21
|
select CPU_COMMON_SAMD21
|
||||||
|
|
||||||
config CPU_MODEL_SAMD21J18A
|
|
||||||
bool
|
|
||||||
select CPU_FAM_SAMD21
|
|
||||||
|
|
||||||
config CPU_MODEL_SAMR21E18A
|
|
||||||
bool
|
|
||||||
select CPU_FAM_SAMD21
|
|
||||||
|
|
||||||
config CPU_MODEL_SAMR21G18A
|
|
||||||
bool
|
|
||||||
select CPU_FAM_SAMD21
|
|
||||||
|
|
||||||
## Definition of specific features
|
## Definition of specific features
|
||||||
config HAS_CPU_SAMD21
|
config HAS_CPU_SAMD21
|
||||||
@ -42,15 +29,12 @@ config HAS_CPU_SAMD21
|
|||||||
## Common CPU symbols
|
## Common CPU symbols
|
||||||
config CPU_FAM
|
config CPU_FAM
|
||||||
default "samd21" if CPU_FAM_SAMD21
|
default "samd21" if CPU_FAM_SAMD21
|
||||||
|
default "samr21" if CPU_FAM_SAMR21
|
||||||
config CPU_MODEL
|
|
||||||
default "samd21e18a" if CPU_MODEL_SAMD21E18A
|
|
||||||
default "samd21g18a" if CPU_MODEL_SAMD21G18A
|
|
||||||
default "samd21j18a" if CPU_MODEL_SAMD21J18A
|
|
||||||
default "samr21e18a" if CPU_MODEL_SAMR21E18A
|
|
||||||
default "samr21g18a" if CPU_MODEL_SAMR21G18A
|
|
||||||
|
|
||||||
config CPU
|
config CPU
|
||||||
default "samd21"
|
default "samd21" if CPU_COMMON_SAMD21
|
||||||
|
|
||||||
|
source "$(RIOTCPU)/samd21/Kconfig.samd21"
|
||||||
|
source "$(RIOTCPU)/samd21/Kconfig.samr21"
|
||||||
|
|
||||||
source "$(RIOTCPU)/sam0_common/Kconfig"
|
source "$(RIOTCPU)/sam0_common/Kconfig"
|
||||||
|
|||||||
172
cpu/samd21/Kconfig.samd21
Normal file
172
cpu/samd21/Kconfig.samd21
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
## CPU Models
|
||||||
|
config CPU_MODEL_SAMD21E15A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E16A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E17A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G15A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G16A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G17A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G17AU
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G18AU
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21J15A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21J16A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21J17A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21J18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E15BU
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E16BU
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E15B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E15CU
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E15L
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E16B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E16CU
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E16L
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G15B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G15L
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G16B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G16L
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21J15B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21J16B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E17D
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E17DU
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21E17L
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G17D
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21G17L
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD21J17D
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD21
|
||||||
|
|
||||||
|
config CPU_MODEL
|
||||||
|
default "samd21e15a" if CPU_MODEL_SAMD21E15A
|
||||||
|
default "samd21e16a" if CPU_MODEL_SAMD21E16A
|
||||||
|
default "samd21e17a" if CPU_MODEL_SAMD21E17A
|
||||||
|
default "samd21e18a" if CPU_MODEL_SAMD21E18A
|
||||||
|
default "samd21g15a" if CPU_MODEL_SAMD21G15A
|
||||||
|
default "samd21g16a" if CPU_MODEL_SAMD21G16A
|
||||||
|
default "samd21g17a" if CPU_MODEL_SAMD21G17A
|
||||||
|
default "samd21g17au" if CPU_MODEL_SAMD21G17AU
|
||||||
|
default "samd21g18a" if CPU_MODEL_SAMD21G18A
|
||||||
|
default "samd21g18au" if CPU_MODEL_SAMD21G18AU
|
||||||
|
default "samd21j15a" if CPU_MODEL_SAMD21J15A
|
||||||
|
default "samd21j16a" if CPU_MODEL_SAMD21J16A
|
||||||
|
default "samd21j17a" if CPU_MODEL_SAMD21J17A
|
||||||
|
default "samd21j18a" if CPU_MODEL_SAMD21J18A
|
||||||
|
default "samd21e15bu" if CPU_MODEL_SAMD21E15BU
|
||||||
|
default "samd21e16bu" if CPU_MODEL_SAMD21E16BU
|
||||||
|
default "samd21e15b" if CPU_MODEL_SAMD21E15B
|
||||||
|
default "samd21e15cu" if CPU_MODEL_SAMD21E15CU
|
||||||
|
default "samd21e15l" if CPU_MODEL_SAMD21E15L
|
||||||
|
default "samd21e16b" if CPU_MODEL_SAMD21E16B
|
||||||
|
default "samd21e16cu" if CPU_MODEL_SAMD21E16CU
|
||||||
|
default "samd21e16l" if CPU_MODEL_SAMD21E16L
|
||||||
|
default "samd21g15b" if CPU_MODEL_SAMD21G15B
|
||||||
|
default "samd21g15l" if CPU_MODEL_SAMD21G15L
|
||||||
|
default "samd21g16b" if CPU_MODEL_SAMD21G16B
|
||||||
|
default "samd21g16l" if CPU_MODEL_SAMD21G16L
|
||||||
|
default "samd21j15b" if CPU_MODEL_SAMD21J15B
|
||||||
|
default "samd21j16b" if CPU_MODEL_SAMD21J16B
|
||||||
|
default "samd21e17d" if CPU_MODEL_SAMD21E17D
|
||||||
|
default "samd21e17du" if CPU_MODEL_SAMD21E17DU
|
||||||
|
default "samd21e17l" if CPU_MODEL_SAMD21E17L
|
||||||
|
default "samd21g17d" if CPU_MODEL_SAMD21G17D
|
||||||
|
default "samd21g17l" if CPU_MODEL_SAMD21G17L
|
||||||
|
default "samd21j17d" if CPU_MODEL_SAMD21J17D
|
||||||
37
cpu/samd21/Kconfig.samr21
Normal file
37
cpu/samd21/Kconfig.samr21
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
## CPU Models
|
||||||
|
config CPU_MODEL_SAMR21E16A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMR21E17A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMR21E18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMR21E19A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMR21G16A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMR21G17A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMR21G18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR21
|
||||||
|
|
||||||
|
config CPU_MODEL
|
||||||
|
default "samr21e16a" if CPU_MODEL_SAMR21E16A
|
||||||
|
default "samr21e17a" if CPU_MODEL_SAMR21E17A
|
||||||
|
default "samr21e18a" if CPU_MODEL_SAMR21E18A
|
||||||
|
default "samr21e19a" if CPU_MODEL_SAMR21E19A
|
||||||
|
default "samr21g16a" if CPU_MODEL_SAMR21G16A
|
||||||
|
default "samr21g17a" if CPU_MODEL_SAMR21G17A
|
||||||
|
default "samr21g18a" if CPU_MODEL_SAMR21G18A
|
||||||
@ -1,5 +1,4 @@
|
|||||||
CPU_CORE = cortex-m0plus
|
CPU_CORE = cortex-m0plus
|
||||||
CPU_FAM = samd21
|
|
||||||
|
|
||||||
FEATURES_PROVIDED += puf_sram
|
FEATURES_PROVIDED += puf_sram
|
||||||
|
|
||||||
|
|||||||
@ -14,5 +14,7 @@ ifneq (,$(filter samr21%,$(CPU_MODEL)))
|
|||||||
CFLAGS += -DCPU_SAMR21
|
CFLAGS += -DCPU_SAMR21
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
CFLAGS += -DCPU_COMMON_SAMD21
|
||||||
|
|
||||||
include $(RIOTCPU)/sam0_common/Makefile.include
|
include $(RIOTCPU)/sam0_common/Makefile.include
|
||||||
include $(RIOTMAKE)/arch/cortexm.inc.mk
|
include $(RIOTMAKE)/arch/cortexm.inc.mk
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
# directory for more details.
|
# directory for more details.
|
||||||
#
|
#
|
||||||
|
|
||||||
config CPU_FAM_SAMD5X
|
config CPU_COMMON_SAMD5X
|
||||||
bool
|
bool
|
||||||
select CPU_COMMON_SAM0
|
select CPU_COMMON_SAM0
|
||||||
select CPU_CORE_CORTEX_M4F
|
select CPU_CORE_CORTEX_M4F
|
||||||
@ -14,25 +14,29 @@ config CPU_FAM_SAMD5X
|
|||||||
select HAS_CPU_SAMD5X
|
select HAS_CPU_SAMD5X
|
||||||
select HAS_PERIPH_HWRNG
|
select HAS_PERIPH_HWRNG
|
||||||
|
|
||||||
## CPU Models
|
config CPU_FAM_SAMD51
|
||||||
config CPU_MODEL_SAME54P20A
|
|
||||||
bool
|
bool
|
||||||
select CPU_FAM_SAMD5X
|
select CPU_COMMON_SAMD5X
|
||||||
|
|
||||||
|
config CPU_FAM_SAME54
|
||||||
|
bool
|
||||||
|
select CPU_COMMON_SAMD5X
|
||||||
|
|
||||||
## Declaration of specific features
|
## Declaration of specific features
|
||||||
config HAS_CPU_SAMD5X
|
config HAS_CPU_SAMD5X
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
Indicates that a 'samd5x' cpu is being used.
|
Indicates that a SAMD5x/SAME5x cpu is being used.
|
||||||
|
|
||||||
## CPU common symbols
|
## CPU common symbols
|
||||||
config CPU_FAM
|
config CPU_FAM
|
||||||
default "samd5x" if CPU_FAM_SAMD5X
|
default "samd51" if CPU_FAM_SAMD51
|
||||||
|
default "same54" if CPU_FAM_SAME54
|
||||||
config CPU_MODEL
|
|
||||||
default "same54p20a" if CPU_MODEL_SAME54P20A
|
|
||||||
|
|
||||||
config CPU
|
config CPU
|
||||||
default "samd5x" if CPU_FAM_SAMD5X
|
default "samd5x" if CPU_COMMON_SAMD5X
|
||||||
|
|
||||||
|
source "$(RIOTCPU)/samd5x/Kconfig.samd51"
|
||||||
|
source "$(RIOTCPU)/samd5x/Kconfig.same54"
|
||||||
|
|
||||||
source "$(RIOTCPU)/sam0_common/Kconfig"
|
source "$(RIOTCPU)/sam0_common/Kconfig"
|
||||||
|
|||||||
47
cpu/samd5x/Kconfig.samd51
Normal file
47
cpu/samd5x/Kconfig.samd51
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
## CPU Models
|
||||||
|
config CPU_MODEL_SAMD51G18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD51
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD51G19A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD51
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD51J18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD51
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD51J19A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD51
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD51J20A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD51
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD51N19A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD51
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD51N20A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD51
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD51P19A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD51
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMD51P20A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMD51
|
||||||
|
|
||||||
|
config CPU_MODEL
|
||||||
|
default "samd51g18a" if CPU_MODEL_SAMD51G18A
|
||||||
|
default "samd51g19a" if CPU_MODEL_SAMD51G19A
|
||||||
|
default "samd51j18a" if CPU_MODEL_SAMD51J18A
|
||||||
|
default "samd51j19a" if CPU_MODEL_SAMD51J19A
|
||||||
|
default "samd51j20a" if CPU_MODEL_SAMD51J20A
|
||||||
|
default "samd51n19a" if CPU_MODEL_SAMD51N19A
|
||||||
|
default "samd51n20a" if CPU_MODEL_SAMD51N20A
|
||||||
|
default "samd51p19a" if CPU_MODEL_SAMD51P19A
|
||||||
|
default "samd51p20a" if CPU_MODEL_SAMD51P20A
|
||||||
22
cpu/samd5x/Kconfig.same54
Normal file
22
cpu/samd5x/Kconfig.same54
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
## CPU Models
|
||||||
|
config CPU_MODEL_SAME54N19A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAME54
|
||||||
|
|
||||||
|
config CPU_MODEL_SAME54N20A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAME54
|
||||||
|
|
||||||
|
config CPU_MODEL_SAME54P19A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAME54
|
||||||
|
|
||||||
|
config CPU_MODEL_SAME54P20A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAME54
|
||||||
|
|
||||||
|
config CPU_MODEL
|
||||||
|
default "same54n19a" if CPU_MODEL_SAME54N19A
|
||||||
|
default "same54n20a" if CPU_MODEL_SAME54N20A
|
||||||
|
default "same54p19a" if CPU_MODEL_SAME54P19A
|
||||||
|
default "same54p20a" if CPU_MODEL_SAME54P20A
|
||||||
@ -1,5 +1,4 @@
|
|||||||
CPU_CORE = cortex-m4f
|
CPU_CORE = cortex-m4f
|
||||||
CPU_FAM = samd5x
|
|
||||||
|
|
||||||
FEATURES_PROVIDED += periph_hwrng
|
FEATURES_PROVIDED += periph_hwrng
|
||||||
FEATURES_PROVIDED += backup_ram
|
FEATURES_PROVIDED += backup_ram
|
||||||
|
|||||||
@ -5,6 +5,8 @@ ifneq (,$(filter same54%,$(CPU_MODEL)))
|
|||||||
CFLAGS += -DCPU_SAME54
|
CFLAGS += -DCPU_SAME54
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
CFLAGS += -DCPU_COMMON_SAMD5X
|
||||||
|
|
||||||
# Slot size is determined by "((total_flash_size - RIOTBOOT_LEN) / 2)".
|
# Slot size is determined by "((total_flash_size - RIOTBOOT_LEN) / 2)".
|
||||||
# If RIOTBOOT_LEN uses an uneven number of flashpages, the remainder of the
|
# If RIOTBOOT_LEN uses an uneven number of flashpages, the remainder of the
|
||||||
# flash cannot be divided by two slots while staying FLASHPAGE_SIZE aligned.
|
# flash cannot be divided by two slots while staying FLASHPAGE_SIZE aligned.
|
||||||
|
|||||||
@ -20,15 +20,6 @@ config CPU_FAM_SAML11
|
|||||||
bool
|
bool
|
||||||
select CPU_COMMON_SAML1X
|
select CPU_COMMON_SAML1X
|
||||||
|
|
||||||
## CPU Models
|
|
||||||
config CPU_MODEL_SAML10E16A
|
|
||||||
bool
|
|
||||||
select CPU_FAM_SAML10
|
|
||||||
|
|
||||||
config CPU_MODEL_SAML11E16A
|
|
||||||
bool
|
|
||||||
select CPU_FAM_SAML11
|
|
||||||
|
|
||||||
## Declaration of specific features
|
## Declaration of specific features
|
||||||
config HAS_CPU_SAML1X
|
config HAS_CPU_SAML1X
|
||||||
bool
|
bool
|
||||||
@ -40,11 +31,10 @@ config CPU_FAM
|
|||||||
default "saml10" if CPU_FAM_SAML10
|
default "saml10" if CPU_FAM_SAML10
|
||||||
default "saml11" if CPU_FAM_SAML11
|
default "saml11" if CPU_FAM_SAML11
|
||||||
|
|
||||||
config CPU_MODEL
|
|
||||||
default "saml10e16a" if CPU_MODEL_SAML10E16A
|
|
||||||
default "saml11e16a" if CPU_MODEL_SAML11E16A
|
|
||||||
|
|
||||||
config CPU
|
config CPU
|
||||||
default "saml1x" if CPU_COMMON_SAML1X
|
default "saml1x" if CPU_COMMON_SAML1X
|
||||||
|
|
||||||
|
source "$(RIOTCPU)/saml1x/Kconfig.saml10"
|
||||||
|
source "$(RIOTCPU)/saml1x/Kconfig.saml11"
|
||||||
|
|
||||||
source "$(RIOTCPU)/sam0_common/Kconfig"
|
source "$(RIOTCPU)/sam0_common/Kconfig"
|
||||||
|
|||||||
32
cpu/saml1x/Kconfig.saml10
Normal file
32
cpu/saml1x/Kconfig.saml10
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
## CPU Models
|
||||||
|
config CPU_MODEL_SAML10D14A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML10
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML10D15A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML10
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML10D16A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML10
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML10E14A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML10
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML10E15A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML10
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML10E16A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML10
|
||||||
|
|
||||||
|
config CPU_MODEL
|
||||||
|
default "saml10d14a" if CPU_MODEL_SAML10D14A
|
||||||
|
default "saml10d15a" if CPU_MODEL_SAML10D15A
|
||||||
|
default "saml10d16a" if CPU_MODEL_SAML10D16A
|
||||||
|
default "saml10e14a" if CPU_MODEL_SAML10E14A
|
||||||
|
default "saml10e15a" if CPU_MODEL_SAML10E15A
|
||||||
|
default "saml10e16a" if CPU_MODEL_SAML10E16A
|
||||||
32
cpu/saml1x/Kconfig.saml11
Normal file
32
cpu/saml1x/Kconfig.saml11
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
## CPU Models
|
||||||
|
config CPU_MODEL_SAML11D14A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML11
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML11D15A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML11
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML11D16A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML11
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML11E14A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML11
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML11E15A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML11
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML11E16A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML11
|
||||||
|
|
||||||
|
config CPU_MODEL
|
||||||
|
default "saml11d14a" if CPU_MODEL_SAML11D14A
|
||||||
|
default "saml11d15a" if CPU_MODEL_SAML11D15A
|
||||||
|
default "saml11d16a" if CPU_MODEL_SAML11D16A
|
||||||
|
default "saml11e14a" if CPU_MODEL_SAML11E14A
|
||||||
|
default "saml11e15a" if CPU_MODEL_SAML11E15A
|
||||||
|
default "saml11e16a" if CPU_MODEL_SAML11E16A
|
||||||
@ -1,13 +1,5 @@
|
|||||||
CPU_CORE = cortex-m23
|
CPU_CORE = cortex-m23
|
||||||
|
|
||||||
ifneq (,$(filter saml10%,$(CPU_MODEL)))
|
|
||||||
CPU_FAM = saml10
|
|
||||||
else ifneq (,$(filter saml11%,$(CPU_MODEL)))
|
|
||||||
CPU_FAM = saml11
|
|
||||||
else
|
|
||||||
$(error Unknown saml1x CPU Model: $(CPU_MODEL))
|
|
||||||
endif
|
|
||||||
|
|
||||||
# TODO: The cortex-m23 MPU is not ported
|
# TODO: The cortex-m23 MPU is not ported
|
||||||
# FEATURES_PROVIDED += cortexm_mpu
|
# FEATURES_PROVIDED += cortexm_mpu
|
||||||
|
|
||||||
|
|||||||
@ -5,5 +5,7 @@ ifneq (,$(filter saml11%,$(CPU_MODEL)))
|
|||||||
CFLAGS += -DCPU_SAML11
|
CFLAGS += -DCPU_SAML11
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
CFLAGS += -DCPU_COMMON_SAML1X
|
||||||
|
|
||||||
include $(RIOTCPU)/sam0_common/Makefile.include
|
include $(RIOTCPU)/sam0_common/Makefile.include
|
||||||
include $(RIOTMAKE)/arch/cortexm.inc.mk
|
include $(RIOTMAKE)/arch/cortexm.inc.mk
|
||||||
|
|||||||
@ -5,31 +5,25 @@
|
|||||||
# directory for more details.
|
# directory for more details.
|
||||||
#
|
#
|
||||||
|
|
||||||
config CPU_FAM_SAML21
|
config CPU_COMMON_SAML21
|
||||||
bool
|
bool
|
||||||
select CPU_COMMON_SAM0
|
select CPU_COMMON_SAM0
|
||||||
select CPU_CORE_CORTEX_M0PLUS
|
select CPU_CORE_CORTEX_M0PLUS
|
||||||
select HAS_BACKUP_RAM
|
select HAS_BACKUP_RAM
|
||||||
select HAS_CPU_SAML21
|
select HAS_CPU_SAML21
|
||||||
|
|
||||||
## CPU Models
|
config CPU_FAM_SAML21
|
||||||
config CPU_MODEL_SAML21J18A
|
|
||||||
bool
|
bool
|
||||||
select CPU_FAM_SAML21
|
select CPU_COMMON_SAML21
|
||||||
select HAS_PERIPH_HWRNG
|
select HAS_PERIPH_HWRNG
|
||||||
|
|
||||||
config CPU_MODEL_SAML21J18B
|
config CPU_FAM_SAMR30
|
||||||
bool
|
bool
|
||||||
select CPU_FAM_SAML21
|
select CPU_COMMON_SAML21
|
||||||
select HAS_PERIPH_HWRNG
|
|
||||||
|
|
||||||
config CPU_MODEL_SAMR30G18A
|
config CPU_FAM_SAMR34
|
||||||
bool
|
bool
|
||||||
select CPU_FAM_SAML21
|
select CPU_COMMON_SAML21
|
||||||
|
|
||||||
config CPU_MODEL_SAMR34J18B
|
|
||||||
bool
|
|
||||||
select CPU_FAM_SAML21
|
|
||||||
select HAS_PERIPH_HWRNG
|
select HAS_PERIPH_HWRNG
|
||||||
|
|
||||||
## Declaration of specific features
|
## Declaration of specific features
|
||||||
@ -41,14 +35,14 @@ config HAS_CPU_SAML21
|
|||||||
## Common CPU symbols
|
## Common CPU symbols
|
||||||
config CPU_FAM
|
config CPU_FAM
|
||||||
default "saml21" if CPU_FAM_SAML21
|
default "saml21" if CPU_FAM_SAML21
|
||||||
|
default "samr30" if CPU_FAM_SAMR30
|
||||||
config CPU_MODEL
|
default "samr34" if CPU_FAM_SAMR34
|
||||||
default "saml21j18a" if CPU_MODEL_SAML21J18A
|
|
||||||
default "saml21j18b" if CPU_MODEL_SAML21J18B
|
|
||||||
default "samr30g18a" if CPU_MODEL_SAMR30G18A
|
|
||||||
default "samr34j18b" if CPU_MODEL_SAMR34J18B
|
|
||||||
|
|
||||||
config CPU
|
config CPU
|
||||||
default "saml21" if CPU_FAM_SAML21
|
default "saml21" if CPU_COMMON_SAML21
|
||||||
|
|
||||||
|
source "$(RIOTCPU)/saml21/Kconfig.saml21"
|
||||||
|
source "$(RIOTCPU)/saml21/Kconfig.samr30"
|
||||||
|
source "$(RIOTCPU)/saml21/Kconfig.samr34"
|
||||||
|
|
||||||
source "$(RIOTCPU)/sam0_common/Kconfig"
|
source "$(RIOTCPU)/sam0_common/Kconfig"
|
||||||
|
|||||||
77
cpu/saml21/Kconfig.saml21
Normal file
77
cpu/saml21/Kconfig.saml21
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
## CPU Models
|
||||||
|
config CPU_MODEL_SAML21E15B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21E16B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21E17B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21E18B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21G16B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21G17B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21G18B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21J16B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21J17B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21J17BU
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21J18B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21J18BU
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21E18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21G18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL_SAML21J18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAML21
|
||||||
|
|
||||||
|
config CPU_MODEL
|
||||||
|
default "saml21e15b" if CPU_MODEL_SAML21E15B
|
||||||
|
default "saml21e16b" if CPU_MODEL_SAML21E16B
|
||||||
|
default "saml21e17b" if CPU_MODEL_SAML21E17B
|
||||||
|
default "saml21e18b" if CPU_MODEL_SAML21E18B
|
||||||
|
default "saml21g16b" if CPU_MODEL_SAML21G16B
|
||||||
|
default "saml21g17b" if CPU_MODEL_SAML21G17B
|
||||||
|
default "saml21g18b" if CPU_MODEL_SAML21G18B
|
||||||
|
default "saml21j16b" if CPU_MODEL_SAML21J16B
|
||||||
|
default "saml21j17b" if CPU_MODEL_SAML21J17B
|
||||||
|
default "saml21j17bu" if CPU_MODEL_SAML21J17BU
|
||||||
|
default "saml21j18b" if CPU_MODEL_SAML21J18B
|
||||||
|
default "saml21j18bu" if CPU_MODEL_SAML21J18BU
|
||||||
|
default "saml21e18a" if CPU_MODEL_SAML21E18A
|
||||||
|
default "saml21g18a" if CPU_MODEL_SAML21G18A
|
||||||
|
default "saml21j18a" if CPU_MODEL_SAML21J18A
|
||||||
12
cpu/saml21/Kconfig.samr30
Normal file
12
cpu/saml21/Kconfig.samr30
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
## CPU Models
|
||||||
|
config CPU_MODEL_SAMR30E18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR30
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMR30G18A
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR30
|
||||||
|
|
||||||
|
config CPU_MODEL
|
||||||
|
default "samr30e18a" if CPU_MODEL_SAMR30E18A
|
||||||
|
default "samr30g18a" if CPU_MODEL_SAMR30G18A
|
||||||
17
cpu/saml21/Kconfig.samr34
Normal file
17
cpu/saml21/Kconfig.samr34
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
## CPU Models
|
||||||
|
config CPU_MODEL_SAMR34J16B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR34
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMR34J17B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR34
|
||||||
|
|
||||||
|
config CPU_MODEL_SAMR34J18B
|
||||||
|
bool
|
||||||
|
select CPU_FAM_SAMR34
|
||||||
|
|
||||||
|
config CPU_MODEL
|
||||||
|
default "samr34j16b" if CPU_MODEL_SAMR34J16B
|
||||||
|
default "samr34j17b" if CPU_MODEL_SAMR34J17B
|
||||||
|
default "samr34j18b" if CPU_MODEL_SAMR34J18B
|
||||||
@ -1,5 +1,4 @@
|
|||||||
CPU_CORE = cortex-m0plus
|
CPU_CORE = cortex-m0plus
|
||||||
CPU_FAM = saml21
|
|
||||||
|
|
||||||
# The SAMR30 line of MCUs does not contain a TRNG
|
# The SAMR30 line of MCUs does not contain a TRNG
|
||||||
CPU_MODELS_WITHOUT_HWRNG += samr30%
|
CPU_MODELS_WITHOUT_HWRNG += samr30%
|
||||||
|
|||||||
@ -11,6 +11,8 @@ ifneq (,$(filter samr34%,$(CPU_MODEL)))
|
|||||||
CFLAGS += -DCPU_SAMR34
|
CFLAGS += -DCPU_SAMR34
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
CFLAGS += -DCPU_COMMON_SAML21
|
||||||
|
|
||||||
ifneq (,$(filter saml21j18b saml21j18a samr30g18a samr34j18b,$(CPU_MODEL)))
|
ifneq (,$(filter saml21j18b saml21j18a samr30g18a samr34j18b,$(CPU_MODEL)))
|
||||||
BACKUP_RAM_ADDR = 0x30000000
|
BACKUP_RAM_ADDR = 0x30000000
|
||||||
BACKUP_RAM_LEN = 0x2000
|
BACKUP_RAM_LEN = 0x2000
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user