|
@@ -46,20 +46,28 @@ int opal_get_sensor_data(u32 sensor_hndl, u32 *sensor_data)
|
|
|
|
|
|
mutex_lock(&opal_sensor_mutex);
|
|
|
ret = opal_sensor_read(sensor_hndl, token, &data);
|
|
|
- if (ret != OPAL_ASYNC_COMPLETION) {
|
|
|
- ret = opal_error_code(ret);
|
|
|
- goto out_token;
|
|
|
- }
|
|
|
+ switch (ret) {
|
|
|
+ case OPAL_ASYNC_COMPLETION:
|
|
|
+ ret = opal_async_wait_response(token, &msg);
|
|
|
+ if (ret) {
|
|
|
+ pr_err("%s: Failed to wait for the async response, %d\n",
|
|
|
+ __func__, ret);
|
|
|
+ goto out_token;
|
|
|
+ }
|
|
|
|
|
|
- ret = opal_async_wait_response(token, &msg);
|
|
|
- if (ret) {
|
|
|
- pr_err("%s: Failed to wait for the async response, %d\n",
|
|
|
- __func__, ret);
|
|
|
- goto out_token;
|
|
|
- }
|
|
|
+ ret = opal_error_code(be64_to_cpu(msg.params[1]));
|
|
|
+ *sensor_data = be32_to_cpu(data);
|
|
|
+ break;
|
|
|
|
|
|
- *sensor_data = be32_to_cpu(data);
|
|
|
- ret = opal_error_code(be64_to_cpu(msg.params[1]));
|
|
|
+ case OPAL_SUCCESS:
|
|
|
+ ret = 0;
|
|
|
+ *sensor_data = be32_to_cpu(data);
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ ret = opal_error_code(ret);
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
out_token:
|
|
|
mutex_unlock(&opal_sensor_mutex);
|