|
@@ -673,7 +673,7 @@ static int cx23888_ir_rx_read(struct v4l2_subdev *sd, u8 *buf, size_t count,
|
|
|
|
|
|
unsigned int i, n;
|
|
|
union cx23888_ir_fifo_rec *p;
|
|
|
- unsigned u, v;
|
|
|
+ unsigned u, v, w;
|
|
|
|
|
|
n = count / sizeof(union cx23888_ir_fifo_rec)
|
|
|
* sizeof(union cx23888_ir_fifo_rec);
|
|
@@ -692,11 +692,12 @@ static int cx23888_ir_rx_read(struct v4l2_subdev *sd, u8 *buf, size_t count,
|
|
|
if ((p->hw_fifo_data & FIFO_RXTX_RTO) == FIFO_RXTX_RTO) {
|
|
|
/* Assume RTO was because of no IR light input */
|
|
|
u = 0;
|
|
|
- v4l2_dbg(2, ir_888_debug, sd, "rx read: end of rx\n");
|
|
|
+ w = 1;
|
|
|
} else {
|
|
|
u = (p->hw_fifo_data & FIFO_RXTX_LVL) ? 1 : 0;
|
|
|
if (invert)
|
|
|
u = u ? 0 : 1;
|
|
|
+ w = 0;
|
|
|
}
|
|
|
|
|
|
v = (unsigned) pulse_width_count_to_ns(
|
|
@@ -707,9 +708,12 @@ static int cx23888_ir_rx_read(struct v4l2_subdev *sd, u8 *buf, size_t count,
|
|
|
init_ir_raw_event(&p->ir_core_data);
|
|
|
p->ir_core_data.pulse = u;
|
|
|
p->ir_core_data.duration = v;
|
|
|
+ p->ir_core_data.timeout = w;
|
|
|
|
|
|
- v4l2_dbg(2, ir_888_debug, sd, "rx read: %10u ns %s\n",
|
|
|
- v, u ? "mark" : "space");
|
|
|
+ v4l2_dbg(2, ir_888_debug, sd, "rx read: %10u ns %s %s\n",
|
|
|
+ v, u ? "mark" : "space", w ? "(timed out)" : "");
|
|
|
+ if (w)
|
|
|
+ v4l2_dbg(2, ir_888_debug, sd, "rx read: end of rx\n");
|
|
|
}
|
|
|
return 0;
|
|
|
}
|