summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/powernv/opal.c
diff options
context:
space:
mode:
authorCédric Le Goater2015-03-30 12:06:09 +0200
committerMichael Ellerman2015-03-31 05:50:33 +0200
commite3c5c2e0bc857c7cbdb81f35a6b90236c5f330e9 (patch)
treebf62f0f6a535426d53b389a2e1aab229461ea302 /arch/powerpc/platforms/powernv/opal.c
parentpowerpc: Use bool function return values of true/false not 1/0 (diff)
downloadkernel-qcow2-linux-e3c5c2e0bc857c7cbdb81f35a6b90236c5f330e9.tar.gz
kernel-qcow2-linux-e3c5c2e0bc857c7cbdb81f35a6b90236c5f330e9.tar.xz
kernel-qcow2-linux-e3c5c2e0bc857c7cbdb81f35a6b90236c5f330e9.zip
powerpc/powernv: convert codes returned by OPAL calls
OPAL has its own list of return codes. The patch provides a translation of such codes in errnos for the opal_sensor_read call, and possibly others if needed. Signed-off-by: Cédric Le Goater <clg@fr.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/platforms/powernv/opal.c')
-rw-r--r--arch/powerpc/platforms/powernv/opal.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
index d403b2b08626..3fb981c0ca80 100644
--- a/arch/powerpc/platforms/powernv/opal.c
+++ b/arch/powerpc/platforms/powernv/opal.c
@@ -931,6 +931,25 @@ void opal_free_sg_list(struct opal_sg_list *sg)
}
}
+int opal_error_code(int rc)
+{
+ switch (rc) {
+ case OPAL_SUCCESS: return 0;
+
+ case OPAL_PARAMETER: return -EINVAL;
+ case OPAL_ASYNC_COMPLETION: return -EINPROGRESS;
+ case OPAL_BUSY_EVENT: return -EBUSY;
+ case OPAL_NO_MEM: return -ENOMEM;
+
+ case OPAL_UNSUPPORTED: return -EIO;
+ case OPAL_HARDWARE: return -EIO;
+ case OPAL_INTERNAL_ERROR: return -EIO;
+ default:
+ pr_err("%s: unexpected OPAL error %d\n", __func__, rc);
+ return -EIO;
+ }
+}
+
EXPORT_SYMBOL_GPL(opal_poll_events);
EXPORT_SYMBOL_GPL(opal_rtc_read);
EXPORT_SYMBOL_GPL(opal_rtc_write);