• Geert Uytterhoeven's avatar
    clk: renesas: mstp: Make INTC-SYS a critical clock · e34084fb
    Geert Uytterhoeven authored
    INTC-SYS is the module clock for the GIC.  Accessing the GIC while it is
    disabled causes:
    
        Unhandled fault: asynchronous external abort (0x1211) at 0x00000000
    
    Currently, the GIC-400 driver cannot enable its module clock for several
    reasons:
      - It does not use a platform device, so Runtime PM is not an option,
      - gic_of_init() runs before any clocks are registered, so it cannot
        enable the clock explicitly,
      - gic_of_init() cannot return -EPROBE_DEFER, as IRQCHIP_DECLARE()
        doesn't support deferred probing.
    
    Hence we have to keep on relying on the boot loader for enabling the
    module clock.
    
    To prevent the module clock from being disabled when the CCF core thinks
    it is unused, and thus causing a system lock-up, add a check to the MSTP
    clock driver and enable CLK_IS_CRITICAL. This will make sure the module
    clock is never disabled.
    
    This is a hard dependency for describing the INTC-SYS clock in DT on
    R-Mobile APE6 and R-Car Gen2.
    Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: default avatarStephen Boyd <sboyd@codeaurora.org>
    e34084fb
clk-mstp.c 7.61 KB