Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1446568
| From | Andi Shyti <andi.shyti@samsung.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [RFC 5/7] [media] ir-lirc-codec: do not handle any buffer for raw transmitters |
| Date | 2016-07-19 18:00 +0200 |
| Message-ID | <rWFB8-5U4-17@gated-at.bofh.it> (permalink) |
| References | <rWFB7-5U4-7@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Raw transmitters receive the data which need to be sent to
receivers from userspace as stream of bits, they don't require
any handling from the lirc framework.
Signed-off-by: Andi Shyti <andi.shyti@samsung.com>
---
drivers/media/rc/ir-lirc-codec.c | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/drivers/media/rc/ir-lirc-codec.c b/drivers/media/rc/ir-lirc-codec.c
index 5effc65..80e94b6 100644
--- a/drivers/media/rc/ir-lirc-codec.c
+++ b/drivers/media/rc/ir-lirc-codec.c
@@ -121,17 +121,6 @@ static ssize_t ir_lirc_transmit_ir(struct file *file, const char __user *buf,
if (!lirc)
return -EFAULT;
- if (n < sizeof(unsigned) || n % sizeof(unsigned))
- return -EINVAL;
-
- count = n / sizeof(unsigned);
- if (count > LIRCBUF_SIZE || count % 2 == 0)
- return -EINVAL;
-
- txbuf = memdup_user(buf, n);
- if (IS_ERR(txbuf))
- return PTR_ERR(txbuf);
-
dev = lirc->dev;
if (!dev) {
ret = -EFAULT;
@@ -143,6 +132,25 @@ static ssize_t ir_lirc_transmit_ir(struct file *file, const char __user *buf,
goto out;
}
+ if (dev->driver_type == RC_DRIVER_IR_RAW_TX) {
+ txbuf = memdup_user(buf, n);
+ if (IS_ERR(txbuf))
+ return PTR_ERR(txbuf);
+
+ return dev->tx_ir(dev, txbuf, n);
+ }
+
+ if (n < sizeof(unsigned) || n % sizeof(unsigned))
+ return -EINVAL;
+
+ count = n / sizeof(unsigned);
+ if (count > LIRCBUF_SIZE || count % 2 == 0)
+ return -EINVAL;
+
+ txbuf = memdup_user(buf, n);
+ if (IS_ERR(txbuf))
+ return PTR_ERR(txbuf);
+
for (i = 0; i < count; i++) {
if (txbuf[i] > IR_MAX_DURATION / 1000 - duration || !txbuf[i]) {
ret = -EINVAL;
--
2.8.1
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
[RFC 5/7] [media] ir-lirc-codec: do not handle any buffer for raw transmitters Andi Shyti <andi.shyti@samsung.com> - 2016-07-19 18:00 +0200
Re: [RFC 5/7] [media] ir-lirc-codec: do not handle any buffer for raw transmitters Sean Young <sean@mess.org> - 2016-07-20 00:20 +0200
Re: [RFC 5/7] [media] ir-lirc-codec: do not handle any buffer for raw transmitters Andi Shyti <andi.shyti@samsung.com> - 2016-07-21 02:50 +0200
Re: [RFC 5/7] [media] ir-lirc-codec: do not handle any buffer for raw transmitters Sean Young <sean@mess.org> - 2016-07-21 16:50 +0200
csiph-web