aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuraj Jitindar Singh <sjitindarsingh@gmail.com>2016-06-28 23:38:38 -0400
committerMichael Ellerman <mpe@ellerman.id.au>2016-06-29 03:33:18 -0400
commitd0226d315dba5e401a124b394a1af5e35e082b08 (patch)
tree1cd2e85e40b4e49bc53c7de0232d56f69f6daadf
parent1ae88fd54c3ac31f68f91e37f719be7e2dbcc810 (diff)
powerpc/opal: Add inline function to get rc from an ASYNC_COMP opal_msg
An opal_msg of type OPAL_MSG_ASYNC_COMP contains the return code in the params[1] struct member. However this isn't intuitive or obvious when reading the code and requires that a user look at the skiboot documentation or opal-api.h to verify this. Add an inline function to get the return code from an opal_msg and update call sites accordingly. Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
-rw-r--r--arch/powerpc/include/asm/opal.h8
-rw-r--r--arch/powerpc/platforms/powernv/opal-sensor.c2
-rw-r--r--arch/powerpc/platforms/powernv/opal-sysparam.c4
-rw-r--r--drivers/i2c/busses/i2c-opal.c2
-rw-r--r--drivers/leds/leds-powernv.c2
-rw-r--r--drivers/mtd/devices/powernv_flash.c2
-rw-r--r--drivers/rtc/rtc-opal.c4
7 files changed, 16 insertions, 8 deletions
diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h
index fa71fea3b6ee..9ab52e27cf71 100644
--- a/arch/powerpc/include/asm/opal.h
+++ b/arch/powerpc/include/asm/opal.h
@@ -282,6 +282,14 @@ extern int opal_error_code(int rc);
282 282
283ssize_t opal_msglog_copy(char *to, loff_t pos, size_t count); 283ssize_t opal_msglog_copy(char *to, loff_t pos, size_t count);
284 284
285static inline int opal_get_async_rc(struct opal_msg msg)
286{
287 if (msg.msg_type != OPAL_MSG_ASYNC_COMP)
288 return OPAL_PARAMETER;
289 else
290 return be64_to_cpu(msg.params[1]);
291}
292
285#endif /* __ASSEMBLY__ */ 293#endif /* __ASSEMBLY__ */
286 294
287#endif /* _ASM_POWERPC_OPAL_H */ 295#endif /* _ASM_POWERPC_OPAL_H */
diff --git a/arch/powerpc/platforms/powernv/opal-sensor.c b/arch/powerpc/platforms/powernv/opal-sensor.c
index a06059df9239..308efd170c27 100644
--- a/arch/powerpc/platforms/powernv/opal-sensor.c
+++ b/arch/powerpc/platforms/powernv/opal-sensor.c
@@ -55,7 +55,7 @@ int opal_get_sensor_data(u32 sensor_hndl, u32 *sensor_data)
55 goto out_token; 55 goto out_token;
56 } 56 }
57 57
58 ret = opal_error_code(be64_to_cpu(msg.params[1])); 58 ret = opal_error_code(opal_get_async_rc(msg));
59 *sensor_data = be32_to_cpu(data); 59 *sensor_data = be32_to_cpu(data);
60 break; 60 break;
61 61
diff --git a/arch/powerpc/platforms/powernv/opal-sysparam.c b/arch/powerpc/platforms/powernv/opal-sysparam.c
index afe66c576a38..23fb6647dced 100644
--- a/arch/powerpc/platforms/powernv/opal-sysparam.c
+++ b/arch/powerpc/platforms/powernv/opal-sysparam.c
@@ -67,7 +67,7 @@ static ssize_t opal_get_sys_param(u32 param_id, u32 length, void *buffer)
67 goto out_token; 67 goto out_token;
68 } 68 }
69 69
70 ret = opal_error_code(be64_to_cpu(msg.params[1])); 70 ret = opal_error_code(opal_get_async_rc(msg));
71 71
72out_token: 72out_token:
73 opal_async_release_token(token); 73 opal_async_release_token(token);
@@ -103,7 +103,7 @@ static int opal_set_sys_param(u32 param_id, u32 length, void *buffer)
103 goto out_token; 103 goto out_token;
104 } 104 }
105 105
106 ret = opal_error_code(be64_to_cpu(msg.params[1])); 106 ret = opal_error_code(opal_get_async_rc(msg));
107 107
108out_token: 108out_token:
109 opal_async_release_token(token); 109 opal_async_release_token(token);
diff --git a/drivers/i2c/busses/i2c-opal.c b/drivers/i2c/busses/i2c-opal.c
index 75dd6d041241..11e2a1fc10e9 100644
--- a/drivers/i2c/busses/i2c-opal.c
+++ b/drivers/i2c/busses/i2c-opal.c
@@ -71,7 +71,7 @@ static int i2c_opal_send_request(u32 bus_id, struct opal_i2c_request *req)
71 if (rc) 71 if (rc)
72 goto exit; 72 goto exit;
73 73
74 rc = be64_to_cpu(msg.params[1]); 74 rc = opal_get_async_rc(msg);
75 if (rc != OPAL_SUCCESS) { 75 if (rc != OPAL_SUCCESS) {
76 rc = i2c_opal_translate_error(rc); 76 rc = i2c_opal_translate_error(rc);
77 goto exit; 77 goto exit;
diff --git a/drivers/leds/leds-powernv.c b/drivers/leds/leds-powernv.c
index dfb8bd390125..b2a98c7b521b 100644
--- a/drivers/leds/leds-powernv.c
+++ b/drivers/leds/leds-powernv.c
@@ -118,7 +118,7 @@ static int powernv_led_set(struct powernv_led_data *powernv_led,
118 goto out_token; 118 goto out_token;
119 } 119 }
120 120
121 rc = be64_to_cpu(msg.params[1]); 121 rc = opal_get_async_rc(msg);
122 if (rc != OPAL_SUCCESS) 122 if (rc != OPAL_SUCCESS)
123 dev_err(dev, "%s : OAPL async call returned failed [rc=%d]\n", 123 dev_err(dev, "%s : OAPL async call returned failed [rc=%d]\n",
124 __func__, rc); 124 __func__, rc);
diff --git a/drivers/mtd/devices/powernv_flash.c b/drivers/mtd/devices/powernv_flash.c
index d5b870b3fd4e..f5396f26ddb4 100644
--- a/drivers/mtd/devices/powernv_flash.c
+++ b/drivers/mtd/devices/powernv_flash.c
@@ -95,7 +95,7 @@ static int powernv_flash_async_op(struct mtd_info *mtd, enum flash_op op,
95 return -EIO; 95 return -EIO;
96 } 96 }
97 97
98 rc = be64_to_cpu(msg.params[1]); 98 rc = opal_get_async_rc(msg);
99 if (rc == OPAL_SUCCESS) { 99 if (rc == OPAL_SUCCESS) {
100 rc = 0; 100 rc = 0;
101 if (retlen) 101 if (retlen)
diff --git a/drivers/rtc/rtc-opal.c b/drivers/rtc/rtc-opal.c
index 9c18d6fd8107..ea20f627dabe 100644
--- a/drivers/rtc/rtc-opal.c
+++ b/drivers/rtc/rtc-opal.c
@@ -134,7 +134,7 @@ static int opal_get_tpo_time(struct device *dev, struct rtc_wkalrm *alarm)
134 goto exit; 134 goto exit;
135 } 135 }
136 136
137 rc = be64_to_cpu(msg.params[1]); 137 rc = opal_get_async_rc(msg);
138 if (rc != OPAL_SUCCESS) { 138 if (rc != OPAL_SUCCESS) {
139 rc = -EIO; 139 rc = -EIO;
140 goto exit; 140 goto exit;
@@ -181,7 +181,7 @@ static int opal_set_tpo_time(struct device *dev, struct rtc_wkalrm *alarm)
181 goto exit; 181 goto exit;
182 } 182 }
183 183
184 rc = be64_to_cpu(msg.params[1]); 184 rc = opal_get_async_rc(msg);
185 if (rc != OPAL_SUCCESS) 185 if (rc != OPAL_SUCCESS)
186 rc = -EIO; 186 rc = -EIO;
187 187