mirror of https://github.com/OpenIPC/firmware.git
49 lines
1.4 KiB
Diff
49 lines
1.4 KiB
Diff
diff -drupN a/drivers/media/rc/ir-lirc-codec.c b/drivers/media/rc/ir-lirc-codec.c
|
|
--- a/drivers/media/rc/ir-lirc-codec.c 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/drivers/media/rc/ir-lirc-codec.c 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -124,8 +124,8 @@ static ssize_t ir_lirc_transmit_ir(struc
|
|
if (n < sizeof(unsigned) || n % sizeof(unsigned))
|
|
return -EINVAL;
|
|
|
|
- count = n / sizeof(unsigned);
|
|
- if (count > LIRCBUF_SIZE || count % 2 == 0)
|
|
+ count = n / sizeof(unsigned int);
|
|
+ if (count > LIRCBUF_SIZE || count % 2 != 0)
|
|
return -EINVAL;
|
|
|
|
txbuf = memdup_user(buf, n);
|
|
@@ -144,12 +144,13 @@ static ssize_t ir_lirc_transmit_ir(struc
|
|
}
|
|
|
|
for (i = 0; i < count; i++) {
|
|
- if (txbuf[i] > IR_MAX_DURATION / 1000 - duration || !txbuf[i]) {
|
|
+ if (LIRC_VALUE(txbuf[i]) > IR_MAX_DURATION / 1000 - duration ||
|
|
+ !txbuf[i]) {
|
|
ret = -EINVAL;
|
|
goto out;
|
|
}
|
|
|
|
- duration += txbuf[i];
|
|
+ duration += LIRC_VALUE(txbuf[i]);
|
|
}
|
|
|
|
ret = dev->tx_ir(dev, txbuf, count);
|
|
@@ -157,7 +158,7 @@ static ssize_t ir_lirc_transmit_ir(struc
|
|
goto out;
|
|
|
|
for (duration = i = 0; i < ret; i++)
|
|
- duration += txbuf[i];
|
|
+ duration += LIRC_VALUE(txbuf[i]);
|
|
|
|
ret *= sizeof(unsigned int);
|
|
|
|
@@ -395,6 +396,8 @@ static int ir_lirc_register(struct rc_de
|
|
drv->dev = &dev->dev;
|
|
drv->rdev = dev;
|
|
drv->owner = THIS_MODULE;
|
|
+ drv->chunk_size = 4;
|
|
+ drv->buffer_size = 64;
|
|
|
|
drv->minor = lirc_register_driver(drv);
|
|
if (drv->minor < 0) {
|