1ddd3e8b9SNishad Kamdar /* SPDX-License-Identifier: GPL-2.0+ */ 23495e295SManivannan Sadhasivam // 33495e295SManivannan Sadhasivam // OWL common clock driver 43495e295SManivannan Sadhasivam // 53495e295SManivannan Sadhasivam // Copyright (c) 2014 Actions Semi Inc. 63495e295SManivannan Sadhasivam // Author: David Liu <liuwei@actions-semi.com> 73495e295SManivannan Sadhasivam // 83495e295SManivannan Sadhasivam // Copyright (c) 2018 Linaro Ltd. 93495e295SManivannan Sadhasivam // Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 103495e295SManivannan Sadhasivam 113495e295SManivannan Sadhasivam #ifndef _OWL_COMMON_H_ 123495e295SManivannan Sadhasivam #define _OWL_COMMON_H_ 133495e295SManivannan Sadhasivam 143495e295SManivannan Sadhasivam #include <linux/clk-provider.h> 153495e295SManivannan Sadhasivam #include <linux/regmap.h> 163495e295SManivannan Sadhasivam 173495e295SManivannan Sadhasivam struct device_node; 18*a96cbb14SRob Herring struct platform_device; 193495e295SManivannan Sadhasivam 203495e295SManivannan Sadhasivam struct owl_clk_common { 213495e295SManivannan Sadhasivam struct regmap *regmap; 223495e295SManivannan Sadhasivam struct clk_hw hw; 233495e295SManivannan Sadhasivam }; 243495e295SManivannan Sadhasivam 253495e295SManivannan Sadhasivam struct owl_clk_desc { 263495e295SManivannan Sadhasivam struct owl_clk_common **clks; 273495e295SManivannan Sadhasivam unsigned long num_clks; 283495e295SManivannan Sadhasivam struct clk_hw_onecell_data *hw_clks; 2909dbde01SManivannan Sadhasivam const struct owl_reset_map *resets; 3009dbde01SManivannan Sadhasivam unsigned long num_resets; 313a23eb72SManivannan Sadhasivam struct regmap *regmap; 323495e295SManivannan Sadhasivam }; 333495e295SManivannan Sadhasivam 343495e295SManivannan Sadhasivam static inline struct owl_clk_common * hw_to_owl_clk_common(const struct clk_hw * hw)353495e295SManivannan Sadhasivam hw_to_owl_clk_common(const struct clk_hw *hw) 363495e295SManivannan Sadhasivam { 373495e295SManivannan Sadhasivam return container_of(hw, struct owl_clk_common, hw); 383495e295SManivannan Sadhasivam } 393495e295SManivannan Sadhasivam 403495e295SManivannan Sadhasivam int owl_clk_regmap_init(struct platform_device *pdev, 413a23eb72SManivannan Sadhasivam struct owl_clk_desc *desc); 423495e295SManivannan Sadhasivam int owl_clk_probe(struct device *dev, struct clk_hw_onecell_data *hw_clks); 433495e295SManivannan Sadhasivam 443495e295SManivannan Sadhasivam #endif /* _OWL_COMMON_H_ */ 45