| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | /* linux/arch/arm/plat-s3c64xx/clock.c * * Copyright 2008 Openmoko, Inc. * Copyright 2008 Simtec Electronics *	Ben Dooks <ben@simtec.co.uk> *	http://armlinux.simtec.co.uk/ * * S3C64XX Base clock support * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation.*/#include <linux/init.h>#include <linux/module.h>#include <linux/interrupt.h>#include <linux/ioport.h>#include <linux/clk.h>#include <linux/err.h>#include <linux/io.h>#include <mach/hardware.h>#include <mach/map.h>#include <mach/regs-sys.h>#include <mach/regs-clock.h>#include <plat/cpu.h>#include <plat/devs.h>#include <plat/cpu-freq.h>#include <plat/clock.h>#include <plat/clock-clksrc.h>#include <plat/pll.h>/* fin_apll, fin_mpll and fin_epll are all the same clock, which we call * ext_xtal_mux for want of an actual name from the manual.*/static struct clk clk_ext_xtal_mux = {	.name		= "ext_xtal",};#define clk_fin_apll clk_ext_xtal_mux#define clk_fin_mpll clk_ext_xtal_mux#define clk_fin_epll clk_ext_xtal_mux#define clk_fout_mpll	clk_mpll#define clk_fout_epll	clk_epllstruct clk clk_h2 = {	.name		= "hclk2",	.rate		= 0,};struct clk clk_27m = {	.name		= "clk_27m",	.rate		= 27000000,};static int clk_48m_ctrl(struct clk *clk, int enable){	unsigned long flags;	u32 val;	/* can't rely on clock lock, this register has other usages */	local_irq_save(flags);
 |