1 /* 2 * include/linux/clkdev.h 3 * 4 * Copyright (C) 2008 Russell King. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 * 10 * Helper for the clk API to assist looking up a struct clk. 11 */ 12 #ifndef __CLKDEV_H 13 #define __CLKDEV_H 14 15 #include <asm/clkdev.h> 16 17 struct clk; 18 struct device; 19 20 struct clk_lookup { 21 struct list_head node; 22 const char *dev_id; 23 const char *con_id; 24 struct clk *clk; 25 struct clk_hw *clk_hw; 26 }; 27 28 #define CLKDEV_INIT(d, n, c) \ 29 { \ 30 .dev_id = d, \ 31 .con_id = n, \ 32 .clk = c, \ 33 } 34 35 struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id, 36 const char *dev_fmt, ...) __printf(3, 4); 37 38 void clkdev_add(struct clk_lookup *cl); 39 void clkdev_drop(struct clk_lookup *cl); 40 41 struct clk_lookup *clkdev_create(struct clk *clk, const char *con_id, 42 const char *dev_fmt, ...) __printf(3, 4); 43 44 void clkdev_add_table(struct clk_lookup *, size_t); 45 int clk_add_alias(const char *, const char *, const char *, struct device *); 46 47 int clk_register_clkdev(struct clk *, const char *, const char *); 48 int clk_register_clkdevs(struct clk *, struct clk_lookup *, size_t); 49 50 #ifdef CONFIG_COMMON_CLK 51 int __clk_get(struct clk *clk); 52 void __clk_put(struct clk *clk); 53 #endif 54 55 #endif 56