/* * 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; 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); if (!is_ctrl_busy(ctrl)) return 1; } return 0; }
static inline int shpc_poll_ctrl_busy(struct controller *ctrl) { int i; if (!is_ctrl_busy(ctrl)) return 1; for (i = 0; i < 10; i++) { msleep(100); if (!is_ctrl_busy(ctrl)) return 1; } return 0; }
static inline int shpc_wait_cmd(struct controller *ctrl) { int retval = 0; unsigned long timeout = msecs_to_jiffies(1000); int rc; if (shpchp_poll_mode) rc = shpc_poll_ctrl_busy(ctrl); else rc = wait_event_interruptible_timeout(ctrl->queue, !is_ctrl_busy(ctrl), timeout); if (!rc && is_ctrl_busy(ctrl)) { retval = -EIO; err("Command not completed in 1000 msec\n"); } else if (rc < 0) { retval = -EINTR; info("Command was interrupted by a signal\n"); } return retval; }