at v5.7-rc2 49 lines 997 B view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef __ASM_MIPS_CLOCK_H 3#define __ASM_MIPS_CLOCK_H 4 5#include <linux/kref.h> 6#include <linux/list.h> 7#include <linux/seq_file.h> 8#include <linux/clk.h> 9 10struct clk; 11 12struct clk_ops { 13 void (*init) (struct clk *clk); 14 void (*enable) (struct clk *clk); 15 void (*disable) (struct clk *clk); 16 void (*recalc) (struct clk *clk); 17 int (*set_rate) (struct clk *clk, unsigned long rate, int algo_id); 18 long (*round_rate) (struct clk *clk, unsigned long rate); 19}; 20 21struct clk { 22 struct list_head node; 23 const char *name; 24 int id; 25 struct module *owner; 26 27 struct clk *parent; 28 struct clk_ops *ops; 29 30 struct kref kref; 31 32 unsigned long rate; 33 unsigned long flags; 34}; 35 36#define CLK_ALWAYS_ENABLED (1 << 0) 37#define CLK_RATE_PROPAGATES (1 << 1) 38 39int clk_init(void); 40 41int __clk_enable(struct clk *); 42void __clk_disable(struct clk *); 43 44void clk_recalc_rate(struct clk *); 45 46int clk_register(struct clk *); 47void clk_unregister(struct clk *); 48 49#endif /* __ASM_MIPS_CLOCK_H */