Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp4734473pxb; Thu, 14 Oct 2021 10:53:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUH4bNzytjXwPp3L1SYM1w2AdNPFbR+eLTkwNxNAYf9ora/n4+CF0pt8KIrXXilEdKNy5x X-Received: by 2002:a17:906:2599:: with SMTP id m25mr532551ejb.302.1634233997759; Thu, 14 Oct 2021 10:53:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634233997; cv=none; d=google.com; s=arc-20160816; b=SzpssvS+9bR7N2QuR/nwNpAWnUV0ewg61DmAlPfRFBul6SVH8B5ni1pg/s5LUvdhbk BYFsu+Ad9tdhOMtY870fBRosMnGkikKtPWv0n45H2Y3OnbJ8+prhdnERx5abaV9q4KZU yhNJihFvRCt/VT0vYTmrknuFWRX3ePB92SitVEXO9rPtT874JMd4k0V10xyvKVpOw0qW LWvpjg4rfQPdxfn6SD22as985zcnKQxDZSM/tmWjnNOIcyxmP6aw6fGgyWGxn+W8JJfU LmrTVnPguzZ/idZdbBCUyA35Wg+GbI7lmr75jW+QLSBQfE+43GqDnKZL3loiESqBNhNp hXlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=JiKt0LmZYkO587s1v2BxqmqZ/xFpxsTko9xW8ccclBg=; b=LNtX9B3m7RjrFvi+XlG0tkAANFaWOePxNYBMLro6C5wgn2Q489LEdsIDVC2HfMNtqH AV03ZS8K1XOezpdfp2q6nCehjcI+WpTOKFpzfT4v1iY2Ikgo3ttj50Z/SRDe1O0YfGl2 FuGJcwSXjhpod72guxBI2E5VaSCdoKdnic1u+vf4PLd3QnvShCFrUyRDzRoeyg2PkX9j DDXWIJXvi51NP6WVwU8t3Rz9CwJlHRZgNlza1dvtDtFaxm3jin1/O5BIbjebXtz6qLq8 AYODKIv2A+DjjD5XYObvQ9iX8Ze4/V0XVugpyl1REDSkwQp4sKLu5jD422aYg28b1Vhh wE6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="K17rL/IE"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t15si5637446ejx.503.2021.10.14.10.52.53; Thu, 14 Oct 2021 10:53:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="K17rL/IE"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232408AbhJNPDj (ORCPT + 99 others); Thu, 14 Oct 2021 11:03:39 -0400 Received: from mail.kernel.org ([198.145.29.99]:45212 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233213AbhJNPCG (ORCPT ); Thu, 14 Oct 2021 11:02:06 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id BE29761205; Thu, 14 Oct 2021 14:59:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1634223550; bh=I6jsj1r0YdkQo+96oGMMJg+j2UVxvW9Wkvbm3Tq8Cbg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=K17rL/IER0cK5n7MLi2a/8IhLUgj+0SvVkVTJwO7tBdEpCAvcxcKcrim5Ei/POEEI /hZ/0Zn8sdrH51jQs2c/8whn3tQNcF9KcfjIB8q6LNSVb2oQLFeKB41G5mZmtRIyYM BbZKW/RLov5vhpv9rNlsLTOaxr7KySObOC8vV3Nw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mizuho Mori , Jiri Kosina , Sasha Levin Subject: [PATCH 5.4 03/16] HID: apple: Fix logical maximum and usage maximum of Magic Keyboard JIS Date: Thu, 14 Oct 2021 16:54:06 +0200 Message-Id: <20211014145207.421131864@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211014145207.314256898@linuxfoundation.org> References: <20211014145207.314256898@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mizuho Mori [ Upstream commit 67fd71ba16a37c663d139f5ba5296f344d80d072 ] Apple Magic Keyboard(JIS)'s Logical Maximum and Usage Maximum are wrong. Below is a report descriptor. 0x05, 0x01, /* Usage Page (Desktop), */ 0x09, 0x06, /* Usage (Keyboard), */ 0xA1, 0x01, /* Collection (Application), */ 0x85, 0x01, /* Report ID (1), */ 0x05, 0x07, /* Usage Page (Keyboard), */ 0x15, 0x00, /* Logical Minimum (0), */ 0x25, 0x01, /* Logical Maximum (1), */ 0x19, 0xE0, /* Usage Minimum (KB Leftcontrol), */ 0x29, 0xE7, /* Usage Maximum (KB Right GUI), */ 0x75, 0x01, /* Report Size (1), */ 0x95, 0x08, /* Report Count (8), */ 0x81, 0x02, /* Input (Variable), */ 0x95, 0x05, /* Report Count (5), */ 0x75, 0x01, /* Report Size (1), */ 0x05, 0x08, /* Usage Page (LED), */ 0x19, 0x01, /* Usage Minimum (01h), */ 0x29, 0x05, /* Usage Maximum (05h), */ 0x91, 0x02, /* Output (Variable), */ 0x95, 0x01, /* Report Count (1), */ 0x75, 0x03, /* Report Size (3), */ 0x91, 0x03, /* Output (Constant, Variable), */ 0x95, 0x08, /* Report Count (8), */ 0x75, 0x01, /* Report Size (1), */ 0x15, 0x00, /* Logical Minimum (0), */ 0x25, 0x01, /* Logical Maximum (1), */ here is a report descriptor which is parsed one in kernel. see sys/kernel/debug/hid//rdesc 05 01 09 06 a1 01 85 01 05 07 15 00 25 01 19 e0 29 e7 75 01 95 08 81 02 95 05 75 01 05 08 19 01 29 05 91 02 95 01 75 03 91 03 95 08 75 01 15 00 25 01 06 00 ff 09 03 81 03 95 06 75 08 15 00 25 [65] 05 07 19 00 29 [65] 81 00 95 01 75 01 15 00 25 01 05 0c 09 b8 81 02 95 01 75 01 06 01 ff 09 03 81 02 95 01 75 06 81 03 06 02 ff 09 55 85 55 15 00 26 ff 00 75 08 95 40 b1 a2 c0 06 00 ff 09 14 a1 01 85 90 05 84 75 01 95 03 15 00 25 01 09 61 05 85 09 44 09 46 81 02 95 05 81 01 75 08 95 01 15 00 26 ff 00 09 65 81 02 c0 00 Position 64(Logical Maximum) and 70(Usage Maximum) are 101. Both should be 0xE7 to support JIS specific keys(ろ, Eisu, Kana, |) support. position 117 is also 101 but not related(it is Usage 65h). There are no difference of product id between JIS and ANSI. They are same 0x0267. Signed-off-by: Mizuho Mori Signed-off-by: Jiri Kosina Signed-off-by: Sasha Levin --- drivers/hid/hid-apple.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c index 6909c045fece..07df64daf7da 100644 --- a/drivers/hid/hid-apple.c +++ b/drivers/hid/hid-apple.c @@ -301,12 +301,19 @@ static int apple_event(struct hid_device *hdev, struct hid_field *field, /* * MacBook JIS keyboard has wrong logical maximum + * Magic Keyboard JIS has wrong logical maximum */ static __u8 *apple_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize) { struct apple_sc *asc = hid_get_drvdata(hdev); + if(*rsize >=71 && rdesc[70] == 0x65 && rdesc[64] == 0x65) { + hid_info(hdev, + "fixing up Magic Keyboard JIS report descriptor\n"); + rdesc[64] = rdesc[70] = 0xe7; + } + if ((asc->quirks & APPLE_RDESC_JIS) && *rsize >= 60 && rdesc[53] == 0x65 && rdesc[59] == 0x65) { hid_info(hdev, -- 2.33.0