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; };