From 6b6479e6e9d0b6a30261dee6eedc32acfa779e2a Mon Sep 17 00:00:00 2001 From: Francisco Molina Date: Fri, 28 Feb 2020 17:19:11 +0100 Subject: [PATCH] drivers/periph_common: add periph_init% module --- Makefile.dep | 16 ++++++++++++++-- drivers/periph_common/init.c | 33 +++++++++++++++++++-------------- makefiles/defaultmodules.inc.mk | 3 +++ 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/Makefile.dep b/Makefile.dep index 7db3606932..097694c6ba 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -1047,6 +1047,11 @@ FEATURES_REQUIRED += $(filter arch_%,$(FEATURES_PROVIDED)) # FEATURES_USED is defined in Makefile.features USEMODULE += $(filter periph_%,$(FEATURES_USED)) +# set all USED periph_% init modules as DEFAULT_MODULE +ifneq (,$(filter periph_init, $(USEMODULE))) + DEFAULT_MODULE += $(subst periph_,periph_init_,$(filter periph_%,$(FEATURES_USED))) +endif + # select cpu_check_address pseudomodule if the corresponding feature is used USEMODULE += $(filter cpu_check_address, $(FEATURES_USED)) @@ -1067,9 +1072,16 @@ ifneq ($(OLD_USEMODULE) $(OLD_USEPKG),$(USEMODULE) $(USEPKG)) else # Add auto_init_% DEFAULT_MODULES. This is done after the recursive cach since # none of these modules can trigger dependency resolution. + DEFAULT_MODULE := $(sort $(DEFAULT_MODULE)) ifneq (,$(filter auto_init,$(USEMODULE))) - DEFAULT_MODULE := $(sort $(DEFAULT_MODULE)) USEMODULE += $(filter auto_init_%,$(filter-out $(DISABLE_MODULE),$(DEFAULT_MODULE))) - USEMODULE := $(sort $(USEMODULE)) endif + + # Add auto_init_periph_% to DEFAULT_MODULES. This is done after the recursive + # cach since none of these modules can trigger dependency resolution. + ifneq (,$(filter periph_init,$(USEMODULE))) + USEMODULE += $(filter periph_init_%,$(filter-out $(DISABLE_MODULE),$(DEFAULT_MODULE))) + endif + + USEMODULE := $(sort $(USEMODULE)) endif diff --git a/drivers/periph_common/init.c b/drivers/periph_common/init.c index 099776e48c..6446f4ea35 100644 --- a/drivers/periph_common/init.c +++ b/drivers/periph_common/init.c @@ -22,63 +22,68 @@ #define USB_H_USER_IS_RIOT_INTERNAL -#ifdef MODULE_PERIPH_I2C +#ifdef MODULE_PERIPH_INIT +#ifdef MODULE_PERIPH_INIT_I2C #include "periph/i2c.h" #endif -#ifdef MODULE_PERIPH_SPI +#ifdef MODULE_PERIPH_INIT_SPI #include "periph/spi.h" #endif -#ifdef MODULE_PERIPH_RTC +#ifdef MODULE_PERIPH_INIT_RTC #include "periph/rtc.h" #endif -#ifdef MODULE_PERIPH_RTT +#ifdef MODULE_PERIPH_INIT_RTT #include "periph/rtt.h" #endif -#ifdef MODULE_PERIPH_HWRNG +#ifdef MODULE_PERIPH_INIT_HWRNG #include "periph/hwrng.h" #endif -#ifdef MODULE_PERIPH_USBDEV +#ifdef MODULE_PERIPH_INIT_USBDEV #include "periph/usbdev.h" #endif -#ifdef MODULE_PERIPH_WDT +#ifdef MODULE_PERIPH_INIT_WDT #include "periph/wdt.h" #endif +#endif /* MODULE_PERIPH_INIT */ void periph_init(void) { +#ifdef MODULE_PERIPH_INIT /* initialize configured I2C devices */ -#ifdef MODULE_PERIPH_I2C +#ifdef MODULE_PERIPH_INIT_I2C for (unsigned i = 0; i < I2C_NUMOF; i++) { i2c_init(I2C_DEV(i)); } #endif /* initialize configured SPI devices */ -#ifdef MODULE_PERIPH_SPI +#ifdef MODULE_PERIPH_INIT_SPI for (unsigned i = 0; i < SPI_NUMOF; i++) { spi_init(SPI_DEV(i)); } #endif /* Initialize RTC */ -#ifdef MODULE_PERIPH_RTC +#ifdef MODULE_PERIPH_INIT_RTC rtc_init(); #endif /* Initialize RTT */ -#ifdef MODULE_PERIPH_RTT +#ifdef MODULE_PERIPH_INIT_RTT rtt_init(); #endif -#ifdef MODULE_PERIPH_HWRNG +#ifdef MODULE_PERIPH_INIT_HWRNG hwrng_init(); #endif -#ifdef MODULE_PERIPH_USBDEV +#ifdef MODULE_PERIPH_INIT_USBDEV usbdev_init_lowlevel(); #endif -#if defined(MODULE_PERIPH_WDT) && WDT_HAS_INIT +#if defined(MODULE_PERIPH_INIT_WDT) && WDT_HAS_INIT wdt_init(); #endif + +#endif /* MODULE_PERIPH_INIT */ } diff --git a/makefiles/defaultmodules.inc.mk b/makefiles/defaultmodules.inc.mk index 3f770093a8..2eee5cad37 100644 --- a/makefiles/defaultmodules.inc.mk +++ b/makefiles/defaultmodules.inc.mk @@ -1,3 +1,6 @@ DEFAULT_MODULE += board cpu core core_init core_msg core_panic sys DEFAULT_MODULE += auto_init + +# Initialize all used peripherals by default +DEFAULT_MODULE += periph_init