| /* SPDX-License-Identifier: GPL-2.0 */ | |
| /* | |
| * Copyright (C) 2017, Intel Corporation | |
| */ | |
| #ifndef __STRATIX10_CLK_H | |
| #define __STRATIX10_CLK_H | |
| struct stratix10_clock_data { | |
| struct clk_hw_onecell_data clk_data; | |
| void __iomem *base; | |
| }; | |
| struct stratix10_pll_clock { | |
| unsigned int id; | |
| const char *name; | |
| const struct clk_parent_data *parent_data; | |
| u8 num_parents; | |
| unsigned long flags; | |
| unsigned long offset; | |
| }; | |
| struct stratix10_perip_c_clock { | |
| unsigned int id; | |
| const char *name; | |
| const char *parent_name; | |
| const struct clk_parent_data *parent_data; | |
| u8 num_parents; | |
| unsigned long flags; | |
| unsigned long offset; | |
| }; | |
| struct n5x_perip_c_clock { | |
| unsigned int id; | |
| const char *name; | |
| const char *parent_name; | |
| const char *const *parent_names; | |
| u8 num_parents; | |
| unsigned long flags; | |
| unsigned long offset; | |
| unsigned long shift; | |
| }; | |
| struct stratix10_perip_cnt_clock { | |
| unsigned int id; | |
| const char *name; | |
| const char *parent_name; | |
| const struct clk_parent_data *parent_data; | |
| u8 num_parents; | |
| unsigned long flags; | |
| unsigned long offset; | |
| u8 fixed_divider; | |
| unsigned long bypass_reg; | |
| unsigned long bypass_shift; | |
| }; | |
| struct stratix10_gate_clock { | |
| unsigned int id; | |
| const char *name; | |
| const char *parent_name; | |
| const struct clk_parent_data *parent_data; | |
| u8 num_parents; | |
| unsigned long flags; | |
| unsigned long gate_reg; | |
| u8 gate_idx; | |
| unsigned long div_reg; | |
| u8 div_offset; | |
| u8 div_width; | |
| unsigned long bypass_reg; | |
| u8 bypass_shift; | |
| u8 fixed_div; | |
| }; | |
| struct clk_hw *s10_register_pll(const struct stratix10_pll_clock *clks, | |
| void __iomem *reg); | |
| struct clk_hw *agilex_register_pll(const struct stratix10_pll_clock *clks, | |
| void __iomem *reg); | |
| struct clk_hw *n5x_register_pll(const struct stratix10_pll_clock *clks, | |
| void __iomem *reg); | |
| struct clk_hw *s10_register_periph(const struct stratix10_perip_c_clock *clks, | |
| void __iomem *reg); | |
| struct clk_hw *n5x_register_periph(const struct n5x_perip_c_clock *clks, | |
| void __iomem *reg); | |
| struct clk_hw *s10_register_cnt_periph(const struct stratix10_perip_cnt_clock *clks, | |
| void __iomem *reg); | |
| struct clk_hw *s10_register_gate(const struct stratix10_gate_clock *clks, | |
| void __iomem *reg); | |
| struct clk_hw *agilex_register_gate(const struct stratix10_gate_clock *clks, | |
| void __iomem *reg); | |
| #endif /* __STRATIX10_CLK_H */ |