firmware/br-ext-chip-allwinner/board/v83x/kernel/patches/00000-drivers_media_rc_ir-l...

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) {