Linux-libre 5.4.48-gnu
[librecmc/linux-libre.git] / drivers / clk / socfpga / stratix10-clk.h
1 /* SPDX-License-Identifier:    GPL-2.0 */
2 /*
3  * Copyright (C) 2017, Intel Corporation
4  */
5
6 #ifndef __STRATIX10_CLK_H
7 #define __STRATIX10_CLK_H
8
9 struct stratix10_clock_data {
10         struct clk_onecell_data clk_data;
11         void __iomem            *base;
12 };
13
14 struct stratix10_pll_clock {
15         unsigned int            id;
16         const char              *name;
17         const char              *const *parent_names;
18         u8                      num_parents;
19         unsigned long           flags;
20         unsigned long           offset;
21 };
22
23 struct stratix10_perip_c_clock {
24         unsigned int            id;
25         const char              *name;
26         const char              *parent_name;
27         const char              *const *parent_names;
28         u8                      num_parents;
29         unsigned long           flags;
30         unsigned long           offset;
31 };
32
33 struct stratix10_perip_cnt_clock {
34         unsigned int            id;
35         const char              *name;
36         const char              *parent_name;
37         const char              *const *parent_names;
38         u8                      num_parents;
39         unsigned long           flags;
40         unsigned long           offset;
41         u8                      fixed_divider;
42         unsigned long           bypass_reg;
43         unsigned long           bypass_shift;
44 };
45
46 struct stratix10_gate_clock {
47         unsigned int            id;
48         const char              *name;
49         const char              *parent_name;
50         const char              *const *parent_names;
51         u8                      num_parents;
52         unsigned long           flags;
53         unsigned long           gate_reg;
54         u8                      gate_idx;
55         unsigned long           div_reg;
56         u8                      div_offset;
57         u8                      div_width;
58         unsigned long           bypass_reg;
59         u8                      bypass_shift;
60         u8                      fixed_div;
61 };
62
63 struct clk *s10_register_pll(const char *, const char *const *, u8,
64                              unsigned long, void __iomem *, unsigned long);
65
66 struct clk *s10_register_periph(const char *, const char *,
67                                 const char * const *, u8, unsigned long,
68                                 void __iomem *, unsigned long);
69 struct clk *s10_register_cnt_periph(const char *, const char *,
70                                     const char * const *, u8,
71                                     unsigned long, void __iomem *,
72                                     unsigned long, u8, unsigned long,
73                                     unsigned long);
74 struct clk *s10_register_gate(const char *, const char *,
75                               const char * const *, u8,
76                               unsigned long, void __iomem *,
77                               unsigned long, unsigned long,
78                               unsigned long, unsigned long, u8,
79                               unsigned long, u8, u8);
80 #endif  /* __STRATIX10_CLK_H */