From patchwork Thu Mar 27 23:21:23 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Hogan X-Patchwork-Id: 3900241 Return-Path: X-Original-To: patchwork-linux-media@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 6C07F9F334 for ; Thu, 27 Mar 2014 23:22:20 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3F4282026F for ; Thu, 27 Mar 2014 23:22:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1E41320268 for ; Thu, 27 Mar 2014 23:22:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757090AbaC0XWJ (ORCPT ); Thu, 27 Mar 2014 19:22:09 -0400 Received: from mail-wi0-f176.google.com ([209.85.212.176]:60293 "EHLO mail-wi0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757218AbaC0XWH (ORCPT ); Thu, 27 Mar 2014 19:22:07 -0400 Received: by mail-wi0-f176.google.com with SMTP id r20so132211wiv.15 for ; Thu, 27 Mar 2014 16:22:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :organization:user-agent:in-reply-to:references:mime-version :content-type; bh=lrYTK6TPSD0UMHqkq5xLiwJ2L7ynOqPcHhHzpctt5OA=; b=LgwR1CLdHRWhIaRm/kDTeoDfGItdnBRw4q/ohwXfzmnM0/sDBZVJa8A5QqkUEXWStw Ugsw9pGcnJ00fxol70SOUMmeWt8BXsaTBU1gj2aKYM351+VlULzvvBoJxGLq9gPHJPF2 6INrO0dZgv3BbIe7jmxxBCRIbJE8QEpv/3qwYMX2GQDNx/8C/uE5nJ1mbFPNjoYIwMUz K2o28cNCPpk2v/rH4Du+OIOY5LW1QsG1JWhfZxTy7Y124uBt1MVo/D+i7kT1txPAOwlK 5Y9ZTJJ6iibH7VltcwTSos6k3nTl4G6Nn+o4Fl9h3Y6AjczT882MWqAQ4erpAN54rV73 lRPQ== X-Gm-Message-State: ALoCoQnPrC4iAqHrjjwIDW86foaVh9OYCNxGsvGuCmms601sqie5Eme2HpELLgnjQZENxG7wRapv X-Received: by 10.180.89.136 with SMTP id bo8mr8470984wib.52.1395962525285; Thu, 27 Mar 2014 16:22:05 -0700 (PDT) Received: from radagast.localnet (jahogan.plus.com. [212.159.75.221]) by mx.google.com with ESMTPSA id h5sm1111357wiy.18.2014.03.27.16.22.03 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Thu, 27 Mar 2014 16:22:03 -0700 (PDT) From: James Hogan To: David =?ISO-8859-1?Q?H=E4rdeman?= Cc: linux-media@vger.kernel.org, m.chehab@samsung.com Subject: Re: [PATCH] rc-core: do not change 32bit NEC scancode format for now Date: Thu, 27 Mar 2014 23:21:23 +0000 Message-ID: <7983411.lVWEDlBWc6@radagast> Organization: Imagination Technologies User-Agent: KMail/4.11.5 (Linux/3.13.5+; KDE/4.11.5; x86_64; ; ) In-Reply-To: <20140327210037.20406.93136.stgit@zeus.muc.hardeman.nu> References: <20140327210037.20406.93136.stgit@zeus.muc.hardeman.nu> MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_TVD_MIME_EPI, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Hi David, On Thursday 27 March 2014 22:00:37 David Härdeman wrote: > This reverts 18bc17448147e93f31cc9b1a83be49f1224657b2 > > The patch ignores the fact that NEC32 scancodes are generated not only in > the NEC raw decoder but also directly in some drivers. Whichever approach > is chosen it should be consistent across drivers and this patch needs more > discussion. Fair enough. For reference which drivers are you referring to? > Furthermore, I'm convinced that we have to stop playing games trying to > decipher the "meaning" of NEC scancodes (what's the customer/vendor/address, > which byte is the MSB, etc). Well when all the buttons on a remote have the same address, and the numeric buttons are sequential commands only in a certain bit/byte order, then I think the word "decipher" is probably a bit of a stretch. Nevertheless I don't have any attachment to 32-bit NEC. If it's likely to change again I'd prefer img-ir-nec just not support it for now, so please could you add the following hunks to your patch (or if the original patch is to be dropped this could be squashed into the img-ir-nec patch): > > I'll post separate proposals to that effect later. Great, please do Cc me (I have a work in progress branch to unify NEC scancodes, but I'm not sure I'd have time to complete it any time soon anyway) Thanks James > > Signed-off-by: David Härdeman > --- > drivers/media/rc/ir-nec-decoder.c | 5 -- > drivers/media/rc/keymaps/rc-tivo.c | 86 > ++++++++++++++++++------------------ 2 files changed, 44 insertions(+), 47 > deletions(-) > > diff --git a/drivers/media/rc/ir-nec-decoder.c > b/drivers/media/rc/ir-nec-decoder.c index 735a509..c4333d5 100644 > --- a/drivers/media/rc/ir-nec-decoder.c > +++ b/drivers/media/rc/ir-nec-decoder.c > @@ -172,10 +172,7 @@ static int ir_nec_decode(struct rc_dev *dev, struct > ir_raw_event ev) if (send_32bits) { > /* NEC transport, but modified protocol, used by at > * least Apple and TiVo remotes */ > - scancode = not_address << 24 | > - address << 16 | > - not_command << 8 | > - command; > + scancode = data->bits; > IR_dprintk(1, "NEC (modified) scancode 0x%08x\n", scancode); > } else if ((address ^ not_address) != 0xff) { > /* Extended NEC */ > diff --git a/drivers/media/rc/keymaps/rc-tivo.c > b/drivers/media/rc/keymaps/rc-tivo.c index 5cc1b45..454e062 100644 > --- a/drivers/media/rc/keymaps/rc-tivo.c > +++ b/drivers/media/rc/keymaps/rc-tivo.c > @@ -15,62 +15,62 @@ > * Initial mapping is for the TiVo remote included in the Nero LiquidTV > bundle, * which also ships with a TiVo-branded IR transceiver, supported by > the mceusb * driver. Note that the remote uses an NEC-ish protocol, but > instead of having - * a command/not_command pair, it has a vendor ID of > 0x3085, but some keys, the + * a command/not_command pair, it has a vendor > ID of 0xa10c, but some keys, the * NEC extended checksums do pass, so the > table presently has the intended * values and the checksum-passed versions > for those keys. > */ > static struct rc_map_table tivo[] = { > - { 0x3085f009, KEY_MEDIA }, /* TiVo Button */ > - { 0x3085e010, KEY_POWER2 }, /* TV Power */ > - { 0x3085e011, KEY_TV }, /* Live TV/Swap */ > - { 0x3085c034, KEY_VIDEO_NEXT }, /* TV Input */ > - { 0x3085e013, KEY_INFO }, > - { 0x3085a05f, KEY_CYCLEWINDOWS }, /* Window */ > + { 0xa10c900f, KEY_MEDIA }, /* TiVo Button */ > + { 0xa10c0807, KEY_POWER2 }, /* TV Power */ > + { 0xa10c8807, KEY_TV }, /* Live TV/Swap */ > + { 0xa10c2c03, KEY_VIDEO_NEXT }, /* TV Input */ > + { 0xa10cc807, KEY_INFO }, > + { 0xa10cfa05, KEY_CYCLEWINDOWS }, /* Window */ > { 0x0085305f, KEY_CYCLEWINDOWS }, > - { 0x3085c036, KEY_EPG }, /* Guide */ > + { 0xa10c6c03, KEY_EPG }, /* Guide */ > > - { 0x3085e014, KEY_UP }, > - { 0x3085e016, KEY_DOWN }, > - { 0x3085e017, KEY_LEFT }, > - { 0x3085e015, KEY_RIGHT }, > + { 0xa10c2807, KEY_UP }, > + { 0xa10c6807, KEY_DOWN }, > + { 0xa10ce807, KEY_LEFT }, > + { 0xa10ca807, KEY_RIGHT }, > > - { 0x3085e018, KEY_SCROLLDOWN }, /* Red Thumbs Down */ > - { 0x3085e019, KEY_SELECT }, > - { 0x3085e01a, KEY_SCROLLUP }, /* Green Thumbs Up */ > + { 0xa10c1807, KEY_SCROLLDOWN }, /* Red Thumbs Down */ > + { 0xa10c9807, KEY_SELECT }, > + { 0xa10c5807, KEY_SCROLLUP }, /* Green Thumbs Up */ > > - { 0x3085e01c, KEY_VOLUMEUP }, > - { 0x3085e01d, KEY_VOLUMEDOWN }, > - { 0x3085e01b, KEY_MUTE }, > - { 0x3085d020, KEY_RECORD }, > - { 0x3085e01e, KEY_CHANNELUP }, > - { 0x3085e01f, KEY_CHANNELDOWN }, > + { 0xa10c3807, KEY_VOLUMEUP }, > + { 0xa10cb807, KEY_VOLUMEDOWN }, > + { 0xa10cd807, KEY_MUTE }, > + { 0xa10c040b, KEY_RECORD }, > + { 0xa10c7807, KEY_CHANNELUP }, > + { 0xa10cf807, KEY_CHANNELDOWN }, > { 0x0085301f, KEY_CHANNELDOWN }, > > - { 0x3085d021, KEY_PLAY }, > - { 0x3085d023, KEY_PAUSE }, > - { 0x3085d025, KEY_SLOW }, > - { 0x3085d022, KEY_REWIND }, > - { 0x3085d024, KEY_FASTFORWARD }, > - { 0x3085d026, KEY_PREVIOUS }, > - { 0x3085d027, KEY_NEXT }, /* ->| */ > + { 0xa10c840b, KEY_PLAY }, > + { 0xa10cc40b, KEY_PAUSE }, > + { 0xa10ca40b, KEY_SLOW }, > + { 0xa10c440b, KEY_REWIND }, > + { 0xa10c240b, KEY_FASTFORWARD }, > + { 0xa10c640b, KEY_PREVIOUS }, > + { 0xa10ce40b, KEY_NEXT }, /* ->| */ > > - { 0x3085b044, KEY_ZOOM }, /* Aspect */ > - { 0x3085b048, KEY_STOP }, > - { 0x3085b04a, KEY_DVD }, /* DVD Menu */ > + { 0xa10c220d, KEY_ZOOM }, /* Aspect */ > + { 0xa10c120d, KEY_STOP }, > + { 0xa10c520d, KEY_DVD }, /* DVD Menu */ > > - { 0x3085d028, KEY_NUMERIC_1 }, > - { 0x3085d029, KEY_NUMERIC_2 }, > - { 0x3085d02a, KEY_NUMERIC_3 }, > - { 0x3085d02b, KEY_NUMERIC_4 }, > - { 0x3085d02c, KEY_NUMERIC_5 }, > - { 0x3085d02d, KEY_NUMERIC_6 }, > - { 0x3085d02e, KEY_NUMERIC_7 }, > - { 0x3085d02f, KEY_NUMERIC_8 }, > + { 0xa10c140b, KEY_NUMERIC_1 }, > + { 0xa10c940b, KEY_NUMERIC_2 }, > + { 0xa10c540b, KEY_NUMERIC_3 }, > + { 0xa10cd40b, KEY_NUMERIC_4 }, > + { 0xa10c340b, KEY_NUMERIC_5 }, > + { 0xa10cb40b, KEY_NUMERIC_6 }, > + { 0xa10c740b, KEY_NUMERIC_7 }, > + { 0xa10cf40b, KEY_NUMERIC_8 }, > { 0x0085302f, KEY_NUMERIC_8 }, > - { 0x3085c030, KEY_NUMERIC_9 }, > - { 0x3085c031, KEY_NUMERIC_0 }, > - { 0x3085c033, KEY_ENTER }, > - { 0x3085c032, KEY_CLEAR }, > + { 0xa10c0c03, KEY_NUMERIC_9 }, > + { 0xa10c8c03, KEY_NUMERIC_0 }, > + { 0xa10ccc03, KEY_ENTER }, > + { 0xa10c4c03, KEY_CLEAR }, > }; > > static struct rc_map_list tivo_map = { > > -- > To unsubscribe from this list: send the line "unsubscribe linux-media" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/media/rc/img-ir/img-ir-nec.c b/drivers/media/rc/img-ir/img-ir-nec.c index e7a731b..419d087 100644 --- a/drivers/media/rc/img-ir/img-ir-nec.c +++ b/drivers/media/rc/img-ir/img-ir-nec.c @@ -21,12 +21,7 @@ static int img_ir_nec_scancode(int len, u64 raw, int *scancode, u64 protocols) data = (raw >> 16) & 0xff; data_inv = (raw >> 24) & 0xff; if ((data_inv ^ data) != 0xff) { - /* 32-bit NEC (used by Apple and TiVo remotes) */ - /* scan encoding: aaAAddDD */ - *scancode = addr_inv << 24 | - addr << 16 | - data_inv << 8 | - data; + return -EINVAL; } else if ((addr_inv ^ addr) != 0xff) { /* Extended NEC */ /* scan encoding: AAaaDD */ @@ -53,14 +48,7 @@ static int img_ir_nec_filter(const struct rc_scancode_filter *in, data_m = in->mask & 0xff; if ((in->data | in->mask) & 0xff000000) { - /* 32-bit NEC (used by Apple and TiVo remotes) */ - /* scan encoding: aaAAddDD */ - addr_inv = (in->data >> 24) & 0xff; - addr_inv_m = (in->mask >> 24) & 0xff; - addr = (in->data >> 16) & 0xff; - addr_m = (in->mask >> 16) & 0xff; - data_inv = (in->data >> 8) & 0xff; - data_inv_m = (in->mask >> 8) & 0xff; + return -EINVAL; } else if ((in->data | in->mask) & 0x00ff0000) { /* Extended NEC */ /* scan encoding AAaaDD */