Lines Matching refs:clk
30 struct clk { struct
31 struct clk *parent; argument
38 unsigned long (*get_rate)(struct clk *clk); argument
39 int (*set_rate)(struct clk *clk, unsigned long rate); argument
43 static unsigned long get_uart_rate(struct clk *clk);
45 static int set_keytchclk_rate(struct clk *clk, unsigned long rate);
46 static int set_div_rate(struct clk *clk, unsigned long rate);
47 static int set_i2s_sclk_rate(struct clk *clk, unsigned long rate);
48 static int set_i2s_lrclk_rate(struct clk *clk, unsigned long rate);
50 static struct clk clk_xtali = {
53 static struct clk clk_uart1 = {
60 static struct clk clk_uart2 = {
67 static struct clk clk_uart3 = {
74 static struct clk clk_pll1 = {
77 static struct clk clk_f = {
80 static struct clk clk_h = {
83 static struct clk clk_p = {
86 static struct clk clk_pll2 = {
89 static struct clk clk_usb_host = {
94 static struct clk clk_keypad = {
101 static struct clk clk_spi = {
105 static struct clk clk_pwm = {
110 static struct clk clk_video = {
117 static struct clk clk_i2s_mclk = {
124 static struct clk clk_i2s_sclk = {
132 static struct clk clk_i2s_lrclk = {
141 static struct clk clk_m2p0 = {
146 static struct clk clk_m2p1 = {
151 static struct clk clk_m2p2 = {
156 static struct clk clk_m2p3 = {
161 static struct clk clk_m2p4 = {
166 static struct clk clk_m2p5 = {
171 static struct clk clk_m2p6 = {
176 static struct clk clk_m2p7 = {
181 static struct clk clk_m2p8 = {
186 static struct clk clk_m2p9 = {
191 static struct clk clk_m2m0 = {
196 static struct clk clk_m2m1 = {
203 { .dev_id = dev, .con_id = con, .clk = ck }
239 static void __clk_enable(struct clk *clk) in __clk_enable() argument
241 if (!clk->users++) { in __clk_enable()
242 if (clk->parent) in __clk_enable()
243 __clk_enable(clk->parent); in __clk_enable()
245 if (clk->enable_reg) { in __clk_enable()
248 v = __raw_readl(clk->enable_reg); in __clk_enable()
249 v |= clk->enable_mask; in __clk_enable()
250 if (clk->sw_locked) in __clk_enable()
251 ep93xx_syscon_swlocked_write(v, clk->enable_reg); in __clk_enable()
253 __raw_writel(v, clk->enable_reg); in __clk_enable()
258 int clk_enable(struct clk *clk) in clk_enable() argument
262 if (!clk) in clk_enable()
266 __clk_enable(clk); in clk_enable()
273 static void __clk_disable(struct clk *clk) in __clk_disable() argument
275 if (!--clk->users) { in __clk_disable()
276 if (clk->enable_reg) { in __clk_disable()
279 v = __raw_readl(clk->enable_reg); in __clk_disable()
280 v &= ~clk->enable_mask; in __clk_disable()
281 if (clk->sw_locked) in __clk_disable()
282 ep93xx_syscon_swlocked_write(v, clk->enable_reg); in __clk_disable()
284 __raw_writel(v, clk->enable_reg); in __clk_disable()
287 if (clk->parent) in __clk_disable()
288 __clk_disable(clk->parent); in __clk_disable()
292 void clk_disable(struct clk *clk) in clk_disable() argument
296 if (!clk) in clk_disable()
300 __clk_disable(clk); in clk_disable()
305 static unsigned long get_uart_rate(struct clk *clk) in get_uart_rate() argument
307 unsigned long rate = clk_get_rate(clk->parent); in get_uart_rate()
317 unsigned long clk_get_rate(struct clk *clk) in clk_get_rate() argument
319 if (clk->get_rate) in clk_get_rate()
320 return clk->get_rate(clk); in clk_get_rate()
322 return clk->rate; in clk_get_rate()
326 static int set_keytchclk_rate(struct clk *clk, unsigned long rate) in set_keytchclk_rate() argument
331 val = __raw_readl(clk->enable_reg); in set_keytchclk_rate()
340 div_bit = clk->enable_mask >> 15; in set_keytchclk_rate()
349 ep93xx_syscon_swlocked_write(val, clk->enable_reg); in set_keytchclk_rate()
350 clk->rate = rate; in set_keytchclk_rate()
354 static int calc_clk_div(struct clk *clk, unsigned long rate, in calc_clk_div() argument
357 struct clk *mclk; in calc_clk_div()
396 clk->parent = mclk; in calc_clk_div()
397 clk->rate = actual_rate; in calc_clk_div()
410 static int set_div_rate(struct clk *clk, unsigned long rate) in set_div_rate() argument
415 err = calc_clk_div(clk, rate, &psel, &esel, &pdiv, &div); in set_div_rate()
420 val = __raw_readl(clk->enable_reg); in set_div_rate()
427 ep93xx_syscon_swlocked_write(val, clk->enable_reg); in set_div_rate()
431 static int set_i2s_sclk_rate(struct clk *clk, unsigned long rate) in set_i2s_sclk_rate() argument
433 unsigned val = __raw_readl(clk->enable_reg); in set_i2s_sclk_rate()
437 clk->enable_reg); in set_i2s_sclk_rate()
440 clk->enable_reg); in set_i2s_sclk_rate()
448 static int set_i2s_lrclk_rate(struct clk *clk, unsigned long rate) in set_i2s_lrclk_rate() argument
450 unsigned val = __raw_readl(clk->enable_reg) & in set_i2s_lrclk_rate()
455 clk->enable_reg); in set_i2s_lrclk_rate()
458 clk->enable_reg); in set_i2s_lrclk_rate()
461 clk->enable_reg); in set_i2s_lrclk_rate()
469 int clk_set_rate(struct clk *clk, unsigned long rate) in clk_set_rate() argument
471 if (clk->set_rate) in clk_set_rate()
472 return clk->set_rate(clk, rate); in clk_set_rate()