#include <asm/arch/timer.h>
#define AST_TMC_RELOAD_VAL 0xffffffff
struct ast_timer_counter *tmc;
static struct ast_timer_counter *ast_get_timer_counter(struct ast_timer *timer,
return &timer->timers2[n - 4];
return &timer->timers1[n - 1];
static int ast_timer_probe(struct udevice *dev)
struct ast_timer_priv *priv = dev_get_priv(dev);
struct timer_dev_priv *uc_priv = dev_get_uclass_priv(dev);
writel(AST_TMC_RELOAD_VAL, &priv->tmc->reload_val);
clrbits_le32(&priv->regs->ctrl1,
AST_TMC_EN << AST_TMC_CTRL1_SHIFT(AST_TICK_TIMER));
setbits_le32(&priv->regs->ctrl1,
(AST_TMC_EN | AST_TMC_1MHZ) <<
AST_TMC_CTRL1_SHIFT(AST_TICK_TIMER));
uc_priv->clock_rate = AST_TMC_RATE;
static int ast_timer_get_count(struct udevice *dev, u64 *count)
struct ast_timer_priv *priv = dev_get_priv(dev);
*count = AST_TMC_RELOAD_VAL - readl(&priv->tmc->status);
static int ast_timer_ofdata_to_platdata(struct udevice *dev)