aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/clk/at91/clk-generated.c2
-rw-r--r--drivers/clk/at91/clk-i2s-mux.c4
-rw-r--r--drivers/clk/at91/clk-main.c8
-rw-r--r--drivers/clk/at91/clk-master.c17
-rw-r--r--drivers/clk/at91/clk-peripheral.c4
-rw-r--r--drivers/clk/at91/clk-pll.c24
-rw-r--r--drivers/clk/at91/clk-plldiv.c2
-rw-r--r--drivers/clk/at91/clk-programmable.c14
-rw-r--r--drivers/clk/at91/clk-slow.c2
-rw-r--r--drivers/clk/at91/clk-smd.c2
-rw-r--r--drivers/clk/at91/clk-system.c2
-rw-r--r--drivers/clk/at91/clk-usb.c6
-rw-r--r--drivers/clk/at91/clk-utmi.c2
-rw-r--r--drivers/clk/at91/pmc.h142
14 files changed, 172 insertions, 59 deletions
diff --git a/drivers/clk/at91/clk-generated.c b/drivers/clk/at91/clk-generated.c
index 6dfee6e588c4..0fe4d7f04225 100644
--- a/drivers/clk/at91/clk-generated.c
+++ b/drivers/clk/at91/clk-generated.c
@@ -277,7 +277,7 @@ static void clk_generated_startup(struct clk_generated *gck)
277 >> AT91_PMC_PCR_GCKDIV_OFFSET; 277 >> AT91_PMC_PCR_GCKDIV_OFFSET;
278} 278}
279 279
280static struct clk_hw * __init 280struct clk_hw * __init
281at91_clk_register_generated(struct regmap *regmap, spinlock_t *lock, 281at91_clk_register_generated(struct regmap *regmap, spinlock_t *lock,
282 const char *name, const char **parent_names, 282 const char *name, const char **parent_names,
283 u8 num_parents, u8 id, bool pll_audio, 283 u8 num_parents, u8 id, bool pll_audio,
diff --git a/drivers/clk/at91/clk-i2s-mux.c b/drivers/clk/at91/clk-i2s-mux.c
index f0c3c3079f04..276d055c8a41 100644
--- a/drivers/clk/at91/clk-i2s-mux.c
+++ b/drivers/clk/at91/clk-i2s-mux.c
@@ -14,6 +14,8 @@
14 14
15#include <soc/at91/atmel-sfr.h> 15#include <soc/at91/atmel-sfr.h>
16 16
17#include "pmc.h"
18
17#define I2S_BUS_NR 2 19#define I2S_BUS_NR 2
18 20
19struct clk_i2s_mux { 21struct clk_i2s_mux {
@@ -48,7 +50,7 @@ static const struct clk_ops clk_i2s_mux_ops = {
48 .determine_rate = __clk_mux_determine_rate, 50 .determine_rate = __clk_mux_determine_rate,
49}; 51};
50 52
51static struct clk_hw * __init 53struct clk_hw * __init
52at91_clk_i2s_mux_register(struct regmap *regmap, const char *name, 54at91_clk_i2s_mux_register(struct regmap *regmap, const char *name,
53 const char * const *parent_names, 55 const char * const *parent_names,
54 unsigned int num_parents, u8 bus_id) 56 unsigned int num_parents, u8 bus_id)
diff --git a/drivers/clk/at91/clk-main.c b/drivers/clk/at91/clk-main.c
index c813c27f2e58..82184009137d 100644
--- a/drivers/clk/at91/clk-main.c
+++ b/drivers/clk/at91/clk-main.c
@@ -128,7 +128,7 @@ static const struct clk_ops main_osc_ops = {
128 .is_prepared = clk_main_osc_is_prepared, 128 .is_prepared = clk_main_osc_is_prepared,
129}; 129};
130 130
131static struct clk_hw * __init 131struct clk_hw * __init
132at91_clk_register_main_osc(struct regmap *regmap, 132at91_clk_register_main_osc(struct regmap *regmap,
133 const char *name, 133 const char *name,
134 const char *parent_name, 134 const char *parent_name,
@@ -275,7 +275,7 @@ static const struct clk_ops main_rc_osc_ops = {
275 .recalc_accuracy = clk_main_rc_osc_recalc_accuracy, 275 .recalc_accuracy = clk_main_rc_osc_recalc_accuracy,
276}; 276};
277 277
278static struct clk_hw * __init 278struct clk_hw * __init
279at91_clk_register_main_rc_osc(struct regmap *regmap, 279at91_clk_register_main_rc_osc(struct regmap *regmap,
280 const char *name, 280 const char *name,
281 u32 frequency, u32 accuracy) 281 u32 frequency, u32 accuracy)
@@ -403,7 +403,7 @@ static const struct clk_ops rm9200_main_ops = {
403 .recalc_rate = clk_rm9200_main_recalc_rate, 403 .recalc_rate = clk_rm9200_main_recalc_rate,
404}; 404};
405 405
406static struct clk_hw * __init 406struct clk_hw * __init
407at91_clk_register_rm9200_main(struct regmap *regmap, 407at91_clk_register_rm9200_main(struct regmap *regmap,
408 const char *name, 408 const char *name,
409 const char *parent_name) 409 const char *parent_name)
@@ -541,7 +541,7 @@ static const struct clk_ops sam9x5_main_ops = {
541 .get_parent = clk_sam9x5_main_get_parent, 541 .get_parent = clk_sam9x5_main_get_parent,
542}; 542};
543 543
544static struct clk_hw * __init 544struct clk_hw * __init
545at91_clk_register_sam9x5_main(struct regmap *regmap, 545at91_clk_register_sam9x5_main(struct regmap *regmap,
546 const char *name, 546 const char *name,
547 const char **parent_names, 547 const char **parent_names,
diff --git a/drivers/clk/at91/clk-master.c b/drivers/clk/at91/clk-master.c
index e9cba9fc26d7..088044bb6ea2 100644
--- a/drivers/clk/at91/clk-master.c
+++ b/drivers/clk/at91/clk-master.c
@@ -24,17 +24,6 @@
24#define MASTER_DIV_SHIFT 8 24#define MASTER_DIV_SHIFT 8
25#define MASTER_DIV_MASK 0x3 25#define MASTER_DIV_MASK 0x3
26 26
27struct clk_master_characteristics {
28 struct clk_range output;
29 u32 divisors[4];
30 u8 have_div3_pres;
31};
32
33struct clk_master_layout {
34 u32 mask;
35 u8 pres_shift;
36};
37
38#define to_clk_master(hw) container_of(hw, struct clk_master, hw) 27#define to_clk_master(hw) container_of(hw, struct clk_master, hw)
39 28
40struct clk_master { 29struct clk_master {
@@ -120,7 +109,7 @@ static const struct clk_ops master_ops = {
120 .get_parent = clk_master_get_parent, 109 .get_parent = clk_master_get_parent,
121}; 110};
122 111
123static struct clk_hw * __init 112struct clk_hw * __init
124at91_clk_register_master(struct regmap *regmap, 113at91_clk_register_master(struct regmap *regmap,
125 const char *name, int num_parents, 114 const char *name, int num_parents,
126 const char **parent_names, 115 const char **parent_names,
@@ -161,12 +150,12 @@ at91_clk_register_master(struct regmap *regmap,
161} 150}
162 151
163 152
164static const struct clk_master_layout at91rm9200_master_layout = { 153const struct clk_master_layout at91rm9200_master_layout = {
165 .mask = 0x31F, 154 .mask = 0x31F,
166 .pres_shift = 2, 155 .pres_shift = 2,
167}; 156};
168 157
169static const struct clk_master_layout at91sam9x5_master_layout = { 158const struct clk_master_layout at91sam9x5_master_layout = {
170 .mask = 0x373, 159 .mask = 0x373,
171 .pres_shift = 4, 160 .pres_shift = 4,
172}; 161};
diff --git a/drivers/clk/at91/clk-peripheral.c b/drivers/clk/at91/clk-peripheral.c
index 770118369230..cb41d06a2481 100644
--- a/drivers/clk/at91/clk-peripheral.c
+++ b/drivers/clk/at91/clk-peripheral.c
@@ -104,7 +104,7 @@ static const struct clk_ops peripheral_ops = {
104 .is_enabled = clk_peripheral_is_enabled, 104 .is_enabled = clk_peripheral_is_enabled,
105}; 105};
106 106
107static struct clk_hw * __init 107struct clk_hw * __init
108at91_clk_register_peripheral(struct regmap *regmap, const char *name, 108at91_clk_register_peripheral(struct regmap *regmap, const char *name,
109 const char *parent_name, u32 id) 109 const char *parent_name, u32 id)
110{ 110{
@@ -331,7 +331,7 @@ static const struct clk_ops sam9x5_peripheral_ops = {
331 .set_rate = clk_sam9x5_peripheral_set_rate, 331 .set_rate = clk_sam9x5_peripheral_set_rate,
332}; 332};
333 333
334static struct clk_hw * __init 334struct clk_hw * __init
335at91_clk_register_sam9x5_peripheral(struct regmap *regmap, spinlock_t *lock, 335at91_clk_register_sam9x5_peripheral(struct regmap *regmap, spinlock_t *lock,
336 const char *name, const char *parent_name, 336 const char *name, const char *parent_name,
337 u32 id, const struct clk_range *range) 337 u32 id, const struct clk_range *range)
diff --git a/drivers/clk/at91/clk-pll.c b/drivers/clk/at91/clk-pll.c
index 72b6091eb7b9..31fff0b9d5c2 100644
--- a/drivers/clk/at91/clk-pll.c
+++ b/drivers/clk/at91/clk-pll.c
@@ -34,20 +34,6 @@
34#define PLL_OUT_SHIFT 14 34#define PLL_OUT_SHIFT 14
35#define PLL_MAX_ID 1 35#define PLL_MAX_ID 1
36 36
37struct clk_pll_characteristics {
38 struct clk_range input;
39 int num_output;
40 struct clk_range *output;
41 u16 *icpll;
42 u8 *out;
43};
44
45struct clk_pll_layout {
46 u32 pllr_mask;
47 u16 mul_mask;
48 u8 mul_shift;
49};
50
51#define to_clk_pll(hw) container_of(hw, struct clk_pll, hw) 37#define to_clk_pll(hw) container_of(hw, struct clk_pll, hw)
52 38
53struct clk_pll { 39struct clk_pll {
@@ -285,7 +271,7 @@ static const struct clk_ops pll_ops = {
285 .set_rate = clk_pll_set_rate, 271 .set_rate = clk_pll_set_rate,
286}; 272};
287 273
288static struct clk_hw * __init 274struct clk_hw * __init
289at91_clk_register_pll(struct regmap *regmap, const char *name, 275at91_clk_register_pll(struct regmap *regmap, const char *name,
290 const char *parent_name, u8 id, 276 const char *parent_name, u8 id,
291 const struct clk_pll_layout *layout, 277 const struct clk_pll_layout *layout,
@@ -331,25 +317,25 @@ at91_clk_register_pll(struct regmap *regmap, const char *name,
331} 317}
332 318
333 319
334static const struct clk_pll_layout at91rm9200_pll_layout = { 320const struct clk_pll_layout at91rm9200_pll_layout = {
335 .pllr_mask = 0x7FFFFFF, 321 .pllr_mask = 0x7FFFFFF,
336 .mul_shift = 16, 322 .mul_shift = 16,
337 .mul_mask = 0x7FF, 323 .mul_mask = 0x7FF,
338}; 324};
339 325
340static const struct clk_pll_layout at91sam9g45_pll_layout = { 326const struct clk_pll_layout at91sam9g45_pll_layout = {
341 .pllr_mask = 0xFFFFFF, 327 .pllr_mask = 0xFFFFFF,
342 .mul_shift = 16, 328 .mul_shift = 16,
343 .mul_mask = 0xFF, 329 .mul_mask = 0xFF,
344}; 330};
345 331
346static const struct clk_pll_layout at91sam9g20_pllb_layout = { 332const struct clk_pll_layout at91sam9g20_pllb_layout = {
347 .pllr_mask = 0x3FFFFF, 333 .pllr_mask = 0x3FFFFF,
348 .mul_shift = 16, 334 .mul_shift = 16,
349 .mul_mask = 0x3F, 335 .mul_mask = 0x3F,
350}; 336};
351 337
352static const struct clk_pll_layout sama5d3_pll_layout = { 338const struct clk_pll_layout sama5d3_pll_layout = {
353 .pllr_mask = 0x1FFFFFF, 339 .pllr_mask = 0x1FFFFFF,
354 .mul_shift = 18, 340 .mul_shift = 18,
355 .mul_mask = 0x7F, 341 .mul_mask = 0x7F,
diff --git a/drivers/clk/at91/clk-plldiv.c b/drivers/clk/at91/clk-plldiv.c
index b4afaf22f3fd..de803a2b27d3 100644
--- a/drivers/clk/at91/clk-plldiv.c
+++ b/drivers/clk/at91/clk-plldiv.c
@@ -75,7 +75,7 @@ static const struct clk_ops plldiv_ops = {
75 .set_rate = clk_plldiv_set_rate, 75 .set_rate = clk_plldiv_set_rate,
76}; 76};
77 77
78static struct clk_hw * __init 78struct clk_hw * __init
79at91_clk_register_plldiv(struct regmap *regmap, const char *name, 79at91_clk_register_plldiv(struct regmap *regmap, const char *name,
80 const char *parent_name) 80 const char *parent_name)
81{ 81{
diff --git a/drivers/clk/at91/clk-programmable.c b/drivers/clk/at91/clk-programmable.c
index 0e6aab1252fc..df302bfa8259 100644
--- a/drivers/clk/at91/clk-programmable.c
+++ b/drivers/clk/at91/clk-programmable.c
@@ -25,12 +25,6 @@
25#define PROG_PRES(layout, pckr) ((pckr >> layout->pres_shift) & PROG_PRES_MASK) 25#define PROG_PRES(layout, pckr) ((pckr >> layout->pres_shift) & PROG_PRES_MASK)
26#define PROG_MAX_RM9200_CSS 3 26#define PROG_MAX_RM9200_CSS 3
27 27
28struct clk_programmable_layout {
29 u8 pres_shift;
30 u8 css_mask;
31 u8 have_slck_mck;
32};
33
34struct clk_programmable { 28struct clk_programmable {
35 struct clk_hw hw; 29 struct clk_hw hw;
36 struct regmap *regmap; 30 struct regmap *regmap;
@@ -170,7 +164,7 @@ static const struct clk_ops programmable_ops = {
170 .set_rate = clk_programmable_set_rate, 164 .set_rate = clk_programmable_set_rate,
171}; 165};
172 166
173static struct clk_hw * __init 167struct clk_hw * __init
174at91_clk_register_programmable(struct regmap *regmap, 168at91_clk_register_programmable(struct regmap *regmap,
175 const char *name, const char **parent_names, 169 const char *name, const char **parent_names,
176 u8 num_parents, u8 id, 170 u8 num_parents, u8 id,
@@ -211,19 +205,19 @@ at91_clk_register_programmable(struct regmap *regmap,
211 return hw; 205 return hw;
212} 206}
213 207
214static const struct clk_programmable_layout at91rm9200_programmable_layout = { 208const struct clk_programmable_layout at91rm9200_programmable_layout = {
215 .pres_shift = 2, 209 .pres_shift = 2,
216 .css_mask = 0x3, 210 .css_mask = 0x3,
217 .have_slck_mck = 0, 211 .have_slck_mck = 0,
218}; 212};
219 213
220static const struct clk_programmable_layout at91sam9g45_programmable_layout = { 214const struct clk_programmable_layout at91sam9g45_programmable_layout = {
221 .pres_shift = 2, 215 .pres_shift = 2,
222 .css_mask = 0x3, 216 .css_mask = 0x3,
223 .have_slck_mck = 1, 217 .have_slck_mck = 1,
224}; 218};
225 219
226static const struct clk_programmable_layout at91sam9x5_programmable_layout = { 220const struct clk_programmable_layout at91sam9x5_programmable_layout = {
227 .pres_shift = 4, 221 .pres_shift = 4,
228 .css_mask = 0x7, 222 .css_mask = 0x7,
229 .have_slck_mck = 0, 223 .have_slck_mck = 0,
diff --git a/drivers/clk/at91/clk-slow.c b/drivers/clk/at91/clk-slow.c
index 560a8b9abf93..a890132db68f 100644
--- a/drivers/clk/at91/clk-slow.c
+++ b/drivers/clk/at91/clk-slow.c
@@ -40,7 +40,7 @@ static const struct clk_ops sam9260_slow_ops = {
40 .get_parent = clk_sam9260_slow_get_parent, 40 .get_parent = clk_sam9260_slow_get_parent,
41}; 41};
42 42
43static struct clk_hw * __init 43struct clk_hw * __init
44at91_clk_register_sam9260_slow(struct regmap *regmap, 44at91_clk_register_sam9260_slow(struct regmap *regmap,
45 const char *name, 45 const char *name,
46 const char **parent_names, 46 const char **parent_names,
diff --git a/drivers/clk/at91/clk-smd.c b/drivers/clk/at91/clk-smd.c
index 965c662b90a5..bbf5dc91777f 100644
--- a/drivers/clk/at91/clk-smd.c
+++ b/drivers/clk/at91/clk-smd.c
@@ -111,7 +111,7 @@ static const struct clk_ops at91sam9x5_smd_ops = {
111 .set_rate = at91sam9x5_clk_smd_set_rate, 111 .set_rate = at91sam9x5_clk_smd_set_rate,
112}; 112};
113 113
114static struct clk_hw * __init 114struct clk_hw * __init
115at91sam9x5_clk_register_smd(struct regmap *regmap, const char *name, 115at91sam9x5_clk_register_smd(struct regmap *regmap, const char *name,
116 const char **parent_names, u8 num_parents) 116 const char **parent_names, u8 num_parents)
117{ 117{
diff --git a/drivers/clk/at91/clk-system.c b/drivers/clk/at91/clk-system.c
index 86a36809765d..1ac0144a38c0 100644
--- a/drivers/clk/at91/clk-system.c
+++ b/drivers/clk/at91/clk-system.c
@@ -88,7 +88,7 @@ static const struct clk_ops system_ops = {
88 .is_prepared = clk_system_is_prepared, 88 .is_prepared = clk_system_is_prepared,
89}; 89};
90 90
91static struct clk_hw * __init 91struct clk_hw * __init
92at91_clk_register_system(struct regmap *regmap, const char *name, 92at91_clk_register_system(struct regmap *regmap, const char *name,
93 const char *parent_name, u8 id) 93 const char *parent_name, u8 id)
94{ 94{
diff --git a/drivers/clk/at91/clk-usb.c b/drivers/clk/at91/clk-usb.c
index 791770a563fc..a728320877dd 100644
--- a/drivers/clk/at91/clk-usb.c
+++ b/drivers/clk/at91/clk-usb.c
@@ -192,7 +192,7 @@ static const struct clk_ops at91sam9n12_usb_ops = {
192 .set_rate = at91sam9x5_clk_usb_set_rate, 192 .set_rate = at91sam9x5_clk_usb_set_rate,
193}; 193};
194 194
195static struct clk_hw * __init 195struct clk_hw * __init
196at91sam9x5_clk_register_usb(struct regmap *regmap, const char *name, 196at91sam9x5_clk_register_usb(struct regmap *regmap, const char *name,
197 const char **parent_names, u8 num_parents) 197 const char **parent_names, u8 num_parents)
198{ 198{
@@ -225,7 +225,7 @@ at91sam9x5_clk_register_usb(struct regmap *regmap, const char *name,
225 return hw; 225 return hw;
226} 226}
227 227
228static struct clk_hw * __init 228struct clk_hw * __init
229at91sam9n12_clk_register_usb(struct regmap *regmap, const char *name, 229at91sam9n12_clk_register_usb(struct regmap *regmap, const char *name,
230 const char *parent_name) 230 const char *parent_name)
231{ 231{
@@ -342,7 +342,7 @@ static const struct clk_ops at91rm9200_usb_ops = {
342 .set_rate = at91rm9200_clk_usb_set_rate, 342 .set_rate = at91rm9200_clk_usb_set_rate,
343}; 343};
344 344
345static struct clk_hw * __init 345struct clk_hw * __init
346at91rm9200_clk_register_usb(struct regmap *regmap, const char *name, 346at91rm9200_clk_register_usb(struct regmap *regmap, const char *name,
347 const char *parent_name, const u32 *divisors) 347 const char *parent_name, const u32 *divisors)
348{ 348{
diff --git a/drivers/clk/at91/clk-utmi.c b/drivers/clk/at91/clk-utmi.c
index cd8d689138ff..6c69b6ac71e1 100644
--- a/drivers/clk/at91/clk-utmi.c
+++ b/drivers/clk/at91/clk-utmi.c
@@ -125,7 +125,7 @@ static const struct clk_ops utmi_ops = {
125 .recalc_rate = clk_utmi_recalc_rate, 125 .recalc_rate = clk_utmi_recalc_rate,
126}; 126};
127 127
128static struct clk_hw * __init 128struct clk_hw * __init
129at91_clk_register_utmi(struct regmap *regmap_pmc, struct regmap *regmap_sfr, 129at91_clk_register_utmi(struct regmap *regmap_pmc, struct regmap *regmap_sfr,
130 const char *name, const char *parent_name) 130 const char *name, const char *parent_name)
131{ 131{
diff --git a/drivers/clk/at91/pmc.h b/drivers/clk/at91/pmc.h
index d22b1fa9ecdc..3dc50267a458 100644
--- a/drivers/clk/at91/pmc.h
+++ b/drivers/clk/at91/pmc.h
@@ -26,9 +26,151 @@ struct clk_range {
26 26
27#define CLK_RANGE(MIN, MAX) {.min = MIN, .max = MAX,} 27#define CLK_RANGE(MIN, MAX) {.min = MIN, .max = MAX,}
28 28
29struct clk_master_layout {
30 u32 mask;
31 u8 pres_shift;
32};
33
34extern const struct clk_master_layout at91rm9200_master_layout;
35extern const struct clk_master_layout at91sam9x5_master_layout;
36
37struct clk_master_characteristics {
38 struct clk_range output;
39 u32 divisors[4];
40 u8 have_div3_pres;
41};
42
43struct clk_pll_layout {
44 u32 pllr_mask;
45 u16 mul_mask;
46 u8 mul_shift;
47};
48
49extern const struct clk_pll_layout at91rm9200_pll_layout;
50extern const struct clk_pll_layout at91sam9g45_pll_layout;
51extern const struct clk_pll_layout at91sam9g20_pllb_layout;
52extern const struct clk_pll_layout sama5d3_pll_layout;
53
54struct clk_pll_characteristics {
55 struct clk_range input;
56 int num_output;
57 struct clk_range *output;
58 u16 *icpll;
59 u8 *out;
60};
61
62struct clk_programmable_layout {
63 u8 pres_shift;
64 u8 css_mask;
65 u8 have_slck_mck;
66};
67
68extern const struct clk_programmable_layout at91rm9200_programmable_layout;
69extern const struct clk_programmable_layout at91sam9g45_programmable_layout;
70extern const struct clk_programmable_layout at91sam9x5_programmable_layout;
71
29int of_at91_get_clk_range(struct device_node *np, const char *propname, 72int of_at91_get_clk_range(struct device_node *np, const char *propname,
30 struct clk_range *range); 73 struct clk_range *range);
31 74
75struct clk_hw *of_clk_hw_pmc_get(struct of_phandle_args *clkspec, void *data);
76
77struct clk_hw * __init
78at91_clk_register_audio_pll_frac(struct regmap *regmap, const char *name,
79 const char *parent_name);
80
81struct clk_hw * __init
82at91_clk_register_audio_pll_pad(struct regmap *regmap, const char *name,
83 const char *parent_name);
84
85struct clk_hw * __init
86at91_clk_register_audio_pll_pmc(struct regmap *regmap, const char *name,
87 const char *parent_name);
88
89struct clk_hw * __init
90at91_clk_register_generated(struct regmap *regmap, spinlock_t *lock,
91 const char *name, const char **parent_names,
92 u8 num_parents, u8 id, bool pll_audio,
93 const struct clk_range *range);
94
95struct clk_hw * __init
96at91_clk_register_h32mx(struct regmap *regmap, const char *name,
97 const char *parent_name);
98
99struct clk_hw * __init
100at91_clk_i2s_mux_register(struct regmap *regmap, const char *name,
101 const char * const *parent_names,
102 unsigned int num_parents, u8 bus_id);
103
104struct clk_hw * __init
105at91_clk_register_main_rc_osc(struct regmap *regmap, const char *name,
106 u32 frequency, u32 accuracy);
107struct clk_hw * __init
108at91_clk_register_main_osc(struct regmap *regmap, const char *name,
109 const char *parent_name, bool bypass);
110struct clk_hw * __init
111at91_clk_register_rm9200_main(struct regmap *regmap,
112 const char *name,
113 const char *parent_name);
114struct clk_hw * __init
115at91_clk_register_sam9x5_main(struct regmap *regmap, const char *name,
116 const char **parent_names, int num_parents);
117
118struct clk_hw * __init
119at91_clk_register_master(struct regmap *regmap, const char *name,
120 int num_parents, const char **parent_names,
121 const struct clk_master_layout *layout,
122 const struct clk_master_characteristics *characteristics);
123
124struct clk_hw * __init
125at91_clk_register_peripheral(struct regmap *regmap, const char *name,
126 const char *parent_name, u32 id);
127struct clk_hw * __init
128at91_clk_register_sam9x5_peripheral(struct regmap *regmap, spinlock_t *lock,
129 const char *name, const char *parent_name,
130 u32 id, const struct clk_range *range);
131
132struct clk_hw * __init
133at91_clk_register_pll(struct regmap *regmap, const char *name,
134 const char *parent_name, u8 id,
135 const struct clk_pll_layout *layout,
136 const struct clk_pll_characteristics *characteristics);
137struct clk_hw * __init
138at91_clk_register_plldiv(struct regmap *regmap, const char *name,
139 const char *parent_name);
140
141struct clk_hw * __init
142at91_clk_register_programmable(struct regmap *regmap, const char *name,
143 const char **parent_names, u8 num_parents, u8 id,
144 const struct clk_programmable_layout *layout);
145
146struct clk_hw * __init
147at91_clk_register_sam9260_slow(struct regmap *regmap,
148 const char *name,
149 const char **parent_names,
150 int num_parents);
151
152struct clk_hw * __init
153at91sam9x5_clk_register_smd(struct regmap *regmap, const char *name,
154 const char **parent_names, u8 num_parents);
155
156struct clk_hw * __init
157at91_clk_register_system(struct regmap *regmap, const char *name,
158 const char *parent_name, u8 id);
159
160struct clk_hw * __init
161at91sam9x5_clk_register_usb(struct regmap *regmap, const char *name,
162 const char **parent_names, u8 num_parents);
163struct clk_hw * __init
164at91sam9n12_clk_register_usb(struct regmap *regmap, const char *name,
165 const char *parent_name);
166struct clk_hw * __init
167at91rm9200_clk_register_usb(struct regmap *regmap, const char *name,
168 const char *parent_name, const u32 *divisors);
169
170struct clk_hw * __init
171at91_clk_register_utmi(struct regmap *regmap_pmc, struct regmap *regmap_sfr,
172 const char *name, const char *parent_name);
173
32#ifdef CONFIG_PM 174#ifdef CONFIG_PM
33void pmc_register_id(u8 id); 175void pmc_register_id(u8 id);
34void pmc_register_pck(u8 pck); 176void pmc_register_pck(u8 pck);