diff options
author | Suraj Jitindar Singh <sjitindarsingh@gmail.com> | 2016-06-28 23:38:38 -0400 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2016-06-29 03:33:18 -0400 |
commit | d0226d315dba5e401a124b394a1af5e35e082b08 (patch) | |
tree | 1cd2e85e40b4e49bc53c7de0232d56f69f6daadf | |
parent | 1ae88fd54c3ac31f68f91e37f719be7e2dbcc810 (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.h | 8 | ||||
-rw-r--r-- | arch/powerpc/platforms/powernv/opal-sensor.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/powernv/opal-sysparam.c | 4 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-opal.c | 2 | ||||
-rw-r--r-- | drivers/leds/leds-powernv.c | 2 | ||||
-rw-r--r-- | drivers/mtd/devices/powernv_flash.c | 2 | ||||
-rw-r--r-- | drivers/rtc/rtc-opal.c | 4 |
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 | ||
283 | ssize_t opal_msglog_copy(char *to, loff_t pos, size_t count); | 283 | ssize_t opal_msglog_copy(char *to, loff_t pos, size_t count); |
284 | 284 | ||
285 | static 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 | ||
72 | out_token: | 72 | out_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 | ||
108 | out_token: | 108 | out_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 | ||