* @data_completion:   completion structure
  */
 struct zynqmp_qspi {
+       struct spi_controller *ctlr;
        void __iomem *regs;
        struct clk *refclk;
        struct clk *pclk;
  */
 static int __maybe_unused zynqmp_qspi_suspend(struct device *dev)
 {
-       struct spi_controller *ctlr = dev_get_drvdata(dev);
-       struct zynqmp_qspi *xqspi = spi_controller_get_devdata(ctlr);
+       struct zynqmp_qspi *xqspi = dev_get_drvdata(dev);
+       struct spi_controller *ctlr = xqspi->ctlr;
+       int ret;
 
-       spi_controller_suspend(ctlr);
+       ret = spi_controller_suspend(ctlr);
+       if (ret)
+               return ret;
 
        zynqmp_gqspi_write(xqspi, GQSPI_EN_OFST, 0x0);
 
  */
 static int __maybe_unused zynqmp_qspi_resume(struct device *dev)
 {
-       struct spi_controller *ctlr = dev_get_drvdata(dev);
+       struct zynqmp_qspi *xqspi = dev_get_drvdata(dev);
+       struct spi_controller *ctlr = xqspi->ctlr;
+
+       zynqmp_gqspi_write(xqspi, GQSPI_EN_OFST, GQSPI_EN_MASK);
 
        spi_controller_resume(ctlr);
 
  */
 static int __maybe_unused zynqmp_runtime_suspend(struct device *dev)
 {
-       struct zynqmp_qspi *xqspi = (struct zynqmp_qspi *)dev_get_drvdata(dev);
+       struct zynqmp_qspi *xqspi = dev_get_drvdata(dev);
 
        clk_disable_unprepare(xqspi->refclk);
        clk_disable_unprepare(xqspi->pclk);
  */
 static int __maybe_unused zynqmp_runtime_resume(struct device *dev)
 {
-       struct zynqmp_qspi *xqspi = (struct zynqmp_qspi *)dev_get_drvdata(dev);
+       struct zynqmp_qspi *xqspi = dev_get_drvdata(dev);
        int ret;
 
        ret = clk_prepare_enable(xqspi->pclk);
 
        xqspi = spi_controller_get_devdata(ctlr);
        xqspi->dev = dev;
+       xqspi->ctlr = ctlr;
        platform_set_drvdata(pdev, xqspi);
 
        xqspi->regs = devm_platform_ioremap_resource(pdev, 0);