1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 2cc2244b8Shuang lin /* 3cc2244b8Shuang lin * (C) Copyright 2015 Rockchip Electronics Co., Ltd 4cc2244b8Shuang lin */ 5cc2244b8Shuang lin 6cb91173aSPhilipp Tomsich #include <common.h> 7cc2244b8Shuang lin #include <asm/arch/timer.h> 8cc2244b8Shuang lin #include <asm/io.h> 9cc2244b8Shuang lin #include <linux/types.h> 10cc2244b8Shuang lin 11cc2244b8Shuang lin struct rk_timer * const timer_ptr = (void *)CONFIG_SYS_TIMER_BASE; 12cc2244b8Shuang lin rockchip_get_ticks(void)13cc2244b8Shuang linstatic uint64_t rockchip_get_ticks(void) 14cc2244b8Shuang lin { 15cc2244b8Shuang lin uint64_t timebase_h, timebase_l; 16cc2244b8Shuang lin 17cc2244b8Shuang lin timebase_l = readl(&timer_ptr->timer_curr_value0); 18cc2244b8Shuang lin timebase_h = readl(&timer_ptr->timer_curr_value1); 19cc2244b8Shuang lin 20cc2244b8Shuang lin return timebase_h << 32 | timebase_l; 21cc2244b8Shuang lin } 22cc2244b8Shuang lin usec_to_tick(unsigned int usec)23cc2244b8Shuang linstatic uint64_t usec_to_tick(unsigned int usec) 24cc2244b8Shuang lin { 25cc2244b8Shuang lin uint64_t tick = usec; 26cc2244b8Shuang lin tick *= CONFIG_SYS_TIMER_RATE / (1000 * 1000); 27cc2244b8Shuang lin return tick; 28cc2244b8Shuang lin } 29cc2244b8Shuang lin rockchip_udelay(unsigned int usec)30cc2244b8Shuang linvoid rockchip_udelay(unsigned int usec) 31cc2244b8Shuang lin { 32cc2244b8Shuang lin uint64_t tmp; 33cc2244b8Shuang lin 34cc2244b8Shuang lin /* get timestamp */ 35cc2244b8Shuang lin tmp = rockchip_get_ticks() + usec_to_tick(usec); 36cc2244b8Shuang lin 37cc2244b8Shuang lin /* loop till event */ 38cc2244b8Shuang lin while (rockchip_get_ticks() < tmp+1) 39cc2244b8Shuang lin ; 40cc2244b8Shuang lin } 41cc2244b8Shuang lin rockchip_timer_init(void)42cc2244b8Shuang linvoid rockchip_timer_init(void) 43cc2244b8Shuang lin { 44cc2244b8Shuang lin writel(0xffffffff, &timer_ptr->timer_load_count0); 45cc2244b8Shuang lin writel(0xffffffff, &timer_ptr->timer_load_count1); 46cc2244b8Shuang lin writel(1, &timer_ptr->timer_ctrl_reg); 47cc2244b8Shuang lin } 48