blob: 8202b7ed0e3111141181347ad3fd2410900c72e2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef __ULTRARISC_CLK_ULTRARISC_H
#define __ULTRARISC_CLK_ULTRARISC_H
#include <linux/clk-provider.h>
#include <linux/platform_device.h>
#include <linux/types.h>
struct ultrarisc_pll_layout {
u32 cfg1_offset;
u32 cfg2_offset;
u32 frac_mask;
u32 m_mask;
u32 n_mask;
u32 oddiv1_mask;
u32 oddiv2_mask;
};
struct ultrarisc_pll_desc {
u32 id;
const char *name;
};
struct ultrarisc_fixed_factor_desc {
u32 id;
const char *name;
u32 parent_id;
u32 mult;
u32 div;
};
struct ultrarisc_divider_desc {
u32 id;
const char *name;
u32 offset;
u32 parent_id;
unsigned long max_rate;
u32 load_mask;
u8 div_shift;
u8 div_width;
u8 gate_bit;
u16 divider_flags;
u8 gate_flags;
};
struct ultrarisc_gate_desc {
u32 id;
const char *name;
u32 offset;
u32 parent_id;
u8 gate_bit;
u8 gate_flags;
};
struct ultrarisc_clk_soc_data {
const struct ultrarisc_pll_layout *pll_layout;
const struct ultrarisc_pll_desc *plls;
u32 num_plls;
const struct ultrarisc_fixed_factor_desc *fixed_factors;
u32 num_fixed_factors;
const struct ultrarisc_divider_desc *dividers;
u32 num_dividers;
const struct ultrarisc_gate_desc *gates;
u32 num_gates;
u32 num_clks;
};
int ultrarisc_clk_probe(struct platform_device *pdev,
const struct ultrarisc_clk_soc_data *soc_data);
#endif /* __ULTRARISC_CLK_ULTRARISC_H */
|