forked from Minki/linux
w1: omap_hdq: use wait_event_timeout to wait for read to complete.
There is no gain in having a loop - there is no risk of missing the interrupt with wait_event_timeout. Signed-off-by: NeilBrown <neilb@suse.de> Acked-by: Evgeniy Polyakov <zbr@ioremap.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
7b5362a603
commit
b7e938d06d
@ -354,7 +354,6 @@ static int hdq_read_byte(struct hdq_data *hdq_data, u8 *val)
|
||||
{
|
||||
int ret = 0;
|
||||
u8 status;
|
||||
unsigned long timeout = jiffies + OMAP_HDQ_TIMEOUT;
|
||||
|
||||
ret = mutex_lock_interruptible(&hdq_data->hdq_mutex);
|
||||
if (ret < 0) {
|
||||
@ -372,15 +371,13 @@ static int hdq_read_byte(struct hdq_data *hdq_data, u8 *val)
|
||||
OMAP_HDQ_CTRL_STATUS_DIR | OMAP_HDQ_CTRL_STATUS_GO,
|
||||
OMAP_HDQ_CTRL_STATUS_DIR | OMAP_HDQ_CTRL_STATUS_GO);
|
||||
/*
|
||||
* The RX comes immediately after TX. It
|
||||
* triggers another interrupt before we
|
||||
* sleep. So we have to wait for RXCOMPLETE bit.
|
||||
* The RX comes immediately after TX.
|
||||
*/
|
||||
while (!(hdq_data->hdq_irqstatus
|
||||
& OMAP_HDQ_INT_STATUS_RXCOMPLETE)
|
||||
&& time_before(jiffies, timeout)) {
|
||||
schedule_timeout_uninterruptible(1);
|
||||
}
|
||||
wait_event_timeout(hdq_wait_queue,
|
||||
(hdq_data->hdq_irqstatus
|
||||
& OMAP_HDQ_INT_STATUS_RXCOMPLETE),
|
||||
OMAP_HDQ_TIMEOUT);
|
||||
|
||||
hdq_reg_merge(hdq_data, OMAP_HDQ_CTRL_STATUS, 0,
|
||||
OMAP_HDQ_CTRL_STATUS_DIR);
|
||||
status = hdq_data->hdq_irqstatus;
|
||||
|
Loading…
Reference in New Issue
Block a user