16d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD/*
26d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD *  include/linux/clkdev.h
36d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD *
46d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD *  Copyright (C) 2008 Russell King.
56d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD *
66d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD * This program is free software; you can redistribute it and/or modify
76d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD * it under the terms of the GNU General Public License version 2 as
86d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD * published by the Free Software Foundation.
96d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD *
106d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD * Helper for the clk API to assist looking up a struct clk.
116d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD */
126d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD#ifndef __CLKDEV_H
136d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD#define __CLKDEV_H
146d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD
156d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD#include <asm/clkdev.h>
166d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD
176d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARDstruct clk;
186d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARDstruct device;
196d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD
206d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARDstruct clk_lookup {
216d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD	struct list_head	node;
226d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD	const char		*dev_id;
236d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD	const char		*con_id;
246d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD	struct clk		*clk;
256d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD};
266d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD
27196a57c2749119be4732cc2b2adb8aafcb4fcb14Padmavathi Venna#define CLKDEV_INIT(d, n, c)	\
28196a57c2749119be4732cc2b2adb8aafcb4fcb14Padmavathi Venna	{			\
29196a57c2749119be4732cc2b2adb8aafcb4fcb14Padmavathi Venna		.dev_id = d,	\
30196a57c2749119be4732cc2b2adb8aafcb4fcb14Padmavathi Venna		.con_id = n,	\
31196a57c2749119be4732cc2b2adb8aafcb4fcb14Padmavathi Venna		.clk = c,	\
32196a57c2749119be4732cc2b2adb8aafcb4fcb14Padmavathi Venna	}
33196a57c2749119be4732cc2b2adb8aafcb4fcb14Padmavathi Venna
346d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARDstruct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id,
356d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD	const char *dev_fmt, ...);
366d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD
376d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARDvoid clkdev_add(struct clk_lookup *cl);
386d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARDvoid clkdev_drop(struct clk_lookup *cl);
396d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD
406d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARDvoid clkdev_add_table(struct clk_lookup *, size_t);
416d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARDint clk_add_alias(const char *, const char *, char *, struct device *);
426d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD
43e9d7f4065408e92338a41b809e437c6e043da090Russell Kingint clk_register_clkdev(struct clk *, const char *, const char *, ...);
44e9d7f4065408e92338a41b809e437c6e043da090Russell Kingint clk_register_clkdevs(struct clk *, struct clk_lookup *, size_t);
45e9d7f4065408e92338a41b809e437c6e043da090Russell King
46ac2df527fb407b61f9c812a99035b62a75a77d6dSylwester Nawrocki#ifdef CONFIG_COMMON_CLK
47ac2df527fb407b61f9c812a99035b62a75a77d6dSylwester Nawrockiint __clk_get(struct clk *clk);
48ac2df527fb407b61f9c812a99035b62a75a77d6dSylwester Nawrockivoid __clk_put(struct clk *clk);
49ac2df527fb407b61f9c812a99035b62a75a77d6dSylwester Nawrocki#endif
50ac2df527fb407b61f9c812a99035b62a75a77d6dSylwester Nawrocki
516d803ba736abb5e122dede70a4720e4843dd6df4Jean-Christop PLAGNIOL-VILLARD#endif
52