]> rtime.felk.cvut.cz Git - vajnamar/linux-xlnx.git/commitdiff
zynqmp: pm: Don't issue SMC calls before driver is initialized
authorSoren Brinkmann <soren.brinkmann@xilinx.com>
Tue, 7 Jun 2016 20:17:43 +0000 (13:17 -0700)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 8 Jun 2016 06:02:35 +0000 (08:02 +0200)
Don't issue any SMC calls to the FW before the driver is properly
initialized and discovered a valid FW.

Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/soc/xilinx/zynqmp/pm.c

index 46d3008b7a65fc7f74d4c98c78b769588f721383..303883c62354e20b2e7a83d8f45b5532b3d92145 100644 (file)
@@ -102,11 +102,17 @@ static int zynqmp_pm_ret_code(u32 ret_status)
        }
 }
 
+static noinline int do_fw_call_fail(u64 arg0, u64 arg1, u64 arg2,
+                                   u32 *ret_payload)
+{
+       return -ENODEV;
+}
+
 /*
  * PM function call wrapper
  * Invoke do_fw_call_smc or do_fw_call_hvc, depending on the configuration
  */
-static int (*do_fw_call)(u64, u64, u64, u32 *ret_payload);
+static int (*do_fw_call)(u64, u64, u64, u32 *ret_payload) = do_fw_call_fail;
 
 /**
  * do_fw_call_smc - Call system-level power management layer (SMC)
@@ -987,6 +993,9 @@ static int zynqmp_pm_probe(struct platform_device *pdev)
                       __func__,
                       ZYNQMP_PM_VERSION_MAJOR, ZYNQMP_PM_VERSION_MINOR,
                       pm_api_version >> 16, pm_api_version & 0xffff);
+
+               do_fw_call = do_fw_call_fail;
+
                return -EIO;
        }