1 /* SPDX-License-Identifier: GPL-2.0 */ 2 struct regmap; 3 4 /** 5 * enum icst_control_type - the type of ICST control register 6 */ 7 enum icst_control_type { 8 ICST_VERSATILE, /* The standard type, all control bits available */ 9 ICST_INTEGRATOR_AP_CM, /* Only 8 bits of VDW available */ 10 ICST_INTEGRATOR_AP_SYS, /* Only 8 bits of VDW available */ 11 ICST_INTEGRATOR_AP_PCI, /* Odd bit pattern storage */ 12 ICST_INTEGRATOR_CP_CM_CORE, /* Only 8 bits of VDW and 3 bits of OD */ 13 ICST_INTEGRATOR_CP_CM_MEM, /* Only 8 bits of VDW and 3 bits of OD */ 14 }; 15 16 /** 17 * struct clk_icst_desc - descriptor for the ICST VCO 18 * @params: ICST parameters 19 * @vco_offset: offset to the ICST VCO from the provided memory base 20 * @lock_offset: offset to the ICST VCO locking register from the provided 21 * memory base 22 */ 23 struct clk_icst_desc { 24 const struct icst_params *params; 25 u32 vco_offset; 26 u32 lock_offset; 27 }; 28 29 struct clk *icst_clk_register(struct device *dev, 30 const struct clk_icst_desc *desc, 31 const char *name, 32 const char *parent_name, 33 void __iomem *base); 34 35 struct clk *icst_clk_setup(struct device *dev, 36 const struct clk_icst_desc *desc, 37 const char *name, 38 const char *parent_name, 39 struct regmap *map, 40 enum icst_control_type ctype); 41