Skip to content

Commit d00f6aa

Browse files
prabhakarladgregkh
authored andcommitted
pinctrl: renesas: rzg2l: Validate power registers for SD and ETH
[ Upstream commit a3a632e ] On RZ/V2H(P) SoC, the power registers for SD and ETH do not exist, resulting in invalid register offsets. Ensure that the register offsets are valid before any read/write operations are performed. If the power registers are not available, both SD and ETH will be set to '0'. Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Tested-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com> # on RZ/G3S Link: https://lore.kernel.org/r/20240530173857.164073-7-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent e797ce6 commit d00f6aa

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

drivers/pinctrl/renesas/pinctrl-rzg2l.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2583,8 +2583,10 @@ static int rzg2l_pinctrl_suspend_noirq(struct device *dev)
25832583
rzg2l_pinctrl_pm_setup_dedicated_regs(pctrl, true);
25842584

25852585
for (u8 i = 0; i < 2; i++) {
2586-
cache->sd_ch[i] = readb(pctrl->base + SD_CH(regs->sd_ch, i));
2587-
cache->eth_poc[i] = readb(pctrl->base + ETH_POC(regs->eth_poc, i));
2586+
if (regs->sd_ch)
2587+
cache->sd_ch[i] = readb(pctrl->base + SD_CH(regs->sd_ch, i));
2588+
if (regs->eth_poc)
2589+
cache->eth_poc[i] = readb(pctrl->base + ETH_POC(regs->eth_poc, i));
25882590
}
25892591

25902592
cache->qspi = readb(pctrl->base + QSPI);
@@ -2615,8 +2617,10 @@ static int rzg2l_pinctrl_resume_noirq(struct device *dev)
26152617
writeb(cache->qspi, pctrl->base + QSPI);
26162618
writeb(cache->eth_mode, pctrl->base + ETH_MODE);
26172619
for (u8 i = 0; i < 2; i++) {
2618-
writeb(cache->sd_ch[i], pctrl->base + SD_CH(regs->sd_ch, i));
2619-
writeb(cache->eth_poc[i], pctrl->base + ETH_POC(regs->eth_poc, i));
2620+
if (regs->sd_ch)
2621+
writeb(cache->sd_ch[i], pctrl->base + SD_CH(regs->sd_ch, i));
2622+
if (regs->eth_poc)
2623+
writeb(cache->eth_poc[i], pctrl->base + ETH_POC(regs->eth_poc, i));
26202624
}
26212625

26222626
rzg2l_pinctrl_pm_setup_pfc(pctrl);

0 commit comments

Comments
 (0)