Timer driver using Microchip 32KHz based RTOS timer as the kernel timer tick. The driver uses one of the 32-bit basic timers to support the kernel's k_busy_wait API which is passed a wait count in 1 us units. The 32-bit basic timer is selected by using device tree chosen rtimer-busy-wait-timer set to the handle of the desired 32-bit basic timer. If this driver is disabled, the build system will select the ARM Cortex-M4 SysTick as the kernel timer tick driver. The user should specify RTOS timer as kernel tick by adding the compatible properity and setting the status property to "okay" at the board or application level device tree. The driver implements two internal API's for use by the SoC PM. These two API's allow the SoC PM layer to disable the timer used for k_busy_wait so the PLL can be disabled in deep sleep. We used a custom API so we can disable this timer in the deep sleep path when we know k_busy_wait will not be called by other drivers or applications. Signed-off-by: Scott Worley <scott.worley@microchip.com>
30 lines
583 B
YAML
30 lines
583 B
YAML
# Copyright (c) 2019 Microchip Technology Inc.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
description: |
|
|
Microchip MEC5 kernel timer implemented by combining
|
|
the 32kHz 32-bit RTOS timer with 32-bit basic timer 5.
|
|
|
|
compatible: "microchip,mec5-ktimer"
|
|
|
|
include: base.yaml
|
|
|
|
properties:
|
|
reg:
|
|
required: true
|
|
|
|
interrupts:
|
|
required: true
|
|
|
|
clock-frequency:
|
|
type: int
|
|
required: true
|
|
const: 32768
|
|
description: RTOS timer runs at fixed 32 KHz.
|
|
|
|
max-value:
|
|
type: int
|
|
required: true
|
|
const: 0xffffffff
|
|
description: RTOS timer counter maximum value.
|