Skip to content

Commit

Permalink
[media] winbond-cir: fix idle mode
Browse files Browse the repository at this point in the history
The receiver is never disabled by idle mode since rxstate never gets set
to RXSTATE_ACTIVE, so we keep on getting interrupts after the first IR
activity ends. Note that ir_raw_event_reset() already calls
ir_raw_event_handle().

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Sean Young authored and Mauro Carvalho Chehab committed Nov 21, 2012
1 parent 293d31e commit e5eda7f
Showing 1 changed file with 5 additions and 10 deletions.
15 changes: 5 additions & 10 deletions drivers/media/rc/winbond-cir.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,6 @@ struct wbcir_data {
/* RX state */
enum wbcir_rxstate rxstate;
struct led_trigger *rxtrigger;
struct ir_raw_event rxev;

/* TX state */
enum wbcir_txstate txstate;
Expand Down Expand Up @@ -339,9 +338,12 @@ wbcir_idle_rx(struct rc_dev *dev, bool idle)
led_trigger_event(data->rxtrigger, LED_FULL);
}

if (idle && data->rxstate != WBCIR_RXSTATE_INACTIVE)
if (idle && data->rxstate != WBCIR_RXSTATE_INACTIVE) {
data->rxstate = WBCIR_RXSTATE_INACTIVE;
led_trigger_event(data->rxtrigger, LED_OFF);
/* Tell hardware to go idle by setting RXINACTIVE */
outb(WBCIR_RX_DISABLE, data->sbase + WBCIR_REG_SP3_ASCR);
}
}

static void
Expand All @@ -360,12 +362,6 @@ wbcir_irq_rx(struct wbcir_data *data, struct pnp_dev *device)
ir_raw_event_store_with_filter(data->dev, &rawir);
}

/* Check if we should go idle */
if (data->dev->idle) {
led_trigger_event(data->rxtrigger, LED_OFF);
data->rxstate = WBCIR_RXSTATE_INACTIVE;
}

ir_raw_event_handle(data->dev);
}

Expand Down Expand Up @@ -915,9 +911,8 @@ wbcir_init_hw(struct wbcir_data *data)

/* Clear RX state */
data->rxstate = WBCIR_RXSTATE_INACTIVE;
data->rxev.duration = 0;
ir_raw_event_reset(data->dev);
ir_raw_event_handle(data->dev);
ir_raw_event_set_idle(data->dev, true);

/* Clear TX state */
if (data->txstate == WBCIR_TXSTATE_ACTIVE) {
Expand Down

0 comments on commit e5eda7f

Please sign in to comment.