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_PASS,URIBL_BLOCKED autolearn=unavailable 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 C6BD8C43610 for ; Thu, 29 Nov 2018 10:52:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6F06E2081B for ; Thu, 29 Nov 2018 10:52:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="JMfv+k0u" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6F06E2081B 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-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727350AbeK2V5R (ORCPT ); Thu, 29 Nov 2018 16:57:17 -0500 Received: from mail-eopbgr70083.outbound.protection.outlook.com ([40.107.7.83]:33894 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726780AbeK2V5R (ORCPT ); Thu, 29 Nov 2018 16:57:17 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=daJ07n1hcDL3pwWBaSm7trZgSFT+aThb4vWpxtRBVk8=; b=JMfv+k0uP7W+KS7geK/FusIrVMZ4KJVXiamjpVM1hpe2sB7A/aD3iMrrQviSDU7io/VkvWWFl4HDH0q+ikVRQBF8vCmg3DJnsBx/uDt1DaxlUNR5kXnB231XUHnBgDkV8PPoEjQ1Gy4WdjZ4Ozu5MIKAii7A0D2aT34xguLAGb4= Received: from AM0PR0402MB3570.eurprd04.prod.outlook.com (52.133.46.11) by AM0PR0402MB3441.eurprd04.prod.outlook.com (52.133.45.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1361.16; Thu, 29 Nov 2018 10:52:13 +0000 Received: from AM0PR0402MB3570.eurprd04.prod.outlook.com ([fe80::94f8:5fdd:f384:8af8]) by AM0PR0402MB3570.eurprd04.prod.outlook.com ([fe80::94f8:5fdd:f384:8af8%5]) with mapi id 15.20.1361.019; Thu, 29 Nov 2018 10:52:13 +0000 From: Richard Zhu To: Andrey Smirnov CC: linux-kernel , Bjorn Helgaas , Fabio Estevam , Chris Healy , Lucas Stach , Leonard Crestez , Aisheng DONG , dl-linux-imx , linux-arm-kernel , "linux-pci@vger.kernel.org" Subject: RE: [PATCH 3/3] PCI: imx: Add support for i.MX8MQ Thread-Topic: [PATCH 3/3] PCI: imx: Add support for i.MX8MQ Thread-Index: AQHUfqElSbs0KMjgH0+O2GdEPnSSvaVWrXGggAu7vACABDqzwA== Date: Thu, 29 Nov 2018 10:52:12 +0000 Message-ID: References: <20181117181225.10737-1-andrew.smirnov@gmail.com> <20181117181225.10737-4-andrew.smirnov@gmail.com> In-Reply-To: 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=hongxing.zhu@nxp.com; x-originating-ip: [119.31.174.66] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;AM0PR0402MB3441;6:HsIPJxPMij0STLkaDkxhEy278Xm6UMjoTbgdlgLRtrCYrBK5x/oMGl+kvI91PYoqKzCkZb3HHdmCIDqKUYbei859BFfsv907oJ2dnVAOtk+VIvNqHwTBIxLorjku+FaLbF/9ssvqNrCiMw+njyeSZuUcV7nbQFmKFApblier2WhAZzQHBd+9MSEPPdEKK8LL8USTiAgfZYYdXydQKX2MI5w1rSWLjUjRPsX06Nbxon9YMnBqr3piGlWxeyW1cMooImNUFxOJva2x9hOLpaZA+vCA0gsqgfkjED+zr0XSX4csnQB8oVVa5kFRlLXMTF1rQCtlpezecD1wDB/C1xBLcjuklEKWG5sUuNuR9dqSMIWaM9S+//Lu2GunNFGAKeN8O+9nxRS9PFBJqVQUoTDWQHfHvS+ASIqDkkpmLi3Z43LQ2f/M42JNkZ+UObglD7K9e2DIeEDpHnDB2ezP4A6bFw==;5:vvZGXeAu3w76O6wNvdwUNE+xeuxMtxJ08UPZ+2KMuy0lBOUOVs+TtE9lIlvl0i58B2ZOfrvlXr2ZMDUwfSCx5xZE5CovSZ+CeGOtaMF/uthrtTpWkDAa8AJMXVruFtif3ma7klxVn6Qw2wmFzOjbApbDP0ojQnETy2/hFIs8neU=;7:0BqpdnghGF5uw7QCMSxjpTgmBcryuoNzKOL0T0apeClYdenhSSdixJGxPMH3eNhog4OSpr0R7IXcH0pRABbfgapslcJ9q3MfNl4DEo4yEPjT9f0c3Mu8YqPqveG5k/EQ+acoMQcvTqPEEkhTCKtOMA== x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: a80ba21c-fe6f-4339-1430-08d655e8b832 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020);SRVR:AM0PR0402MB3441; x-ms-traffictypediagnostic: AM0PR0402MB3441: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3231453)(999002)(944501410)(52105112)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123562045)(20161123558120)(201708071742011)(7699051)(76991095);SRVR:AM0PR0402MB3441;BCL:0;PCL:0;RULEID:;SRVR:AM0PR0402MB3441; x-forefront-prvs: 0871917CDA x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(396003)(136003)(376002)(39860400002)(346002)(13464003)(189003)(199004)(6246003)(68736007)(6916009)(71200400001)(71190400001)(39060400002)(256004)(6436002)(316002)(229853002)(54906003)(53936002)(8676002)(81156014)(81166006)(4326008)(55016002)(33656002)(9686003)(8936002)(102836004)(6506007)(4744004)(478600001)(105586002)(106356001)(53546011)(26005)(99286004)(76176011)(66066001)(7696005)(93886005)(25786009)(86362001)(14454004)(186003)(476003)(97736004)(446003)(5660300001)(11346002)(74316002)(2906002)(14444005)(305945005)(7736002)(6116002)(3846002)(486006)(357404004);DIR:OUT;SFP:1101;SCL:1;SRVR:AM0PR0402MB3441;H:AM0PR0402MB3570.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-microsoft-antispam-message-info: W4XJJmNOJXxOJa1gHoecowtHKFPrw0e9QeYOm1meyxakUlXZwVOkWHI+wpRqZjKd7FXxTs2AepdO42x0P1i15HaR33VmkOsQyitnnN2rCPLdsMYPMfTZHUBundV09WQMwFsO3rYRqIyvPJENBddHRfWbqTqjoaZ25KfPDkcv/kZu5zj8Nl4h7AA3Zx3fd6IUtfivuNuq1PIk4jo02hhLKJsSIOBlJJpKym/9ZssJZPJ0hhYz/xXvtDdX2LQxsgeknGgC1cyZt8F+wrtwZRhiSvhaKQ2LGwBnoKLo/opdEv6YjWYdPO3w/z9SgZUzBjQpvwFT+QtLJtXl4qobJXambt4ZuNS34UJkcm1aW1+rijM= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM 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: a80ba21c-fe6f-4339-1430-08d655e8b832 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Nov 2018 10:52:13.0098 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3441 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5kcmV5IFNtaXJub3Yg W21haWx0bzphbmRyZXcuc21pcm5vdkBnbWFpbC5jb21dDQo+IFNlbnQ6IDIwMTjlubQxMeaciDI3 5pelIDI6MTANCj4gVG86IFJpY2hhcmQgWmh1IDxob25neGluZy56aHVAbnhwLmNvbT4NCj4gQ2M6 IGxpbnV4LWtlcm5lbCA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz47IEJqb3JuIEhlbGdh YXMNCj4gPGJoZWxnYWFzQGdvb2dsZS5jb20+OyBGYWJpbyBFc3RldmFtIDxmYWJpby5lc3RldmFt QG54cC5jb20+OyBDaHJpcw0KPiBIZWFseSA8Y3BoZWFseUBnbWFpbC5jb20+OyBMdWNhcyBTdGFj aCA8bC5zdGFjaEBwZW5ndXRyb25peC5kZT47DQo+IExlb25hcmQgQ3Jlc3RleiA8bGVvbmFyZC5j cmVzdGV6QG54cC5jb20+OyBBaXNoZW5nIERPTkcNCj4gPGFpc2hlbmcuZG9uZ0BueHAuY29tPjsg ZGwtbGludXgtaW14IDxsaW51eC1pbXhAbnhwLmNvbT47DQo+IGxpbnV4LWFybS1rZXJuZWwgPGxp bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZz47DQo+IGxpbnV4LXBjaUB2Z2VyLmtl cm5lbC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCAzLzNdIFBDSTogaW14OiBBZGQgc3VwcG9y dCBmb3IgaS5NWDhNUQ0KPiANCj4gT24gU3VuLCBOb3YgMTgsIDIwMTggYXQgMTE6MDcgUE0gUmlj aGFyZCBaaHUgPGhvbmd4aW5nLnpodUBueHAuY29tPg0KPiB3cm90ZToNCj4gPg0KPiA+IEhpIEFu ZHJleToNCj4gPiBUaGFua3MgZm9yIHlvdXIgcGF0Y2gtc2V0Lg0KPiA+IEkgaGF2ZSBjb21tZW50 IGFib3V0IHRoZSBMMVNTIGltcGxlbWVudGF0aW9uIGJlbG93Lg0KPiA+IEl0J3MgYmV0dGVyIHRv IGZpZ3VyZSBvdXQgb25lIG1ldGhvZCB0byBmaXggaXQuDQo+ID4NCj4gPiBCUg0KPiA+IFJpY2hh cmQNCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IEFu ZHJleSBTbWlybm92IFttYWlsdG86YW5kcmV3LnNtaXJub3ZAZ21haWwuY29tXQ0KPiA+ID4gU2Vu dDogMjAxOOW5tDEx5pyIMTjml6UgMjoxMg0KPiA+ID4gVG86IGxpbnV4LWtlcm5lbEB2Z2VyLmtl cm5lbC5vcmcNCj4gPiA+IENjOiBBbmRyZXkgU21pcm5vdiA8YW5kcmV3LnNtaXJub3ZAZ21haWwu Y29tPjsNCj4gYmhlbGdhYXNAZ29vZ2xlLmNvbTsNCj4gPiA+IEZhYmlvIEVzdGV2YW0gPGZhYmlv LmVzdGV2YW1AbnhwLmNvbT47IGNwaGVhbHlAZ21haWwuY29tOw0KPiA+ID4gbC5zdGFjaEBwZW5n dXRyb25peC5kZTsgTGVvbmFyZCBDcmVzdGV6IDxsZW9uYXJkLmNyZXN0ZXpAbnhwLmNvbT47DQo+ ID4gPiBBaXNoZW5nIERPTkcgPGFpc2hlbmcuZG9uZ0BueHAuY29tPjsgUmljaGFyZCBaaHUNCj4g PiA+IDxob25neGluZy56aHVAbnhwLmNvbT47IGRsLWxpbnV4LWlteCA8bGludXgtaW14QG54cC5j b20+Ow0KPiA+ID4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC1w Y2lAdmdlci5rZXJuZWwub3JnDQo+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggMy8zXSBQQ0k6IGlteDog QWRkIHN1cHBvcnQgZm9yIGkuTVg4TVENCj4gPiA+DQo+ID4gPiBDYzogYmhlbGdhYXNAZ29vZ2xl LmNvbQ0KPiA+ID4gQ2M6IEZhYmlvIEVzdGV2YW0gPGZhYmlvLmVzdGV2YW1AbnhwLmNvbT4NCj4g PiA+IENjOiBjcGhlYWx5QGdtYWlsLmNvbQ0KPiA+ID4gQ2M6IGwuc3RhY2hAcGVuZ3V0cm9uaXgu ZGUNCj4gPiA+IENjOiBMZW9uYXJkIENyZXN0ZXogPGxlb25hcmQuY3Jlc3RlekBueHAuY29tPg0K PiA+ID4gQ2M6ICJBLnMuIERvbmciIDxhaXNoZW5nLmRvbmdAbnhwLmNvbT4NCj4gPiA+IENjOiBS aWNoYXJkIFpodSA8aG9uZ3hpbmcuemh1QG54cC5jb20+DQo+ID4gPiBDYzogbGludXgtaW14QG54 cC5jb20NCj4gPiA+IENjOiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcNCj4g PiA+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+ID4gPiBDYzogbGludXgtcGNp QHZnZXIua2VybmVsLm9yZw0KPiA+ID4gU2lnbmVkLW9mZi1ieTogQW5kcmV5IFNtaXJub3YgPGFu ZHJldy5zbWlybm92QGdtYWlsLmNvbT4NCj4gPiA+IC0tLQ0KPiA+ID4gIGRyaXZlcnMvcGNpL2Nv bnRyb2xsZXIvZHdjL0tjb25maWcgICAgfCAgIDIgKy0NCj4gPiA+ICBkcml2ZXJzL3BjaS9jb250 cm9sbGVyL2R3Yy9wY2ktaW14Ni5jIHwgMTE3DQo+ID4gPiArKysrKysrKysrKysrKysrKysrKysr KystLQ0KPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDYgZGVsZXRp b25zKC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIv ZHdjL0tjb25maWcNCj4gPiA+IGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvS2NvbmZpZw0K PiA+ID4gaW5kZXggOTFiMDE5NDI0MGE1Li4yYjEzOWFjY2NmMzIgMTAwNjQ0DQo+ID4gPiAtLS0g YS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnDQo+ID4gPiArKysgYi9kcml2ZXJz L3BjaS9jb250cm9sbGVyL2R3Yy9LY29uZmlnDQo+ID4gPiBAQCAtOTAsNyArOTAsNyBAQCBjb25m aWcgUENJX0VYWU5PUw0KPiA+ID4NCj4gPiA+ICBjb25maWcgUENJX0lNWDYNCj4gPiA+ICAgICAg IGJvb2wgIkZyZWVzY2FsZSBpLk1YNiBQQ0llIGNvbnRyb2xsZXIiDQo+ID4gPiAtICAgICBkZXBl bmRzIG9uIFNPQ19JTVg2USB8fCAoQVJNICYmIENPTVBJTEVfVEVTVCkNCj4gPiA+ICsgICAgIGRl cGVuZHMgb24gU09DX0lNWDhNUSB8fCBTT0NfSU1YNlEgfHwgKEFSTSAmJg0KPiBDT01QSUxFX1RF U1QpDQo+ID4gPiAgICAgICBkZXBlbmRzIG9uIFBDSV9NU0lfSVJRX0RPTUFJTg0KPiA+ID4gICAg ICAgc2VsZWN0IFBDSUVfRFdfSE9TVA0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jDQo+ID4gPiBiL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvZHdjL3BjaS1pbXg2LmMNCj4gPiA+IGluZGV4IDNjMzAwMjg2MWQyNS4uOGQxZjMxMGU0 MWE2IDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlt eDYuYw0KPiA+ID4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYw0K PiA+ID4gQEAgLTgsNiArOCw3IEBADQo+ID4gPiAgICogQXV0aG9yOiBTZWFuIENyb3NzIDx4b2Jz QGtvc2FnaS5jb20+DQo+ID4gPiAgICovDQo+ID4gPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9i aXRmaWVsZC5oPg0KPiA+ID4gICNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gPiA+ICAjaW5jbHVk ZSA8bGludXgvZGVsYXkuaD4NCj4gPiA+ICAjaW5jbHVkZSA8bGludXgvZ3Bpby5oPg0KPiA+ID4g QEAgLTMwLDYgKzMxLDE0IEBADQo+ID4gPg0KPiA+ID4gICNpbmNsdWRlICJwY2llLWRlc2lnbndh cmUuaCINCj4gPiA+DQo+ID4gPiArI2RlZmluZSBJTVg4TVFfUENJRV9MSU5LX0NBUF9SRUdfT0ZG U0VUICAgICAgICAgICAgICAweDdDDQo+ID4gPiArI2RlZmluZSBJTVg4TVFfUENJRV9MSU5LX0NB UF9MMUVMXzY0VVMgICAgICAgICAgICAgICAoMHg2IDw8DQo+IDE1KQ0KPiA+ID4gKw0KPiA+ID4g KyNkZWZpbmUgSU1YOE1RX0dQUl9QQ0lFX1JFRl9VU0VfUEFEICAgICAgICAgIEJJVCg5KQ0KPiA+ ID4gKyNkZWZpbmUgSU1YOE1RX0dQUl9QQ0lFX0NMS19SRVFfT1ZFUlJJREVfRU4gIEJJVCgxMCkN Cj4gPiA+ICsjZGVmaW5lIElNWDhNUV9HUFJfUENJRV9DTEtfUkVRX09WRVJSSURFICAgICBCSVQo MTEpDQo+ID4gPiArDQo+ID4gPiArDQo+ID4gPiAgI2RlZmluZSB0b19pbXg2X3BjaWUoeCkgICAg ICBkZXZfZ2V0X2RydmRhdGEoKHgpLT5kZXYpDQo+ID4gPg0KPiA+ID4gIGVudW0gaW14Nl9wY2ll X3ZhcmlhbnRzIHsNCj4gPiA+IEBAIC0zNyw2ICs0Niw3IEBAIGVudW0gaW14Nl9wY2llX3Zhcmlh bnRzIHsNCj4gPiA+ICAgICAgIElNWDZTWCwNCj4gPiA+ICAgICAgIElNWDZRUCwNCj4gPiA+ICAg ICAgIElNWDdELA0KPiA+ID4gKyAgICAgSU1YOE1RLA0KPiA+ID4gIH07DQo+ID4gPg0KPiA+ID4g IHN0cnVjdCBpbXg2X3BjaWUgew0KPiA+ID4gQEAgLTQ4LDggKzU4LDEwIEBAIHN0cnVjdCBpbXg2 X3BjaWUgew0KPiA+ID4gICAgICAgc3RydWN0IGNsayAgICAgICAgICAgICAgKnBjaWVfaW5ib3Vu ZF9heGk7DQo+ID4gPiAgICAgICBzdHJ1Y3QgY2xrICAgICAgICAgICAgICAqcGNpZTsNCj4gPiA+ ICAgICAgIHN0cnVjdCByZWdtYXAgICAgICAgICAgICppb211eGNfZ3ByOw0KPiA+ID4gKyAgICAg dTMyICAgICAgICAgICAgICAgICAgICAgZ3ByMXg7DQo+ID4gPiAgICAgICBzdHJ1Y3QgcmVzZXRf Y29udHJvbCAgICAqcGNpZXBoeV9yZXNldDsNCj4gPiA+ICAgICAgIHN0cnVjdCByZXNldF9jb250 cm9sICAgICphcHBzX3Jlc2V0Ow0KPiA+ID4gKyAgICAgc3RydWN0IHJlc2V0X2NvbnRyb2wgICAg KmFwcHNfY2xrX3JlcTsNCj4gPiA+ICAgICAgIHN0cnVjdCByZXNldF9jb250cm9sICAgICp0dXJu b2ZmX3Jlc2V0Ow0KPiA+ID4gICAgICAgZW51bSBpbXg2X3BjaWVfdmFyaWFudHMgdmFyaWFudDsN Cj4gPiA+ICAgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgIHR4X2RlZW1waF9nZW4xOw0KPiA+ ID4gQEAgLTU5LDYgKzcxLDcgQEAgc3RydWN0IGlteDZfcGNpZSB7DQo+ID4gPiAgICAgICB1MzIg ICAgICAgICAgICAgICAgICAgICB0eF9zd2luZ19sb3c7DQo+ID4gPiAgICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICBsaW5rX2dlbjsNCj4gPiA+ICAgICAgIHN0cnVjdCByZWd1bGF0b3IgICAg ICAgICp2cGNpZTsNCj4gPiA+ICsgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgIGRldmljZV90 eXBlWzJdOw0KPiA+ID4gIH07DQo+ID4gPg0KPiA+ID4gIC8qIFBhcmFtZXRlcnMgZm9yIHRoZSB3 YWl0aW5nIGZvciBQQ0llIFBIWSBQTEwgdG8gbG9jayBvbiBpLk1YNyAqLw0KPiA+ID4gQEANCj4g PiA+IC0yNDUsNyArMjU4LDggQEAgc3RhdGljIHZvaWQgaW14Nl9wY2llX3Jlc2V0X3BoeShzdHJ1 Y3QgaW14Nl9wY2llDQo+ID4gPiAqaW14Nl9wY2llKSAgew0KPiA+ID4gICAgICAgdTMyIHRtcDsN Cj4gPiA+DQo+ID4gPiAtICAgICBpZiAoaW14Nl9wY2llLT52YXJpYW50ID09IElNWDdEKQ0KPiA+ ID4gKyAgICAgaWYgKGlteDZfcGNpZS0+dmFyaWFudCA9PSBJTVg3RCB8fA0KPiA+ID4gKyAgICAg ICAgIGlteDZfcGNpZS0+dmFyaWFudCA9PSBJTVg4TVEpDQo+ID4gPiAgICAgICAgICAgICAgIHJl dHVybjsNCj4gPiA+DQo+ID4gPiAgICAgICBwY2llX3BoeV9yZWFkKGlteDZfcGNpZSwgUEhZX1JY X09WUkRfSU5fTE8sICZ0bXApOyBAQA0KPiAtMjYxLDYNCj4gPiA+ICsyNzUsNyBAQCBzdGF0aWMg dm9pZCBpbXg2X3BjaWVfcmVzZXRfcGh5KHN0cnVjdCBpbXg2X3BjaWUNCj4gPiA+ICsqaW14Nl9w Y2llKQ0KPiA+ID4gICAgICAgcGNpZV9waHlfd3JpdGUoaW14Nl9wY2llLCBQSFlfUlhfT1ZSRF9J Tl9MTywgdG1wKTsgIH0NCj4gPiA+DQo+ID4gPiArI2lmZGVmIENPTkZJR19BUk0NCj4gPiA+ICAv KiAgQWRkZWQgZm9yIFBDSSBhYm9ydCBoYW5kbGluZyAqLyAgc3RhdGljIGludA0KPiA+ID4gaW14 NnFfcGNpZV9hYm9ydF9oYW5kbGVyKHVuc2lnbmVkIGxvbmcgYWRkciwNCj4gPiA+ICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IGZzciwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpIEBAIC0yOTQsNg0K PiA+ID4gKzMwOSw3IEBAIHN0YXRpYyBpbnQgaW14NnFfcGNpZV9hYm9ydF9oYW5kbGVyKHVuc2ln bmVkIGxvbmcgYWRkciwNCj4gPiA+DQo+ID4gPiAgICAgICByZXR1cm4gMTsNCj4gPiA+ICB9DQo+ ID4gPiArI2VuZGlmDQo+ID4gPg0KPiA+ID4gIHN0YXRpYyB2b2lkIGlteDZfcGNpZV9hc3NlcnRf Y29yZV9yZXNldChzdHJ1Y3QgaW14Nl9wY2llDQo+ID4gPiAqaW14Nl9wY2llKSB7IEBAIC0zMDEs NiArMzE3LDcgQEAgc3RhdGljIHZvaWQNCj4gPiA+IGlteDZfcGNpZV9hc3NlcnRfY29yZV9yZXNl dChzdHJ1Y3QNCj4gPiA+IGlteDZfcGNpZSAqaW14Nl9wY2llKQ0KPiA+ID4NCj4gPiA+ICAgICAg IHN3aXRjaCAoaW14Nl9wY2llLT52YXJpYW50KSB7DQo+ID4gPiAgICAgICBjYXNlIElNWDdEOg0K PiA+ID4gKyAgICAgY2FzZSBJTVg4TVE6IC8qIEZBTExUSFJPVUdIICovDQo+ID4gPiAgICAgICAg ICAgICAgIHJlc2V0X2NvbnRyb2xfYXNzZXJ0KGlteDZfcGNpZS0+cGNpZXBoeV9yZXNldCk7DQo+ ID4gPiAgICAgICAgICAgICAgIHJlc2V0X2NvbnRyb2xfYXNzZXJ0KGlteDZfcGNpZS0+YXBwc19y ZXNldCk7DQo+ID4gPiAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gQEAgLTM2OSw2ICszODYs MTggQEAgc3RhdGljIGludCBpbXg2X3BjaWVfZW5hYmxlX3JlZl9jbGsoc3RydWN0DQo+ID4gPiBp bXg2X3BjaWUgKmlteDZfcGNpZSkNCj4gPiA+ICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiAg ICAgICBjYXNlIElNWDdEOg0KPiA+ID4gICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ICsgICAg IGNhc2UgSU1YOE1ROg0KPiA+ID4gKyAgICAgICAgICAgICAvKg0KPiA+ID4gKyAgICAgICAgICAg ICAgKiBTZXQgdGhlIG92ZXIgcmlkZSBsb3cgYW5kIGVuYWJsZWQNCj4gPiA+ICsgICAgICAgICAg ICAgICogbWFrZSBzdXJlIHRoYXQgUkVGX0NMSyBpcyB0dXJuZWQgb24uDQo+ID4gPiArICAgICAg ICAgICAgICAqLw0KPiA+ID4gKyAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9w Y2llLT5pb211eGNfZ3ByLA0KPiBpbXg2X3BjaWUtPmdwcjF4LA0KPiA+ID4gKw0KPiBJTVg4TVFf R1BSX1BDSUVfQ0xLX1JFUV9PVkVSUklERSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDApOw0KPiA+ID4gKyAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14 Nl9wY2llLT5pb211eGNfZ3ByLA0KPiBpbXg2X3BjaWUtPmdwcjF4LA0KPiA+ID4gKw0KPiBJTVg4 TVFfR1BSX1BDSUVfQ0xLX1JFUV9PVkVSUklERV9FTiwNCj4gPiA+ICsNCj4gSU1YOE1RX0dQUl9Q Q0lFX0NMS19SRVFfT1ZFUlJJREVfRU4pOw0KPiA+ID4gKyAgICAgICAgICAgICBicmVhazsNCj4g PiA+ICAgICAgIH0NCj4gPiA+DQo+ID4gPiAgICAgICByZXR1cm4gcmV0Ow0KPiA+ID4gQEAgLTM5 Nyw2ICs0MjYsNyBAQCBzdGF0aWMgdm9pZCBpbXg2X3BjaWVfZGVhc3NlcnRfY29yZV9yZXNldChz dHJ1Y3QNCj4gPiA+IGlteDZfcGNpZSAqaW14Nl9wY2llKSAgew0KPiA+ID4gICAgICAgc3RydWN0 IGR3X3BjaWUgKnBjaSA9IGlteDZfcGNpZS0+cGNpOw0KPiA+ID4gICAgICAgc3RydWN0IGRldmlj ZSAqZGV2ID0gcGNpLT5kZXY7DQo+ID4gPiArICAgICB1bnNpZ25lZCBpbnQgdmFsOw0KPiA+ID4g ICAgICAgaW50IHJldDsNCj4gPiA+DQo+ID4gPiAgICAgICBpZiAoaW14Nl9wY2llLT52cGNpZSAm Jg0KPiA+ID4gIXJlZ3VsYXRvcl9pc19lbmFibGVkKGlteDZfcGNpZS0+dnBjaWUpKSB7IEBADQo+ ID4gPiAtNDQ1LDYgKzQ3NSwyOSBAQCBzdGF0aWMgdm9pZCBpbXg2X3BjaWVfZGVhc3NlcnRfY29y ZV9yZXNldChzdHJ1Y3QNCj4gPiA+IGlteDZfcGNpZSAqaW14Nl9wY2llKQ0KPiA+ID4gICAgICAg fQ0KPiA+ID4NCj4gPiA+ICAgICAgIHN3aXRjaCAoaW14Nl9wY2llLT52YXJpYW50KSB7DQo+ID4g PiArICAgICBjYXNlIElNWDhNUToNCj4gPiA+ICsgICAgICAgICAgICAgcmVzZXRfY29udHJvbF9k ZWFzc2VydChpbXg2X3BjaWUtPnBjaWVwaHlfcmVzZXQpOw0KPiA+ID4gKyAgICAgICAgICAgICB1 ZGVsYXkoMTAwKTsNCj4gPiA+ICsgICAgICAgICAgICAgLyoNCj4gPiA+ICsgICAgICAgICAgICAg ICogQ29uZmlndXJlIHRoZSBDTEtfUkVRIyBoaWdoLCBsZXQgdGhlIEwxU1MNCj4gPiA+ICsgICAg ICAgICAgICAgICogYXV0b21hdGljYWxseSBjb250cm9sbGVkIGJ5IEhXLg0KPiA+ID4gKyAgICAg ICAgICAgICAgKi8NCj4gPiA+ICsgICAgICAgICAgICAgcmVzZXRfY29udHJvbF9hc3NlcnQoaW14 Nl9wY2llLT5hcHBzX2Nsa19yZXEpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICAgICAgICAvKg0K PiA+ID4gKyAgICAgICAgICAgICAgKiBDb25maWd1cmUgdGhlIEwxIGxhdGVuY3kgb2YgcmMgdG8g bGVzcyB0aGFuIDY0dXMNCj4gPiA+ICsgICAgICAgICAgICAgICogT3RoZXJ3aXNlLCB0aGUgTDEv TDFTVUIgd291bGRuJ3QgYmUgZW5hYmxlIGJ5DQo+IEFTUE0uDQo+ID4gPiArICAgICAgICAgICAg ICAqLw0KPiA+ID4gKyAgICAgICAgICAgICB2YWwgPSBkd19wY2llX3JlYWRsX2RiaShpbXg2X3Bj aWUtPnBjaSwNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1pf MU0gKw0KPiA+ID4gKw0KPiBJTVg4TVFfUENJRV9MSU5LX0NBUF9SRUdfT0ZGU0VUKTsNCj4gPiA+ ICsgICAgICAgICAgICAgdmFsICY9IH5QQ0lfRVhQX0xOS0NBUF9MMUVMOw0KPiA+ID4gKyAgICAg ICAgICAgICB2YWwgfD0gSU1YOE1RX1BDSUVfTElOS19DQVBfTDFFTF82NFVTOw0KPiA+ID4gKyAg ICAgICAgICAgICBkd19wY2llX3dyaXRlbF9kYmkoaW14Nl9wY2llLT5wY2ksDQo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTWl8xTSArDQo+ID4gPiArDQo+IElNWDhNUV9Q Q0lFX0xJTktfQ0FQX1JFR19PRkZTRVQsDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2YWwpOw0KPiA+ID4gKyAgICAgICAgICAgICBicmVhazsNCj4gPiA+ICAgICAgIGNh c2UgSU1YN0Q6DQo+ID4gPiAgICAgICAgICAgICAgIHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoaW14 Nl9wY2llLT5wY2llcGh5X3Jlc2V0KTsNCj4gPiA+ICAgICAgICAgICAgICAgaW14N2RfcGNpZV93 YWl0X2Zvcl9waHlfcGxsX2xvY2soaW14Nl9wY2llKTsNCj4gPiA+IEBAIC00ODMsNiArNTM2LDE1 IEBAIHN0YXRpYyB2b2lkDQo+ID4gPiBpbXg2X3BjaWVfZGVhc3NlcnRfY29yZV9yZXNldChzdHJ1 Y3QNCj4gPiA+IGlteDZfcGNpZSAqaW14Nl9wY2llKSAgc3RhdGljIHZvaWQgaW14Nl9wY2llX2lu aXRfcGh5KHN0cnVjdA0KPiA+ID4gaW14Nl9wY2llDQo+ID4gPiAqaW14Nl9wY2llKSAgew0KPiA+ ID4gICAgICAgc3dpdGNoIChpbXg2X3BjaWUtPnZhcmlhbnQpIHsNCj4gPiA+ICsgICAgIGNhc2Ug SU1YOE1ROg0KPiA+ID4gKyAgICAgICAgICAgICAvKg0KPiA+ID4gKyAgICAgICAgICAgICAgKiBU T0RPOiBDdXJyZW50bHkgdGhpcyBjb2RlIGFzc3VtZXMgZXh0ZXJuYWwNCj4gPiA+ICsgICAgICAg ICAgICAgICogb3NjaWxsYXRvciBpcyBiZWluZyB1c2VkDQo+ID4gPiArICAgICAgICAgICAgICAq Lw0KPiA+ID4gKyAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211 eGNfZ3ByLA0KPiBpbXg2X3BjaWUtPmdwcjF4LA0KPiA+ID4gKw0KPiBJTVg4TVFfR1BSX1BDSUVf UkVGX1VTRV9QQUQsDQo+ID4gPiArDQo+IElNWDhNUV9HUFJfUENJRV9SRUZfVVNFX1BBRCk7DQo+ ID4gPiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gICAgICAgY2FzZSBJTVg3RDoNCj4gPiA+ ICAgICAgICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwN Cj4gSU9NVVhDX0dQUjEyLA0KPiA+ID4NCj4gSU1YN0RfR1BSMTJfUENJRV9QSFlfUkVGQ0xLX1NF TCwNCj4gPiA+IDApOyBAQA0KPiA+ID4gLTUxOSw3ICs1ODEsOCBAQCBzdGF0aWMgdm9pZCBpbXg2 X3BjaWVfaW5pdF9waHkoc3RydWN0IGlteDZfcGNpZQ0KPiA+ID4gKmlteDZfcGNpZSkNCj4gPiA+ ICAgICAgIH0NCj4gPiA+DQo+ID4gPiAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2ll LT5pb211eGNfZ3ByLCBJT01VWENfR1BSMTIsDQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAg SU1YNlFfR1BSMTJfREVWSUNFX1RZUEUsDQo+IFBDSV9FWFBfVFlQRV9ST09UX1BPUlQgPDwNCj4g PiA+IDEyKTsNCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBpbXg2X3BjaWUtPmRldmlj ZV90eXBlWzBdLA0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlteDZfcGNpZS0+ZGV2 aWNlX3R5cGVbMV0pOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAgc3RhdGljIGludCBpbXg2X3Nl dHVwX3BoeV9tcGxsKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkgQEANCj4gPiA+IC01Mjgs Nw0KPiA+ID4gKzU5MSw4IEBAIHN0YXRpYyBpbnQgaW14Nl9zZXR1cF9waHlfbXBsbChzdHJ1Y3Qg aW14Nl9wY2llDQo+ID4gPiArKmlteDZfcGNpZSkNCj4gPiA+ICAgICAgIGludCBtdWx0LCBkaXY7 DQo+ID4gPiAgICAgICB1MzIgdmFsOw0KPiA+ID4NCj4gPiA+IC0gICAgIGlmIChpbXg2X3BjaWUt PnZhcmlhbnQgPT0gSU1YN0QpDQo+ID4gPiArICAgICBpZiAoaW14Nl9wY2llLT52YXJpYW50ID09 IElNWDdEIHx8DQo+ID4gPiArICAgICAgICAgaW14Nl9wY2llLT52YXJpYW50ID09IElNWDhNUSkN Cj4gPiA+ICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ID4gPg0KPiA+ID4gICAgICAgc3dpdGNo IChwaHlfcmF0ZSkgew0KPiA+ID4gQEAgLTYxNiw2ICs2ODAsNyBAQCBzdGF0aWMgdm9pZCBpbXg2 X3BjaWVfbHRzc21fZW5hYmxlKHN0cnVjdCBkZXZpY2UNCj4gPiA+ICpkZXYpDQo+ID4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTVg2UV9HUFIxMl9QQ0lFX0NUTF8yKTsNCj4g PiA+ICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiAgICAgICBjYXNlIElNWDdEOg0KPiA+ID4g KyAgICAgY2FzZSBJTVg4TVE6ICAgICAgICAgICAgLyogRkFMTFRIUk9VR0ggKi8NCj4gPiA+ICAg ICAgICAgICAgICAgcmVzZXRfY29udHJvbF9kZWFzc2VydChpbXg2X3BjaWUtPmFwcHNfcmVzZXQp Ow0KPiA+ID4gICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ICAgICAgIH0NCj4gPiA+IEBAIC03 OTgsMTAgKzg2MywyNCBAQCBzdGF0aWMgdm9pZCBpbXg2X3BjaWVfY2xrX2Rpc2FibGUoc3RydWN0 DQo+ID4gPiBpbXg2X3BjaWUNCj4gPiA+ICppbXg2X3BjaWUpDQo+ID4gPiAgICAgICBjbGtfZGlz YWJsZV91bnByZXBhcmUoaW14Nl9wY2llLT5wY2llX3BoeSk7DQo+ID4gPiAgICAgICBjbGtfZGlz YWJsZV91bnByZXBhcmUoaW14Nl9wY2llLT5wY2llX2J1cyk7DQo+ID4gPg0KPiA+ID4gLSAgICAg aWYgKGlteDZfcGNpZS0+dmFyaWFudCA9PSBJTVg3RCkgew0KPiA+ID4gKyAgICAgc3dpdGNoIChp bXg2X3BjaWUtPnZhcmlhbnQpIHsNCj4gPiA+ICsgICAgIGNhc2UgSU1YN0Q6DQo+ID4gPiAgICAg ICAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsDQo+IElP TVVYQ19HUFIxMiwNCj4gPiA+DQo+IElNWDdEX0dQUjEyX1BDSUVfUEhZX1JFRkNMS19TRUwsDQo+ ID4gPg0KPiBJTVg3RF9HUFIxMl9QQ0lFX1BIWV9SRUZDTEtfU0VMKTsNCj4gPiA+ICsgICAgICAg ICAgICAgYnJlYWs7DQo+ID4gPiArICAgICAvKg0KPiA+ID4gKyAgICAgICogRGlzYWJsZSB0aGUg b3ZlcnJpZGUuIENvbmZpZ3VyZSB0aGUgQ0xLX1JFUSMgaGlnaCwgbGV0IHRoZQ0KPiA+ID4gKyAg ICAgICogTDFTUyBhdXRvbWF0aWNhbGx5IGNvbnRyb2xsZWQgYnkgSFcgd2hlbiBsaW5rIGlzIHVw Lg0KPiA+ID4gKyAgICAgICogT3RoZXJ3aXNlLCB0dXJuIG9mZiB0aGUgUkVGX0NMSyB0byBzYXZl IHBvd2VyIGNvbnN1bXB0aW9uLg0KPiA+ID4gKyAgICAgICovDQo+ID4gW1JpY2hhcmQgWmh1XSBB Ym91dCB0aGUgTDFTUyBzdXBwb3J0LCB0aGVyZSBpcyBhIGJhY2stY29tcGF0aWJsZSBpc3N1ZS4N Cj4gPiBXaGVuIG9uZSBub25lLUwxU1MgY2FwYWJpbGl0eSBFUCBkZXZpY2UgaXMgdXNlZCBpbiBv bmUgSFcgZGVzaWduIHNvbHV0aW9uLg0KPiA+IEluIHRoaXMgY2FzZSwgRVAgZGV2aWNlIHdvdWxk bid0IG1hbmlwdWxhdGVkIGl0cyBvd24gQ0xLX1JFUSMuDQo+ID4gVGhlIENMS19SRVEjIHdvdWxk IGJlIGhpZ2ggd2hlbiB0aGUgb3ZlcnJpZGVfZW4gaXMgZGlzYWJsZWQgaGVyZS4NCj4gPiBUaGF0 IG1lYW5zIHRoZSBSRUZDTEsgd291bGQgYmUgdHVybmVkIG9mZiBhYm5vcm1hbGx5Lg0KPiA+IFN5 c3RlbSB3b3VsZCBoYXZlIHByb2JsZW0gd2hlbiB0aGUgUkVGQ0xLIG9mIFBDSWUgaXMgdHVybmVk IG9mZg0KPiBhYm5vcm1hbGx5IGFmdGVyIGxpbmsgaXMgdXAuDQo+ID4NCj4gDQo+IEkgZG9uJ3Qg aGF2ZSBhIGxvdCBvZiBleHBlcnRpc2UgaW4gdGhpcyBhcmVhLCBzbyBwbGVhc2UgdGFrZSBteSBj b21tZW50IHdpdGggYQ0KPiBncmFpbiBvZiBzYWx0LiBUaGUgd2F5IEkgdW5kZXJzdGFuZCBpdCwg aXMgaW4gbGVnYWN5IHN5c3RlbXMgdGhhdCBkbyBub3Qgc3VwcG9ydA0KPiBMMVNTIHdpdGggQ0xL UkVRIHRoYXQgZmVhdHVyZSBzaG91bGRuJ3QgYmUgZW5hYmxlZC91c2VkLiBVbmxlc3MgSSd2ZSBt aXNzZWQNCj4gc29tZXRoaW5nLCBJIHRoaW5rIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBkbyBz byBhbmQgZGlzYWJsZSB0aGUgZmVhdHVyZSBieQ0KPiBjb25maWd1cmluZyBjb3JyZXNwb25kaW5n IENMS1JFUV9CIHBhZCBhcyBHUElPIGFuZCBhZGRpbmcgYSBHUElPIGhvZw0KPiBub2RlIHRvIHB1 bGwgQ0xLUkVRIGxvdy4gRG8geW91IHNlZSBhbnkgcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNo Pw0KW1JpY2hhcmQgWmh1XVNvcnJ5IHRvIHJlcGx5IGxhdGUuIFlvdSdyZSByaWdodC4gVGhlIEwx U1Mgc2hvdWxkbid0IGJlIGVuYWJsZWQgd2hlbg0KIEwxU1Mgbm9uZS1zdXBwb3J0ZWQgRVAgZGV2 aWNlIGlzIGluc2VydGVkLg0KVGhlIENMS1JFUSMgY2FuIGJlIGNvbmZpZ3VyZWQgYXMgSU5QVVQg YW5kIE9ELCBJIHRoaW5rLg0KQnV0IHRoZSBMMVNTIGNhcGFiaWxpdHkgc2hvdWxkIGJlIGZpZ3Vy ZWQgb3V0IGJ5IFNXIGluIGEgcHJvcGVyIG1lY2hhbmlzbS4NCkFuZCBTVyBzaG91bGQgZW5hYmxl IHRoZSBMMVNTIGF1dG9tYXRpY2FsbHkgcmVmZXIgdG8gdGhlIGNhcGFiaWxpdHkuDQpJIGZvdW5k IHRoZSBiZWxvdyBub3RpY2UgaW4gdGhlIEwxU1MgRUNOLg0KIiA1LiBBbmFseXNpcyBvZiB0aGUg U29mdHdhcmUgSW1wbGljYXRpb25zDQpDYXBhYmlsaXR5IGRpc2NvdmVyeSBhbmQgZW5hYmxpbmcg YXJlIHJlcXVpcmVkLiANCiINCg0KPiANCj4gUmVnYXJkbGVzcyB0aG91Z2gsIEkgd2Fzbid0IHJl YWxseSBwbGFubmluZyBvbiBpbmNsdWRpbmcgUE0gc3VwcG9ydCBpbiB0aGlzDQo+IHNlcmllcy4g VGhlIGNvZGUgaW4gcXVlc3Rpb24gc2hvdWxkbid0IGV2ZW4gYmUgaW4gdGhlIHBhdGNoIHNpbmNl IGl0J2xsIG5ldmVyIGJlDQo+IGV4ZWN1dGVkIGJlY2F1c2UgaW14Nl9wY2llX2Nsa19kaXNhYmxl KCkgaXMgb25seSBjYWxsZWQgYnkNCj4gaW14Nl9wY2llX3N1c3BlbmRfbm9pcnEoKSB3aGljaCBp cyBhIG5vLW9wIG9uIGFsbCB2YXJpYW50cyBleGNlcHQgaS5NWDdELg0KPiANCj4gSSdsbCBkcm9w IGFsbCBvZiB0aGUgdW51c2VkIFBNLXJlbGF0ZWQgYml0cyBJIG1pc3NlZCBmcm9tIHRoZSBzZXJp ZXMgYW5kIHdlIGNhbg0KPiBhZGQgdGhlbSBsYXRlciBpbiBhIHNlcGFyYXRlIHN1Ym1pc3Npb24u DQo+IA0KW1JpY2hhcmQgWmh1XSBBZ3JlZSB3aXRoIHRoYXQuDQpUaGUgUE0gZmVhdHVyZSBjYW4g YmUgYWRkZWQgbGF0ZXIgaW4gYSBzdGFuZGFsb25lIHBhdGNoLXNldC4NClRoYW5rcw0KUmljaGFy ZA0KDQo+IFRoYW5rcywNCj4gQW5kcmV5IFNtaXJub3YNCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: hongxing.zhu@nxp.com (Richard Zhu) Date: Thu, 29 Nov 2018 10:52:12 +0000 Subject: [PATCH 3/3] PCI: imx: Add support for i.MX8MQ In-Reply-To: References: <20181117181225.10737-1-andrew.smirnov@gmail.com> <20181117181225.10737-4-andrew.smirnov@gmail.com> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org > -----Original Message----- > From: Andrey Smirnov [mailto:andrew.smirnov at gmail.com] > Sent: 2018?11?27? 2:10 > To: Richard Zhu > Cc: linux-kernel ; Bjorn Helgaas > ; Fabio Estevam ; Chris > Healy ; Lucas Stach ; > Leonard Crestez ; Aisheng DONG > ; dl-linux-imx ; > linux-arm-kernel ; > linux-pci at vger.kernel.org > Subject: Re: [PATCH 3/3] PCI: imx: Add support for i.MX8MQ > > On Sun, Nov 18, 2018 at 11:07 PM Richard Zhu > wrote: > > > > Hi Andrey: > > Thanks for your patch-set. > > I have comment about the L1SS implementation below. > > It's better to figure out one method to fix it. > > > > BR > > Richard > > > > > -----Original Message----- > > > From: Andrey Smirnov [mailto:andrew.smirnov at gmail.com] > > > Sent: 2018?11?18? 2:12 > > > To: linux-kernel at vger.kernel.org > > > Cc: Andrey Smirnov ; > bhelgaas at google.com; > > > Fabio Estevam ; cphealy at gmail.com; > > > l.stach at pengutronix.de; Leonard Crestez ; > > > Aisheng DONG ; Richard Zhu > > > ; dl-linux-imx ; > > > linux-arm-kernel at lists.infradead.org; linux-pci at vger.kernel.org > > > Subject: [PATCH 3/3] PCI: imx: Add support for i.MX8MQ > > > > > > Cc: bhelgaas at google.com > > > Cc: Fabio Estevam > > > Cc: cphealy at gmail.com > > > Cc: l.stach at pengutronix.de > > > Cc: Leonard Crestez > > > Cc: "A.s. Dong" > > > Cc: Richard Zhu > > > Cc: linux-imx at nxp.com > > > Cc: linux-arm-kernel at lists.infradead.org > > > Cc: linux-kernel at vger.kernel.org > > > Cc: linux-pci at vger.kernel.org > > > Signed-off-by: Andrey Smirnov > > > --- > > > drivers/pci/controller/dwc/Kconfig | 2 +- > > > drivers/pci/controller/dwc/pci-imx6.c | 117 > > > ++++++++++++++++++++++++-- > > > 2 files changed, 113 insertions(+), 6 deletions(-) > > > > > > diff --git a/drivers/pci/controller/dwc/Kconfig > > > b/drivers/pci/controller/dwc/Kconfig > > > index 91b0194240a5..2b139acccf32 100644 > > > --- a/drivers/pci/controller/dwc/Kconfig > > > +++ b/drivers/pci/controller/dwc/Kconfig > > > @@ -90,7 +90,7 @@ config PCI_EXYNOS > > > > > > config PCI_IMX6 > > > bool "Freescale i.MX6 PCIe controller" > > > - depends on SOC_IMX6Q || (ARM && COMPILE_TEST) > > > + depends on SOC_IMX8MQ || SOC_IMX6Q || (ARM && > COMPILE_TEST) > > > depends on PCI_MSI_IRQ_DOMAIN > > > select PCIE_DW_HOST > > > > > > diff --git a/drivers/pci/controller/dwc/pci-imx6.c > > > b/drivers/pci/controller/dwc/pci-imx6.c > > > index 3c3002861d25..8d1f310e41a6 100644 > > > --- a/drivers/pci/controller/dwc/pci-imx6.c > > > +++ b/drivers/pci/controller/dwc/pci-imx6.c > > > @@ -8,6 +8,7 @@ > > > * Author: Sean Cross > > > */ > > > > > > +#include > > > #include > > > #include > > > #include > > > @@ -30,6 +31,14 @@ > > > > > > #include "pcie-designware.h" > > > > > > +#define IMX8MQ_PCIE_LINK_CAP_REG_OFFSET 0x7C > > > +#define IMX8MQ_PCIE_LINK_CAP_L1EL_64US (0x6 << > 15) > > > + > > > +#define IMX8MQ_GPR_PCIE_REF_USE_PAD BIT(9) > > > +#define IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE_EN BIT(10) > > > +#define IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE BIT(11) > > > + > > > + > > > #define to_imx6_pcie(x) dev_get_drvdata((x)->dev) > > > > > > enum imx6_pcie_variants { > > > @@ -37,6 +46,7 @@ enum imx6_pcie_variants { > > > IMX6SX, > > > IMX6QP, > > > IMX7D, > > > + IMX8MQ, > > > }; > > > > > > struct imx6_pcie { > > > @@ -48,8 +58,10 @@ struct imx6_pcie { > > > struct clk *pcie_inbound_axi; > > > struct clk *pcie; > > > struct regmap *iomuxc_gpr; > > > + u32 gpr1x; > > > struct reset_control *pciephy_reset; > > > struct reset_control *apps_reset; > > > + struct reset_control *apps_clk_req; > > > struct reset_control *turnoff_reset; > > > enum imx6_pcie_variants variant; > > > u32 tx_deemph_gen1; > > > @@ -59,6 +71,7 @@ struct imx6_pcie { > > > u32 tx_swing_low; > > > int link_gen; > > > struct regulator *vpcie; > > > + u32 device_type[2]; > > > }; > > > > > > /* Parameters for the waiting for PCIe PHY PLL to lock on i.MX7 */ > > > @@ > > > -245,7 +258,8 @@ static void imx6_pcie_reset_phy(struct imx6_pcie > > > *imx6_pcie) { > > > u32 tmp; > > > > > > - if (imx6_pcie->variant == IMX7D) > > > + if (imx6_pcie->variant == IMX7D || > > > + imx6_pcie->variant == IMX8MQ) > > > return; > > > > > > pcie_phy_read(imx6_pcie, PHY_RX_OVRD_IN_LO, &tmp); @@ > -261,6 > > > +275,7 @@ static void imx6_pcie_reset_phy(struct imx6_pcie > > > +*imx6_pcie) > > > pcie_phy_write(imx6_pcie, PHY_RX_OVRD_IN_LO, tmp); } > > > > > > +#ifdef CONFIG_ARM > > > /* Added for PCI abort handling */ static int > > > imx6q_pcie_abort_handler(unsigned long addr, > > > unsigned int fsr, struct pt_regs *regs) @@ -294,6 > > > +309,7 @@ static int imx6q_pcie_abort_handler(unsigned long addr, > > > > > > return 1; > > > } > > > +#endif > > > > > > static void imx6_pcie_assert_core_reset(struct imx6_pcie > > > *imx6_pcie) { @@ -301,6 +317,7 @@ static void > > > imx6_pcie_assert_core_reset(struct > > > imx6_pcie *imx6_pcie) > > > > > > switch (imx6_pcie->variant) { > > > case IMX7D: > > > + case IMX8MQ: /* FALLTHROUGH */ > > > reset_control_assert(imx6_pcie->pciephy_reset); > > > reset_control_assert(imx6_pcie->apps_reset); > > > break; > > > @@ -369,6 +386,18 @@ static int imx6_pcie_enable_ref_clk(struct > > > imx6_pcie *imx6_pcie) > > > break; > > > case IMX7D: > > > break; > > > + case IMX8MQ: > > > + /* > > > + * Set the over ride low and enabled > > > + * make sure that REF_CLK is turned on. > > > + */ > > > + regmap_update_bits(imx6_pcie->iomuxc_gpr, > imx6_pcie->gpr1x, > > > + > IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE, > > > + 0); > > > + regmap_update_bits(imx6_pcie->iomuxc_gpr, > imx6_pcie->gpr1x, > > > + > IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE_EN, > > > + > IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE_EN); > > > + break; > > > } > > > > > > return ret; > > > @@ -397,6 +426,7 @@ static void imx6_pcie_deassert_core_reset(struct > > > imx6_pcie *imx6_pcie) { > > > struct dw_pcie *pci = imx6_pcie->pci; > > > struct device *dev = pci->dev; > > > + unsigned int val; > > > int ret; > > > > > > if (imx6_pcie->vpcie && > > > !regulator_is_enabled(imx6_pcie->vpcie)) { @@ > > > -445,6 +475,29 @@ static void imx6_pcie_deassert_core_reset(struct > > > imx6_pcie *imx6_pcie) > > > } > > > > > > switch (imx6_pcie->variant) { > > > + case IMX8MQ: > > > + reset_control_deassert(imx6_pcie->pciephy_reset); > > > + udelay(100); > > > + /* > > > + * Configure the CLK_REQ# high, let the L1SS > > > + * automatically controlled by HW. > > > + */ > > > + reset_control_assert(imx6_pcie->apps_clk_req); > > > + > > > + /* > > > + * Configure the L1 latency of rc to less than 64us > > > + * Otherwise, the L1/L1SUB wouldn't be enable by > ASPM. > > > + */ > > > + val = dw_pcie_readl_dbi(imx6_pcie->pci, > > > + SZ_1M + > > > + > IMX8MQ_PCIE_LINK_CAP_REG_OFFSET); > > > + val &= ~PCI_EXP_LNKCAP_L1EL; > > > + val |= IMX8MQ_PCIE_LINK_CAP_L1EL_64US; > > > + dw_pcie_writel_dbi(imx6_pcie->pci, > > > + SZ_1M + > > > + > IMX8MQ_PCIE_LINK_CAP_REG_OFFSET, > > > + val); > > > + break; > > > case IMX7D: > > > reset_control_deassert(imx6_pcie->pciephy_reset); > > > imx7d_pcie_wait_for_phy_pll_lock(imx6_pcie); > > > @@ -483,6 +536,15 @@ static void > > > imx6_pcie_deassert_core_reset(struct > > > imx6_pcie *imx6_pcie) static void imx6_pcie_init_phy(struct > > > imx6_pcie > > > *imx6_pcie) { > > > switch (imx6_pcie->variant) { > > > + case IMX8MQ: > > > + /* > > > + * TODO: Currently this code assumes external > > > + * oscillator is being used > > > + */ > > > + regmap_update_bits(imx6_pcie->iomuxc_gpr, > imx6_pcie->gpr1x, > > > + > IMX8MQ_GPR_PCIE_REF_USE_PAD, > > > + > IMX8MQ_GPR_PCIE_REF_USE_PAD); > > > + break; > > > case IMX7D: > > > regmap_update_bits(imx6_pcie->iomuxc_gpr, > IOMUXC_GPR12, > > > > IMX7D_GPR12_PCIE_PHY_REFCLK_SEL, > > > 0); @@ > > > -519,7 +581,8 @@ static void imx6_pcie_init_phy(struct imx6_pcie > > > *imx6_pcie) > > > } > > > > > > regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, > > > - IMX6Q_GPR12_DEVICE_TYPE, > PCI_EXP_TYPE_ROOT_PORT << > > > 12); > > > + imx6_pcie->device_type[0], > > > + imx6_pcie->device_type[1]); > > > } > > > > > > static int imx6_setup_phy_mpll(struct imx6_pcie *imx6_pcie) @@ > > > -528,7 > > > +591,8 @@ static int imx6_setup_phy_mpll(struct imx6_pcie > > > +*imx6_pcie) > > > int mult, div; > > > u32 val; > > > > > > - if (imx6_pcie->variant == IMX7D) > > > + if (imx6_pcie->variant == IMX7D || > > > + imx6_pcie->variant == IMX8MQ) > > > return 0; > > > > > > switch (phy_rate) { > > > @@ -616,6 +680,7 @@ static void imx6_pcie_ltssm_enable(struct device > > > *dev) > > > IMX6Q_GPR12_PCIE_CTL_2); > > > break; > > > case IMX7D: > > > + case IMX8MQ: /* FALLTHROUGH */ > > > reset_control_deassert(imx6_pcie->apps_reset); > > > break; > > > } > > > @@ -798,10 +863,24 @@ static void imx6_pcie_clk_disable(struct > > > imx6_pcie > > > *imx6_pcie) > > > clk_disable_unprepare(imx6_pcie->pcie_phy); > > > clk_disable_unprepare(imx6_pcie->pcie_bus); > > > > > > - if (imx6_pcie->variant == IMX7D) { > > > + switch (imx6_pcie->variant) { > > > + case IMX7D: > > > regmap_update_bits(imx6_pcie->iomuxc_gpr, > IOMUXC_GPR12, > > > > IMX7D_GPR12_PCIE_PHY_REFCLK_SEL, > > > > IMX7D_GPR12_PCIE_PHY_REFCLK_SEL); > > > + break; > > > + /* > > > + * Disable the override. Configure the CLK_REQ# high, let the > > > + * L1SS automatically controlled by HW when link is up. > > > + * Otherwise, turn off the REF_CLK to save power consumption. > > > + */ > > [Richard Zhu] About the L1SS support, there is a back-compatible issue. > > When one none-L1SS capability EP device is used in one HW design solution. > > In this case, EP device wouldn't manipulated its own CLK_REQ#. > > The CLK_REQ# would be high when the override_en is disabled here. > > That means the REFCLK would be turned off abnormally. > > System would have problem when the REFCLK of PCIe is turned off > abnormally after link is up. > > > > I don't have a lot of expertise in this area, so please take my comment with a > grain of salt. The way I understand it, is in legacy systems that do not support > L1SS with CLKREQ that feature shouldn't be enabled/used. Unless I've missed > something, I think it should be possible to do so and disable the feature by > configuring corresponding CLKREQ_B pad as GPIO and adding a GPIO hog > node to pull CLKREQ low. Do you see any problems with this approach? [Richard Zhu]Sorry to reply late. You're right. The L1SS shouldn't be enabled when L1SS none-supported EP device is inserted. The CLKREQ# can be configured as INPUT and OD, I think. But the L1SS capability should be figured out by SW in a proper mechanism. And SW should enable the L1SS automatically refer to the capability. I found the below notice in the L1SS ECN. " 5. Analysis of the Software Implications Capability discovery and enabling are required. " > > Regardless though, I wasn't really planning on including PM support in this > series. The code in question shouldn't even be in the patch since it'll never be > executed because imx6_pcie_clk_disable() is only called by > imx6_pcie_suspend_noirq() which is a no-op on all variants except i.MX7D. > > I'll drop all of the unused PM-related bits I missed from the series and we can > add them later in a separate submission. > [Richard Zhu] Agree with that. The PM feature can be added later in a standalone patch-set. Thanks Richard > Thanks, > Andrey Smirnov