From bfdafe877efc98be5e1c01320fe9e21bbe6c03ac Mon Sep 17 00:00:00 2001 From: Federico Pellegrin Date: Sun, 2 Sep 2018 13:39:08 +0200 Subject: [PATCH] sam0_common: correct sercom_set_gen for sercom5. it assumes SERCOM5 GEN clock is in sequence, but is not, need to put a specific if test --- cpu/sam0_common/include/periph_cpu_common.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cpu/sam0_common/include/periph_cpu_common.h b/cpu/sam0_common/include/periph_cpu_common.h index e3bb094e5c..0643fe92a7 100644 --- a/cpu/sam0_common/include/periph_cpu_common.h +++ b/cpu/sam0_common/include/periph_cpu_common.h @@ -352,8 +352,13 @@ static inline void sercom_set_gen(void *sercom, uint32_t gclk) (SERCOM0_GCLK_ID_CORE + sercom_id(sercom))); while (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY) {} #elif defined(CPU_FAM_SAML21) - GCLK->PCHCTRL[SERCOM0_GCLK_ID_CORE + sercom_id(sercom)].reg = + if (sercom_id(sercom) < 5) { + GCLK->PCHCTRL[SERCOM0_GCLK_ID_CORE + sercom_id(sercom)].reg = (GCLK_PCHCTRL_CHEN | gclk); + } else { + GCLK->PCHCTRL[SERCOM5_GCLK_ID_CORE].reg = + (GCLK_PCHCTRL_CHEN | gclk); + } #endif }