Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 16f59d36 authored by Mike Tipton's avatar Mike Tipton Committed by Jagadeesh Kona
Browse files

clk: qcom: Add QCOM_CLK_IS_CRITICAL flag



Add QCOM_CLK_IS_CRITICAL, which can be used to enable a clock by default
in HW and to skip registering it with the framework.

Change-Id: I803a447fae742ca2e20973046090d2b8331ab598
Signed-off-by: default avatarMike Tipton <mdtipton@codeaurora.org>
parent e92f678e
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -269,6 +269,7 @@ EXPORT_SYMBOL(clk_is_regmap_clk);
 */
int devm_clk_register_regmap(struct device *dev, struct clk_regmap *rclk)
{
	const struct clk_ops *ops;
	int ret;

	rclk->dev = dev;
@@ -278,6 +279,14 @@ int devm_clk_register_regmap(struct device *dev, struct clk_regmap *rclk)
	else if (dev && dev->parent)
		rclk->regmap = dev_get_regmap(dev->parent, NULL);

	if (rclk->flags & QCOM_CLK_IS_CRITICAL) {
		ops = rclk->hw.init->ops;
		if (ops && ops->enable)
			ops->enable(&rclk->hw);

		return 0;
	}

	ret = devm_clk_hw_register(dev, &rclk->hw);
	if (!ret)
		list_add(&rclk->list_node, &clk_regmap_list);
+2 −0
Original line number Diff line number Diff line
@@ -51,6 +51,8 @@ struct clk_regmap {
	struct clk_regmap_ops *ops;
	struct list_head list_node;
	struct device *dev;
#define QCOM_CLK_IS_CRITICAL	BIT(0)
	unsigned long flags;
};
#define to_clk_regmap(_hw) container_of(_hw, struct clk_regmap, hw)

+8 −0
Original line number Diff line number Diff line
@@ -329,6 +329,14 @@ int qcom_cc_really_probe(struct platform_device *pdev,
			return ret;

		clk_hw_populate_clock_opp_table(dev->of_node, &rclks[i]->hw);

		/*
		 * Critical clocks are enabled by devm_clk_register_regmap()
		 * and registration skipped. So remove from rclks so that the
		 * get() callback returns NULL and client requests are stubbed.
		 */
		if (rclks[i]->flags & QCOM_CLK_IS_CRITICAL)
			rclks[i] = NULL;
	}

	ret = devm_of_clk_add_hw_provider(dev, qcom_cc_clk_hw_get, cc);