]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
spi: xilinx_spips: Gate clocks during suspend
authorSoren Brinkmann <soren.brinkmann@xilinx.com>
Mon, 19 Nov 2012 23:23:05 +0000 (15:23 -0800)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 20 Nov 2012 09:28:11 +0000 (10:28 +0100)
During suspend the SPI related clocks get gated off.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Acked-by: Michal Simek <michal.simek@xilinx.com>
drivers/spi/spi-xilinx-ps.c

index d90b6ab9378b131e1a43132a73d9b833c0e02d05..abf427ce8102f8f31b9470d782c4d6403799fb32 100644 (file)
@@ -914,6 +914,9 @@ static int xspips_suspend(struct device *_dev)
 
        xspips_write(xspi->regs + XSPIPS_ER_OFFSET, ~XSPIPS_ER_ENABLE_MASK);
 
+       clk_disable(xspi->devclk);
+       clk_disable(xspi->aperclk);
+
        dev_dbg(&pdev->dev, "suspend succeeded\n");
        return 0;
 }
@@ -934,6 +937,19 @@ static int xspips_resume(struct device *_dev)
        struct xspips *xspi = spi_master_get_devdata(master);
        int ret = 0;
 
+       ret = clk_enable(xspi->aperclk);
+       if (ret) {
+               dev_err(_dev, "Cannot enable APER clock.\n");
+               return ret;
+       }
+
+       ret = clk_enable(xspi->devclk);
+       if (ret) {
+               dev_err(_dev, "Cannot enable device clock.\n");
+               clk_disable(xspi->aperclk);
+               return ret;
+       }
+
        xspips_init_hw(xspi->regs);
 
        ret = xspips_start_queue(xspi);