1/* 2 * Dummy clk implementations for powerpc. 3 * These need to be overridden in platform code. 4 */ 5 6#include <linux/clk.h> 7#include <linux/err.h> 8#include <linux/errno.h> 9#include <linux/module.h> 10#include <asm/clk_interface.h> 11 12struct clk_interface clk_functions; 13 14struct clk *clk_get(struct device *dev, const char *id) 15{ 16 if (clk_functions.clk_get) 17 return clk_functions.clk_get(dev, id); 18 return ERR_PTR(-ENOSYS); 19} 20EXPORT_SYMBOL(clk_get); 21 22void clk_put(struct clk *clk) 23{ 24 if (clk_functions.clk_put) 25 clk_functions.clk_put(clk); 26} 27EXPORT_SYMBOL(clk_put); 28 29int clk_enable(struct clk *clk) 30{ 31 if (clk_functions.clk_enable) 32 return clk_functions.clk_enable(clk); 33 return -ENOSYS; 34} 35EXPORT_SYMBOL(clk_enable); 36 37void clk_disable(struct clk *clk) 38{ 39 if (clk_functions.clk_disable) 40 clk_functions.clk_disable(clk); 41} 42EXPORT_SYMBOL(clk_disable); 43 44unsigned long clk_get_rate(struct clk *clk) 45{ 46 if (clk_functions.clk_get_rate) 47 return clk_functions.clk_get_rate(clk); 48 return 0; 49} 50EXPORT_SYMBOL(clk_get_rate); 51 52long clk_round_rate(struct clk *clk, unsigned long rate) 53{ 54 if (clk_functions.clk_round_rate) 55 return clk_functions.clk_round_rate(clk, rate); 56 return -ENOSYS; 57} 58EXPORT_SYMBOL(clk_round_rate); 59 60int clk_set_rate(struct clk *clk, unsigned long rate) 61{ 62 if (clk_functions.clk_set_rate) 63 return clk_functions.clk_set_rate(clk, rate); 64 return -ENOSYS; 65} 66EXPORT_SYMBOL(clk_set_rate); 67 68struct clk *clk_get_parent(struct clk *clk) 69{ 70 if (clk_functions.clk_get_parent) 71 return clk_functions.clk_get_parent(clk); 72 return ERR_PTR(-ENOSYS); 73} 74EXPORT_SYMBOL(clk_get_parent); 75 76int clk_set_parent(struct clk *clk, struct clk *parent) 77{ 78 if (clk_functions.clk_set_parent) 79 return clk_functions.clk_set_parent(clk, parent); 80 return -ENOSYS; 81} 82EXPORT_SYMBOL(clk_set_parent); 83