mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-20 20:04:46 +00:00
timer: Return count from timer_ops.get_count
No timer drivers return an error from get_count. Instead of possibly returning an error, just return the count directly. Signed-off-by: Sean Anderson <seanga2@gmail.com> Reviewed-by: Claudiu Beznea <claudiu.beznea@microchip.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
aff60aba6c
commit
8af7bb914f
24 changed files with 59 additions and 97 deletions
|
@ -17,11 +17,9 @@
|
||||||
/* mtime register */
|
/* mtime register */
|
||||||
#define MTIME_REG(base) ((ulong)(base))
|
#define MTIME_REG(base) ((ulong)(base))
|
||||||
|
|
||||||
static int andes_plmt_get_count(struct udevice *dev, u64 *count)
|
static u64 andes_plmt_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
*count = readq((void __iomem *)MTIME_REG(dev->priv));
|
return readq((void __iomem *)MTIME_REG(dev->priv));
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct timer_ops andes_plmt_ops = {
|
static const struct timer_ops andes_plmt_ops = {
|
||||||
|
|
|
@ -62,11 +62,9 @@ int riscv_get_ipi(int hart, int *pending)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sifive_clint_get_count(struct udevice *dev, u64 *count)
|
static u64 sifive_clint_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
*count = readq((void __iomem *)MTIME_REG(dev->priv));
|
return readq((void __iomem *)MTIME_REG(dev->priv));
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct timer_ops sifive_clint_ops = {
|
static const struct timer_ops sifive_clint_ops = {
|
||||||
|
|
|
@ -62,14 +62,13 @@ struct atftmr_timer_platdata {
|
||||||
struct atftmr_timer_regs *regs;
|
struct atftmr_timer_regs *regs;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int atftmr_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 atftmr_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct atftmr_timer_platdata *plat = dev->platdata;
|
struct atftmr_timer_platdata *plat = dev->platdata;
|
||||||
struct atftmr_timer_regs *const regs = plat->regs;
|
struct atftmr_timer_regs *const regs = plat->regs;
|
||||||
u32 val;
|
u32 val;
|
||||||
val = readl(®s->t3_counter);
|
val = readl(®s->t3_counter);
|
||||||
*count = timer_conv_64(val);
|
return timer_conv_64(val);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int atftmr_timer_probe(struct udevice *dev)
|
static int atftmr_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -32,7 +32,7 @@ struct altera_timer_platdata {
|
||||||
struct altera_timer_regs *regs;
|
struct altera_timer_regs *regs;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int altera_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 altera_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct altera_timer_platdata *plat = dev->platdata;
|
struct altera_timer_platdata *plat = dev->platdata;
|
||||||
struct altera_timer_regs *const regs = plat->regs;
|
struct altera_timer_regs *const regs = plat->regs;
|
||||||
|
@ -44,9 +44,7 @@ static int altera_timer_get_count(struct udevice *dev, u64 *count)
|
||||||
/* Read timer value */
|
/* Read timer value */
|
||||||
val = readl(®s->snapl) & 0xffff;
|
val = readl(®s->snapl) & 0xffff;
|
||||||
val |= (readl(®s->snaph) & 0xffff) << 16;
|
val |= (readl(®s->snaph) & 0xffff) << 16;
|
||||||
*count = timer_conv_64(~val);
|
return timer_conv_64(~val);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int altera_timer_probe(struct udevice *dev)
|
static int altera_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -26,7 +26,7 @@ struct arc_timer_priv {
|
||||||
uint timer_id;
|
uint timer_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int arc_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 arc_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
u32 val = 0;
|
u32 val = 0;
|
||||||
struct arc_timer_priv *priv = dev_get_priv(dev);
|
struct arc_timer_priv *priv = dev_get_priv(dev);
|
||||||
|
@ -39,9 +39,7 @@ static int arc_timer_get_count(struct udevice *dev, u64 *count)
|
||||||
val = read_aux_reg(ARC_AUX_TIMER1_CNT);
|
val = read_aux_reg(ARC_AUX_TIMER1_CNT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
*count = timer_conv_64(val);
|
return timer_conv_64(val);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int arc_timer_probe(struct udevice *dev)
|
static int arc_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -51,13 +51,11 @@ static int ast_timer_probe(struct udevice *dev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ast_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 ast_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct ast_timer_priv *priv = dev_get_priv(dev);
|
struct ast_timer_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
*count = AST_TMC_RELOAD_VAL - readl(&priv->tmc->status);
|
return AST_TMC_RELOAD_VAL - readl(&priv->tmc->status);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ast_timer_ofdata_to_platdata(struct udevice *dev)
|
static int ast_timer_ofdata_to_platdata(struct udevice *dev)
|
||||||
|
|
|
@ -68,13 +68,12 @@ struct atcpit_timer_platdata {
|
||||||
u32 *regs;
|
u32 *regs;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int atcpit_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 atcpit_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct atcpit_timer_platdata *plat = dev_get_platdata(dev);
|
struct atcpit_timer_platdata *plat = dev_get_platdata(dev);
|
||||||
u32 val;
|
u32 val;
|
||||||
val = ~(REG32_TMR(CH_CNT(1))+0xffffffff);
|
val = ~(REG32_TMR(CH_CNT(1))+0xffffffff);
|
||||||
*count = timer_conv_64(val);
|
return timer_conv_64(val);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int atcpit_timer_probe(struct udevice *dev)
|
static int atcpit_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -25,15 +25,13 @@ struct atmel_pit_platdata {
|
||||||
struct atmel_pit_regs *regs;
|
struct atmel_pit_regs *regs;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int atmel_pit_get_count(struct udevice *dev, u64 *count)
|
static u64 atmel_pit_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct atmel_pit_platdata *plat = dev_get_platdata(dev);
|
struct atmel_pit_platdata *plat = dev_get_platdata(dev);
|
||||||
struct atmel_pit_regs *const regs = plat->regs;
|
struct atmel_pit_regs *const regs = plat->regs;
|
||||||
u32 val = readl(®s->value_image);
|
u32 val = readl(®s->value_image);
|
||||||
|
|
||||||
*count = timer_conv_64(val);
|
return timer_conv_64(val);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int atmel_pit_probe(struct udevice *dev)
|
static int atmel_pit_probe(struct udevice *dev)
|
||||||
|
|
|
@ -57,13 +57,11 @@ ulong timer_get_boot_us(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int cadence_ttc_get_count(struct udevice *dev, u64 *count)
|
static u64 cadence_ttc_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct cadence_ttc_priv *priv = dev_get_priv(dev);
|
struct cadence_ttc_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
*count = readl(&priv->regs->counter_val1);
|
return readl(&priv->regs->counter_val1);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cadence_ttc_probe(struct udevice *dev)
|
static int cadence_ttc_probe(struct udevice *dev)
|
||||||
|
|
|
@ -25,7 +25,7 @@ struct dw_apb_timer_priv {
|
||||||
struct reset_ctl_bulk resets;
|
struct reset_ctl_bulk resets;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int dw_apb_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 dw_apb_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct dw_apb_timer_priv *priv = dev_get_priv(dev);
|
struct dw_apb_timer_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
|
@ -34,9 +34,7 @@ static int dw_apb_timer_get_count(struct udevice *dev, u64 *count)
|
||||||
* requires the count to be incrementing. Invert the
|
* requires the count to be incrementing. Invert the
|
||||||
* result.
|
* result.
|
||||||
*/
|
*/
|
||||||
*count = timer_conv_64(~readl(priv->regs + DW_APB_CURR_VAL));
|
return timer_conv_64(~readl(priv->regs + DW_APB_CURR_VAL));
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dw_apb_timer_probe(struct udevice *dev)
|
static int dw_apb_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -27,16 +27,14 @@ struct mchp_pit64b_priv {
|
||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int mchp_pit64b_get_count(struct udevice *dev, u64 *count)
|
static u64 mchp_pit64b_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct mchp_pit64b_priv *priv = dev_get_priv(dev);
|
struct mchp_pit64b_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
u32 lsb = readl(priv->base + MCHP_PIT64B_TLSBR);
|
u32 lsb = readl(priv->base + MCHP_PIT64B_TLSBR);
|
||||||
u32 msb = readl(priv->base + MCHP_PIT64B_TMSBR);
|
u32 msb = readl(priv->base + MCHP_PIT64B_TMSBR);
|
||||||
|
|
||||||
*count = ((u64)msb << 32) | lsb;
|
return ((u64)msb << 32) | lsb;
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mchp_pit64b_probe(struct udevice *dev)
|
static int mchp_pit64b_probe(struct udevice *dev)
|
||||||
|
|
|
@ -187,7 +187,7 @@ void wait_ticks(ulong ticks)
|
||||||
WATCHDOG_RESET();
|
WATCHDOG_RESET();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mpc83xx_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 mpc83xx_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
u32 tbu, tbl;
|
u32 tbu, tbl;
|
||||||
|
|
||||||
|
@ -201,9 +201,7 @@ static int mpc83xx_timer_get_count(struct udevice *dev, u64 *count)
|
||||||
tbl = mftb();
|
tbl = mftb();
|
||||||
} while (tbu != mftbu());
|
} while (tbu != mftbu());
|
||||||
|
|
||||||
*count = (tbu * 0x10000ULL) + tbl;
|
return (tbu * 0x10000ULL) + tbl;
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mpc83xx_timer_probe(struct udevice *dev)
|
static int mpc83xx_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -27,14 +27,12 @@ struct mtk_timer_priv {
|
||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int mtk_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 mtk_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct mtk_timer_priv *priv = dev_get_priv(dev);
|
struct mtk_timer_priv *priv = dev_get_priv(dev);
|
||||||
u32 val = readl(priv->base + MTK_GPT4_CNT);
|
u32 val = readl(priv->base + MTK_GPT4_CNT);
|
||||||
|
|
||||||
*count = timer_conv_64(val);
|
return timer_conv_64(val);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mtk_timer_probe(struct udevice *dev)
|
static int mtk_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -54,14 +54,12 @@ struct nomadik_mtu_priv {
|
||||||
struct nomadik_mtu_timer_regs *timer;
|
struct nomadik_mtu_timer_regs *timer;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int nomadik_mtu_get_count(struct udevice *dev, u64 *count)
|
static u64 nomadik_mtu_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct nomadik_mtu_priv *priv = dev_get_priv(dev);
|
struct nomadik_mtu_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
/* Decrementing counter: invert the value */
|
/* Decrementing counter: invert the value */
|
||||||
*count = timer_conv_64(~readl(&priv->timer->cv));
|
return timer_conv_64(~readl(&priv->timer->cv));
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int nomadik_mtu_probe(struct udevice *dev)
|
static int nomadik_mtu_probe(struct udevice *dev)
|
||||||
|
|
|
@ -48,13 +48,11 @@ struct omap_timer_priv {
|
||||||
struct omap_gptimer_regs *regs;
|
struct omap_gptimer_regs *regs;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int omap_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 omap_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct omap_timer_priv *priv = dev_get_priv(dev);
|
struct omap_timer_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
*count = timer_conv_64(readl(&priv->regs->tcrr));
|
return timer_conv_64(readl(&priv->regs->tcrr));
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int omap_timer_probe(struct udevice *dev)
|
static int omap_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -27,13 +27,11 @@ struct ostm_priv {
|
||||||
fdt_addr_t regs;
|
fdt_addr_t regs;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int ostm_get_count(struct udevice *dev, u64 *count)
|
static u64 ostm_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct ostm_priv *priv = dev_get_priv(dev);
|
struct ostm_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
*count = timer_conv_64(readl(priv->regs + OSTM_CNT));
|
return timer_conv_64(readl(priv->regs + OSTM_CNT));
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ostm_probe(struct udevice *dev)
|
static int ostm_probe(struct udevice *dev)
|
||||||
|
|
|
@ -16,22 +16,19 @@
|
||||||
#include <timer.h>
|
#include <timer.h>
|
||||||
#include <asm/csr.h>
|
#include <asm/csr.h>
|
||||||
|
|
||||||
static int riscv_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 riscv_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
if (IS_ENABLED(CONFIG_64BIT)) {
|
__maybe_unused u32 hi, lo;
|
||||||
*count = csr_read(CSR_TIME);
|
|
||||||
} else {
|
if (IS_ENABLED(CONFIG_64BIT))
|
||||||
u32 hi, lo;
|
return csr_read(CSR_TIME);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
hi = csr_read(CSR_TIMEH);
|
hi = csr_read(CSR_TIMEH);
|
||||||
lo = csr_read(CSR_TIME);
|
lo = csr_read(CSR_TIME);
|
||||||
} while (hi != csr_read(CSR_TIMEH));
|
} while (hi != csr_read(CSR_TIMEH));
|
||||||
|
|
||||||
*count = ((u64)hi << 32) | lo;
|
return ((u64)hi << 32) | lo;
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int riscv_timer_probe(struct udevice *dev)
|
static int riscv_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -88,14 +88,13 @@ ulong timer_get_boot_us(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int rockchip_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 rockchip_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct rockchip_timer_priv *priv = dev_get_priv(dev);
|
struct rockchip_timer_priv *priv = dev_get_priv(dev);
|
||||||
uint64_t cntr = rockchip_timer_get_curr_value(priv->timer);
|
uint64_t cntr = rockchip_timer_get_curr_value(priv->timer);
|
||||||
|
|
||||||
/* timers are down-counting */
|
/* timers are down-counting */
|
||||||
*count = ~0ull - cntr;
|
return ~0ull - cntr;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rockchip_clk_ofdata_to_platdata(struct udevice *dev)
|
static int rockchip_clk_ofdata_to_platdata(struct udevice *dev)
|
||||||
|
|
|
@ -29,11 +29,9 @@ unsigned long notrace timer_early_get_rate(void)
|
||||||
return SANDBOX_TIMER_RATE;
|
return SANDBOX_TIMER_RATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static notrace int sandbox_timer_get_count(struct udevice *dev, u64 *count)
|
static notrace u64 sandbox_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
*count = timer_early_get_count();
|
return timer_early_get_count();
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sandbox_timer_probe(struct udevice *dev)
|
static int sandbox_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -17,7 +17,7 @@ struct sti_timer_priv {
|
||||||
struct globaltimer *global_timer;
|
struct globaltimer *global_timer;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int sti_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 sti_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct sti_timer_priv *priv = dev_get_priv(dev);
|
struct sti_timer_priv *priv = dev_get_priv(dev);
|
||||||
struct globaltimer *global_timer = priv->global_timer;
|
struct globaltimer *global_timer = priv->global_timer;
|
||||||
|
@ -34,9 +34,7 @@ static int sti_timer_get_count(struct udevice *dev, u64 *count)
|
||||||
old = high;
|
old = high;
|
||||||
}
|
}
|
||||||
timer = high;
|
timer = high;
|
||||||
*count = (u64)((timer << 32) | low);
|
return (u64)((timer << 32) | low);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sti_timer_probe(struct udevice *dev)
|
static int sti_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -52,14 +52,12 @@ struct stm32_timer_priv {
|
||||||
struct stm32_timer_regs *base;
|
struct stm32_timer_regs *base;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int stm32_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 stm32_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct stm32_timer_priv *priv = dev_get_priv(dev);
|
struct stm32_timer_priv *priv = dev_get_priv(dev);
|
||||||
struct stm32_timer_regs *regs = priv->base;
|
struct stm32_timer_regs *regs = priv->base;
|
||||||
|
|
||||||
*count = readl(®s->cnt);
|
return readl(®s->cnt);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int stm32_timer_probe(struct udevice *dev)
|
static int stm32_timer_probe(struct udevice *dev)
|
||||||
|
|
|
@ -34,7 +34,8 @@ int notrace timer_get_count(struct udevice *dev, u64 *count)
|
||||||
if (!ops->get_count)
|
if (!ops->get_count)
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
|
|
||||||
return ops->get_count(dev, count);
|
*count = ops->get_count(dev);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long notrace timer_get_rate(struct udevice *dev)
|
unsigned long notrace timer_get_rate(struct udevice *dev)
|
||||||
|
|
|
@ -386,13 +386,11 @@ void __udelay(unsigned long usec)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tsc_timer_get_count(struct udevice *dev, u64 *count)
|
static u64 tsc_timer_get_count(struct udevice *dev)
|
||||||
{
|
{
|
||||||
u64 now_tick = rdtsc();
|
u64 now_tick = rdtsc();
|
||||||
|
|
||||||
*count = now_tick - gd->arch.tsc_base;
|
return now_tick - gd->arch.tsc_base;
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tsc_timer_ensure_setup(bool early)
|
static void tsc_timer_ensure_setup(bool early)
|
||||||
|
|
|
@ -67,11 +67,14 @@ struct timer_ops {
|
||||||
*
|
*
|
||||||
* @dev: The timer device
|
* @dev: The timer device
|
||||||
*
|
*
|
||||||
* @count: pointer that returns the current 64-bit timer count
|
* This function may be called at any time after the driver is probed.
|
||||||
|
* All necessary initialization must be completed by the time probe()
|
||||||
|
* returns. The count returned by this functions should be monotonic.
|
||||||
|
* This function must succeed.
|
||||||
*
|
*
|
||||||
* Return: 0 if OK, -ve on error
|
* Return: The current 64-bit timer count
|
||||||
*/
|
*/
|
||||||
int (*get_count)(struct udevice *dev, u64 *count);
|
u64 (*get_count)(struct udevice *dev);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue