• Claudiu Beznea's avatar
    pinctrl: renesas: rzg2l: Add suspend/resume support · 254203f9
    Claudiu Beznea authored
    pinctrl-rzg2l driver is used on RZ/G3S which support deep sleep states
    where power to most of the SoC components is turned off.
    
    For this add suspend/resume support. This involves saving and restoring
    configured registers along with disabling clock in case there is no pin
    configured as wakeup sources.
    
    To save/restore registers 2 caches were allocated: one for GPIO pins and
    one for dedicated pins.
    
    On suspend path the pin controller registers are saved and if none of the
    pins are configured as wakeup sources the pinctrl clock is disabled.
    Otherwise it remains on.
    
    On resume path the configuration is done as follows:
    1/ setup PFCs by writing to registers on pin based accesses
    2/ setup GPIOs by writing to registers on port based accesses and
       following configuration steps specified in hardware manual
    3/ setup dedicated pins by writing to registers on port based accesses
    4/ setup interrupts.
    
    Because interrupt signals are routed to IA55 interrupt controller and
    IA55 interrupt controller resumes before pin controller, patch restores
    also the configured interrupts just after pin settings are restored to
    avoid invalid interrupts while resuming.
    Signed-off-by: default avatarClaudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
    Reviewed-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/20240215124112.2259103-3-claudiu.beznea.uj@bp.renesas.comSigned-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    254203f9
pinctrl-rzg2l.c 79.1 KB