This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/v4l-dvb.git tree:

Subject: ir-core: Add support for disabling all protocols
Author:  Mauro Carvalho Chehab <[email protected]>
Date:    Mon Jun 28 12:58:48 2010 -0300

Writing "none" to /dev/class/rc/rc*/protocols will disable all protocols.
This allows an easier setup, from userspace, as userspace applications don't
need to disable protocol per protocol, before enabling a different set of
protocols.

Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 drivers/media/IR/ir-sysfs.c |   27 ++++++++++++++++++---------
 1 files changed, 18 insertions(+), 9 deletions(-)

---

http://git.linuxtv.org/v4l-dvb.git?a=commitdiff;h=d69861a25a54ef1cd6ee92f5ceb6ff2c01d84803

diff --git a/drivers/media/IR/ir-sysfs.c b/drivers/media/IR/ir-sysfs.c
index 9a464a3..db8c7f4 100644
--- a/drivers/media/IR/ir-sysfs.c
+++ b/drivers/media/IR/ir-sysfs.c
@@ -45,6 +45,8 @@ static struct {
        { IR_TYPE_SONY,         "sony"          },
 };
 
+#define PROTO_NONE     "none"
+
 /**
  * show_protocols() - shows the current IR protocol(s)
  * @d:         the device descriptor
@@ -101,6 +103,7 @@ static ssize_t show_protocols(struct device *d,
  * Writing "+proto" will add a protocol to the list of enabled protocols.
  * Writing "-proto" will remove a protocol from the list of enabled protocols.
  * Writing "proto" will enable only "proto".
+ * Writing "none" will disable all protocols.
  * Returns -EINVAL if an invalid protocol combination or unknown protocol name
  * is used, otherwise @len.
  */
@@ -134,16 +137,22 @@ static ssize_t store_protocols(struct device *d,
                disable = false;
        }
 
-       for (i = 0; i < ARRAY_SIZE(proto_names); i++) {
-               if (!strncasecmp(tmp, proto_names[i].name, 
strlen(proto_names[i].name))) {
-                       tmp += strlen(proto_names[i].name);
-                       mask = proto_names[i].type;
-                       break;
+
+       if (!enable && !disable && !strncasecmp(tmp, PROTO_NONE, 
sizeof(PROTO_NONE))) {
+               mask = 0;
+               tmp += sizeof(PROTO_NONE);
+       } else {
+               for (i = 0; i < ARRAY_SIZE(proto_names); i++) {
+                       if (!strncasecmp(tmp, proto_names[i].name, 
strlen(proto_names[i].name))) {
+                               tmp += strlen(proto_names[i].name);
+                               mask = proto_names[i].type;
+                               break;
+                       }
+               }
+               if (i == ARRAY_SIZE(proto_names)) {
+                       IR_dprintk(1, "Unknown protocol\n");
+                       return -EINVAL;
                }
-       }
-       if (i == ARRAY_SIZE(proto_names)) {
-               IR_dprintk(1, "Unknown protocol\n");
-               return -EINVAL;
        }
 
        tmp = skip_spaces(tmp);

_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to