12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /*
- * 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;
- }
|