mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-16 10:03:50 +01:00
ztimer: don't interact with pm_layered if ztimer_ondemand is used
This commit is contained in:
parent
ccbb304eae
commit
904dc0131f
@ -379,8 +379,9 @@ struct ztimer_clock {
|
|||||||
uint32_t lower_last; /**< timer value at last now() call */
|
uint32_t lower_last; /**< timer value at last now() call */
|
||||||
ztimer_now_t checkpoint; /**< cumulated time at last now() call */
|
ztimer_now_t checkpoint; /**< cumulated time at last now() call */
|
||||||
#endif
|
#endif
|
||||||
#if MODULE_PM_LAYERED || DOXYGEN
|
#if MODULE_PM_LAYERED && !MODULE_ZTIMER_ONDEMAND || DOXYGEN
|
||||||
uint8_t block_pm_mode; /**< min. pm mode to block for the clock to run */
|
uint8_t block_pm_mode; /**< min. pm mode to block for the clock to run
|
||||||
|
don't use in combination with ztimer_ondemand! */
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -228,6 +228,12 @@ config MODULE_ZTIMER_MOCK
|
|||||||
manually fired to simulate different scenarios and test the ztimer
|
manually fired to simulate different scenarios and test the ztimer
|
||||||
implementation using this as a backing timer.
|
implementation using this as a backing timer.
|
||||||
|
|
||||||
|
config MODULE_ZTIMER_ONDEMAND
|
||||||
|
bool "Run ztimer clocks only on demand"
|
||||||
|
help
|
||||||
|
This ztimer extensions keeps track of ztimer users and may disable
|
||||||
|
underlying peripherals if not users are requiring a ztimer clock.
|
||||||
|
|
||||||
config MODULE_ZTIMER_INIT
|
config MODULE_ZTIMER_INIT
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
|||||||
@ -46,7 +46,7 @@ void ztimer_convert_init(ztimer_convert_t *ztimer_convert,
|
|||||||
.arg = ztimer_convert,
|
.arg = ztimer_convert,
|
||||||
},
|
},
|
||||||
.super.max_value = max_value,
|
.super.max_value = max_value,
|
||||||
# ifdef MODULE_PM_LAYERED
|
# if MODULE_PM_LAYERED && !MODULE_ZTIMER_ONDEMAND
|
||||||
.super.block_pm_mode = ZTIMER_CLOCK_NO_REQUIRED_PM_MODE,
|
.super.block_pm_mode = ZTIMER_CLOCK_NO_REQUIRED_PM_MODE,
|
||||||
# endif
|
# endif
|
||||||
};
|
};
|
||||||
|
|||||||
@ -111,7 +111,7 @@ void ztimer_convert_frac_init(ztimer_convert_frac_t *self,
|
|||||||
self->round = freq_self / freq_lower;
|
self->round = freq_self / freq_lower;
|
||||||
self->super.super.max_value = UINT32_MAX;
|
self->super.super.max_value = UINT32_MAX;
|
||||||
}
|
}
|
||||||
#ifdef MODULE_PM_LAYERED
|
#if MODULE_PM_LAYERED && !MODULE_ZTIMER_ONDEMAND
|
||||||
self->super.super.block_pm_mode = ZTIMER_CLOCK_NO_REQUIRED_PM_MODE;
|
self->super.super.block_pm_mode = ZTIMER_CLOCK_NO_REQUIRED_PM_MODE;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
#include "kernel_defines.h"
|
#include "kernel_defines.h"
|
||||||
#include "irq.h"
|
#include "irq.h"
|
||||||
#ifdef MODULE_PM_LAYERED
|
#if MODULE_PM_LAYERED && !MODULE_ZTIMER_ONDEMAND
|
||||||
#include "pm_layered.h"
|
#include "pm_layered.h"
|
||||||
#endif
|
#endif
|
||||||
#include "ztimer.h"
|
#include "ztimer.h"
|
||||||
@ -127,7 +127,7 @@ static void _add_entry_to_list(ztimer_clock_t *clock, ztimer_base_t *entry)
|
|||||||
|
|
||||||
ztimer_base_t *list = &clock->list;
|
ztimer_base_t *list = &clock->list;
|
||||||
|
|
||||||
#ifdef MODULE_PM_LAYERED
|
#if MODULE_PM_LAYERED && !MODULE_ZTIMER_ONDEMAND
|
||||||
/* First timer on the clock's linked list */
|
/* First timer on the clock's linked list */
|
||||||
if (list->next == NULL &&
|
if (list->next == NULL &&
|
||||||
clock->block_pm_mode != ZTIMER_CLOCK_NO_REQUIRED_PM_MODE) {
|
clock->block_pm_mode != ZTIMER_CLOCK_NO_REQUIRED_PM_MODE) {
|
||||||
@ -266,7 +266,7 @@ static bool _del_entry_from_list(ztimer_clock_t *clock, ztimer_base_t *entry)
|
|||||||
list = list->next;
|
list = list->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MODULE_PM_LAYERED
|
#if MODULE_PM_LAYERED && !MODULE_ZTIMER_ONDEMAND
|
||||||
/* The last timer just got removed from the clock's linked list */
|
/* The last timer just got removed from the clock's linked list */
|
||||||
if (clock->list.next == NULL &&
|
if (clock->list.next == NULL &&
|
||||||
clock->block_pm_mode != ZTIMER_CLOCK_NO_REQUIRED_PM_MODE) {
|
clock->block_pm_mode != ZTIMER_CLOCK_NO_REQUIRED_PM_MODE) {
|
||||||
@ -286,7 +286,7 @@ static ztimer_t *_now_next(ztimer_clock_t *clock)
|
|||||||
if (!entry->next) {
|
if (!entry->next) {
|
||||||
/* The last timer just got removed from the clock's linked list */
|
/* The last timer just got removed from the clock's linked list */
|
||||||
clock->last = NULL;
|
clock->last = NULL;
|
||||||
#ifdef MODULE_PM_LAYERED
|
#if MODULE_PM_LAYERED && !MODULE_ZTIMER_ONDEMAND
|
||||||
if (clock->block_pm_mode != ZTIMER_CLOCK_NO_REQUIRED_PM_MODE) {
|
if (clock->block_pm_mode != ZTIMER_CLOCK_NO_REQUIRED_PM_MODE) {
|
||||||
pm_unblock(clock->block_pm_mode);
|
pm_unblock(clock->block_pm_mode);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -292,7 +292,7 @@ void ztimer_init(void)
|
|||||||
CONFIG_ZTIMER_USEC_WIDTH);
|
CONFIG_ZTIMER_USEC_WIDTH);
|
||||||
ztimer_periph_timer_init(&ZTIMER_TIMER, CONFIG_ZTIMER_USEC_DEV,
|
ztimer_periph_timer_init(&ZTIMER_TIMER, CONFIG_ZTIMER_USEC_DEV,
|
||||||
ZTIMER_TIMER_FREQ, WIDTH_TO_MAXVAL(CONFIG_ZTIMER_USEC_WIDTH));
|
ZTIMER_TIMER_FREQ, WIDTH_TO_MAXVAL(CONFIG_ZTIMER_USEC_WIDTH));
|
||||||
# ifdef MODULE_PM_LAYERED
|
# if MODULE_PM_LAYERED && !MODULE_ZTIMER_ONDEMAND
|
||||||
LOG_DEBUG("ztimer_init(): ZTIMER_TIMER setting block_pm_mode to %i\n",
|
LOG_DEBUG("ztimer_init(): ZTIMER_TIMER setting block_pm_mode to %i\n",
|
||||||
CONFIG_ZTIMER_TIMER_BLOCK_PM_MODE);
|
CONFIG_ZTIMER_TIMER_BLOCK_PM_MODE);
|
||||||
ZTIMER_TIMER_CLK.block_pm_mode = CONFIG_ZTIMER_TIMER_BLOCK_PM_MODE;
|
ZTIMER_TIMER_CLK.block_pm_mode = CONFIG_ZTIMER_TIMER_BLOCK_PM_MODE;
|
||||||
@ -306,7 +306,7 @@ void ztimer_init(void)
|
|||||||
CONFIG_ZTIMER_LPTIMER_WIDTH);
|
CONFIG_ZTIMER_LPTIMER_WIDTH);
|
||||||
ztimer_periph_timer_init(&ZTIMER_LPTIMER, CONFIG_ZTIMER_LPTIMER_DEV,
|
ztimer_periph_timer_init(&ZTIMER_LPTIMER, CONFIG_ZTIMER_LPTIMER_DEV,
|
||||||
ZTIMER_LPTIMER_FREQ, WIDTH_TO_MAXVAL(CONFIG_ZTIMER_LPTIMER_WIDTH));
|
ZTIMER_LPTIMER_FREQ, WIDTH_TO_MAXVAL(CONFIG_ZTIMER_LPTIMER_WIDTH));
|
||||||
# ifdef MODULE_PM_LAYERED
|
# if MODULE_PM_LAYERED && !MODULE_ZTIMER_ONDEMAND
|
||||||
LOG_DEBUG("ztimer_init(): ZTIMER_LPTIMER setting block_pm_mode to %i\n",
|
LOG_DEBUG("ztimer_init(): ZTIMER_LPTIMER setting block_pm_mode to %i\n",
|
||||||
CONFIG_ZTIMER_LPTIMER_BLOCK_PM_MODE);
|
CONFIG_ZTIMER_LPTIMER_BLOCK_PM_MODE);
|
||||||
ZTIMER_LPTIMER_CLK.block_pm_mode = CONFIG_ZTIMER_LPTIMER_BLOCK_PM_MODE;
|
ZTIMER_LPTIMER_CLK.block_pm_mode = CONFIG_ZTIMER_LPTIMER_BLOCK_PM_MODE;
|
||||||
@ -316,7 +316,7 @@ void ztimer_init(void)
|
|||||||
#if INIT_ZTIMER_RTT
|
#if INIT_ZTIMER_RTT
|
||||||
LOG_DEBUG("ztimer_init(): initializing rtt\n");
|
LOG_DEBUG("ztimer_init(): initializing rtt\n");
|
||||||
ztimer_periph_rtt_init(&ZTIMER_RTT);
|
ztimer_periph_rtt_init(&ZTIMER_RTT);
|
||||||
# ifdef MODULE_PM_LAYERED
|
# if MODULE_PM_LAYERED && !MODULE_ZTIMER_ONDEMAND
|
||||||
LOG_DEBUG("ztimer_init(): ZTIMER_RTT setting block_pm_mode to %i\n",
|
LOG_DEBUG("ztimer_init(): ZTIMER_RTT setting block_pm_mode to %i\n",
|
||||||
CONFIG_ZTIMER_RTT_BLOCK_PM_MODE);
|
CONFIG_ZTIMER_RTT_BLOCK_PM_MODE);
|
||||||
ZTIMER_RTT_CLK.block_pm_mode = CONFIG_ZTIMER_RTT_BLOCK_PM_MODE;
|
ZTIMER_RTT_CLK.block_pm_mode = CONFIG_ZTIMER_RTT_BLOCK_PM_MODE;
|
||||||
@ -326,7 +326,7 @@ void ztimer_init(void)
|
|||||||
#if INIT_ZTIMER_RTC
|
#if INIT_ZTIMER_RTC
|
||||||
LOG_DEBUG("ztimer_init(): initializing rtc\n");
|
LOG_DEBUG("ztimer_init(): initializing rtc\n");
|
||||||
ztimer_periph_rtc_init(&ZTIMER_RTC);
|
ztimer_periph_rtc_init(&ZTIMER_RTC);
|
||||||
# ifdef MODULE_PM_LAYERED
|
# if MODULE_PM_LAYERED && !MODULE_ZTIMER_ONDEMAND
|
||||||
LOG_DEBUG("ztimer_init(): ZTIMER_RTC setting block_pm_mode to %i\n",
|
LOG_DEBUG("ztimer_init(): ZTIMER_RTC setting block_pm_mode to %i\n",
|
||||||
CONFIG_ZTIMER_RTC_BLOCK_PM_MODE);
|
CONFIG_ZTIMER_RTC_BLOCK_PM_MODE);
|
||||||
ZTIMER_RTC_CLK.block_pm_mode = CONFIG_ZTIMER_RTC_BLOCK_PM_MODE;
|
ZTIMER_RTC_CLK.block_pm_mode = CONFIG_ZTIMER_RTC_BLOCK_PM_MODE;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user