factorise some generic infrastructure to assist looking up struct clks for the ARM & SH architecture. as the code is identical at 99% put the arch specific code for allocation as example in asm/clkdev.h Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Acked-by: Paul Mundt <lethal@linux-sh.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * arch/sh/kernel/cpu/clock.c - SuperH clock framework
 | 
						|
 *
 | 
						|
 *  Copyright (C) 2005 - 2009  Paul Mundt
 | 
						|
 *
 | 
						|
 * This clock framework is derived from the OMAP version by:
 | 
						|
 *
 | 
						|
 *	Copyright (C) 2004 - 2008 Nokia Corporation
 | 
						|
 *	Written by Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com>
 | 
						|
 *
 | 
						|
 *  Modified for omap shared clock framework by Tony Lindgren <tony@atomide.com>
 | 
						|
 *
 | 
						|
 * This file is subject to the terms and conditions of the GNU General Public
 | 
						|
 * License.  See the file "COPYING" in the main directory of this archive
 | 
						|
 * for more details.
 | 
						|
 */
 | 
						|
#include <linux/kernel.h>
 | 
						|
#include <linux/init.h>
 | 
						|
#include <linux/clk.h>
 | 
						|
#include <asm/clock.h>
 | 
						|
#include <asm/machvec.h>
 | 
						|
 | 
						|
int __init clk_init(void)
 | 
						|
{
 | 
						|
	int ret;
 | 
						|
 | 
						|
	ret = arch_clk_init();
 | 
						|
	if (unlikely(ret)) {
 | 
						|
		pr_err("%s: CPU clock registration failed.\n", __func__);
 | 
						|
		return ret;
 | 
						|
	}
 | 
						|
 | 
						|
	if (sh_mv.mv_clk_init) {
 | 
						|
		ret = sh_mv.mv_clk_init();
 | 
						|
		if (unlikely(ret)) {
 | 
						|
			pr_err("%s: machvec clock initialization failed.\n",
 | 
						|
			       __func__);
 | 
						|
			return ret;
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	/* Kick the child clocks.. */
 | 
						|
	recalculate_root_clocks();
 | 
						|
 | 
						|
	/* Enable the necessary init clocks */
 | 
						|
	clk_enable_init_clocks();
 | 
						|
 | 
						|
	return ret;
 | 
						|
}
 | 
						|
 | 
						|
 |