linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Marcel J.E. Mol" <marcel@mesa.nl>
To: linux-media@vger.kernel.org
Subject: [PATCH] [v4l-utils] keytable: add support for XMP IR protocol
Date: Sat, 26 Jul 2014 22:47:25 +0200	[thread overview]
Message-ID: <20140726204725.GA21580@joshua.mesa.nl> (raw)

Signed-off-by: Marcel Mol <marcel@mesa.nl>
---
 utils/keytable/keytable.c | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/utils/keytable/keytable.c b/utils/keytable/keytable.c
index 1a91fba..57e88a0 100644
--- a/utils/keytable/keytable.c
+++ b/utils/keytable/keytable.c
@@ -88,6 +88,7 @@ enum ir_protocols {
 	RC_5_SZ		= 1 << 7,
 	SHARP		= 1 << 8,
 	MCE_KBD		= 1 << 9,
+	XMP		= 1 << 10,
 	OTHER		= 1 << 31,
 };
 
@@ -112,7 +113,8 @@ static const char doc[] = "\nAllows get/set IR keycode/scancode tables\n"
 	"  SYSDEV   - the ir class as found at /sys/class/rc\n"
 	"  TABLE    - a file with a set of scancode=keycode value pairs\n"
 	"  SCANKEY  - a set of scancode1=keycode1,scancode2=keycode2.. value pairs\n"
-	"  PROTOCOL - protocol name (nec, rc-5, rc-6, jvc, sony, sanyo, rc-5-sz, lirc, sharp, mce_kbd, other, all) to be enabled\n"
+	"  PROTOCOL - protocol name (nec, rc-5, rc-6, jvc, sony, sanyo, rc-5-sz, lirc,\n"
+        "                            sharp, mce_kbd, xmp, other, all) to be enabled\n"
 	"  DELAY    - Delay before repeating a keystroke\n"
 	"  PERIOD   - Period to repeat a keystroke\n"
 	"  CFGFILE  - configuration file that associates a driver/table name with a keymap file\n"
@@ -240,6 +242,8 @@ static error_t parse_keyfile(char *fname, char **table)
 							ch_proto |= SHARP;
 						else if (!strcasecmp(p,"mce-kbd"))
 							ch_proto |= MCE_KBD;
+						else if (!strcasecmp(p,"xmp"))
+							ch_proto |= XMP;
 						else if (!strcasecmp(p,"other") || !strcasecmp(p,"unknown"))
 							ch_proto |= OTHER;
 						else {
@@ -481,6 +485,8 @@ static error_t parse_opt(int k, char *arg, struct argp_state *state)
 				ch_proto |= RC_5_SZ;
 			else if (!strcasecmp(p,"mce-kbd"))
 				ch_proto |= RC_5_SZ;
+			else if (!strcasecmp(p,"xmp"))
+				ch_proto |= XMP;
 			else if (!strcasecmp(p,"all"))
 				ch_proto |= ~0;
 			else
@@ -760,6 +766,8 @@ static enum ir_protocols v1_get_hw_protocols(char *name)
 			proto |= SHARP;
 		else if (!strcmp(p, "mce-kbd"))
 			proto |= MCE_KBD;
+		else if (!strcmp(p, "xmp"))
+			proto |= XMP;
 		else
 			proto |= OTHER;
 
@@ -812,6 +820,9 @@ static int v1_set_hw_protocols(struct rc_device *rc_dev)
 	if (rc_dev->current & MCE_KBD)
 		fprintf(fp, "mce_kbd ");
 
+	if (rc_dev->current & XMP)
+		fprintf(fp, "xmp ");
+
 	if (rc_dev->current & OTHER)
 		fprintf(fp, "unknown ");
 
@@ -947,6 +958,8 @@ static enum ir_protocols v2_get_protocols(struct rc_device *rc_dev, char *name)
 			proto = SHARP;
 		else if (!strcmp(p, "mce-kbd"))
 			proto = MCE_KBD;
+		else if (!strcmp(p, "xmp"))
+			proto = XMP;
 		else
 			proto = OTHER;
 
@@ -1009,6 +1022,9 @@ static int v2_set_protocols(struct rc_device *rc_dev)
 	if (rc_dev->current & MCE_KBD)
 		fprintf(fp, "+mce-kbd\n");
 
+	if (rc_dev->current & XMP)
+		fprintf(fp, "+xmp\n");
+
 	if (rc_dev->current & OTHER)
 		fprintf(fp, "+unknown\n");
 
@@ -1042,6 +1058,8 @@ static void show_proto(	enum ir_protocols proto)
 		fprintf (stderr, "SHARP ");
 	if (proto & MCE_KBD)
 		fprintf (stderr, "MCE_KBD ");
+	if (proto & XMP)
+		fprintf (stderr, "XMP ");
 	if (proto & OTHER)
 		fprintf (stderr, "other ");
 }
@@ -1164,6 +1182,10 @@ static int get_attribs(struct rc_device *rc_dev, char *sysfs_name)
 			rc_dev->supported |= SONY;
 			if (v1_get_sw_enabled_protocol(cur->name))
 				rc_dev->current |= SONY;
+		} else if (strstr(cur->name, "/xmp_decoder")) {
+			rc_dev->supported |= XMP;
+			if (v1_get_sw_enabled_protocol(cur->name))
+				rc_dev->current |= XMP;
 		}
 	}
 
@@ -1201,6 +1223,9 @@ static int set_proto(struct rc_device *rc_dev)
 		if (rc_dev->supported & SONY)
 			rc += v1_set_sw_enabled_protocol(rc_dev, "/sony_decoder",
 						      rc_dev->current & SONY);
+		if (rc_dev->supported & XMP)
+			rc += v1_set_sw_enabled_protocol(rc_dev, "/xmp_decoder",
+						      rc_dev->current & XMP);
 	} else {
 		rc = v1_set_hw_protocols(rc_dev);
 	}
-- 
1.9.3


             reply	other threads:[~2014-07-26 20:47 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-26 20:47 Marcel J.E. Mol [this message]
  -- strict thread matches above, loose matches on Subject: below --
2014-06-16 21:17 [PATCH] [v4l-utils] keytable: add support for XMP IR protocol Marcel J.E. Mol
2014-07-26 15:24 ` Mauro Carvalho Chehab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140726204725.GA21580@joshua.mesa.nl \
    --to=marcel@mesa.nl \
    --cc=linux-media@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).