/* * 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 <linux/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); static struct clk clk_24 = { .rate = 2400000, }; static struct clk clk_48 = { .rate = 48 * 1000 * 1000, }; /* * 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; #define CLK(_clk, dev) \ { \ .clk = _clk, \ .dev_id = dev, \ } static struct clk_lookup lookups[] = { { .con_id = "apb_pclk", .clk = &clk_default, }, CLK(&clk_24, "mtu0"), CLK(&clk_24, "mtu1"), CLK(&clk_48, "uart0"), CLK(&clk_48, "uart1"), CLK(&clk_default, "gpio.0"), CLK(&clk_default, "gpio.1"), CLK(&clk_default, "gpio.2"), CLK(&clk_default, "gpio.3"), CLK(&clk_default, "rng"), }; int __init clk_init(void) { clkdev_add_table(lookups, ARRAY_SIZE(lookups)); return 0; }