xref: /openbmc/linux/drivers/clk/actions/owl-common.h (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
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