From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 89903C4CEC7 for ; Mon, 16 Sep 2019 02:44:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4DDD4214AF for ; Mon, 16 Sep 2019 02:44:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="bjLbmJZi" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726979AbfIPCoZ (ORCPT ); Sun, 15 Sep 2019 22:44:25 -0400 Received: from mail-eopbgr10069.outbound.protection.outlook.com ([40.107.1.69]:50246 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726676AbfIPCoZ (ORCPT ); Sun, 15 Sep 2019 22:44:25 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kZI4HAVFhsC4Vv2T8GsF0iUNliYTMr2MRx0QiaaW1U3tQtDbUPcShWPQrsndSB7bhvR6c8QCuWNFkljoUce4xpg2cwiFDmNJK5HAYFu101iHt65jj+WSOnxgOF7cWRcqlzZ2qP6cs+X/GXeKJ0Jmw+3xZIP+5hHWOpawZnGbUGk1zxhSbI5+wDikw2pzgKPT+7SwNbfPmgRixQ2w1j64VJUnnFi+dB1WCSEHEhwKFGOxQYaPSuQBr4RwXLN8Xk6vkYCFjxm04rx5yIAzhMo87TpROGkT0IccIs6q6n8viZODroF+nBRK0nDNWwxlmbOdL1pW0mmta7MKGoeP/v6GTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IO6lkenfb0Epl3Rf7LdU4Qp1bnCOYWCo5KS8nFzAN3U=; b=EU5NgmuJIqyNmMdKeA/AUNr1CajN0N3GalKkdDlrXLO4d74QEa7xp6QliFUOgPiTylIcarRBjSAKdnZOpgMWrYrAAFXvlwJhoZZ04/SbOBE5ha6Gqi+KeMtB/fv8Q6fRktIVmqJZ/jrL4PM6v/JMw2WD2MTkrVDalgki34U+zugjybDIFSHPHBTrzIYiSIPh2SYEBianYhPhOE9Okyqk1WP1rpekrgrhk8xTG2zQXQ2vcHdtQI63ZgaseqVGqfDQZcS6d2mqxW7CtfJhzNO/eEHFjYBY4zcL7DAPVo8gdGdNaIp3xi6qZWUXCWPY0EOxNSgwD2Uml/fOaAgbYF6Y9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IO6lkenfb0Epl3Rf7LdU4Qp1bnCOYWCo5KS8nFzAN3U=; b=bjLbmJZi8uB0iPlrTCbPpZaWved9XY3y+xPF3gvKBpRIafOaCqmCDMzwTX0f88MzT0Q8gJVSrr1A7ufjmfNxV49pg9E4bFN/nACez4w1OGHapV0wy/DsjmnlaiWj52tO58TH0vXQ0f1d+zmk2bAm9RmT5iNhZ6D7YMElNiTwFEA= Received: from DB3PR0402MB3916.eurprd04.prod.outlook.com (52.134.72.18) by DB3PR0402MB3692.eurprd04.prod.outlook.com (52.134.65.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.23; Mon, 16 Sep 2019 02:44:06 +0000 Received: from DB3PR0402MB3916.eurprd04.prod.outlook.com ([fe80::8958:299c:bc54:2a38]) by DB3PR0402MB3916.eurprd04.prod.outlook.com ([fe80::8958:299c:bc54:2a38%7]) with mapi id 15.20.2263.023; Mon, 16 Sep 2019 02:44:06 +0000 From: Anson Huang To: Dmitry Torokhov CC: "robh+dt@kernel.org" , "mark.rutland@arm.com" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , "catalin.marinas@arm.com" , "will@kernel.org" , Aisheng Dong , "ulf.hansson@linaro.org" , Andy Duan , Peng Fan , Daniel Baluta , Leonard Crestez , "mripard@kernel.org" , "olof@lixom.net" , "arnd@arndb.de" , "jagan@amarulasolutions.com" , "bjorn.andersson@linaro.org" , "dinguyen@kernel.org" , "marcin.juszkiewicz@linaro.org" , "stefan@agner.ch" , "gregkh@linuxfoundation.org" , "andriy.shevchenko@linux.intel.com" , "yuehaibing@huawei.com" , "tglx@linutronix.de" , "ronald@innovation.ch" , "m.felsch@pengutronix.de" , Jacky Bai , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-input@vger.kernel.org" , dl-linux-imx Subject: RE: [PATCH V3 2/5] input: keyboard: imx_sc: Add i.MX system controller key support Thread-Topic: [PATCH V3 2/5] input: keyboard: imx_sc: Add i.MX system controller key support Thread-Index: AQHVYjtHNMbROEgxRkyLuCpsGlrKMacoiy6AgAUEV9A= Date: Mon, 16 Sep 2019 02:44:05 +0000 Message-ID: References: <1567546600-21566-1-git-send-email-Anson.Huang@nxp.com> <1567546600-21566-2-git-send-email-Anson.Huang@nxp.com> <20190912202239.GB636@penguin> In-Reply-To: <20190912202239.GB636@penguin> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=anson.huang@nxp.com; x-originating-ip: [119.31.174.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d33bad9a-a130-4df0-025c-08d73a4fbdf7 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DB3PR0402MB3692; x-ms-traffictypediagnostic: DB3PR0402MB3692:|DB3PR0402MB3692: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-forefront-prvs: 0162ACCC24 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(366004)(376002)(346002)(396003)(136003)(189003)(199004)(52536014)(55016002)(478600001)(6436002)(14454004)(25786009)(99286004)(4326008)(5660300002)(71200400001)(71190400001)(64756008)(66556008)(7736002)(66476007)(66946007)(76116006)(9686003)(305945005)(2906002)(256004)(53936002)(6246003)(3846002)(6116002)(74316002)(66446008)(6916009)(26005)(476003)(102836004)(44832011)(486006)(54906003)(86362001)(6506007)(446003)(11346002)(8936002)(186003)(33656002)(229853002)(7696005)(316002)(81166006)(81156014)(8676002)(66066001)(76176011)(7416002);DIR:OUT;SFP:1101;SCL:1;SRVR:DB3PR0402MB3692;H:DB3PR0402MB3916.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 0uD2M9bqjdD77W8PynqMnKD0Ncnyl49hdcT93sF54I3YADhthRafGnvL2dY0a1q0Ij1g0Cw0E2JDKf9kMpPF16PYiUNyVAHidzTfzqfx3ZDNQZcHYosL/B659IVsH1Cx+S9BcDhY8tnpl4n6w9bzCM8NpFmdjMd6RnogVjzelsOOqXeZSJfEkiSat3zWEV8wq2iD0EO7aMpCAelb8ze5wj+MrQ/cGDWPJzCJbwAsS/3B6Zr+A2stU8kg2WhJhA32QklbZHOsNDkzDL1/4+OGOaSwCAQY696c/2pXbQ6ttS65s+lRNoD/C7klYKfvE9kWfDywGLt4qtwmUhMXvvHaM0JCxwovuI0dLce/7Sb9toLmE4tVnjuBOdEKQWGaLlTd6ZMZg5X7M1+B04o4MYJYF85iQKbPywfq2jOjpmZqJ4o= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d33bad9a-a130-4df0-025c-08d73a4fbdf7 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Sep 2019 02:44:05.8334 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: byU96D9hMH7MLUpxohxQNsRiNcVEFW1DXQqWTr46pO3vcMKpKvVDj1xWGBSUZ6pkT1gsydiHcy+sB6KL0NO/xg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR0402MB3692 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksIERtaXRyeQ0KDQo+IE9uIFR1ZSwgU2VwIDAzLCAyMDE5IGF0IDA1OjM2OjM3UE0gLTA0MDAs IEFuc29uIEh1YW5nIHdyb3RlOg0KPiA+IGkuTVg4UVhQIGlzIGFuIEFSTXY4IFNvQyB3aGljaCBo YXMgYSBDb3J0ZXgtTTQgc3lzdGVtIGNvbnRyb2xsZXINCj4gPiBpbnNpZGUsIHRoZSBzeXN0ZW0g Y29udHJvbGxlciBpcyBpbiBjaGFyZ2Ugb2YgY29udHJvbGxpbmcgcG93ZXIsIGNsb2NrDQo+ID4g YW5kIHNjdSBrZXkgZXRjLi4NCj4gPg0KPiA+IEFkZHMgaS5NWCBzeXN0ZW0gY29udHJvbGxlciBr ZXkgZHJpdmVyIHN1cHBvcnQsIExpbnV4IGtlcm5lbCBoYXMgdG8NCj4gPiBjb21tdW5pY2F0ZSB3 aXRoIHN5c3RlbSBjb250cm9sbGVyIHZpYSBNVSAobWVzc2FnZSB1bml0KSBJUEMgdG8gZ2V0DQo+ ID4gc2N1IGtleSdzIHN0YXR1cy4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEFuc29uIEh1YW5n IDxBbnNvbi5IdWFuZ0BueHAuY29tPg0KPiA+IC0tLQ0KPiA+IENoYW5nZXMgc2luY2UgVjI6DQo+ ID4gCS0gdXNlIHByaXZhdGUgcGxhdGZvcm0gZGF0YSBpbnN0ZWFkIG9mIGdsb2JhbCBkYXRhOw0K PiA+IAktIHVzZSAia2V5IiBpbnN0ZWFkIG9mICJwd3JrZXkiOw0KPiA+IAktIGZpeCBzb21lIGRh dGEgZm9ybWF0Lg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL2lucHV0L2tleWJvYXJkL0tjb25maWcg ICAgICB8ICAgNyArKw0KPiA+ICBkcml2ZXJzL2lucHV0L2tleWJvYXJkL01ha2VmaWxlICAgICB8 ICAgMSArDQo+ID4gIGRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvaW14X3NjX2tleS5jIHwgMTc4DQo+ ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIDMgZmlsZXMgY2hh bmdlZCwgMTg2IGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv aW5wdXQva2V5Ym9hcmQvaW14X3NjX2tleS5jDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9pbnB1dC9rZXlib2FyZC9LY29uZmlnDQo+ID4gYi9kcml2ZXJzL2lucHV0L2tleWJvYXJkL0tj b25maWcgaW5kZXggMmU2ZDI4OC4uNjA3YWNmMiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2lu cHV0L2tleWJvYXJkL0tjb25maWcNCj4gPiArKysgYi9kcml2ZXJzL2lucHV0L2tleWJvYXJkL0tj b25maWcNCj4gPiBAQCAtNDY5LDYgKzQ2OSwxMyBAQCBjb25maWcgS0VZQk9BUkRfSU1YDQo+ID4g IAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRo ZQ0KPiA+ICAJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaW14X2tleXBhZC4NCj4gPg0KPiA+ICtj b25maWcgS0VZQk9BUkRfSU1YX1NDX0tFWQ0KPiA+ICsJdHJpc3RhdGUgIklNWCBTQ1UgS2V5IERy aXZlciINCj4gPiArCWRlcGVuZHMgb24gSU1YX1NDVQ0KPiA+ICsJaGVscA0KPiA+ICsJICBUaGlz IGlzIHRoZSBzeXN0ZW0gY29udHJvbGxlciBrZXkgZHJpdmVyIGZvciBOWFAgaS5NWCBTb0NzIHdp dGgNCj4gPiArCSAgc3lzdGVtIGNvbnRyb2xsZXIgaW5zaWRlLg0KPiA+ICsNCj4gPiAgY29uZmln IEtFWUJPQVJEX05FV1RPTg0KPiA+ICAJdHJpc3RhdGUgIk5ld3RvbiBrZXlib2FyZCINCj4gPiAg CXNlbGVjdCBTRVJJTw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2tleWJvYXJkL01h a2VmaWxlDQo+ID4gYi9kcml2ZXJzL2lucHV0L2tleWJvYXJkL01ha2VmaWxlIGluZGV4IDk1MTAz MjUuLmY1YjE3NTIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9NYWtl ZmlsZQ0KPiA+ICsrKyBiL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvTWFrZWZpbGUNCj4gPiBAQCAt MjksNiArMjksNyBAQCBvYmotJChDT05GSUdfS0VZQk9BUkRfSElMKQkJKz0gaGlsX2tiZC5vDQo+ ID4gIG9iai0kKENPTkZJR19LRVlCT0FSRF9ISUxfT0xEKQkJKz0gaGlsa2JkLm8NCj4gPiAgb2Jq LSQoQ09ORklHX0tFWUJPQVJEX0lQQVFfTUlDUk8pCSs9IGlwYXEtbWljcm8ta2V5cy5vDQo+ID4g IG9iai0kKENPTkZJR19LRVlCT0FSRF9JTVgpCQkrPSBpbXhfa2V5cGFkLm8NCj4gPiArb2JqLSQo Q09ORklHX0tFWUJPQVJEX0lNWF9TQ19LRVkpCSs9IGlteF9zY19rZXkubw0KPiA+ICBvYmotJChD T05GSUdfS0VZQk9BUkRfSFA2WFgpCQkrPSBqb3JuYWRhNjgwX2tiZC5vDQo+ID4gIG9iai0kKENP TkZJR19LRVlCT0FSRF9IUDdYWCkJCSs9IGpvcm5hZGE3MjBfa2JkLm8NCj4gPiAgb2JqLSQoQ09O RklHX0tFWUJPQVJEX0xLS0JEKQkJKz0gbGtrYmQubw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2lucHV0L2tleWJvYXJkL2lteF9zY19rZXkuYw0KPiA+IGIvZHJpdmVycy9pbnB1dC9rZXlib2Fy ZC9pbXhfc2Nfa2V5LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAw MDAuLmU2OTQ3OWINCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9pbnB1dC9r ZXlib2FyZC9pbXhfc2Nfa2V5LmMNCj4gPiBAQCAtMCwwICsxLDE3OCBAQA0KPiA+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsvKg0KPiA+ICsgKiBDb3B5cmlnaHQg MjAxOSBOWFAuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5o Pg0KPiA+ICsjaW5jbHVkZSA8bGludXgvZXJyLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9maXJt d2FyZS9pbXgvc2NpLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+DQo+ID4gKyNpbmNs dWRlIDxsaW51eC9pbnB1dC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+ ID4gKyNpbmNsdWRlIDxsaW51eC9qaWZmaWVzLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJu ZWwuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvb2YuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4NCj4gPiArI2luY2x1 ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiA+ICsNCj4gPiArI2RlZmluZSBERUJPVU5D RV9USU1FCTEwMA0KPiA+ICsjZGVmaW5lIFJFUEVBVF9JTlRFUlZBTAk2MA0KPiA+ICsNCj4gPiAr I2RlZmluZSBTQ19JUlFfQlVUVE9OCQkxDQo+ID4gKyNkZWZpbmUgU0NfSVJRX0dST1VQX1dBS0UJ Mw0KPiA+ICsjZGVmaW5lIElNWF9TQ19NSVNDX0ZVTkNfR0VUX0JVVFRPTl9TVEFUVVMJMTgNCj4g PiArDQo+ID4gK3N0cnVjdCBpbXhfa2V5X2Rydl9kYXRhIHsNCj4gPiArCWludCBrZXljb2RlOw0K PiA+ICsJYm9vbCBrZXlzdGF0ZTsgIC8qIDE6IHByZXNzZWQsIDA6IHJlbGVhc2UgKi8NCj4gPiAr CWJvb2wgZGVsYXlfY2hlY2s7DQo+ID4gKwlzdHJ1Y3QgZGVsYXllZF93b3JrIGNoZWNrX3dvcms7 DQo+ID4gKwlzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dDsNCj4gPiArCXN0cnVjdCBpbXhfc2NfaXBj ICprZXlfaXBjX2hhbmRsZTsNCj4gPiArCXN0cnVjdCBub3RpZmllcl9ibG9jayBrZXlfbm90aWZp ZXI7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgaW14X3NjX21zZ19rZXkgew0KPiA+ICsJ c3RydWN0IGlteF9zY19ycGNfbXNnIGhkcjsNCj4gPiArCXU4IHN0YXRlOw0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArc3RhdGljIGludCBpbXhfc2Nfa2V5X25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxv Y2sgKm5iLA0KPiA+ICsJCQkgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKmdyb3VwKSB7 DQo+ID4gKwlzdHJ1Y3QgaW14X2tleV9kcnZfZGF0YSAqcHJpdiA9DQo+ID4gKwkJCQkgY29udGFp bmVyX29mKG5iLA0KPiA+ICsJCQkJCSAgICAgIHN0cnVjdCBpbXhfa2V5X2Rydl9kYXRhLA0KPiA+ ICsJCQkJCSAgICAgIGtleV9ub3RpZmllcik7DQo+ID4gKw0KPiA+ICsJaWYgKChldmVudCAmIFND X0lSUV9CVVRUT04pICYmICgqKHU4ICopZ3JvdXAgPT0NCj4gU0NfSVJRX0dST1VQX1dBS0UpDQo+ ID4gKwkgICAgJiYgIXByaXYtPmRlbGF5X2NoZWNrKSB7DQo+ID4gKwkJcHJpdi0+ZGVsYXlfY2hl Y2sgPSAxOw0KPiA+ICsJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmcHJpdi0+Y2hlY2tfd29yaywN Cj4gPiArCQkJCSAgICAgIG1zZWNzX3RvX2ppZmZpZXMoUkVQRUFUX0lOVEVSVkFMKSk7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2 b2lkIGlteF9zY19jaGVja19mb3JfZXZlbnRzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykgew0K PiA+ICsJc3RydWN0IGlteF9rZXlfZHJ2X2RhdGEgKnByaXYgPQ0KPiA+ICsJCQkJIGNvbnRhaW5l cl9vZih3b3JrLA0KPiA+ICsJCQkJCSAgICAgIHN0cnVjdCBpbXhfa2V5X2Rydl9kYXRhLA0KPiA+ ICsJCQkJCSAgICAgIGNoZWNrX3dvcmsud29yayk7DQo+ID4gKwlzdHJ1Y3QgaW5wdXRfZGV2ICpp bnB1dCA9IHByaXYtPmlucHV0Ow0KPiA+ICsJc3RydWN0IGlteF9zY19tc2dfa2V5IG1zZzsNCj4g PiArCXN0cnVjdCBpbXhfc2NfcnBjX21zZyAqaGRyID0gJm1zZy5oZHI7DQo+ID4gKwlib29sIHN0 YXRlOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwloZHItPnZlciA9IElNWF9TQ19SUENf VkVSU0lPTjsNCj4gPiArCWhkci0+c3ZjID0gSU1YX1NDX1JQQ19TVkNfTUlTQzsNCj4gPiArCWhk ci0+ZnVuYyA9IElNWF9TQ19NSVNDX0ZVTkNfR0VUX0JVVFRPTl9TVEFUVVM7DQo+ID4gKwloZHIt PnNpemUgPSAxOw0KPiA+ICsNCj4gPiArCXJldCA9IGlteF9zY3VfY2FsbF9ycGMocHJpdi0+a2V5 X2lwY19oYW5kbGUsICZtc2csIHRydWUpOw0KPiA+ICsJaWYgKHJldCkgew0KPiA+ICsJCWRldl9l cnIoJmlucHV0LT5kZXYsICJyZWFkIGlteCBzYyBrZXkgZmFpbGVkLCByZXQgJWRcbiIsIHJldCk7 DQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXN0YXRlID0gKGJvb2wpbXNn LnN0YXRlOw0KPiA+ICsNCj4gPiArCWlmICghc3RhdGUgJiYgIXByaXYtPmtleXN0YXRlKQ0KPiA+ ICsJCXN0YXRlID0gdHJ1ZTsNCj4gPiArDQo+ID4gKwlpZiAoc3RhdGUgXiBwcml2LT5rZXlzdGF0 ZSkgew0KPiA+ICsJCXBtX3dha2V1cF9ldmVudChpbnB1dC0+ZGV2LnBhcmVudCwgMCk7DQo+ID4g KwkJcHJpdi0+a2V5c3RhdGUgPSBzdGF0ZTsNCj4gPiArCQlpbnB1dF9ldmVudChpbnB1dCwgRVZf S0VZLCBwcml2LT5rZXljb2RlLCBzdGF0ZSk7DQo+ID4gKwkJaW5wdXRfc3luYyhpbnB1dCk7DQo+ ID4gKwkJaWYgKCFzdGF0ZSkNCj4gPiArCQkJcHJpdi0+ZGVsYXlfY2hlY2sgPSAwOw0KPiA+ICsJ CXBtX3JlbGF4KHByaXYtPmlucHV0LT5kZXYucGFyZW50KTsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwlpZiAoc3RhdGUpDQo+ID4gKwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZwcml2LT5jaGVja193 b3JrLA0KPiA+ICsJCQkJICAgICAgbXNlY3NfdG9famlmZmllcyhERUJPVU5DRV9USU1FKSk7DQo+ IA0KPiBIbW0sIEkgYW0gbm90IHF1aXRlIHN1cmUgZm9sbG93IHRoZSBjb2RlLiBKdWRnaW5nIGJ5 IHRoZSBuYW1lLCB5b3UgYXJlDQo+IHRyeWluZyB0byBoYW5kbGUgZGVib3VuY2UsIGJ1dCBpZiBJ IHVuZGVyc3RhbmQgdGhpcyBjb3JyZWN0bHkgeW91IGFscmVhZHkgc2VudA0KPiBvdXQgdGhlIHBy ZXNzIGV2ZW50IGZvciBub3cuDQo+IA0KPiBDb3VsZCB5b3UgcGxlYXNlIGV4cGxhaW4gd2hhdCB5 b3UgYXJlIHRyeWluZyB0byBkbyBoZXJlLg0KDQpUaGUgbmFtZSBpcyBraW5kIG9mIGNvbmZ1c2Vk LCB0aGUgIkRFQk9VTkNFX1RJTUUiIGhlcmUgc2hvdWxkIGJlICJSRVBFQVRfSU5URVJWQUwiDQph Y3R1YWxseSwgdGhlICAiREVCT1VOQ0VfVElNRSIgc2hvdWxkIGJlIHVzZWQgaW4gdGhlIGlycSBo YW5sZGVyIGluc3RlYWQuCQ0KQXMgdGhlIFNDVSBPTkxZIHNlbmQgb3V0IGludGVycnVwdCB3aGVu IHRoZSBrZXkgaXMgcHJlc3NlZCwgc28gaGVyZSB3ZSBoYXZlIHRvIHJlcGVhdA0KdGhlIGRlbGF5 IHdvcmsgdG8gbG9vcCBjaGVjayB0aGUgYnV0dG9uIHJlbGVhc2UgZXZlbnQsIHRoZSBwcmVzcyBl dmVudCBpcyBzZW50IG91dCBvbmNlIHRoZQ0Ka2V5IHN0YXRlIGlzIHZhbGlkLCBhbmQgdGhlbiBz dGFydCB0byBjaGVjayB1bnRpbCBrZXkgaXMgcmVsZWFzZWQuDQoNCkkgd2lsbCBzd2l0Y2ggdGhl ICJERUJPVU5DRV9USU1FIiBhbmQgIlJFUEVBVF9JTlRFUlZBTCIgaW4gVjQuDQoNCj4gDQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaW14X3NjX2tleV9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KSB7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi0+ ZGV2Lm9mX25vZGU7DQo+ID4gKwlzdGF0aWMgc3RydWN0IGlteF9rZXlfZHJ2X2RhdGEgKnByaXY7 DQo+ID4gKwlzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dDsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0K PiA+ICsJcHJpdiA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnByaXYpLCBHRlBf S0VSTkVMKTsNCj4gPiArCWlmICghcHJpdikNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiAr DQo+ID4gKwlyZXQgPSBpbXhfc2N1X2dldF9oYW5kbGUoJnByaXYtPmtleV9pcGNfaGFuZGxlKTsN Cj4gPiArCWlmIChyZXQpDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwlpZiAob2Zf cHJvcGVydHlfcmVhZF91MzIobnAsICJsaW51eCxrZXljb2RlIiwgJnByaXYtPmtleWNvZGUpKSB7 DQo+ID4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAibWlzc2luZyBLRVlfUE9XRVIgaW4gRFRcbiIp Ow0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCUlOSVRfREVM QVlFRF9XT1JLKCZwcml2LT5jaGVja193b3JrLA0KPiBpbXhfc2NfY2hlY2tfZm9yX2V2ZW50cyk7 DQo+ID4gKw0KPiA+ICsJaW5wdXQgPSBkZXZtX2lucHV0X2FsbG9jYXRlX2RldmljZSgmcGRldi0+ ZGV2KTsNCj4gPiArCWlmICghaW5wdXQpIHsNCj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJm YWlsZWQgdG8gYWxsb2NhdGUgdGhlIGlucHV0IGRldmljZVxuIik7DQo+ID4gKwkJcmV0dXJuIC1F Tk9NRU07DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaW5wdXQtPm5hbWUgPSBwZGV2LT5uYW1lOw0K PiA+ICsJaW5wdXQtPnBoeXMgPSAiaW14LXNjLWtleS9pbnB1dDAiOw0KPiA+ICsJaW5wdXQtPmlk LmJ1c3R5cGUgPSBCVVNfSE9TVDsNCj4gPiArDQo+ID4gKwlpbnB1dF9zZXRfY2FwYWJpbGl0eShp bnB1dCwgRVZfS0VZLCBwcml2LT5rZXljb2RlKTsNCj4gPiArDQo+ID4gKwlyZXQgPSBpbnB1dF9y ZWdpc3Rlcl9kZXZpY2UoaW5wdXQpOw0KPiA+ICsJaWYgKHJldCkgew0KPiA+ICsJCWRldl9lcnIo JnBkZXYtPmRldiwgImZhaWxlZCB0byByZWdpc3RlciBpbnB1dCBkZXZpY2VcbiIpOw0KPiA+ICsJ CXJldHVybiByZXQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcHJpdi0+aW5wdXQgPSBpbnB1dDsN Cj4gPiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpOw0KPiA+ICsNCj4gPiArCXJl dCA9IGlteF9zY3VfaXJxX2dyb3VwX2VuYWJsZShTQ19JUlFfR1JPVVBfV0FLRSwNCj4gU0NfSVJR X0JVVFRPTiwgdHJ1ZSk7DQo+ID4gKwlpZiAocmV0KSB7DQo+ID4gKwkJZGV2X3dhcm4oJnBkZXYt PmRldiwgImVuYWJsZSBzY3UgZ3JvdXAgaXJxIGZhaWxlZFxuIik7DQo+ID4gKwkJcmV0dXJuIHJl dDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlwcml2LT5rZXlfbm90aWZpZXIubm90aWZpZXJfY2Fs bCA9IGlteF9zY19rZXlfbm90aWZ5Ow0KPiA+ICsJcmV0ID0gaW14X3NjdV9pcnFfcmVnaXN0ZXJf bm90aWZpZXIoJnByaXYtPmtleV9ub3RpZmllcik7DQo+ID4gKwlpZiAocmV0KSB7DQo+ID4gKwkJ aW14X3NjdV9pcnFfZ3JvdXBfZW5hYmxlKFNDX0lSUV9HUk9VUF9XQUtFLA0KPiBTQ19JUlFfQlVU VE9OLCBmYWxzZSk7DQo+ID4gKwkJZGV2X3dhcm4oJnBkZXYtPmRldiwgInJlZ2lzdGVyIHNjdSBu b3RpZmllciBmYWlsZWRcbiIpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlteF9z Y19rZXlfaWRzW10gPSB7DQo+ID4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxpbXgtc2Mta2V5IiB9 LA0KPiA+ICsJeyAvKiBzZW50aW5lbCAqLyB9DQo+ID4gK307DQo+ID4gK01PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIGlteF9zY19rZXlfaWRzKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyIGlteF9zY19rZXlfZHJpdmVyID0gew0KPiA+ICsJLmRyaXZlciA9IHsNCj4g PiArCQkubmFtZSA9ICJpbXgtc2Mta2V5IiwNCj4gPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBpbXhf c2Nfa2V5X2lkcywNCj4gPiArCX0sDQo+ID4gKwkucHJvYmUgPSBpbXhfc2Nfa2V5X3Byb2JlLA0K PiANCj4gWW91IG5lZWQgYSByZW1vdmUoKSBoYW5kbGVyIHRvIGRpc2FibGUgdGhlIGl0cSBncm91 cCwgcmVtb3ZlIHRoZSBub3RpZmllciwNCj4gY2FuY2VsIHRoZSBkZWxheWVkIHdvcmssIGV0Yy4N Cg0KSSB3aWxsIGFkZCBpdCBpbiBWNC4NCg0KVGhhbmtzLA0KQW5zb24NCg0K From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anson Huang Subject: RE: [PATCH V3 2/5] input: keyboard: imx_sc: Add i.MX system controller key support Date: Mon, 16 Sep 2019 02:44:05 +0000 Message-ID: References: <1567546600-21566-1-git-send-email-Anson.Huang@nxp.com> <1567546600-21566-2-git-send-email-Anson.Huang@nxp.com> <20190912202239.GB636@penguin> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20190912202239.GB636@penguin> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Dmitry Torokhov Cc: "mark.rutland@arm.com" , "ulf.hansson@linaro.org" , Jacky Bai , "catalin.marinas@arm.com" , Peng Fan , "stefan@agner.ch" , "bjorn.andersson@linaro.org" , Leonard Crestez , "will@kernel.org" , "festevam@gmail.com" , "yuehaibing@huawei.com" , "marcin.juszkiewicz@linaro.org" , "jagan@amarulasolutions.com" , "linux-input@vger.kernel.org" , "ronald@innovation.ch" , dl-linux-imx , "devicetree@vger.kernel.org" , "arnd@arndb.de" , "s.hauer@pengutronix.de" List-Id: devicetree@vger.kernel.org Hi, Dmitry > On Tue, Sep 03, 2019 at 05:36:37PM -0400, Anson Huang wrote: > > i.MX8QXP is an ARMv8 SoC which has a Cortex-M4 system controller > > inside, the system controller is in charge of controlling power, clock > > and scu key etc.. > > > > Adds i.MX system controller key driver support, Linux kernel has to > > communicate with system controller via MU (message unit) IPC to get > > scu key's status. > > > > Signed-off-by: Anson Huang > > --- > > Changes since V2: > > - use private platform data instead of global data; > > - use "key" instead of "pwrkey"; > > - fix some data format. > > --- > > drivers/input/keyboard/Kconfig | 7 ++ > > drivers/input/keyboard/Makefile | 1 + > > drivers/input/keyboard/imx_sc_key.c | 178 > > ++++++++++++++++++++++++++++++++++++ > > 3 files changed, 186 insertions(+) > > create mode 100644 drivers/input/keyboard/imx_sc_key.c > > > > diff --git a/drivers/input/keyboard/Kconfig > > b/drivers/input/keyboard/Kconfig index 2e6d288..607acf2 100644 > > --- a/drivers/input/keyboard/Kconfig > > +++ b/drivers/input/keyboard/Kconfig > > @@ -469,6 +469,13 @@ config KEYBOARD_IMX > > To compile this driver as a module, choose M here: the > > module will be called imx_keypad. > > > > +config KEYBOARD_IMX_SC_KEY > > + tristate "IMX SCU Key Driver" > > + depends on IMX_SCU > > + help > > + This is the system controller key driver for NXP i.MX SoCs with > > + system controller inside. > > + > > config KEYBOARD_NEWTON > > tristate "Newton keyboard" > > select SERIO > > diff --git a/drivers/input/keyboard/Makefile > > b/drivers/input/keyboard/Makefile index 9510325..f5b1752 100644 > > --- a/drivers/input/keyboard/Makefile > > +++ b/drivers/input/keyboard/Makefile > > @@ -29,6 +29,7 @@ obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o > > obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o > > obj-$(CONFIG_KEYBOARD_IPAQ_MICRO) += ipaq-micro-keys.o > > obj-$(CONFIG_KEYBOARD_IMX) += imx_keypad.o > > +obj-$(CONFIG_KEYBOARD_IMX_SC_KEY) += imx_sc_key.o > > obj-$(CONFIG_KEYBOARD_HP6XX) += jornada680_kbd.o > > obj-$(CONFIG_KEYBOARD_HP7XX) += jornada720_kbd.o > > obj-$(CONFIG_KEYBOARD_LKKBD) += lkkbd.o > > diff --git a/drivers/input/keyboard/imx_sc_key.c > > b/drivers/input/keyboard/imx_sc_key.c > > new file mode 100644 > > index 0000000..e69479b > > --- /dev/null > > +++ b/drivers/input/keyboard/imx_sc_key.c > > @@ -0,0 +1,178 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +/* > > + * Copyright 2019 NXP. > > + */ > > + > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > + > > +#define DEBOUNCE_TIME 100 > > +#define REPEAT_INTERVAL 60 > > + > > +#define SC_IRQ_BUTTON 1 > > +#define SC_IRQ_GROUP_WAKE 3 > > +#define IMX_SC_MISC_FUNC_GET_BUTTON_STATUS 18 > > + > > +struct imx_key_drv_data { > > + int keycode; > > + bool keystate; /* 1: pressed, 0: release */ > > + bool delay_check; > > + struct delayed_work check_work; > > + struct input_dev *input; > > + struct imx_sc_ipc *key_ipc_handle; > > + struct notifier_block key_notifier; > > +}; > > + > > +struct imx_sc_msg_key { > > + struct imx_sc_rpc_msg hdr; > > + u8 state; > > +}; > > + > > +static int imx_sc_key_notify(struct notifier_block *nb, > > + unsigned long event, void *group) { > > + struct imx_key_drv_data *priv = > > + container_of(nb, > > + struct imx_key_drv_data, > > + key_notifier); > > + > > + if ((event & SC_IRQ_BUTTON) && (*(u8 *)group == > SC_IRQ_GROUP_WAKE) > > + && !priv->delay_check) { > > + priv->delay_check = 1; > > + schedule_delayed_work(&priv->check_work, > > + msecs_to_jiffies(REPEAT_INTERVAL)); > > + } > > + > > + return 0; > > +} > > + > > +static void imx_sc_check_for_events(struct work_struct *work) { > > + struct imx_key_drv_data *priv = > > + container_of(work, > > + struct imx_key_drv_data, > > + check_work.work); > > + struct input_dev *input = priv->input; > > + struct imx_sc_msg_key msg; > > + struct imx_sc_rpc_msg *hdr = &msg.hdr; > > + bool state; > > + int ret; > > + > > + hdr->ver = IMX_SC_RPC_VERSION; > > + hdr->svc = IMX_SC_RPC_SVC_MISC; > > + hdr->func = IMX_SC_MISC_FUNC_GET_BUTTON_STATUS; > > + hdr->size = 1; > > + > > + ret = imx_scu_call_rpc(priv->key_ipc_handle, &msg, true); > > + if (ret) { > > + dev_err(&input->dev, "read imx sc key failed, ret %d\n", ret); > > + return; > > + } > > + > > + state = (bool)msg.state; > > + > > + if (!state && !priv->keystate) > > + state = true; > > + > > + if (state ^ priv->keystate) { > > + pm_wakeup_event(input->dev.parent, 0); > > + priv->keystate = state; > > + input_event(input, EV_KEY, priv->keycode, state); > > + input_sync(input); > > + if (!state) > > + priv->delay_check = 0; > > + pm_relax(priv->input->dev.parent); > > + } > > + > > + if (state) > > + schedule_delayed_work(&priv->check_work, > > + msecs_to_jiffies(DEBOUNCE_TIME)); > > Hmm, I am not quite sure follow the code. Judging by the name, you are > trying to handle debounce, but if I understand this correctly you already sent > out the press event for now. > > Could you please explain what you are trying to do here. The name is kind of confused, the "DEBOUNCE_TIME" here should be "REPEAT_INTERVAL" actually, the "DEBOUNCE_TIME" should be used in the irq hanlder instead. As the SCU ONLY send out interrupt when the key is pressed, so here we have to repeat the delay work to loop check the button release event, the press event is sent out once the key state is valid, and then start to check until key is released. I will switch the "DEBOUNCE_TIME" and "REPEAT_INTERVAL" in V4. > > > +} > > + > > +static int imx_sc_key_probe(struct platform_device *pdev) { > > + struct device_node *np = pdev->dev.of_node; > > + static struct imx_key_drv_data *priv; > > + struct input_dev *input; > > + int ret; > > + > > + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); > > + if (!priv) > > + return -ENOMEM; > > + > > + ret = imx_scu_get_handle(&priv->key_ipc_handle); > > + if (ret) > > + return ret; > > + > > + if (of_property_read_u32(np, "linux,keycode", &priv->keycode)) { > > + dev_err(&pdev->dev, "missing KEY_POWER in DT\n"); > > + return -EINVAL; > > + } > > + > > + INIT_DELAYED_WORK(&priv->check_work, > imx_sc_check_for_events); > > + > > + input = devm_input_allocate_device(&pdev->dev); > > + if (!input) { > > + dev_err(&pdev->dev, "failed to allocate the input device\n"); > > + return -ENOMEM; > > + } > > + > > + input->name = pdev->name; > > + input->phys = "imx-sc-key/input0"; > > + input->id.bustype = BUS_HOST; > > + > > + input_set_capability(input, EV_KEY, priv->keycode); > > + > > + ret = input_register_device(input); > > + if (ret) { > > + dev_err(&pdev->dev, "failed to register input device\n"); > > + return ret; > > + } > > + > > + priv->input = input; > > + platform_set_drvdata(pdev, priv); > > + > > + ret = imx_scu_irq_group_enable(SC_IRQ_GROUP_WAKE, > SC_IRQ_BUTTON, true); > > + if (ret) { > > + dev_warn(&pdev->dev, "enable scu group irq failed\n"); > > + return ret; > > + } > > + > > + priv->key_notifier.notifier_call = imx_sc_key_notify; > > + ret = imx_scu_irq_register_notifier(&priv->key_notifier); > > + if (ret) { > > + imx_scu_irq_group_enable(SC_IRQ_GROUP_WAKE, > SC_IRQ_BUTTON, false); > > + dev_warn(&pdev->dev, "register scu notifier failed\n"); > > + } > > + > > + return ret; > > +} > > + > > +static const struct of_device_id imx_sc_key_ids[] = { > > + { .compatible = "fsl,imx-sc-key" }, > > + { /* sentinel */ } > > +}; > > +MODULE_DEVICE_TABLE(of, imx_sc_key_ids); > > + > > +static struct platform_driver imx_sc_key_driver = { > > + .driver = { > > + .name = "imx-sc-key", > > + .of_match_table = imx_sc_key_ids, > > + }, > > + .probe = imx_sc_key_probe, > > You need a remove() handler to disable the itq group, remove the notifier, > cancel the delayed work, etc. I will add it in V4. Thanks, Anson From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1E201C4CEC4 for ; Mon, 16 Sep 2019 02:44:24 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D8B9020873 for ; Mon, 16 Sep 2019 02:44:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="VpPAGHla"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="bjLbmJZi" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D8B9020873 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8mZ+ZblhldJvlaK2Q7tRizU0LenodJ61E+c3P92vYwA=; b=VpPAGHla+PRIVp V7Qq75EXd2pArhdoVh99V3Qdp4+xAdfCJxQmX9ikoT5qR0EHUpQycVkNLqsLjc5BJjaORpXc9k6Gf 2aprnJ1HSWe0qLhSfZ8lEx/qSzafNfqJkR8Efdbq7mN/Rd8YG15BYs2mcCnZdKiHcsoW1JkBhvy/Q 7MS1vDCJpMJd7pR/VAlu3UOMK+9GrDInspwEi5H02hoqr0HxokfHmxAPwMFAqKqh47TQrIptq3eYk NRie4a5VPB9zX+27R/hYY2GA3jTzP+Q/36vKpXQls64O0biuatLKiN5Cj5Iwybujq+2COVuMz8plc hCPvtFz6PnqYDvPyem2Q==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1i9h03-0001JC-Aj; Mon, 16 Sep 2019 02:44:23 +0000 Received: from mail-eopbgr130078.outbound.protection.outlook.com ([40.107.13.78] helo=EUR01-HE1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1i9gzz-0001Il-CW for linux-arm-kernel@lists.infradead.org; Mon, 16 Sep 2019 02:44:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kZI4HAVFhsC4Vv2T8GsF0iUNliYTMr2MRx0QiaaW1U3tQtDbUPcShWPQrsndSB7bhvR6c8QCuWNFkljoUce4xpg2cwiFDmNJK5HAYFu101iHt65jj+WSOnxgOF7cWRcqlzZ2qP6cs+X/GXeKJ0Jmw+3xZIP+5hHWOpawZnGbUGk1zxhSbI5+wDikw2pzgKPT+7SwNbfPmgRixQ2w1j64VJUnnFi+dB1WCSEHEhwKFGOxQYaPSuQBr4RwXLN8Xk6vkYCFjxm04rx5yIAzhMo87TpROGkT0IccIs6q6n8viZODroF+nBRK0nDNWwxlmbOdL1pW0mmta7MKGoeP/v6GTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IO6lkenfb0Epl3Rf7LdU4Qp1bnCOYWCo5KS8nFzAN3U=; b=EU5NgmuJIqyNmMdKeA/AUNr1CajN0N3GalKkdDlrXLO4d74QEa7xp6QliFUOgPiTylIcarRBjSAKdnZOpgMWrYrAAFXvlwJhoZZ04/SbOBE5ha6Gqi+KeMtB/fv8Q6fRktIVmqJZ/jrL4PM6v/JMw2WD2MTkrVDalgki34U+zugjybDIFSHPHBTrzIYiSIPh2SYEBianYhPhOE9Okyqk1WP1rpekrgrhk8xTG2zQXQ2vcHdtQI63ZgaseqVGqfDQZcS6d2mqxW7CtfJhzNO/eEHFjYBY4zcL7DAPVo8gdGdNaIp3xi6qZWUXCWPY0EOxNSgwD2Uml/fOaAgbYF6Y9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IO6lkenfb0Epl3Rf7LdU4Qp1bnCOYWCo5KS8nFzAN3U=; b=bjLbmJZi8uB0iPlrTCbPpZaWved9XY3y+xPF3gvKBpRIafOaCqmCDMzwTX0f88MzT0Q8gJVSrr1A7ufjmfNxV49pg9E4bFN/nACez4w1OGHapV0wy/DsjmnlaiWj52tO58TH0vXQ0f1d+zmk2bAm9RmT5iNhZ6D7YMElNiTwFEA= Received: from DB3PR0402MB3916.eurprd04.prod.outlook.com (52.134.72.18) by DB3PR0402MB3692.eurprd04.prod.outlook.com (52.134.65.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.23; Mon, 16 Sep 2019 02:44:06 +0000 Received: from DB3PR0402MB3916.eurprd04.prod.outlook.com ([fe80::8958:299c:bc54:2a38]) by DB3PR0402MB3916.eurprd04.prod.outlook.com ([fe80::8958:299c:bc54:2a38%7]) with mapi id 15.20.2263.023; Mon, 16 Sep 2019 02:44:06 +0000 From: Anson Huang To: Dmitry Torokhov Subject: RE: [PATCH V3 2/5] input: keyboard: imx_sc: Add i.MX system controller key support Thread-Topic: [PATCH V3 2/5] input: keyboard: imx_sc: Add i.MX system controller key support Thread-Index: AQHVYjtHNMbROEgxRkyLuCpsGlrKMacoiy6AgAUEV9A= Date: Mon, 16 Sep 2019 02:44:05 +0000 Message-ID: References: <1567546600-21566-1-git-send-email-Anson.Huang@nxp.com> <1567546600-21566-2-git-send-email-Anson.Huang@nxp.com> <20190912202239.GB636@penguin> In-Reply-To: <20190912202239.GB636@penguin> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=anson.huang@nxp.com; x-originating-ip: [119.31.174.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d33bad9a-a130-4df0-025c-08d73a4fbdf7 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020); SRVR:DB3PR0402MB3692; x-ms-traffictypediagnostic: DB3PR0402MB3692:|DB3PR0402MB3692: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-forefront-prvs: 0162ACCC24 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(366004)(376002)(346002)(396003)(136003)(189003)(199004)(52536014)(55016002)(478600001)(6436002)(14454004)(25786009)(99286004)(4326008)(5660300002)(71200400001)(71190400001)(64756008)(66556008)(7736002)(66476007)(66946007)(76116006)(9686003)(305945005)(2906002)(256004)(53936002)(6246003)(3846002)(6116002)(74316002)(66446008)(6916009)(26005)(476003)(102836004)(44832011)(486006)(54906003)(86362001)(6506007)(446003)(11346002)(8936002)(186003)(33656002)(229853002)(7696005)(316002)(81166006)(81156014)(8676002)(66066001)(76176011)(7416002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB3PR0402MB3692; H:DB3PR0402MB3916.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 0uD2M9bqjdD77W8PynqMnKD0Ncnyl49hdcT93sF54I3YADhthRafGnvL2dY0a1q0Ij1g0Cw0E2JDKf9kMpPF16PYiUNyVAHidzTfzqfx3ZDNQZcHYosL/B659IVsH1Cx+S9BcDhY8tnpl4n6w9bzCM8NpFmdjMd6RnogVjzelsOOqXeZSJfEkiSat3zWEV8wq2iD0EO7aMpCAelb8ze5wj+MrQ/cGDWPJzCJbwAsS/3B6Zr+A2stU8kg2WhJhA32QklbZHOsNDkzDL1/4+OGOaSwCAQY696c/2pXbQ6ttS65s+lRNoD/C7klYKfvE9kWfDywGLt4qtwmUhMXvvHaM0JCxwovuI0dLce/7Sb9toLmE4tVnjuBOdEKQWGaLlTd6ZMZg5X7M1+B04o4MYJYF85iQKbPywfq2jOjpmZqJ4o= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d33bad9a-a130-4df0-025c-08d73a4fbdf7 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Sep 2019 02:44:05.8334 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: byU96D9hMH7MLUpxohxQNsRiNcVEFW1DXQqWTr46pO3vcMKpKvVDj1xWGBSUZ6pkT1gsydiHcy+sB6KL0NO/xg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR0402MB3692 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190915_194419_609041_4B09BF6D X-CRM114-Status: GOOD ( 27.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "mark.rutland@arm.com" , "ulf.hansson@linaro.org" , Jacky Bai , "catalin.marinas@arm.com" , Peng Fan , "stefan@agner.ch" , "bjorn.andersson@linaro.org" , Leonard Crestez , "will@kernel.org" , "festevam@gmail.com" , "yuehaibing@huawei.com" , "marcin.juszkiewicz@linaro.org" , "jagan@amarulasolutions.com" , "linux-input@vger.kernel.org" , "ronald@innovation.ch" , dl-linux-imx , "devicetree@vger.kernel.org" , "arnd@arndb.de" , "s.hauer@pengutronix.de" , "mripard@kernel.org" , "m.felsch@pengutronix.de" , "robh+dt@kernel.org" , "tglx@linutronix.de" , "andriy.shevchenko@linux.intel.com" , Daniel Baluta , "linux-arm-kernel@lists.infradead.org" , Aisheng Dong , Andy Duan , "gregkh@linuxfoundation.org" , "linux-kernel@vger.kernel.org" , "dinguyen@kernel.org" , "kernel@pengutronix.de" , "olof@lixom.net" , "shawnguo@kernel.org" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, Dmitry > On Tue, Sep 03, 2019 at 05:36:37PM -0400, Anson Huang wrote: > > i.MX8QXP is an ARMv8 SoC which has a Cortex-M4 system controller > > inside, the system controller is in charge of controlling power, clock > > and scu key etc.. > > > > Adds i.MX system controller key driver support, Linux kernel has to > > communicate with system controller via MU (message unit) IPC to get > > scu key's status. > > > > Signed-off-by: Anson Huang > > --- > > Changes since V2: > > - use private platform data instead of global data; > > - use "key" instead of "pwrkey"; > > - fix some data format. > > --- > > drivers/input/keyboard/Kconfig | 7 ++ > > drivers/input/keyboard/Makefile | 1 + > > drivers/input/keyboard/imx_sc_key.c | 178 > > ++++++++++++++++++++++++++++++++++++ > > 3 files changed, 186 insertions(+) > > create mode 100644 drivers/input/keyboard/imx_sc_key.c > > > > diff --git a/drivers/input/keyboard/Kconfig > > b/drivers/input/keyboard/Kconfig index 2e6d288..607acf2 100644 > > --- a/drivers/input/keyboard/Kconfig > > +++ b/drivers/input/keyboard/Kconfig > > @@ -469,6 +469,13 @@ config KEYBOARD_IMX > > To compile this driver as a module, choose M here: the > > module will be called imx_keypad. > > > > +config KEYBOARD_IMX_SC_KEY > > + tristate "IMX SCU Key Driver" > > + depends on IMX_SCU > > + help > > + This is the system controller key driver for NXP i.MX SoCs with > > + system controller inside. > > + > > config KEYBOARD_NEWTON > > tristate "Newton keyboard" > > select SERIO > > diff --git a/drivers/input/keyboard/Makefile > > b/drivers/input/keyboard/Makefile index 9510325..f5b1752 100644 > > --- a/drivers/input/keyboard/Makefile > > +++ b/drivers/input/keyboard/Makefile > > @@ -29,6 +29,7 @@ obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o > > obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o > > obj-$(CONFIG_KEYBOARD_IPAQ_MICRO) += ipaq-micro-keys.o > > obj-$(CONFIG_KEYBOARD_IMX) += imx_keypad.o > > +obj-$(CONFIG_KEYBOARD_IMX_SC_KEY) += imx_sc_key.o > > obj-$(CONFIG_KEYBOARD_HP6XX) += jornada680_kbd.o > > obj-$(CONFIG_KEYBOARD_HP7XX) += jornada720_kbd.o > > obj-$(CONFIG_KEYBOARD_LKKBD) += lkkbd.o > > diff --git a/drivers/input/keyboard/imx_sc_key.c > > b/drivers/input/keyboard/imx_sc_key.c > > new file mode 100644 > > index 0000000..e69479b > > --- /dev/null > > +++ b/drivers/input/keyboard/imx_sc_key.c > > @@ -0,0 +1,178 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +/* > > + * Copyright 2019 NXP. > > + */ > > + > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > + > > +#define DEBOUNCE_TIME 100 > > +#define REPEAT_INTERVAL 60 > > + > > +#define SC_IRQ_BUTTON 1 > > +#define SC_IRQ_GROUP_WAKE 3 > > +#define IMX_SC_MISC_FUNC_GET_BUTTON_STATUS 18 > > + > > +struct imx_key_drv_data { > > + int keycode; > > + bool keystate; /* 1: pressed, 0: release */ > > + bool delay_check; > > + struct delayed_work check_work; > > + struct input_dev *input; > > + struct imx_sc_ipc *key_ipc_handle; > > + struct notifier_block key_notifier; > > +}; > > + > > +struct imx_sc_msg_key { > > + struct imx_sc_rpc_msg hdr; > > + u8 state; > > +}; > > + > > +static int imx_sc_key_notify(struct notifier_block *nb, > > + unsigned long event, void *group) { > > + struct imx_key_drv_data *priv = > > + container_of(nb, > > + struct imx_key_drv_data, > > + key_notifier); > > + > > + if ((event & SC_IRQ_BUTTON) && (*(u8 *)group == > SC_IRQ_GROUP_WAKE) > > + && !priv->delay_check) { > > + priv->delay_check = 1; > > + schedule_delayed_work(&priv->check_work, > > + msecs_to_jiffies(REPEAT_INTERVAL)); > > + } > > + > > + return 0; > > +} > > + > > +static void imx_sc_check_for_events(struct work_struct *work) { > > + struct imx_key_drv_data *priv = > > + container_of(work, > > + struct imx_key_drv_data, > > + check_work.work); > > + struct input_dev *input = priv->input; > > + struct imx_sc_msg_key msg; > > + struct imx_sc_rpc_msg *hdr = &msg.hdr; > > + bool state; > > + int ret; > > + > > + hdr->ver = IMX_SC_RPC_VERSION; > > + hdr->svc = IMX_SC_RPC_SVC_MISC; > > + hdr->func = IMX_SC_MISC_FUNC_GET_BUTTON_STATUS; > > + hdr->size = 1; > > + > > + ret = imx_scu_call_rpc(priv->key_ipc_handle, &msg, true); > > + if (ret) { > > + dev_err(&input->dev, "read imx sc key failed, ret %d\n", ret); > > + return; > > + } > > + > > + state = (bool)msg.state; > > + > > + if (!state && !priv->keystate) > > + state = true; > > + > > + if (state ^ priv->keystate) { > > + pm_wakeup_event(input->dev.parent, 0); > > + priv->keystate = state; > > + input_event(input, EV_KEY, priv->keycode, state); > > + input_sync(input); > > + if (!state) > > + priv->delay_check = 0; > > + pm_relax(priv->input->dev.parent); > > + } > > + > > + if (state) > > + schedule_delayed_work(&priv->check_work, > > + msecs_to_jiffies(DEBOUNCE_TIME)); > > Hmm, I am not quite sure follow the code. Judging by the name, you are > trying to handle debounce, but if I understand this correctly you already sent > out the press event for now. > > Could you please explain what you are trying to do here. The name is kind of confused, the "DEBOUNCE_TIME" here should be "REPEAT_INTERVAL" actually, the "DEBOUNCE_TIME" should be used in the irq hanlder instead. As the SCU ONLY send out interrupt when the key is pressed, so here we have to repeat the delay work to loop check the button release event, the press event is sent out once the key state is valid, and then start to check until key is released. I will switch the "DEBOUNCE_TIME" and "REPEAT_INTERVAL" in V4. > > > +} > > + > > +static int imx_sc_key_probe(struct platform_device *pdev) { > > + struct device_node *np = pdev->dev.of_node; > > + static struct imx_key_drv_data *priv; > > + struct input_dev *input; > > + int ret; > > + > > + priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); > > + if (!priv) > > + return -ENOMEM; > > + > > + ret = imx_scu_get_handle(&priv->key_ipc_handle); > > + if (ret) > > + return ret; > > + > > + if (of_property_read_u32(np, "linux,keycode", &priv->keycode)) { > > + dev_err(&pdev->dev, "missing KEY_POWER in DT\n"); > > + return -EINVAL; > > + } > > + > > + INIT_DELAYED_WORK(&priv->check_work, > imx_sc_check_for_events); > > + > > + input = devm_input_allocate_device(&pdev->dev); > > + if (!input) { > > + dev_err(&pdev->dev, "failed to allocate the input device\n"); > > + return -ENOMEM; > > + } > > + > > + input->name = pdev->name; > > + input->phys = "imx-sc-key/input0"; > > + input->id.bustype = BUS_HOST; > > + > > + input_set_capability(input, EV_KEY, priv->keycode); > > + > > + ret = input_register_device(input); > > + if (ret) { > > + dev_err(&pdev->dev, "failed to register input device\n"); > > + return ret; > > + } > > + > > + priv->input = input; > > + platform_set_drvdata(pdev, priv); > > + > > + ret = imx_scu_irq_group_enable(SC_IRQ_GROUP_WAKE, > SC_IRQ_BUTTON, true); > > + if (ret) { > > + dev_warn(&pdev->dev, "enable scu group irq failed\n"); > > + return ret; > > + } > > + > > + priv->key_notifier.notifier_call = imx_sc_key_notify; > > + ret = imx_scu_irq_register_notifier(&priv->key_notifier); > > + if (ret) { > > + imx_scu_irq_group_enable(SC_IRQ_GROUP_WAKE, > SC_IRQ_BUTTON, false); > > + dev_warn(&pdev->dev, "register scu notifier failed\n"); > > + } > > + > > + return ret; > > +} > > + > > +static const struct of_device_id imx_sc_key_ids[] = { > > + { .compatible = "fsl,imx-sc-key" }, > > + { /* sentinel */ } > > +}; > > +MODULE_DEVICE_TABLE(of, imx_sc_key_ids); > > + > > +static struct platform_driver imx_sc_key_driver = { > > + .driver = { > > + .name = "imx-sc-key", > > + .of_match_table = imx_sc_key_ids, > > + }, > > + .probe = imx_sc_key_probe, > > You need a remove() handler to disable the itq group, remove the notifier, > cancel the delayed work, etc. I will add it in V4. Thanks, Anson _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel