media: rc: add ioctl to get the current timeout
authorSean Young <sean@mess.org>
Fri, 23 Mar 2018 20:59:52 +0000 (16:59 -0400)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 20 Apr 2018 13:15:18 +0000 (09:15 -0400)
Since the kernel now modifies the timeout, make it possible to retrieve
the current value.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Documentation/media/uapi/rc/lirc-func.rst
Documentation/media/uapi/rc/lirc-set-rec-timeout.rst
drivers/media/rc/lirc_dev.c
include/uapi/linux/lirc.h

index ddb4620de2940784fdacdcbcecc62109c0ba590f..9656423a3f28b6fc0146b98831def623e16a5b36 100644 (file)
@@ -17,6 +17,7 @@ LIRC Function Reference
     lirc-get-rec-resolution
     lirc-set-send-duty-cycle
     lirc-get-timeout
+    lirc-get-rec-timeout
     lirc-set-rec-timeout
     lirc-set-rec-carrier
     lirc-set-rec-carrier-range
index b3e16bbdbc90f4c605acbe9664bd397ff4077eb0..a833a6a4c25a7c703a3028f35a04c1aff477cbff 100644 (file)
@@ -1,19 +1,23 @@
 .. -*- coding: utf-8; mode: rst -*-
 
 .. _lirc_set_rec_timeout:
+.. _lirc_get_rec_timeout:
 
-**************************
-ioctl LIRC_SET_REC_TIMEOUT
-**************************
+***************************************************
+ioctl LIRC_GET_REC_TIMEOUT and LIRC_SET_REC_TIMEOUT
+***************************************************
 
 Name
 ====
 
-LIRC_SET_REC_TIMEOUT - sets the integer value for IR inactivity timeout.
+LIRC_GET_REC_TIMEOUT/LIRC_SET_REC_TIMEOUT - Get/set the integer value for IR inactivity timeout.
 
 Synopsis
 ========
 
+.. c:function:: int ioctl( int fd, LIRC_GET_REC_TIMEOUT, __u32 *timeout )
+    :name: LIRC_GET_REC_TIMEOUT
+
 .. c:function:: int ioctl( int fd, LIRC_SET_REC_TIMEOUT, __u32 *timeout )
     :name: LIRC_SET_REC_TIMEOUT
 
@@ -30,7 +34,7 @@ Arguments
 Description
 ===========
 
-Sets the integer value for IR inactivity timeout.
+Get and set the integer value for IR inactivity timeout.
 
 If supported by the hardware, setting it to 0  disables all hardware timeouts
 and data should be reported as soon as possible. If the exact value
index 247e6fc3dc0c7e041c170499803ac2dec1f38569..6b4755e9fa2577a004378a3c3148a4c25eaf73f5 100644 (file)
@@ -575,6 +575,13 @@ static long ir_lirc_ioctl(struct file *file, unsigned int cmd,
                }
                break;
 
+       case LIRC_GET_REC_TIMEOUT:
+               if (!dev->timeout)
+                       ret = -ENOTTY;
+               else
+                       val = DIV_ROUND_UP(dev->timeout, 1000);
+               break;
+
        case LIRC_SET_REC_TIMEOUT_REPORTS:
                if (!dev->timeout)
                        ret = -ENOTTY;
index f189931042a7e7f2c123bafcb33692848a43bafd..6b319581882f0ed3f8590b494d87f2a3abad7f6f 100644 (file)
 
 #define LIRC_SET_WIDEBAND_RECEIVER     _IOW('i', 0x00000023, __u32)
 
+/*
+ * Return the recording timeout, which is either set by
+ * the ioctl LIRC_SET_REC_TIMEOUT or by the kernel after setting the protocols.
+ */
+#define LIRC_GET_REC_TIMEOUT          _IOR('i', 0x00000024, __u32)
+
 /*
  * struct lirc_scancode - decoded scancode with protocol for use with
  *     LIRC_MODE_SCANCODE