clk: renesas: mstp: Make INTC-SYS a critical clock
authorGeert Uytterhoeven <geert+renesas@glider.be>
Tue, 17 Mar 2015 16:20:52 +0000 (17:20 +0100)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Mon, 23 Jan 2017 10:04:46 +0000 (11:04 +0100)
commite34084fb9a023d1dd008c989523af5a037f1d692
tree4f7d4beb53eee3e427f0a06617811a3539808e8a
parent72f5df2c2bbb66d4a555cb51eb9f412abf1af77f
clk: renesas: mstp: Make INTC-SYS a critical clock

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: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Stephen Boyd <sboyd@codeaurora.org>
drivers/clk/renesas/clk-mstp.c