|
@@ -101,21 +101,14 @@ static int loop_set_rx_carrier_range(struct rc_dev *dev, u32 min, u32 max)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int loop_tx_ir(struct rc_dev *dev, int *txbuf, u32 n)
|
|
|
+static int loop_tx_ir(struct rc_dev *dev, unsigned *txbuf, unsigned count)
|
|
|
{
|
|
|
struct loopback_dev *lodev = dev->priv;
|
|
|
u32 rxmask;
|
|
|
- unsigned count;
|
|
|
unsigned total_duration = 0;
|
|
|
unsigned i;
|
|
|
DEFINE_IR_RAW_EVENT(rawir);
|
|
|
|
|
|
- if (n == 0 || n % sizeof(int)) {
|
|
|
- dprintk("invalid tx buffer size\n");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
-
|
|
|
- count = n / sizeof(int);
|
|
|
for (i = 0; i < count; i++)
|
|
|
total_duration += abs(txbuf[i]);
|
|
|
|
|
@@ -142,7 +135,7 @@ static int loop_tx_ir(struct rc_dev *dev, int *txbuf, u32 n)
|
|
|
|
|
|
for (i = 0; i < count; i++) {
|
|
|
rawir.pulse = i % 2 ? false : true;
|
|
|
- rawir.duration = abs(txbuf[i]) * 1000;
|
|
|
+ rawir.duration = txbuf[i] * 1000;
|
|
|
if (rawir.duration)
|
|
|
ir_raw_event_store_with_filter(dev, &rawir);
|
|
|
}
|
|
@@ -158,7 +151,7 @@ out:
|
|
|
/* Lirc expects this function to take as long as the total duration */
|
|
|
set_current_state(TASK_INTERRUPTIBLE);
|
|
|
schedule_timeout(usecs_to_jiffies(total_duration));
|
|
|
- return n;
|
|
|
+ return count;
|
|
|
}
|
|
|
|
|
|
static void loop_set_idle(struct rc_dev *dev, bool enable)
|