/* * * arch/arm/mach-u300/clock.c * * * Copyright (C) 2007-2009 ST-Ericsson AB * License terms: GNU General Public License (GPL) version 2 * Define clocks in the app platform. * Author: Linus Walleij <linus.walleij@stericsson.com> * Author: Jonas Aaberg <jonas.aberg@stericsson.com> * */#include<linux/module.h>#include<linux/kernel.h>#include<linux/list.h>#include<linux/errno.h>#include<linux/err.h>#include<linux/string.h>#include<linux/clk.h>#include<linux/mutex.h>#include<linux/spinlock.h>#include<linux/debugfs.h>#include<linux/device.h>#include<linux/init.h>#include<linux/timer.h>#include<linux/io.h>#include<linux/seq_file.h>#include<asm/clkdev.h>#include<mach/hardware.h>#include<mach/syscon.h>#include"clock.h"/* * TODO: * - move all handling of the CCR register into this file and create * a spinlock for the CCR register * - switch to the clkdevice lookup mechanism that maps clocks to * device ID:s instead when it becomes available in kernel 2.6.29. * - implement rate get/set for all clocks that need it. *//* * Syscon clock I/O registers lock so clock requests don't collide * NOTE: this is a local lock only used to lock access to clock and * reset registers in syscon. */staticDEFINE_SPINLOCK(syscon_clkreg_lock);staticDEFINE_SPINLOCK(syscon_resetreg_lock);/* * The clocking hierarchy currently looks like this. * NOTE: the idea is NOT to show how the clocks are routed on the chip! * The ideas is to show dependencies, so a clock higher up in the * hierarchy has to be on in order for another clock to be on. Now, * both CPU and DMA can actually be on top of the hierarchy, and that * is not modeled currently. Instead we have the backbone AMBA bus on * top. This bus cannot be programmed in any way but conceptually it * needs to be active for the bridges and device