• Geert Uytterhoeven's avatar
    soc: renesas: rcar-sysc: Fix power domain control after system resume · 7fc4650c
    Geert Uytterhoeven authored
    To control power to a power domain, the System Controller (SYSC) needs
    the corresponding interrupt source to be enabled, but masked, to prevent
    the CPU from receiving it.
    
    Currently this is handled in the driver's probe() routine, and set up
    for every domain present, even if it will not be controlled directly by
    SYSC (CPU domains are powered through the APMU on R-Car Gen2 and later).
    
    On R-Car Gen3, PSCI powers down the SoC during system suspend, thus
    losing any configured interrupt state.  Hence after system resume, power
    domains not controlled through the APMU (e.g. A3IR, A3VC, A3VP) fail to
    power up.
    
    Fix this by replacing the global interrupt setup in the probe() routine
    by a domain-specific interrupt setup in rcar_sysc_power(), where the
    domain's power is actually controlled.  This brings the code more in
    line with the flowchart in the Hardware User's Manual.
    Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
    7fc4650c
rcar-sysc.c 11.8 KB