/* * Copyright 2007-2022, Haiku Inc. All rights reserved. * Distributed under the terms of the MIT License. * * Authors: * François Revol * Ithamar R. Adema * * Copyright 2001, Travis Geiselbrecht. All rights reserved. * Distributed under the terms of the NewOS License. */ #include #include #include #include #include #include #include #include "arch_timer_generic.h" #include "soc.h" #include "soc_pxa.h" #include "soc_omap3.h" //#define TRACE_ARCH_TIMER #ifdef TRACE_ARCH_TIMER # define TRACE(x...) dprintf(x) #else # define TRACE(x...) ; #endif void arch_timer_set_hardware_timer(bigtime_t timeout) { HardwareTimer *timer = HardwareTimer::Get(); if (timer != NULL) timer->SetTimeout(timeout); } void arch_timer_clear_hardware_timer() { HardwareTimer *timer = HardwareTimer::Get(); if (timer != NULL) timer->Clear(); } int arch_init_timer(kernel_args *args) { TRACE("%s\n", __func__); if (ARMGenericTimer::IsAvailable()) { TRACE("init ARMv7 generic timer\n"); ARMGenericTimer::Init(); } else if (strncmp(args->arch_args.timer.kind, TIMER_KIND_OMAP3, sizeof(args->arch_args.timer.kind)) == 0) { OMAP3Timer::Init(args->arch_args.timer.regs.start, args->arch_args.timer.interrupt); } else if (strncmp(args->arch_args.timer.kind, TIMER_KIND_PXA, sizeof(args->arch_args.timer.kind)) == 0) { PXATimer::Init(args->arch_args.timer.regs.start); } else { panic("No hardware timer found!\n"); } return B_OK; } bigtime_t system_time(void) { HardwareTimer *timer = HardwareTimer::Get(); if (timer != NULL) return timer->Time(); return 0; }