drivers/timer: Select tickless via driver kconfig flag
Add a TICKLESS_CAPABLE kconfig variable which is used by the kernel to select tickless mode's default automatically on drivers that support it (rather than having to set the default per-board). Select it from the ARM SysTick and Intel HPET drivers. Also remove the old qemu_cortex_m3 default settings which this replaces. Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
This commit is contained in:
parent
ea35343eb1
commit
c0a184c067
3 changed files with 13 additions and 8 deletions
|
@ -7,10 +7,4 @@ config BUILD_OUTPUT_BIN
|
||||||
config BOARD
|
config BOARD
|
||||||
default "qemu_cortex_m3"
|
default "qemu_cortex_m3"
|
||||||
|
|
||||||
config TICKLESS_IDLE
|
|
||||||
default y
|
|
||||||
|
|
||||||
config TICKLESS_KERNEL
|
|
||||||
default y
|
|
||||||
|
|
||||||
endif # BOARD_QEMU_CORTEX_M3
|
endif # BOARD_QEMU_CORTEX_M3
|
||||||
|
|
|
@ -132,6 +132,7 @@ config CORTEX_M_SYSTICK
|
||||||
bool "Cortex-M SYSTICK timer"
|
bool "Cortex-M SYSTICK timer"
|
||||||
default y
|
default y
|
||||||
depends on CPU_HAS_SYSTICK
|
depends on CPU_HAS_SYSTICK
|
||||||
|
select TICKLESS_CAPABLE
|
||||||
help
|
help
|
||||||
This module implements a kernel device driver for the Cortex-M processor
|
This module implements a kernel device driver for the Cortex-M processor
|
||||||
SYSTICK timer and provides the standard "system clock driver" interfaces.
|
SYSTICK timer and provides the standard "system clock driver" interfaces.
|
||||||
|
@ -242,6 +243,16 @@ config SYSTEM_CLOCK_INIT_PRIORITY
|
||||||
the clock to be running already, you should let the default value as it
|
the clock to be running already, you should let the default value as it
|
||||||
is (0).
|
is (0).
|
||||||
|
|
||||||
|
config TICKLESS_CAPABLE
|
||||||
|
bool "Timer driver supports tickless operation"
|
||||||
|
help
|
||||||
|
Timer drivers should select this flag if they are capable of
|
||||||
|
supporting tickless operation. That is, a call to
|
||||||
|
z_clock_set_timeout() with a number of ticks greater than
|
||||||
|
one should be expected not to produce a call to
|
||||||
|
z_clock_announce() (really, not to produce an interrupt at
|
||||||
|
all) until the specified expiration.
|
||||||
|
|
||||||
config QEMU_TICKLESS_WORKAROUND
|
config QEMU_TICKLESS_WORKAROUND
|
||||||
bool "Disable tickless on qemu due to asynchrony bug"
|
bool "Disable tickless on qemu due to asynchrony bug"
|
||||||
depends on QEMU_TARGET && TICKLESS_KERNEL
|
depends on QEMU_TARGET && TICKLESS_KERNEL
|
||||||
|
|
|
@ -677,7 +677,7 @@ endmenu
|
||||||
|
|
||||||
config TICKLESS_IDLE
|
config TICKLESS_IDLE
|
||||||
bool "Tickless idle"
|
bool "Tickless idle"
|
||||||
default y if SYS_POWER_MANAGEMENT
|
default y if SYS_POWER_MANAGEMENT || TICKLESS_CAPABLE
|
||||||
help
|
help
|
||||||
This option suppresses periodic system clock interrupts whenever the
|
This option suppresses periodic system clock interrupts whenever the
|
||||||
kernel becomes idle. This permits the system to remain in a power
|
kernel becomes idle. This permits the system to remain in a power
|
||||||
|
@ -696,7 +696,7 @@ config TICKLESS_IDLE_THRESH
|
||||||
|
|
||||||
config TICKLESS_KERNEL
|
config TICKLESS_KERNEL
|
||||||
bool "Tickless kernel"
|
bool "Tickless kernel"
|
||||||
default n
|
default y if TICKLESS_CAPABLE
|
||||||
help
|
help
|
||||||
This option enables a fully event driven kernel. Periodic system
|
This option enables a fully event driven kernel. Periodic system
|
||||||
clock interrupt generation would be stopped at all times. This option
|
clock interrupt generation would be stopped at all times. This option
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue