blob: 7af7850177825100a2453b60a266ea697ccaff9d [file] [log] [blame]
Alessandro Rubini28ad94e2009-07-02 19:06:47 +01001/*
2 * linux/arch/arm/mach-nomadik/clock.c
3 *
4 * Copyright (C) 2009 Alessandro Rubini
5 */
6#include <linux/kernel.h>
7#include <linux/module.h>
8#include <linux/errno.h>
9#include <linux/clk.h>
10#include <asm/clkdev.h>
11#include "clock.h"
12
13/*
14 * The nomadik board uses generic clocks, but the serial pl011 file
15 * calls clk_enable(), clk_disable(), clk_get_rate(), so we provide them
16 */
17unsigned long clk_get_rate(struct clk *clk)
18{
19 return clk->rate;
20}
21EXPORT_SYMBOL(clk_get_rate);
22
23/* enable and disable do nothing */
24int clk_enable(struct clk *clk)
25{
26 return 0;
27}
28EXPORT_SYMBOL(clk_enable);
29
30void clk_disable(struct clk *clk)
31{
32}
33EXPORT_SYMBOL(clk_disable);
34
Rabin Vincentdc6048c2010-05-06 10:47:25 +010035/* We have a fixed clock alone, for now */
36static struct clk clk_48 = {
37 .rate = 48 * 1000 * 1000,
38};
Alessandro Rubini28ad94e2009-07-02 19:06:47 +010039
Rabin Vincentdc6048c2010-05-06 10:47:25 +010040#define CLK(_clk, dev) \
41 { \
42 .clk = _clk, \
43 .dev_id = dev, \
44 }
45
46static struct clk_lookup lookups[] = {
47 CLK(&clk_48, "uart0"),
48 CLK(&clk_48, "uart1"),
49};
50
51static int __init clk_init(void)
52{
53 clkdev_add_table(lookups, ARRAY_SIZE(lookups));
Alessandro Rubini28ad94e2009-07-02 19:06:47 +010054 return 0;
55}
Rabin Vincentdc6048c2010-05-06 10:47:25 +010056
57arch_initcall(clk_init);