Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions Makefile.dep
Original file line number Diff line number Diff line change
Expand Up @@ -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))

Expand All @@ -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
33 changes: 19 additions & 14 deletions drivers/periph_common/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
}
3 changes: 3 additions & 0 deletions makefiles/defaultmodules.inc.mk
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion tests/periph_rtt/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ include ../Makefile.tests_common

FEATURES_REQUIRED = periph_rtt

DISABLE_MODULE += auto_init
DISABLE_MODULE += periph_init_rtt

include $(RIOTBASE)/Makefile.include
4 changes: 0 additions & 4 deletions tests/periph_rtt/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@
#include "periph_conf.h"
#include "periph/rtt.h"

#include "test_utils/interactive_sync.h"

#define TICKS_TO_WAIT (5 * RTT_FREQUENCY)

static volatile uint32_t last;
Expand All @@ -48,8 +46,6 @@ void cb(void *arg)

int main(void)
{
test_utils_interactive_sync();

puts("\nRIOT RTT low-level driver test");
puts("This test will display 'Hello' every 5 seconds\n");

Expand Down