Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 330804
b: refs/heads/master
c: b83bfd1
h: refs/heads/master
v: v3
  • Loading branch information
Sean Young authored and Mauro Carvalho Chehab committed Aug 13, 2012
1 parent d7ebc3d commit 6cd56df
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0938069fa08970f1c898970c1331a029efe9a1ce
refs/heads/master: b83bfd1b0127b0963fcac39280280e365e7e04d8
11 changes: 8 additions & 3 deletions trunk/drivers/media/rc/fintek-cir.c
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ static void fintek_process_rx_ir_data(struct fintek_dev *fintek)
{
DEFINE_IR_RAW_EVENT(rawir);
u8 sample;
bool event = false;
int i;

for (i = 0; i < fintek->pkts; i++) {
Expand Down Expand Up @@ -332,7 +333,9 @@ static void fintek_process_rx_ir_data(struct fintek_dev *fintek)
fit_dbg("Storing %s with duration %d",
rawir.pulse ? "pulse" : "space",
rawir.duration);
ir_raw_event_store_with_filter(fintek->rdev, &rawir);
if (ir_raw_event_store_with_filter(fintek->rdev,
&rawir))
event = true;
break;
}

Expand All @@ -342,8 +345,10 @@ static void fintek_process_rx_ir_data(struct fintek_dev *fintek)

fintek->pkts = 0;

fit_dbg("Calling ir_raw_event_handle");
ir_raw_event_handle(fintek->rdev);
if (event) {
fit_dbg("Calling ir_raw_event_handle");
ir_raw_event_handle(fintek->rdev);
}
}

/* copy data from hardware rx register into driver buffer */
Expand Down
7 changes: 5 additions & 2 deletions trunk/drivers/media/rc/iguanair.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ static void process_ir_data(struct iguanair *ir, unsigned len)
} else if (len >= 7) {
DEFINE_IR_RAW_EVENT(rawir);
unsigned i;
bool event = false;

init_ir_raw_event(&rawir);

Expand All @@ -147,10 +148,12 @@ static void process_ir_data(struct iguanair *ir, unsigned len)
RX_RESOLUTION;
}

ir_raw_event_store_with_filter(ir->rc, &rawir);
if (ir_raw_event_store_with_filter(ir->rc, &rawir))
event = true;
}

ir_raw_event_handle(ir->rc);
if (event)
ir_raw_event_handle(ir->rc);
}
}

Expand Down
6 changes: 4 additions & 2 deletions trunk/drivers/media/rc/ir-raw.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,9 @@ EXPORT_SYMBOL_GPL(ir_raw_event_store_edge);
* This routine (which may be called from an interrupt context) works
* in similar manner to ir_raw_event_store_edge.
* This routine is intended for devices with limited internal buffer
* It automerges samples of same type, and handles timeouts
* It automerges samples of same type, and handles timeouts. Returns non-zero
* if the event was added, and zero if the event was ignored due to idle
* processing.
*/
int ir_raw_event_store_with_filter(struct rc_dev *dev, struct ir_raw_event *ev)
{
Expand All @@ -184,7 +186,7 @@ int ir_raw_event_store_with_filter(struct rc_dev *dev, struct ir_raw_event *ev)
dev->raw->this_ev.duration >= dev->timeout)
ir_raw_event_set_idle(dev, true);

return 0;
return 1;
}
EXPORT_SYMBOL_GPL(ir_raw_event_store_with_filter);

Expand Down
10 changes: 7 additions & 3 deletions trunk/drivers/media/rc/mceusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -974,6 +974,7 @@ static void mceusb_handle_command(struct mceusb_dev *ir, int index)
static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
{
DEFINE_IR_RAW_EVENT(rawir);
bool event = false;
int i = 0;

/* skip meaningless 0xb1 0x60 header bytes on orig receiver */
Expand Down Expand Up @@ -1004,7 +1005,8 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
rawir.pulse ? "pulse" : "space",
rawir.duration);

ir_raw_event_store_with_filter(ir->rc, &rawir);
if (ir_raw_event_store_with_filter(ir->rc, &rawir))
event = true;
break;
case CMD_DATA:
ir->rem--;
Expand Down Expand Up @@ -1032,8 +1034,10 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
if (ir->parser_state != CMD_HEADER && !ir->rem)
ir->parser_state = CMD_HEADER;
}
mce_dbg(ir->dev, "processed IR data, calling ir_raw_event_handle\n");
ir_raw_event_handle(ir->rc);
if (event) {
mce_dbg(ir->dev, "processed IR data, calling ir_raw_event_handle\n");
ir_raw_event_handle(ir->rc);
}
}

static void mceusb_dev_recv(struct urb *urb)
Expand Down
19 changes: 13 additions & 6 deletions trunk/drivers/media/rc/ttusbir.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,9 @@ static void ttusbir_bulk_complete(struct urb *urb)
*/
static void ttusbir_process_ir_data(struct ttusbir *tt, uint8_t *buf)
{
struct ir_raw_event rawir;
unsigned i, v, b;
DEFINE_IR_RAW_EVENT(rawir);
bool event = false;

init_ir_raw_event(&rawir);

Expand All @@ -132,12 +133,14 @@ static void ttusbir_process_ir_data(struct ttusbir *tt, uint8_t *buf)
case 0xfe:
rawir.pulse = false;
rawir.duration = NS_PER_BYTE;
ir_raw_event_store_with_filter(tt->rc, &rawir);
if (ir_raw_event_store_with_filter(tt->rc, &rawir))
event = true;
break;
case 0:
rawir.pulse = true;
rawir.duration = NS_PER_BYTE;
ir_raw_event_store_with_filter(tt->rc, &rawir);
if (ir_raw_event_store_with_filter(tt->rc, &rawir))
event = true;
break;
default:
/* one edge per byte */
Expand All @@ -150,16 +153,20 @@ static void ttusbir_process_ir_data(struct ttusbir *tt, uint8_t *buf)
}

rawir.duration = NS_PER_BIT * (8 - b);
ir_raw_event_store_with_filter(tt->rc, &rawir);
if (ir_raw_event_store_with_filter(tt->rc, &rawir))
event = true;

rawir.pulse = !rawir.pulse;
rawir.duration = NS_PER_BIT * b;
ir_raw_event_store_with_filter(tt->rc, &rawir);
if (ir_raw_event_store_with_filter(tt->rc, &rawir))
event = true;
break;
}
}

ir_raw_event_handle(tt->rc);
/* don't wakeup when there's nothing to do */
if (event)
ir_raw_event_handle(tt->rc);
}

static void ttusbir_urb_complete(struct urb *urb)
Expand Down

0 comments on commit 6cd56df

Please sign in to comment.