mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-07 01:22:27 +00:00
Convert code to use u{8,16,32,64}_t and s{8,16,32,64}_t instead of C99 integer types. This handles the remaining includes and kernel, plus touching up various points that we skipped because of include dependancies. We also convert the PRI printf formatters in the arch code over to normal formatters. Jira: ZEP-2051 Change-Id: Iecbb12601a3ee4ea936fd7ddea37788a645b08b0 Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
75 lines
1.6 KiB
C
75 lines
1.6 KiB
C
/*
|
|
* Copyright (c) 2016 Jean-Paul Etienne <fractalclone@gmail.com>
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <kernel.h>
|
|
#include <arch/cpu.h>
|
|
#include <device.h>
|
|
#include <system_timer.h>
|
|
#include <board.h>
|
|
|
|
/* Timer Ctrl Bitfields */
|
|
#define TIMER_CTRL_EN (1 << 0) /* Timer Enable Bit */
|
|
#define TIMER_CTRL_PRE(x) (((x) & 0x07) << 3) /* Prescaler Value */
|
|
|
|
typedef struct {
|
|
u32_t val;
|
|
u32_t ctrl;
|
|
u32_t cmp;
|
|
} pulpino_timer_t;
|
|
|
|
static volatile pulpino_timer_t *timer = (pulpino_timer_t *)PULP_TIMER_A_BASE;
|
|
|
|
static u32_t accumulated_cycle_count;
|
|
|
|
static void pulpino_timer_irq_handler(void *unused)
|
|
{
|
|
ARG_UNUSED(unused);
|
|
|
|
/* Reset counter */
|
|
timer->val = 0;
|
|
|
|
accumulated_cycle_count += sys_clock_hw_cycles_per_tick;
|
|
|
|
_sys_clock_tick_announce();
|
|
}
|
|
|
|
#ifdef CONFIG_TICKLESS_IDLE
|
|
#error "Tickless idle not yet implemented for pulpino timer"
|
|
#endif
|
|
|
|
int _sys_clock_driver_init(struct device *device)
|
|
{
|
|
ARG_UNUSED(device);
|
|
IRQ_CONNECT(PULP_TIMER_A_CMP_IRQ, 0,
|
|
pulpino_timer_irq_handler, NULL, 0);
|
|
irq_enable(PULP_TIMER_A_CMP_IRQ);
|
|
|
|
/*
|
|
* Initialize timer.
|
|
* Reset counter and set timer to generate interrupt
|
|
* every sys_clock_hw_cycles_per_tick
|
|
*/
|
|
timer->val = 0;
|
|
timer->cmp = sys_clock_hw_cycles_per_tick;
|
|
timer->ctrl = TIMER_CTRL_EN;
|
|
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @brief Read the platform's timer hardware
|
|
*
|
|
* This routine returns the current time in terms of timer hardware clock
|
|
* cycles.
|
|
*
|
|
* @return up counter of elapsed clock cycles
|
|
*/
|
|
u32_t _timer_cycle_get_32(void)
|
|
{
|
|
return accumulated_cycle_count + timer->val;
|
|
}
|