Lines Matching +full:clps711x +full:- +full:clock
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Cirrus Logic CLPS711X clocksource driver
30 static void __init clps711x_clksrc_init(struct clk *clock, void __iomem *base) in clps711x_clksrc_init() argument
32 unsigned long rate = clk_get_rate(clock); in clps711x_clksrc_init()
36 clocksource_mmio_init(tcd, "clps711x-clocksource", rate, 300, 16, in clps711x_clksrc_init()
46 evt->event_handler(evt); in clps711x_timer_interrupt()
51 static int __init _clps711x_clkevt_init(struct clk *clock, void __iomem *base, in _clps711x_clkevt_init() argument
59 return -ENOMEM; in _clps711x_clkevt_init()
61 rate = clk_get_rate(clock); in _clps711x_clkevt_init()
66 clkevt->name = "clps711x-clockevent"; in _clps711x_clkevt_init()
67 clkevt->rating = 300; in _clps711x_clkevt_init()
68 clkevt->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_C3STOP; in _clps711x_clkevt_init()
69 clkevt->cpumask = cpumask_of(0); in _clps711x_clkevt_init()
73 "clps711x-timer", clkevt); in _clps711x_clkevt_init()
79 struct clk *clock = of_clk_get(np, 0); in clps711x_timer_init() local
83 return -ENOMEM; in clps711x_timer_init()
85 return -EINVAL; in clps711x_timer_init()
86 if (IS_ERR(clock)) in clps711x_timer_init()
87 return PTR_ERR(clock); in clps711x_timer_init()
91 clps711x_clksrc_init(clock, base); in clps711x_timer_init()
94 return _clps711x_clkevt_init(clock, base, irq); in clps711x_timer_init()
96 return -EINVAL; in clps711x_timer_init()
101 TIMER_OF_DECLARE(clps711x, "cirrus,ep7209-timer", clps711x_timer_init);