ARM: zynq: PM: Enable A9 internal clock gating feature

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
ARM: zynq: PM: Enable SCU standby mode

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Documentation: devicetree: Add binding for Synopsys DDR controller

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
ARM: zynq: DT: Add DDRC node

Add the DDR controller to the Zynq devicetree.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
ARM: zynq: PM: Enable DDR self-refresh and clock stop

The DDR controller can detect idle periods and leverage low power
features like self-refresh and clock stop.
When new requests occur, the DDRC resumes normal operation.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
PM / sleep: Fix racing timers

On platforms that do not power off during suspend, successfully entering
suspend races with timers.

The race happening in a couple of location is:

  1. disable IRQs   		(e.g. arch_suspend_disable_irqs())
     ...
  2. syscore_suspend()
      -> timekeeping_suspend()
       -> clockevents_notify(SUSPEND)
        -> tick_suspend()   	(timers are turned off here)
     ...
  3. wfi            		(wait for wake-IRQ here)

Between steps 1 and 2 the timers can still generate interrupts that are
not handled and stay pending until step 3. That pending IRQ causes an
immediate - spurious - wake.

The solution is to move the clockevents suspend/resume notification
out of the syscore_suspend step and explictly call them at the appropriate
time in the suspend/hibernation paths. I.e. timers are suspend _before_
IRQs get disabled. And accordingly in the resume path.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
ARM: zynq: Suspend support

Add support for system suspend. Since Zynq cannot power off cores,
instead the cores wait for the wake up event in wfi state.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
ARM: zynq: suspend: Add facilities to print wake-IRQ

Add code to print the IRQ that woke the system for debug puroposes.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>