From 5e719816d27b035f73bd9b6f0c624671787bc8f7 Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Thu, 31 Dec 2020 17:35:05 +0100 Subject: [PATCH 1/6] cpu/stm32/kconfigs: select cpu fam/lines without mco prescaler --- cpu/stm32/kconfigs/Kconfig.clk | 5 +++++ cpu/stm32/kconfigs/f0/Kconfig.lines | 3 +++ cpu/stm32/kconfigs/f1/Kconfig | 1 + cpu/stm32/kconfigs/f3/Kconfig.lines | 5 +++++ 4 files changed, 14 insertions(+) diff --git a/cpu/stm32/kconfigs/Kconfig.clk b/cpu/stm32/kconfigs/Kconfig.clk index bf5cbb9f3e..4bab7415a1 100644 --- a/cpu/stm32/kconfigs/Kconfig.clk +++ b/cpu/stm32/kconfigs/Kconfig.clk @@ -5,6 +5,11 @@ # directory for more details. # +config CLOCK_HAS_NO_MCO_PRE + bool + help + Indicates that the CPU has no MCO prescaler + menu "STM32 clock configuration" depends on !CPU_FAM_F2 && !CPU_FAM_F4 && !CPU_FAM_F7 diff --git a/cpu/stm32/kconfigs/f0/Kconfig.lines b/cpu/stm32/kconfigs/f0/Kconfig.lines index e5c49e4152..ea0c5682f0 100644 --- a/cpu/stm32/kconfigs/f0/Kconfig.lines +++ b/cpu/stm32/kconfigs/f0/Kconfig.lines @@ -17,6 +17,7 @@ config CPU_LINE_STM32F030X6 config CPU_LINE_STM32F030X8 bool select CPU_FAM_F0 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F030XC bool @@ -41,10 +42,12 @@ config CPU_LINE_STM32F048XX config CPU_LINE_STM32F051X8 bool select CPU_FAM_F0 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F058XX bool select CPU_FAM_F0 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F070X6 bool diff --git a/cpu/stm32/kconfigs/f1/Kconfig b/cpu/stm32/kconfigs/f1/Kconfig index 3cd94fefc2..dbd41b2bf0 100644 --- a/cpu/stm32/kconfigs/f1/Kconfig +++ b/cpu/stm32/kconfigs/f1/Kconfig @@ -15,6 +15,7 @@ config CPU_FAM_F1 select HAS_PERIPH_FLASHPAGE_RAW select HAS_PERIPH_WDT select HAS_BOOTLOADER_STM32 + select CLOCK_HAS_NO_MCO_PRE config CPU_FAM default "f1" if CPU_FAM_F1 diff --git a/cpu/stm32/kconfigs/f3/Kconfig.lines b/cpu/stm32/kconfigs/f3/Kconfig.lines index 32681ab63e..8a07aaf22f 100644 --- a/cpu/stm32/kconfigs/f3/Kconfig.lines +++ b/cpu/stm32/kconfigs/f3/Kconfig.lines @@ -21,6 +21,7 @@ config CPU_LINE_STM32F302X8 config CPU_LINE_STM32F302XC bool select CPU_FAM_F3 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F302XE bool @@ -34,6 +35,7 @@ config CPU_LINE_STM32F303XC bool select CPU_FAM_F3 select HAS_CORTEXM_MPU + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F303XE bool @@ -55,14 +57,17 @@ config CPU_LINE_STM32F334X8 config CPU_LINE_STM32F358XX bool select CPU_FAM_F3 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F373XC bool select CPU_FAM_F3 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F378XX bool select CPU_FAM_F3 + select CLOCK_HAS_NO_MCO_PRE config CPU_LINE_STM32F398XX bool From 1f0e6c105768d8c9081cb0a285e618467bd80698 Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Thu, 31 Dec 2020 17:35:41 +0100 Subject: [PATCH 2/6] cpu/stm32: model MCO in Kconfig for f0/f1/f3 --- cpu/stm32/kconfigs/Kconfig.clk | 68 ++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/cpu/stm32/kconfigs/Kconfig.clk b/cpu/stm32/kconfigs/Kconfig.clk index 4bab7415a1..c25d947073 100644 --- a/cpu/stm32/kconfigs/Kconfig.clk +++ b/cpu/stm32/kconfigs/Kconfig.clk @@ -373,4 +373,72 @@ config CLOCK_APB2_DIV default 8 if CLOCK_APB2_DIV_8 default 16 if CLOCK_APB2_DIV_16 +if CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 +config CLOCK_ENABLE_MCO + bool "Enable MCU Clock Output (MCO) on PA8" + +choice +bool "MCO source" +depends on CLOCK_ENABLE_MCO +default CLOCK_MCO_USE_PLLCLK + +config CLOCK_MCO_USE_PLLCLK + bool "Use PLLCLK as MCO source" + +config CLOCK_MCO_USE_HSE + bool "Use HSE as MCO source" + +config CLOCK_MCO_USE_HSI + bool "Use HSI as MCO source" + +config CLOCK_MCO_USE_SYSCLK + bool "Use SYSCLK as MCO source" + +endchoice + +choice +bool "MCO prescaler" +depends on !CLOCK_HAS_NO_MCO_PRE && CLOCK_ENABLE_MCO +default CLOCK_MCO_PRE_1 + +config CLOCK_MCO_PRE_1 + bool "Divide MCO by 1" + +config CLOCK_MCO_PRE_2 + bool "Divide MCO by 2" + +config CLOCK_MCO_PRE_4 + bool "Divide MCO by 4" + +config CLOCK_MCO_PRE_8 + bool "Divide MCO by 8" + +config CLOCK_MCO_PRE_16 + bool "Divide MCO by 16" + +config CLOCK_MCO_PRE_32 + bool "Divide MCO by 32" + +config CLOCK_MCO_PRE_64 + bool "Divide MCO by 64" + +config CLOCK_MCO_PRE_128 + bool "Divide MCO by 128" + +endchoice + +config CLOCK_MCO_PRE + int + default 2 if CLOCK_MCO_PRE_2 + default 4 if CLOCK_MCO_PRE_4 + default 8 if CLOCK_MCO_PRE_8 + default 16 if CLOCK_MCO_PRE_16 + default 32 if CLOCK_MCO_PRE_32 + default 64 if CLOCK_MCO_PRE_64 + default 128 if CLOCK_MCO_PRE_128 + default 1 + +endif # CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 + + endmenu From a9b154b4ac6008ac77c9090545673bd77c4ec56c Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Thu, 31 Dec 2020 17:41:25 +0100 Subject: [PATCH 3/6] cpu/stm32: model MCO in Kconfig for g0/g4 --- cpu/stm32/kconfigs/Kconfig.clk | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/cpu/stm32/kconfigs/Kconfig.clk b/cpu/stm32/kconfigs/Kconfig.clk index c25d947073..799f28115e 100644 --- a/cpu/stm32/kconfigs/Kconfig.clk +++ b/cpu/stm32/kconfigs/Kconfig.clk @@ -373,7 +373,7 @@ config CLOCK_APB2_DIV default 8 if CLOCK_APB2_DIV_8 default 16 if CLOCK_APB2_DIV_16 -if CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 +if CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 config CLOCK_ENABLE_MCO bool "Enable MCU Clock Output (MCO) on PA8" @@ -391,6 +391,12 @@ config CLOCK_MCO_USE_HSE config CLOCK_MCO_USE_HSI bool "Use HSI as MCO source" +config CLOCK_MCO_USE_LSE + bool "Use LSE as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 + +config CLOCK_MCO_USE_LSI + bool "Use LSI as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 + config CLOCK_MCO_USE_SYSCLK bool "Use SYSCLK as MCO source" @@ -417,13 +423,13 @@ config CLOCK_MCO_PRE_16 bool "Divide MCO by 16" config CLOCK_MCO_PRE_32 - bool "Divide MCO by 32" + bool "Divide MCO by 32" if !CPU_FAM_G4 config CLOCK_MCO_PRE_64 - bool "Divide MCO by 64" + bool "Divide MCO by 64" if !CPU_FAM_G4 config CLOCK_MCO_PRE_128 - bool "Divide MCO by 128" + bool "Divide MCO by 128" if !CPU_FAM_G4 endchoice @@ -438,7 +444,6 @@ config CLOCK_MCO_PRE default 128 if CLOCK_MCO_PRE_128 default 1 -endif # CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 - +endif # CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 endmenu From 0e39c2ba17184aabfb5d32705d89d6f310ffd6fe Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Thu, 31 Dec 2020 17:44:49 +0100 Subject: [PATCH 4/6] cpu/stm32: model MCO in Kconfig for l0/l1 --- cpu/stm32/kconfigs/Kconfig.clk | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/cpu/stm32/kconfigs/Kconfig.clk b/cpu/stm32/kconfigs/Kconfig.clk index 799f28115e..29f4b6d7fd 100644 --- a/cpu/stm32/kconfigs/Kconfig.clk +++ b/cpu/stm32/kconfigs/Kconfig.clk @@ -373,7 +373,7 @@ config CLOCK_APB2_DIV default 8 if CLOCK_APB2_DIV_8 default 16 if CLOCK_APB2_DIV_16 -if CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 +if CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 config CLOCK_ENABLE_MCO bool "Enable MCU Clock Output (MCO) on PA8" @@ -392,10 +392,13 @@ config CLOCK_MCO_USE_HSI bool "Use HSI as MCO source" config CLOCK_MCO_USE_LSE - bool "Use LSE as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 + bool "Use LSE as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 config CLOCK_MCO_USE_LSI - bool "Use LSI as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 + bool "Use LSI as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 + +config CLOCK_MCO_USE_MSI + bool "Use MSI as MCO source" if CPU_FAM_L0 || CPU_FAM_L1 config CLOCK_MCO_USE_SYSCLK bool "Use SYSCLK as MCO source" @@ -423,13 +426,13 @@ config CLOCK_MCO_PRE_16 bool "Divide MCO by 16" config CLOCK_MCO_PRE_32 - bool "Divide MCO by 32" if !CPU_FAM_G4 + bool "Divide MCO by 32" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 config CLOCK_MCO_PRE_64 - bool "Divide MCO by 64" if !CPU_FAM_G4 + bool "Divide MCO by 64" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 config CLOCK_MCO_PRE_128 - bool "Divide MCO by 128" if !CPU_FAM_G4 + bool "Divide MCO by 128" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 endchoice @@ -444,6 +447,6 @@ config CLOCK_MCO_PRE default 128 if CLOCK_MCO_PRE_128 default 1 -endif # CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 +endif # CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 endmenu From e8a5493080b773def2ebb0e163109ce5ee5c904c Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Thu, 31 Dec 2020 17:46:56 +0100 Subject: [PATCH 5/6] cpu/stm32: model MCO in Kconfig for l4/wb --- cpu/stm32/kconfigs/Kconfig.clk | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cpu/stm32/kconfigs/Kconfig.clk b/cpu/stm32/kconfigs/Kconfig.clk index 29f4b6d7fd..d6b4a2ae4a 100644 --- a/cpu/stm32/kconfigs/Kconfig.clk +++ b/cpu/stm32/kconfigs/Kconfig.clk @@ -373,7 +373,7 @@ config CLOCK_APB2_DIV default 8 if CLOCK_APB2_DIV_8 default 16 if CLOCK_APB2_DIV_16 -if CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 +if CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB config CLOCK_ENABLE_MCO bool "Enable MCU Clock Output (MCO) on PA8" @@ -392,13 +392,13 @@ config CLOCK_MCO_USE_HSI bool "Use HSI as MCO source" config CLOCK_MCO_USE_LSE - bool "Use LSE as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 + bool "Use LSE as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB config CLOCK_MCO_USE_LSI - bool "Use LSI as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 + bool "Use LSI as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB config CLOCK_MCO_USE_MSI - bool "Use MSI as MCO source" if CPU_FAM_L0 || CPU_FAM_L1 + bool "Use MSI as MCO source" if CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB config CLOCK_MCO_USE_SYSCLK bool "Use SYSCLK as MCO source" @@ -426,13 +426,13 @@ config CLOCK_MCO_PRE_16 bool "Divide MCO by 16" config CLOCK_MCO_PRE_32 - bool "Divide MCO by 32" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 + bool "Divide MCO by 32" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB config CLOCK_MCO_PRE_64 - bool "Divide MCO by 64" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 + bool "Divide MCO by 64" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB config CLOCK_MCO_PRE_128 - bool "Divide MCO by 128" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 + bool "Divide MCO by 128" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB endchoice @@ -447,6 +447,6 @@ config CLOCK_MCO_PRE default 128 if CLOCK_MCO_PRE_128 default 1 -endif # CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 +endif # CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3 || CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB endmenu From d027454ad41b11c7886f61cca61b480e362c8bf8 Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Thu, 7 Jan 2021 16:07:04 +0100 Subject: [PATCH 6/6] cpu/stm32/kconfig: use depends on instead of if --- cpu/stm32/kconfigs/Kconfig.clk | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/cpu/stm32/kconfigs/Kconfig.clk b/cpu/stm32/kconfigs/Kconfig.clk index d6b4a2ae4a..f30d26338d 100644 --- a/cpu/stm32/kconfigs/Kconfig.clk +++ b/cpu/stm32/kconfigs/Kconfig.clk @@ -392,13 +392,16 @@ config CLOCK_MCO_USE_HSI bool "Use HSI as MCO source" config CLOCK_MCO_USE_LSE - bool "Use LSE as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB + bool "Use LSE as MCO source" + depends on CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB config CLOCK_MCO_USE_LSI - bool "Use LSI as MCO source" if CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB + bool "Use LSI as MCO source" + depends on CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB config CLOCK_MCO_USE_MSI - bool "Use MSI as MCO source" if CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB + bool "Use MSI as MCO source" + depends on CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_WB config CLOCK_MCO_USE_SYSCLK bool "Use SYSCLK as MCO source" @@ -426,13 +429,16 @@ config CLOCK_MCO_PRE_16 bool "Divide MCO by 16" config CLOCK_MCO_PRE_32 - bool "Divide MCO by 32" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB + bool "Divide MCO by 32" + depends on !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB config CLOCK_MCO_PRE_64 - bool "Divide MCO by 64" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB + bool "Divide MCO by 64" + depends on !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB config CLOCK_MCO_PRE_128 - bool "Divide MCO by 128" if !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB + bool "Divide MCO by 128" + depends on !CPU_FAM_G4 && !CPU_FAM_L0 && !CPU_FAM_L1 && !CPU_FAM_L4 && !CPU_FAM_WB endchoice