Patch "clk: qcom: reset: support resetting multiple bits" has been added to the 4.19-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    clk: qcom: reset: support resetting multiple bits

to the 4.19-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     clk-qcom-reset-support-resetting-multiple-bits.patch
and it can be found in the queue-4.19 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit fed493cf89bd7f75bb0fd999b065d8bd6c5a23bc
Author: Robert Marko <robimarko@xxxxxxxxx>
Date:   Mon Nov 7 14:28:59 2022 +0100

    clk: qcom: reset: support resetting multiple bits
    
    [ Upstream commit 4a5210893625f89723ea210d7c630b730abb37ad ]
    
    This patch adds the support for giving the complete bitmask
    in reset structure and reset operation will use this bitmask
    for all reset operations.
    
    Currently, reset structure only takes a single bit for each reset
    and then calculates the bitmask by using the BIT() macro.
    
    However, this is not sufficient anymore for newer SoC-s like IPQ8074,
    IPQ6018 and more, since their networking resets require multiple bits
    to be asserted in order to properly reset the HW block completely.
    
    So, in order to allow asserting multiple bits add "bitmask" field to
    qcom_reset_map, and then use that bitmask value if its populated in the
    driver, if its not populated, then we just default to existing behaviour
    and calculate the bitmask on the fly.
    
    Signed-off-by: Robert Marko <robimarko@xxxxxxxxx>
    Signed-off-by: Bjorn Andersson <andersson@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20221107132901.489240-1-robimarko@xxxxxxxxx
    Stable-dep-of: 2f8cf2c3f3e3 ("clk: qcom: reset: Ensure write completion on reset de/assertion")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/clk/qcom/reset.c b/drivers/clk/qcom/reset.c
index fc68c8fa30ac7..60b60631c3445 100644
--- a/drivers/clk/qcom/reset.c
+++ b/drivers/clk/qcom/reset.c
@@ -38,7 +38,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);
 }
@@ -52,7 +52,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 3e30f6724c7a4..a118311503d41 100644
--- a/drivers/clk/qcom/reset.h
+++ b/drivers/clk/qcom/reset.h
@@ -20,6 +20,7 @@ struct qcom_reset_map {
 	unsigned int reg;
 	u8 bit;
 	u8 udelay;
+	u32 bitmask;
 };
 
 struct regmap;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux