Lines Matching +full:cs +full:- +full:to +full:- +full:clk
1 // SPDX-License-Identifier: GPL-2.0
11 #include <linux/clk.h>
27 struct clocksource cs; member
42 o1 = ioread8(p->mapcommon + TISRC) & p->ovf; in timer16_get_counter()
47 v1 = ioread16be(p->mapbase + TCNT); in timer16_get_counter()
48 v2 = ioread16be(p->mapbase + TCNT); in timer16_get_counter()
49 v3 = ioread16be(p->mapbase + TCNT); in timer16_get_counter()
50 o1 = ioread8(p->mapcommon + TISRC) & p->ovf; in timer16_get_counter()
65 bclr(p->ovf, p->mapcommon + TISRC); in timer16_interrupt()
66 p->total_cycles += 0x10000; in timer16_interrupt()
71 static inline struct timer16_priv *cs_to_priv(struct clocksource *cs) in cs_to_priv() argument
73 return container_of(cs, struct timer16_priv, cs); in cs_to_priv()
76 static u64 timer16_clocksource_read(struct clocksource *cs) in timer16_clocksource_read() argument
78 struct timer16_priv *p = cs_to_priv(cs); in timer16_clocksource_read()
81 value = p->total_cycles; in timer16_clocksource_read()
87 static int timer16_enable(struct clocksource *cs) in timer16_enable() argument
89 struct timer16_priv *p = cs_to_priv(cs); in timer16_enable()
91 WARN_ON(p->cs_enabled); in timer16_enable()
93 p->total_cycles = 0; in timer16_enable()
94 iowrite16be(0x0000, p->mapbase + TCNT); in timer16_enable()
95 iowrite8(0x83, p->mapbase + TCR); in timer16_enable()
96 bset(p->ovie, p->mapcommon + TISRC); in timer16_enable()
97 bset(p->enb, p->mapcommon + TSTR); in timer16_enable()
99 p->cs_enabled = true; in timer16_enable()
103 static void timer16_disable(struct clocksource *cs) in timer16_disable() argument
105 struct timer16_priv *p = cs_to_priv(cs); in timer16_disable()
107 WARN_ON(!p->cs_enabled); in timer16_disable()
109 bclr(p->ovie, p->mapcommon + TISRC); in timer16_disable()
110 bclr(p->enb, p->mapcommon + TSTR); in timer16_disable()
112 p->cs_enabled = false; in timer16_disable()
116 .cs = {
135 struct clk *clk; in h8300_16timer_init() local
137 clk = of_clk_get(node, 0); in h8300_16timer_init()
138 if (IS_ERR(clk)) { in h8300_16timer_init()
139 pr_err("failed to get clock for clocksource\n"); in h8300_16timer_init()
140 return PTR_ERR(clk); in h8300_16timer_init()
143 ret = -ENXIO; in h8300_16timer_init()
146 pr_err("failed to map registers for clocksource\n"); in h8300_16timer_init()
152 pr_err("failed to map registers for clocksource\n"); in h8300_16timer_init()
156 ret = -EINVAL; in h8300_16timer_init()
159 pr_err("failed to get irq for clockevent\n"); in h8300_16timer_init()
172 IRQF_TIMER, timer16_priv.cs.name, &timer16_priv); in h8300_16timer_init()
174 pr_err("failed to request irq %d of clocksource\n", irq); in h8300_16timer_init()
178 clocksource_register_hz(&timer16_priv.cs, in h8300_16timer_init()
179 clk_get_rate(clk) / 8); in h8300_16timer_init()
187 clk_put(clk); in h8300_16timer_init()
191 TIMER_OF_DECLARE(h8300_16bit, "renesas,16bit-timer",