2009-07-02 19:06:47 +01:00
/*
* linux / arch / arm / mach - nomadik / clock . c
*
* Copyright ( C ) 2009 Alessandro Rubini
*/
# include <linux/kernel.h>
# include <linux/module.h>
# include <linux/errno.h>
# include <linux/clk.h>
# include <asm/clkdev.h>
# include "clock.h"
/*
* The nomadik board uses generic clocks , but the serial pl011 file
* calls clk_enable ( ) , clk_disable ( ) , clk_get_rate ( ) , so we provide them
*/
unsigned long clk_get_rate ( struct clk * clk )
{
return clk - > rate ;
}
EXPORT_SYMBOL ( clk_get_rate ) ;
/* enable and disable do nothing */
int clk_enable ( struct clk * clk )
{
return 0 ;
}
EXPORT_SYMBOL ( clk_enable ) ;
void clk_disable ( struct clk * clk )
{
}
EXPORT_SYMBOL ( clk_disable ) ;
2010-05-06 10:47:25 +01:00
/* We have a fixed clock alone, for now */
static struct clk clk_48 = {
. rate = 48 * 1000 * 1000 ,
} ;
2010-05-06 11:14:17 +01:00
/*
* Catch - all default clock to satisfy drivers using the clk API . We don ' t
* model the actual hardware clocks yet .
*/
static struct clk clk_default ;
2010-05-06 10:47:25 +01:00
# define CLK(_clk, dev) \
{ \
. clk = _clk , \
. dev_id = dev , \
}
static struct clk_lookup lookups [ ] = {
CLK ( & clk_48 , " uart0 " ) ,
CLK ( & clk_48 , " uart1 " ) ,
2010-05-06 11:14:17 +01:00
CLK ( & clk_default , " gpio.0 " ) ,
CLK ( & clk_default , " gpio.1 " ) ,
CLK ( & clk_default , " gpio.2 " ) ,
CLK ( & clk_default , " gpio.3 " ) ,
2010-05-19 06:49:13 +01:00
CLK ( & clk_default , " rng " ) ,
2010-05-06 10:47:25 +01:00
} ;
2009-07-02 19:06:47 +01:00
2010-05-06 10:47:25 +01:00
static int __init clk_init ( void )
{
clkdev_add_table ( lookups , ARRAY_SIZE ( lookups ) ) ;
2009-07-02 19:06:47 +01:00
return 0 ;
}
2010-05-06 10:47:25 +01:00
arch_initcall ( clk_init ) ;