162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_cistruct regmap; 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci/** 562306a36Sopenharmony_ci * enum icst_control_type - the type of ICST control register 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_cienum icst_control_type { 862306a36Sopenharmony_ci ICST_VERSATILE, /* The standard type, all control bits available */ 962306a36Sopenharmony_ci ICST_INTEGRATOR_AP_CM, /* Only 8 bits of VDW available */ 1062306a36Sopenharmony_ci ICST_INTEGRATOR_AP_SYS, /* Only 8 bits of VDW available */ 1162306a36Sopenharmony_ci ICST_INTEGRATOR_AP_PCI, /* Odd bit pattern storage */ 1262306a36Sopenharmony_ci ICST_INTEGRATOR_CP_CM_CORE, /* Only 8 bits of VDW and 3 bits of OD */ 1362306a36Sopenharmony_ci ICST_INTEGRATOR_CP_CM_MEM, /* Only 8 bits of VDW and 3 bits of OD */ 1462306a36Sopenharmony_ci ICST_INTEGRATOR_IM_PD1, /* Like the Versatile, all control bits */ 1562306a36Sopenharmony_ci}; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci/** 1862306a36Sopenharmony_ci * struct clk_icst_desc - descriptor for the ICST VCO 1962306a36Sopenharmony_ci * @params: ICST parameters 2062306a36Sopenharmony_ci * @vco_offset: offset to the ICST VCO from the provided memory base 2162306a36Sopenharmony_ci * @lock_offset: offset to the ICST VCO locking register from the provided 2262306a36Sopenharmony_ci * memory base 2362306a36Sopenharmony_ci */ 2462306a36Sopenharmony_cistruct clk_icst_desc { 2562306a36Sopenharmony_ci const struct icst_params *params; 2662306a36Sopenharmony_ci u32 vco_offset; 2762306a36Sopenharmony_ci u32 lock_offset; 2862306a36Sopenharmony_ci}; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_cistruct clk *icst_clk_register(struct device *dev, 3162306a36Sopenharmony_ci const struct clk_icst_desc *desc, 3262306a36Sopenharmony_ci const char *name, 3362306a36Sopenharmony_ci const char *parent_name, 3462306a36Sopenharmony_ci void __iomem *base); 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_cistruct clk *icst_clk_setup(struct device *dev, 3762306a36Sopenharmony_ci const struct clk_icst_desc *desc, 3862306a36Sopenharmony_ci const char *name, 3962306a36Sopenharmony_ci const char *parent_name, 4062306a36Sopenharmony_ci struct regmap *map, 4162306a36Sopenharmony_ci enum icst_control_type ctype); 42