lkml.org 
[lkml]   [2022]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0661/1017] pinctrl: renesas: checker: Fix miscalculation of number of states
    Date
    From: Geert Uytterhoeven <geert+renesas@glider.be>

    [ Upstream commit de9b861018d46af27a5edff8b6baef35c0c0ad4f ]

    The checker failed to validate all enum IDs in the description of a
    register with fixed-width register fields, due to a miscalculation of
    the number of described states: each register field of n bits can have
    "1 << n" possible states, not "1".

    Increase SH_PFC_MAX_ENUMS accordingly, now more enum IDs are checked
    (SH-Mobile AG5 has more than 4000 enum IDs defined).

    Fixes: 12d057bad683b1c6 ("pinctrl: sh-pfc: checker: Add check for enum ID conflicts")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/6d8a6a05564f38f9d20464c1c17f96e52740cf6a.1645460429.git.geert+renesas@glider.be
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/pinctrl/renesas/core.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/drivers/pinctrl/renesas/core.c b/drivers/pinctrl/renesas/core.c
    index 0d4ea2e22a53..12d41ac017b5 100644
    --- a/drivers/pinctrl/renesas/core.c
    +++ b/drivers/pinctrl/renesas/core.c
    @@ -741,7 +741,7 @@ static int sh_pfc_suspend_init(struct sh_pfc *pfc) { return 0; }

    #ifdef DEBUG
    #define SH_PFC_MAX_REGS 300
    -#define SH_PFC_MAX_ENUMS 3000
    +#define SH_PFC_MAX_ENUMS 5000

    static unsigned int sh_pfc_errors __initdata;
    static unsigned int sh_pfc_warnings __initdata;
    @@ -865,7 +865,8 @@ static void __init sh_pfc_check_cfg_reg(const char *drvname,
    GENMASK(cfg_reg->reg_width - 1, 0));

    if (cfg_reg->field_width) {
    - n = cfg_reg->reg_width / cfg_reg->field_width;
    + fw = cfg_reg->field_width;
    + n = (cfg_reg->reg_width / fw) << fw;
    /* Skip field checks (done at build time) */
    goto check_enum_ids;
    }
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-04-05 15:31    [W:3.567 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site