162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/* Copyright (c) 2014, The Linux Foundation. All rights reserved. */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#ifndef __QCOM_CLK_REGMAP_H__
562306a36Sopenharmony_ci#define __QCOM_CLK_REGMAP_H__
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <linux/clk-provider.h>
862306a36Sopenharmony_ci
962306a36Sopenharmony_cistruct regmap;
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci/**
1262306a36Sopenharmony_ci * struct clk_regmap - regmap supporting clock
1362306a36Sopenharmony_ci * @hw:		handle between common and hardware-specific interfaces
1462306a36Sopenharmony_ci * @regmap:	regmap to use for regmap helpers and/or by providers
1562306a36Sopenharmony_ci * @enable_reg: register when using regmap enable/disable ops
1662306a36Sopenharmony_ci * @enable_mask: mask when using regmap enable/disable ops
1762306a36Sopenharmony_ci * @enable_is_inverted: flag to indicate set enable_mask bits to disable
1862306a36Sopenharmony_ci *                      when using clock_enable_regmap and friends APIs.
1962306a36Sopenharmony_ci */
2062306a36Sopenharmony_cistruct clk_regmap {
2162306a36Sopenharmony_ci	struct clk_hw hw;
2262306a36Sopenharmony_ci	struct regmap *regmap;
2362306a36Sopenharmony_ci	unsigned int enable_reg;
2462306a36Sopenharmony_ci	unsigned int enable_mask;
2562306a36Sopenharmony_ci	bool enable_is_inverted;
2662306a36Sopenharmony_ci};
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_cistatic inline struct clk_regmap *to_clk_regmap(struct clk_hw *hw)
2962306a36Sopenharmony_ci{
3062306a36Sopenharmony_ci	return container_of(hw, struct clk_regmap, hw);
3162306a36Sopenharmony_ci}
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciint clk_is_enabled_regmap(struct clk_hw *hw);
3462306a36Sopenharmony_ciint clk_enable_regmap(struct clk_hw *hw);
3562306a36Sopenharmony_civoid clk_disable_regmap(struct clk_hw *hw);
3662306a36Sopenharmony_ciint devm_clk_register_regmap(struct device *dev, struct clk_regmap *rclk);
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci#endif
39