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