]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
clk: renesas: rzv2h: Adjust for CPG_BUS_m_MSTOP starting from m = 1
authorBiju Das <biju.das.jz@bp.renesas.com>
Sat, 22 Feb 2025 14:20:07 +0000 (14:20 +0000)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Thu, 6 Mar 2025 15:38:19 +0000 (16:38 +0100)
Avoid using the "- 1" for finding mstop_index in all functions accessing
priv->mstop_count, by adjusting its pointer in rzv2h_cpg_probe().

While at it, drop the intermediate local variable index.

Reported-by: Geert Uytterhoeven <geert+renesas@glider.be>
Closes: https://lore.kernel.org/all/CAMuHMdX1gPNCFddg_DyK7Bv0BeFLOLi=5eteT_HhMH=Ph2wVvA@mail.gmail.com/
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250222142009.41324-1-biju.das.jz@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
drivers/clk/renesas/rzv2h-cpg.c

index 419dc8cd2766f77ec636aaec05b79bf1907c096d..2b9771ab2b3fadfcd01a3ada73fa28044e6a434a 100644 (file)
@@ -447,8 +447,7 @@ static void rzv2h_mod_clock_mstop_enable(struct rzv2h_cpg_priv *priv,
 {
        unsigned long mstop_mask = FIELD_GET(BUS_MSTOP_BITS_MASK, mstop_data);
        u16 mstop_index = FIELD_GET(BUS_MSTOP_IDX_MASK, mstop_data);
-       unsigned int index = (mstop_index - 1) * 16;
-       atomic_t *mstop = &priv->mstop_count[index];
+       atomic_t *mstop = &priv->mstop_count[mstop_index * 16];
        unsigned long flags;
        unsigned int i;
        u32 val = 0;
@@ -469,8 +468,7 @@ static void rzv2h_mod_clock_mstop_disable(struct rzv2h_cpg_priv *priv,
 {
        unsigned long mstop_mask = FIELD_GET(BUS_MSTOP_BITS_MASK, mstop_data);
        u16 mstop_index = FIELD_GET(BUS_MSTOP_IDX_MASK, mstop_data);
-       unsigned int index = (mstop_index - 1) * 16;
-       atomic_t *mstop = &priv->mstop_count[index];
+       atomic_t *mstop = &priv->mstop_count[mstop_index * 16];
        unsigned long flags;
        unsigned int i;
        u32 val = 0;
@@ -630,8 +628,7 @@ rzv2h_cpg_register_mod_clk(const struct rzv2h_mod_clk *mod,
        } else if (clock->mstop_data != BUS_MSTOP_NONE && mod->critical) {
                unsigned long mstop_mask = FIELD_GET(BUS_MSTOP_BITS_MASK, clock->mstop_data);
                u16 mstop_index = FIELD_GET(BUS_MSTOP_IDX_MASK, clock->mstop_data);
-               unsigned int index = (mstop_index - 1) * 16;
-               atomic_t *mstop = &priv->mstop_count[index];
+               atomic_t *mstop = &priv->mstop_count[mstop_index * 16];
                unsigned long flags;
                unsigned int i;
                u32 val = 0;
@@ -926,6 +923,9 @@ static int __init rzv2h_cpg_probe(struct platform_device *pdev)
        if (!priv->mstop_count)
                return -ENOMEM;
 
+       /* Adjust for CPG_BUS_m_MSTOP starting from m = 1 */
+       priv->mstop_count -= 16;
+
        priv->resets = devm_kmemdup(dev, info->resets, sizeof(*info->resets) *
                                    info->num_resets, GFP_KERNEL);
        if (!priv->resets)