From cc59dbb6d2435e72c38db64ae3030538a99121a6 Mon Sep 17 00:00:00 2001 From: Vivek Aknurwar Date: Fri, 3 Sep 2021 10:54:43 -0700 Subject: [PATCH] clk: qcom: Add QCOM_CLK_BOOT_CRITICAL flag Some clks are critical and required to be on during probe to sync-state, and also later needs to controlled by consumers. Add QCOM_CLK_BOOT_CRITICAL flag to achieve turning on clk during probe and also register wih clk framework so consumers can control after boot. Change-Id: I7465828ede6cea5614cada6b49f428f84780e995 Signed-off-by: Vivek Aknurwar --- drivers/clk/qcom/clk-regmap.c | 5 +++-- drivers/clk/qcom/clk-regmap.h | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/clk/qcom/clk-regmap.c b/drivers/clk/qcom/clk-regmap.c index 087ae0c73090..4c0261cbcb18 100644 --- a/drivers/clk/qcom/clk-regmap.c +++ b/drivers/clk/qcom/clk-regmap.c @@ -288,12 +288,13 @@ 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) { + if (rclk->flags & QCOM_CLK_IS_CRITICAL || rclk->flags & QCOM_CLK_BOOT_CRITICAL) { ops = rclk->hw.init->ops; if (ops && ops->enable) ops->enable(&rclk->hw); - return 0; + if (rclk->flags & QCOM_CLK_IS_CRITICAL) + return 0; } ret = devm_clk_hw_register(dev, &rclk->hw); diff --git a/drivers/clk/qcom/clk-regmap.h b/drivers/clk/qcom/clk-regmap.h index bf4cae8805af..8ad7f5486b49 100644 --- a/drivers/clk/qcom/clk-regmap.h +++ b/drivers/clk/qcom/clk-regmap.h @@ -50,6 +50,7 @@ struct clk_regmap { struct list_head list_node; struct device *dev; #define QCOM_CLK_IS_CRITICAL BIT(0) +#define QCOM_CLK_BOOT_CRITICAL BIT(1) unsigned long flags; };