clk: mediatek: reset: Extract common drivers to update function
authorRex-BC Chen <rex-bc.chen@mediatek.com>
Mon, 23 May 2022 09:33:31 +0000 (17:33 +0800)
committerStephen Boyd <sboyd@kernel.org>
Thu, 16 Jun 2022 00:24:12 +0000 (17:24 -0700)
To make drivers more clear and readable, we extract common code
within assert and deassert to mtk_reset_update_set_clr() and
mtk_reset_update().

Signed-off-by: Rex-BC Chen <rex-bc.chen@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: NĂ­colas F. R. A. Prado <nfraprado@collabora.com>
Tested-by: NĂ­colas F. R. A. Prado <nfraprado@collabora.com>
Link: https://lore.kernel.org/r/20220523093346.28493-5-rex-bc.chen@mediatek.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/mediatek/reset.c

index 5cbbcc2..22fa9f0 100644 (file)
 
 #include "reset.h"
 
-static int mtk_reset_assert(struct reset_controller_dev *rcdev,
-                           unsigned long id)
+static int mtk_reset_update(struct reset_controller_dev *rcdev,
+                           unsigned long id, bool deassert)
 {
        struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
+       unsigned int val = deassert ? 0 : ~0;
 
        return regmap_update_bits(data->regmap,
                                  data->regofs + ((id / 32) << 2),
-                                 BIT(id % 32), ~0);
+                                 BIT(id % 32), val);
+}
+
+static int mtk_reset_assert(struct reset_controller_dev *rcdev,
+                           unsigned long id)
+{
+       return mtk_reset_update(rcdev, id, false);
 }
 
 static int mtk_reset_deassert(struct reset_controller_dev *rcdev,
                              unsigned long id)
 {
-       struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
-
-       return regmap_update_bits(data->regmap,
-                                 data->regofs + ((id / 32) << 2),
-                                 BIT(id % 32), 0);
+       return mtk_reset_update(rcdev, id, true);
 }
 
 static int mtk_reset(struct reset_controller_dev *rcdev, unsigned long id)
@@ -43,24 +46,27 @@ static int mtk_reset(struct reset_controller_dev *rcdev, unsigned long id)
        return mtk_reset_deassert(rcdev, id);
 }
 
-static int mtk_reset_assert_set_clr(struct reset_controller_dev *rcdev,
-                                   unsigned long id)
+static int mtk_reset_update_set_clr(struct reset_controller_dev *rcdev,
+                                   unsigned long id, bool deassert)
 {
        struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
+       unsigned int deassert_ofs = deassert ? 0x4 : 0;
 
        return regmap_write(data->regmap,
-                           data->regofs + ((id / 32) << 4),
+                           data->regofs + ((id / 32) << 4) + deassert_ofs,
                            BIT(id % 32));
 }
 
+static int mtk_reset_assert_set_clr(struct reset_controller_dev *rcdev,
+                                   unsigned long id)
+{
+       return mtk_reset_update_set_clr(rcdev, id, false);
+}
+
 static int mtk_reset_deassert_set_clr(struct reset_controller_dev *rcdev,
                                      unsigned long id)
 {
-       struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
-
-       return regmap_write(data->regmap,
-                           data->regofs + ((id / 32) << 4) + 0x4,
-                           BIT(id % 32));
+       return mtk_reset_update_set_clr(rcdev, id, true);
 }
 
 static int mtk_reset_set_clr(struct reset_controller_dev *rcdev,