diff --git a/cpu/saml21/cpu.c b/cpu/saml21/cpu.c index 0cae6a1e23..4f9a904689 100644 --- a/cpu/saml21/cpu.c +++ b/cpu/saml21/cpu.c @@ -82,8 +82,14 @@ static void _xosc32k_setup(void) void sam0_gclk_enable(uint8_t id) { - (void) id; - /* clocks are always running */ + switch(id) { + case SAM0_GCLK_48MHZ: + _gclk_setup(SAM0_GCLK_48MHZ, GCLK_GENCTRL_GENEN | + GCLK_GENCTRL_SRC_DFLL48M); + break; + default: + break; + } } uint32_t sam0_gclk_freq(uint8_t id) @@ -95,6 +101,8 @@ uint32_t sam0_gclk_freq(uint8_t id) return 8000000; case SAM0_GCLK_32KHZ: return 32768; + case SAM0_GCLK_48MHZ: + return 48000000; default: return 0; } diff --git a/cpu/saml21/include/periph_cpu.h b/cpu/saml21/include/periph_cpu.h index 4d62fb1017..d7f0345026 100644 --- a/cpu/saml21/include/periph_cpu.h +++ b/cpu/saml21/include/periph_cpu.h @@ -46,6 +46,7 @@ enum { SAM0_GCLK_MAIN = 0, /**< Main clock */ SAM0_GCLK_8MHZ = 1, /**< 8MHz clock */ SAM0_GCLK_32KHZ = 2, /**< 32 kHz clock */ + SAM0_GCLK_48MHZ = 3, /**< 48MHz clock */ }; /** @} */