mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-17 09:21:35 +00:00
63 lines
2.1 KiB
Diff
63 lines
2.1 KiB
Diff
From 92970c8b953cafae5637ef0f515fe6b545d69574 Mon Sep 17 00:00:00 2001
|
|
From: Devi Priya <quic_devipriy@quicinc.com>
|
|
Date: Fri, 24 Mar 2023 15:44:51 +0530
|
|
Subject: [PATCH 186/281] clk: ipq: support for resetting multiple bits
|
|
|
|
Current reset structure takes only one reset bit and
|
|
calculates the bitmask in its reset operation. Some of the
|
|
reset registers contains multiple bits in which each bit
|
|
will be associated with subsystem reset inside the block. To
|
|
reset properly the complete block, all the subsystem reset
|
|
should be triggered at same time i.e the register write
|
|
should go in one AHB write.
|
|
This patch adds the support for giving the complete bitmask
|
|
in reset structure and reset operation will use this bitmask
|
|
for all reset operations.
|
|
|
|
Change-Id: I12efb53b590c9b5a91dd1e0440c432056b3193b3
|
|
Signed-off-by: Rajkumar Ayyasamy <arajkuma@codeaurora.org>
|
|
(cherry picked from commit 0930649d6452f42c873775810b3f699c4568d450)
|
|
Signed-off-by: Devi Priya <quic_devipriy@quicinc.com>
|
|
---
|
|
drivers/clk/qcom/reset.c | 4 ++--
|
|
drivers/clk/qcom/reset.h | 1 +
|
|
2 files changed, 3 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/clk/qcom/reset.c b/drivers/clk/qcom/reset.c
|
|
index 2a16adb572d2..0e914ec7aeae 100644
|
|
--- a/drivers/clk/qcom/reset.c
|
|
+++ b/drivers/clk/qcom/reset.c
|
|
@@ -30,7 +30,7 @@ qcom_reset_assert(struct reset_controller_dev *rcdev, unsigned long id)
|
|
|
|
rst = to_qcom_reset_controller(rcdev);
|
|
map = &rst->reset_map[id];
|
|
- mask = BIT(map->bit);
|
|
+ mask = map->bitmask ? map->bitmask : BIT(map->bit);
|
|
|
|
return regmap_update_bits(rst->regmap, map->reg, mask, mask);
|
|
}
|
|
@@ -44,7 +44,7 @@ qcom_reset_deassert(struct reset_controller_dev *rcdev, unsigned long id)
|
|
|
|
rst = to_qcom_reset_controller(rcdev);
|
|
map = &rst->reset_map[id];
|
|
- mask = BIT(map->bit);
|
|
+ mask = map->bitmask ? map->bitmask : BIT(map->bit);
|
|
|
|
return regmap_update_bits(rst->regmap, map->reg, mask, 0);
|
|
}
|
|
diff --git a/drivers/clk/qcom/reset.h b/drivers/clk/qcom/reset.h
|
|
index b8c113582072..9a47c838d9b1 100644
|
|
--- a/drivers/clk/qcom/reset.h
|
|
+++ b/drivers/clk/qcom/reset.h
|
|
@@ -12,6 +12,7 @@ struct qcom_reset_map {
|
|
unsigned int reg;
|
|
u8 bit;
|
|
u8 udelay;
|
|
+ u32 bitmask;
|
|
};
|
|
|
|
struct regmap;
|
|
--
|
|
2.17.1
|
|
|