Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-nomadik/clock.c
10817 views
1
/*
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 <linux/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
*/
17
unsigned long clk_get_rate(struct clk *clk)
18
{
19
return clk->rate;
20
}
21
EXPORT_SYMBOL(clk_get_rate);
22
23
/* enable and disable do nothing */
24
int clk_enable(struct clk *clk)
25
{
26
return 0;
27
}
28
EXPORT_SYMBOL(clk_enable);
29
30
void clk_disable(struct clk *clk)
31
{
32
}
33
EXPORT_SYMBOL(clk_disable);
34
35
static struct clk clk_24 = {
36
.rate = 2400000,
37
};
38
39
static struct clk clk_48 = {
40
.rate = 48 * 1000 * 1000,
41
};
42
43
/*
44
* Catch-all default clock to satisfy drivers using the clk API. We don't
45
* model the actual hardware clocks yet.
46
*/
47
static struct clk clk_default;
48
49
#define CLK(_clk, dev) \
50
{ \
51
.clk = _clk, \
52
.dev_id = dev, \
53
}
54
55
static struct clk_lookup lookups[] = {
56
{
57
.con_id = "apb_pclk",
58
.clk = &clk_default,
59
},
60
CLK(&clk_24, "mtu0"),
61
CLK(&clk_24, "mtu1"),
62
CLK(&clk_48, "uart0"),
63
CLK(&clk_48, "uart1"),
64
CLK(&clk_default, "gpio.0"),
65
CLK(&clk_default, "gpio.1"),
66
CLK(&clk_default, "gpio.2"),
67
CLK(&clk_default, "gpio.3"),
68
CLK(&clk_default, "rng"),
69
};
70
71
int __init clk_init(void)
72
{
73
clkdev_add_table(lookups, ARRAY_SIZE(lookups));
74
return 0;
75
}
76
77