Loading...
Note: File does not exist in v4.10.11.
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
9struct stratix10_clock_data {
10 struct clk_hw_onecell_data clk_data;
11 void __iomem *base;
12};
13
14struct stratix10_pll_clock {
15 unsigned int id;
16 const char *name;
17 const struct clk_parent_data *parent_data;
18 u8 num_parents;
19 unsigned long flags;
20 unsigned long offset;
21};
22
23struct stratix10_perip_c_clock {
24 unsigned int id;
25 const char *name;
26 const char *parent_name;
27 const struct clk_parent_data *parent_data;
28 u8 num_parents;
29 unsigned long flags;
30 unsigned long offset;
31};
32
33struct n5x_perip_c_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 unsigned long shift;
42};
43
44struct stratix10_perip_cnt_clock {
45 unsigned int id;
46 const char *name;
47 const char *parent_name;
48 const struct clk_parent_data *parent_data;
49 u8 num_parents;
50 unsigned long flags;
51 unsigned long offset;
52 u8 fixed_divider;
53 unsigned long bypass_reg;
54 unsigned long bypass_shift;
55};
56
57struct stratix10_gate_clock {
58 unsigned int id;
59 const char *name;
60 const char *parent_name;
61 const struct clk_parent_data *parent_data;
62 u8 num_parents;
63 unsigned long flags;
64 unsigned long gate_reg;
65 u8 gate_idx;
66 unsigned long div_reg;
67 u8 div_offset;
68 u8 div_width;
69 unsigned long bypass_reg;
70 u8 bypass_shift;
71 u8 fixed_div;
72};
73
74struct clk_hw *s10_register_pll(const struct stratix10_pll_clock *clks,
75 void __iomem *reg);
76struct clk_hw *agilex_register_pll(const struct stratix10_pll_clock *clks,
77 void __iomem *reg);
78struct clk_hw *n5x_register_pll(const struct stratix10_pll_clock *clks,
79 void __iomem *reg);
80struct clk_hw *s10_register_periph(const struct stratix10_perip_c_clock *clks,
81 void __iomem *reg);
82struct clk_hw *n5x_register_periph(const struct n5x_perip_c_clock *clks,
83 void __iomem *reg);
84struct clk_hw *s10_register_cnt_periph(const struct stratix10_perip_cnt_clock *clks,
85 void __iomem *reg);
86struct clk_hw *s10_register_gate(const struct stratix10_gate_clock *clks,
87 void __iomem *reg);
88struct clk_hw *agilex_register_gate(const struct stratix10_gate_clock *clks,
89 void __iomem *reg);
90#endif /* __STRATIX10_CLK_H */