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);