|  | /* 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 */ |