add_timer(&php_ctlr->int_poll_timer);
 }
 
+static inline int is_ctrl_busy(struct controller *ctrl)
+{
+       u16 cmd_status = shpc_readw(ctrl, CMD_STATUS);
+       return cmd_status & 0x1;
+}
+
 /*
  * Returns 1 if SHPC finishes executing a command within 1 sec,
  * otherwise returns 0.
 static inline int shpc_poll_ctrl_busy(struct controller *ctrl)
 {
        int i;
-       u16 cmd_status = shpc_readw(ctrl, CMD_STATUS);
 
-       if (!(cmd_status & 0x1))
+       if (!is_ctrl_busy(ctrl))
                return 1;
 
        /* Check every 0.1 sec for a total of 1 sec */
        for (i = 0; i < 10; i++) {
                msleep(100);
-               cmd_status = shpc_readw(ctrl, CMD_STATUS);
-               if (!(cmd_status & 0x1))
+               if (!is_ctrl_busy(ctrl))
                        return 1;
        }
 
        else
                rc = wait_event_interruptible_timeout(ctrl->queue,
                                                !ctrl->cmd_busy, timeout);
-       if (!rc) {
+       if (!rc && is_ctrl_busy(ctrl)) {
                retval = -EIO;
                err("Command not completed in 1000 msec\n");
        } else if (rc < 0) {