diff options
author | T Michael Turney <mturney@codeaurora.org> | 2018-04-24 14:07:26 -0700 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2018-05-01 23:35:25 +0000 |
commit | 9b5c28af186b68936615d3d95542ef762baeaafe (patch) | |
tree | 829f919d5ac32b0421f0a822c858b33fa66a9d80 /payloads/libpayload/drivers | |
parent | 1e3e02a1d2cbcaf0f3f9a99ef58654ff6edcf1e4 (diff) |
libpayload: Add Timer for sdm845
Uses ARCH64 Timer
TEST=build
Change-Id: Ic312bcf3bc7e80482b7f038e2dbc4abaaffd5956
Signed-off-by: T Michael Turney <mturney@codeaurora.org>
Reviewed-on: https://review.coreboot.org/25214
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'payloads/libpayload/drivers')
-rw-r--r-- | payloads/libpayload/drivers/Makefile.inc | 1 | ||||
-rw-r--r-- | payloads/libpayload/drivers/timer/Kconfig | 5 | ||||
-rw-r--r-- | payloads/libpayload/drivers/timer/arm64_arch_timer.c | 44 |
3 files changed, 50 insertions, 0 deletions
diff --git a/payloads/libpayload/drivers/Makefile.inc b/payloads/libpayload/drivers/Makefile.inc index 8dc6e8bbb6..58546e521e 100644 --- a/payloads/libpayload/drivers/Makefile.inc +++ b/payloads/libpayload/drivers/Makefile.inc @@ -55,6 +55,7 @@ libc-$(CONFIG_LP_TIMER_RDTSC) += timer/rdtsc.c libc-$(CONFIG_LP_TIMER_IMG_PISTACHIO) += timer/img_pistachio.c libc-$(CONFIG_LP_TIMER_ARMADA38X) += timer/armada38x.c libc-$(CONFIG_LP_TIMER_MVMAP2315) += timer/mvmap2315.c +libc-$(CONFIG_LP_TIMER_ARM64_ARCH) += timer/arm64_arch_timer.c # Video console drivers libc-$(CONFIG_LP_VIDEO_CONSOLE) += video/video.c diff --git a/payloads/libpayload/drivers/timer/Kconfig b/payloads/libpayload/drivers/timer/Kconfig index 9e274ee00e..54cbe4a663 100644 --- a/payloads/libpayload/drivers/timer/Kconfig +++ b/payloads/libpayload/drivers/timer/Kconfig @@ -45,6 +45,11 @@ config TIMER_IPQ40XX This is the timer driver for QCA IPQ40xx based platforms. +config TIMER_ARM64_ARCH + bool "Architecture Timer for ARM64 platforms" + help + The cntfrq register needs to have been pre-initialized. + config TIMER_RK3288 bool "Timer for Rockchip RK3288" diff --git a/payloads/libpayload/drivers/timer/arm64_arch_timer.c b/payloads/libpayload/drivers/timer/arm64_arch_timer.c new file mode 100644 index 0000000000..08688475ba --- /dev/null +++ b/payloads/libpayload/drivers/timer/arm64_arch_timer.c @@ -0,0 +1,44 @@ +/* + * This file is part of the libpayload project. + * + * Copyright (c) 2018, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include <arch/lib_helpers.h> +#include <libpayload.h> + +uint64_t timer_hz(void) +{ + return raw_read_cntfrq_el0(); +} + +uint64_t timer_raw_value(void) +{ + return raw_read_cntpct_el0(); +} |