162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci// 362306a36Sopenharmony_ci// Spreadtrum clock infrastructure 462306a36Sopenharmony_ci// 562306a36Sopenharmony_ci// Copyright (C) 2017 Spreadtrum, Inc. 662306a36Sopenharmony_ci// Author: Chunyan Zhang <chunyan.zhang@spreadtrum.com> 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef _SPRD_CLK_COMMON_H_ 962306a36Sopenharmony_ci#define _SPRD_CLK_COMMON_H_ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include <linux/clk-provider.h> 1262306a36Sopenharmony_ci#include <linux/of_platform.h> 1362306a36Sopenharmony_ci#include <linux/regmap.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_cistruct device_node; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_cistruct sprd_clk_common { 1862306a36Sopenharmony_ci struct regmap *regmap; 1962306a36Sopenharmony_ci u32 reg; 2062306a36Sopenharmony_ci struct clk_hw hw; 2162306a36Sopenharmony_ci}; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_cistruct sprd_clk_desc { 2462306a36Sopenharmony_ci struct sprd_clk_common **clk_clks; 2562306a36Sopenharmony_ci unsigned long num_clk_clks; 2662306a36Sopenharmony_ci struct clk_hw_onecell_data *hw_clks; 2762306a36Sopenharmony_ci}; 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_cistatic inline struct sprd_clk_common * 3062306a36Sopenharmony_ci hw_to_sprd_clk_common(const struct clk_hw *hw) 3162306a36Sopenharmony_ci{ 3262306a36Sopenharmony_ci return container_of(hw, struct sprd_clk_common, hw); 3362306a36Sopenharmony_ci} 3462306a36Sopenharmony_ciint sprd_clk_regmap_init(struct platform_device *pdev, 3562306a36Sopenharmony_ci const struct sprd_clk_desc *desc); 3662306a36Sopenharmony_ciint sprd_clk_probe(struct device *dev, struct clk_hw_onecell_data *clkhw); 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci#endif /* _SPRD_CLK_COMMON_H_ */ 39