1 /* 2 * SH-Mobile Clock Framework 3 * 4 * Copyright (C) 2010 Magnus Damm 5 * 6 * Used together with arch/arm/common/clkdev.c and drivers/sh/clk.c. 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; version 2 of the License. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 * 21 */ 22 #include <linux/kernel.h> 23 #include <linux/init.h> 24 #include <linux/sh_clk.h> 25 #include <linux/export.h> 26 #include <mach/clock.h> 27 #include <mach/common.h> 28 shmobile_fixed_ratio_clk_recalc(struct clk * clk)29unsigned long shmobile_fixed_ratio_clk_recalc(struct clk *clk) 30 { 31 struct clk_ratio *p = clk->priv; 32 33 return clk->parent->rate / p->div * p->mul; 34 }; 35 36 struct sh_clk_ops shmobile_fixed_ratio_clk_ops = { 37 .recalc = shmobile_fixed_ratio_clk_recalc, 38 }; 39 shmobile_clk_init(void)40int __init shmobile_clk_init(void) 41 { 42 /* Kick the child clocks.. */ 43 recalculate_root_clocks(); 44 45 /* Enable the necessary init clocks */ 46 clk_enable_init_clocks(); 47 48 return 0; 49 } 50 __clk_get(struct clk * clk)51int __clk_get(struct clk *clk) 52 { 53 return 1; 54 } 55 EXPORT_SYMBOL(__clk_get); 56 __clk_put(struct clk * clk)57void __clk_put(struct clk *clk) 58 { 59 } 60 EXPORT_SYMBOL(__clk_put); 61