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 clk_hw; 19 struct device; 20 21 struct clk_lookup { 22 struct list_head node; 23 const char *dev_id; 24 const char *con_id; 25 struct clk *clk; 26 struct clk_hw *clk_hw; 27 }; 28 29 #define CLKDEV_INIT(d, n, c) \ 30 { \ 31 .dev_id = d, \ 32 .con_id = n, \ 33 .clk = c, \ 34 } 35 36 struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id, 37 const char *dev_fmt, ...) __printf(3, 4); 38 struct clk_lookup *clkdev_hw_alloc(struct clk_hw *hw, const char *con_id, 39 const char *dev_fmt, ...) __printf(3, 4); 40 41 void clkdev_add(struct clk_lookup *cl); 42 void clkdev_drop(struct clk_lookup *cl); 43 44 struct clk_lookup *clkdev_create(struct clk *clk, const char *con_id, 45 const char *dev_fmt, ...) __printf(3, 4); 46 struct clk_lookup *clkdev_hw_create(struct clk_hw *hw, const char *con_id, 47 const char *dev_fmt, ...) __printf(3, 4); 48 49 void clkdev_add_table(struct clk_lookup *, size_t); 50 int clk_add_alias(const char *, const char *, const char *, struct device *); 51 52 int clk_register_clkdev(struct clk *, const char *, const char *); 53 int clk_hw_register_clkdev(struct clk_hw *, const char *, const char *); 54 55 #ifdef CONFIG_COMMON_CLK 56 int __clk_get(struct clk *clk); 57 void __clk_put(struct clk *clk); 58 #endif 59 60 #endif 61