From a338c651de85d453a2ea2846815c113196259f95 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Mon, 14 Dec 2009 02:16:36 -0300 Subject: [PATCH] --- yaml --- r: 181411 b: refs/heads/master c: 53f870228db0855f2031270ba5774dab0f33facd h: refs/heads/master i: 181409: e30258ac7eb0884b72fc2242e7fe7389e7c4de6e 181407: d57d8eb1fb05561a74bfae764266ff5dfc163fa5 v: v3 --- [refs] | 2 +- trunk/drivers/media/IR/ir-sysfs.c | 30 ++++++++++++++++++++++++++++-- trunk/include/media/ir-core.h | 4 +++- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index c68bb1ba4e55..9a5a50646797 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e93854da880d6dc357c00625d8371b6a926fd19b +refs/heads/master: 53f870228db0855f2031270ba5774dab0f33facd diff --git a/trunk/drivers/media/IR/ir-sysfs.c b/trunk/drivers/media/IR/ir-sysfs.c index 3c601421632b..821345dbe7c9 100644 --- a/trunk/drivers/media/IR/ir-sysfs.c +++ b/trunk/drivers/media/IR/ir-sysfs.c @@ -22,10 +22,36 @@ unsigned long ir_core_dev_number; static struct class *ir_input_class; -static DEVICE_ATTR(ir_protocol, S_IRUGO | S_IWUSR, NULL, NULL); + +static ssize_t show_protocol(struct device *d, + struct device_attribute *mattr, char *buf) +{ + char *s; + struct ir_input_dev *ir_dev = dev_get_drvdata(d); + enum ir_type ir_type = ir_dev->rc_tab.ir_type; + + IR_dprintk(1, "Current protocol is %ld\n", ir_type); + + /* FIXME: doesn't support multiple protocols at the same time */ + if (ir_type == IR_TYPE_UNKNOWN) + s = "Unknown"; + else if (ir_type == IR_TYPE_RC5) + s = "RC-5"; + else if (ir_type == IR_TYPE_PD) + s = "Pulse/distance"; + else if (ir_type == IR_TYPE_NEC) + s = "NEC"; + else + s = "Other"; + + return sprintf(buf, "%s\n", s); +} + +static DEVICE_ATTR(current_protocol, S_IRUGO | S_IWUSR, + show_protocol, NULL); static struct attribute *ir_dev_attrs[] = { - &dev_attr_ir_protocol.attr, + &dev_attr_current_protocol.attr, }; int ir_register_class(struct input_dev *input_dev) diff --git a/trunk/include/media/ir-core.h b/trunk/include/media/ir-core.h index dbdffd1458fb..a6d07dede09f 100644 --- a/trunk/include/media/ir-core.h +++ b/trunk/include/media/ir-core.h @@ -44,9 +44,10 @@ struct ir_scancode_table { struct ir_dev_props { unsigned long allowed_protos; void *priv; - int (*change_protocol)(void *priv, unsigned long protocol); + int (*change_protocol)(void *priv, enum ir_type ir_type); }; + struct ir_input_dev { struct input_dev *dev; /* Input device*/ struct ir_scancode_table rc_tab; /* scan/key table */ @@ -55,6 +56,7 @@ struct ir_input_dev { struct device *class_dev; /* virtual class dev */ const struct ir_dev_props *props; /* Device properties */ }; +#define to_ir_input_dev(_attr) container_of(_attr, struct ir_input_dev, attr) /* Routines from ir-keytable.c */