# Copyright (c) 2014-2015 Wind River Systems, Inc.
# Copyright (c) 2016 Cadence Design Systems, Inc.
# Copyright (c) 2019 Intel Corp.
# SPDX-License-Identifier: Apache-2.0

config RISCV_MACHINE_TIMER
	bool "RISCV Machine Timer"
	depends on SOC_FAMILY_RISCV_PRIVILEGE
	select TICKLESS_CAPABLE
	select TIMER_HAS_64BIT_CYCLE_COUNTER
	help
	  This module implements a kernel device driver for the generic RISCV machine
	  timer driver. It provides the standard "system clock driver" interfaces.

config RISCV_MACHINE_TIMER_SYSTEM_CLOCK_DIVIDER
	int
	default 0
	help
	  Specifies the division ratio of the system clock supplied to the Machine Timer.

	  A clock obtained by dividing the system clock by a value of [2^N] is
	  supplied to the timer. Where N is this parameter's value.
	  When N=2, it is divided by 4, and when N=5, it is divided by 32.
	  Default case is N=0, this means use system clock as machine timer clock.
	  It is normal configuration for RISC-V machine clock.

	  This parameter usually depends on the hardware configuration.
	  The division ratio should define in devicetree,
	  and it is desirable usage that references it with using a function such as
	  dt_node_int_prop_int from Kconfig. (Tune in the conf file is not preferable.)

config RISCV_MACHINE_TIMER_MIN_DELAY
	int
	default 100
	help
	  Specifies the minimum number of machine cycles before the RISC-V machine
	  time compare register is allowed to be updated by the RISC-V machine timer
	  driver.
