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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C42F8C433FE for ; Wed, 27 Oct 2021 06:18:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AC1EE60F0F for ; Wed, 27 Oct 2021 06:18:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238384AbhJ0GVH (ORCPT ); Wed, 27 Oct 2021 02:21:07 -0400 Received: from mail-eopbgr60079.outbound.protection.outlook.com ([40.107.6.79]:23974 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S229887AbhJ0GVF (ORCPT ); Wed, 27 Oct 2021 02:21:05 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cR7rsEh1m4lLewcqXcwhGqp6yCRjT6BkPvTHdp9PTYL4FrF8mpl9rJm8iX/Fo37lri8Mj34DgKSJqZF6gugDoLkQe60U5czMrvAJZmNqtN+5wF2LFQOSUPtgfZfv/M54RedwhYNRbKHWolmi9uL4sZyATa0Pw8hNtr/Sru9d9kxhR2rrnttblCZYQBtCGpaWLs2DV4yd4ZcTadkQ0SKVA9wOzi6fRi9CnBZR1tNwNPcFtE4F0WnZsRQvmpfTnlJnIKjE0eeJLITc9cSrAefrp15dG932450lqZEnj2XvXYeJM5uJt+H593RRuWoIoRAFZh5XAJ4ODsXdYN8o6aRtMQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rT+iwICB4uPuzLpCalOvd3jQLnGkQY+AzSm5N+EvUb8=; b=Qrxszre6pDFar9loyd/49fMgaYI9Glh7A04820N8QqSh/0dgVCNDje2iRCJRrpYX1ehGPxWTPVSoo/gka5ZNEhj6w45RibOY5RvR8XfoKxY0HGVb6tSuYep1z3r900gHN5IdYpoxk3lC9n3ff6wnPSma3X5s3dpJOSewDyQqg4wMoyMFGrOMVynDg4tkEX2lOOBPdO9/u6TjEkWLkaGhRCSs4dzg/yRSLe8ZOzBtIp7LVjOZLz32sP5yVmThF0aAykQIjlLNrisKmpXIzbQByiEll+4fPQ06Cn0iFQms/IZniPW922RzW9atffoU2eqYpspa56sO8ExrGMMdgAsy6g== 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=rT+iwICB4uPuzLpCalOvd3jQLnGkQY+AzSm5N+EvUb8=; b=ihBDqwNeHTpk/FezjQ1ODoTUJb3/22K55vv882j0c9RhfGBnG7IR3kYnUo6+w7jafTtg2SR7E+VYFVonqrKdZZA6oFBV5xnlOgbvo30DKAO9GVBbd7i2x1xCwWU19AqXHmBskkro5JZ9PFlBlaP9iTks0z4fgLdy94GX3+bFGOQ= Received: from AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) by AS8PR04MB9048.eurprd04.prod.outlook.com (2603:10a6:20b:443::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13; Wed, 27 Oct 2021 06:18:38 +0000 Received: from AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::b059:46c6:685b:e0fc]) by AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::b059:46c6:685b:e0fc%5]) with mapi id 15.20.4649.014; Wed, 27 Oct 2021 06:18:38 +0000 From: Richard Zhu To: "tharvey@gateworks.com" CC: Lucas Stach , Kishon Vijay Abraham I , "vkoul@kernel.org" , Rob Herring , "galak@kernel.crashing.org" , Shawn Guo , "linux-phy@lists.infradead.org" , Device Tree Mailing List , Linux ARM Mailing List , open list , Sascha Hauer , dl-linux-imx Subject: RE: [PATCH v3 0/9] add the imx8m pcie phy driver and imx8mm pcie support Thread-Topic: [PATCH v3 0/9] add the imx8m pcie phy driver and imx8mm pcie support Thread-Index: AQHXwf8T9WRZIWT4CUunBVSnJ63L4qvZhp6ggAD4IYCAAKk/cIABRTmAgABCoVCAAPyvgIAAhMLwgAEGQACAAA+SAIADuD4QgABZ2ZCAAKpdAIAAx5NwgAC3poCAAK5bEA== Date: Wed, 27 Oct 2021 06:18:38 +0000 Message-ID: References: <1634028078-2387-1-git-send-email-hongxing.zhu@nxp.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0fb2c547-e270-4984-ce28-08d999119d68 x-ms-traffictypediagnostic: AS8PR04MB9048: x-ld-processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xI5eSTtXoFMJii+QF725W+IhzOF+yj3ERvh+oeZQyGervPSXghhbqlXgfgRdCNt6qAYS+MMXPMuaoiuqTdZLg2Qui6bQUy4HBOjp3iTiefBS53mNTW/aX/5VE+k2pfKsyoKmfuxbd0hOhpenjE6ASrr0Gzwu/GJy6/kri5KikW6Wa7KCl62x7fMEs7dlzVrQtfC3obIjBla4vaewR1IecJZ3HznbEJf37W+SNQc8iZvDaqDl+Pah8shjmSg7cOdvuw4cW5TWkbA7LI0NC5+hevGAv8ahsyYpzsUnm/b/TMXuL1bSM/GnV/TuayYzjPLdivtW9Vp0UbhA290mPU2BpesCSUE0ixRidGV+qxQmYs8fD3RkAAL4j3ThoZctCGQKFZBDoISLMi44Dl7E190yPCIcU25xmToL/ouNYgqc3qq5Mz/UoqBpN/EBgCCN29Q2daNelbshy7oxSYIwHc6g+Sw0Wqh+k0WqCN5uz3myPkGwe/5YYit5OgDEpoYw07X2XBv7lVkT8fs62zPLzjhFOretSjcxHAkfD8wyUKzzz4o5nI45IRWNv7nPBJnZBC+9TvnQPm4xY66FnVLbhhxFWAptjmk4rLW0OgBJifMZqu32c2NYLMn+hosxn2snY4VsrvArN4Z4LZSyA7CdObE4p28m4U+Bt+KbB59vYH0RcXzQQo78h4vh/67P6PnMcNcqkvd0rh1XY9lUzgDh0/q/bg9Y1r2wzzKIhbA25wOrMWc= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR04MB8676.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(6506007)(86362001)(71200400001)(2906002)(52536014)(53546011)(38070700005)(8676002)(186003)(7696005)(55016002)(316002)(7416002)(508600001)(26005)(9686003)(33656002)(38100700002)(6916009)(76116006)(30864003)(66476007)(66446008)(64756008)(66556008)(66946007)(122000001)(8936002)(5660300002)(83380400001)(54906003)(4326008)(32563001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?L0xlbW40SDA1eDNxREFsSjNPV2Z1aHNYOW5DOUpNcDBQOEJoNnFWWTNOSGVZ?= =?utf-8?B?Yjg0L1RLaGNCdGxuOUFHWUtpdnpDam1HU2FGMGxwSTNkK1BzRVRvZk9nWm9k?= =?utf-8?B?czNGNVRZdGFDc1c3QWpKMmVzdTlsdExIa1ZKMlRCRlVlb0oyV1ZDSWduZmkv?= =?utf-8?B?eXBrSTJYZWlqYXc4NmgyVDB2dnpqeUFJSWFkZWd4QkJCVVRxV3E2UEhteUVu?= =?utf-8?B?RW52U085anBHdFJVUkJ2bFlCQ00vU3JLZUJaOHdwSDdMalpOcHFOMFlkZDVs?= =?utf-8?B?RTdZRWFjSnliVTZwYVBNcmNBOFVsSFlRaEc0QXU2WEwyZmJIckxlaFFNWnJL?= =?utf-8?B?RSs1Y1hIc3V2MXcvY2c0ZTd5a3NZTjYwdlcwdGhRRG1EUlVOc0lZc2w5UkZO?= =?utf-8?B?NkR3MkdOaUdrK3Y2cWtPZmJ3QVlsNGJtSVcvWlIzaDFXakZVVFVpcUFvYUhn?= =?utf-8?B?UW5GY09IVTh3dXpiWXRTMjJpd3RGWHFKZ2JoaldJSWFtaWZ4VnJTQUsvV1U0?= =?utf-8?B?NmNUZk90Vlp5WXhWSXZQVUVTRGtDcUN0Mm9HZHJZSXJzRXM1aHJISHF0clRS?= =?utf-8?B?V3RlVlFYbGVkd2ZZTnFmZTc3R1kvSWN1OXNZZWNCNDkvRWJlM0hoTDZ3Y0Jn?= =?utf-8?B?dDVuaEMrRFFWL0FJMjZVN2xLTWJoWmtJZzBXeWNSdVVDdDlvc3lVU3NpUjFT?= =?utf-8?B?K1A2N0ZBU0xVekVHYU5SQm5uaDVpTlZBK290S040MGNpSlJzOWZwdk9MNWJE?= =?utf-8?B?YnJxZ252Q3VROGlyd3gvYkxuN2I1NWtnQ09kNFgvanF1aDl2WnNTbVlYNzl4?= =?utf-8?B?Tk9JbHJycU93c0I3SGYrRzI4bXd6R0JaeFRkb3FGcm9xVjJFSXlGYVluaGJk?= =?utf-8?B?QitOa3JjTDdvZWdqd1ppYVNqZStHK3dEM0hFcURwNzgveEdycmx2U2REcW8x?= =?utf-8?B?S0I2dXZ3SkZ6SFZyem04azJ2NFVVK3RMamNsZXBuWDhKSzBoR0VxeEloOTAw?= =?utf-8?B?ZDdOSTRoeHVnbmpsLy8zTHlvNXcvVWRlN3JBQ081WktQNDNHN2pWWmVGNWIv?= =?utf-8?B?Sm8xZG41dlZkcWx1QlJ5eExqck5UdmxjTks1YTF4OGhkaktWNnNRbjFRWllK?= =?utf-8?B?TzhrY25uUWtFNW9nQXNRV01BTWsrVnZsbDE4UDQ0MVJ5T0xxdURKTVpWb2FK?= =?utf-8?B?Mmw0ZWRTWHcwWTBGVnl0RDZPVHNVZG1tWG9SNXBHaXVZT1FPT3N6RnNndTZx?= =?utf-8?B?ZU5oUGpDaS82cG9jTmExMUVDQ0FGVHpMU1U5WVo4dXZMdUNmNW5kK2tLMWxW?= =?utf-8?B?QWtrSVA5RXl0cWVwenJ3ZzIzMk0rcEttZXk5YjkvWldWUXNVcGJRbFk1VVRV?= =?utf-8?B?QjVBK3hYMUJPNXYzaUNoMi9reTlPaCt4NkdMdWl1N2NmUUF0QlhlRDliNzUx?= =?utf-8?B?R05MZStYRmlIVFE2cDVpV01HcTVoWWFkK2JqT3p5Wk9lbU1IM3BiblRienFI?= =?utf-8?B?OGtmb2MyTTBOcHBja3c4SkFUZGxaMGZySFFNUTFwNlVVaTBZNi9RbHhFVjZW?= =?utf-8?B?ZFBxRlA4aHJYYit4NjRhTDh1N25yN1J3SEsxM2tvL2xzaUxYSTJzLzJDMFhu?= =?utf-8?B?cnp0V0VCeWxKNUdHamFsRU53TGErQk9OYnByR1dNY0NpZFA2UTVxdWFIdXZw?= =?utf-8?B?S2h1K1VOckh6Mk9FNUFxVlQzaGk4dGxZTFhLQURsblZEclBKYlFzRFNyYS91?= =?utf-8?B?Njc4WitLK0NqVm9xYkQyNHJIZ2dmQitVZkJpbUordEw1NGFVT3pOdXZQOVo1?= =?utf-8?B?THd3M1ZXS1JvMUhPR3RjbHVLZi81aDVpTWtFV1ZMV3poSjFOdHFFMTE1amxP?= =?utf-8?B?cFd3S3hBVmdPdWp4T2FheGZUWjlySU5TZEs5OTNuWXNQeG5rRlJJbm5XMWt0?= =?utf-8?B?VTNhL3pXS1J3UDFIMGQ4OUNWZnNta1Y2am9VQllyaU52Vnp6aEJLQjVjTmFr?= =?utf-8?B?eThlbHRWTWtmSmFIekY1VmxNU1N3bDRVL2NjakRBSHlDNEl1cWFoRE5sbnJm?= =?utf-8?B?RU5HbVRLbjBuODNXZWYvVVFZbUthUkNDUjR2eE1pL3dXTXVnQWVCU1hocGph?= =?utf-8?B?M1lIYStuSWllVCszMWVNM0c2REpGcGNqM2E0VE14K3A1OXBKbVhFYmRnMkM1?= =?utf-8?B?L3c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8676.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0fb2c547-e270-4984-ce28-08d999119d68 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Oct 2021 06:18:38.3144 (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: JYObOfEU2DiDYOLoV4vbaduEzqqJZkQrJ/ejmVIv0QxPAVln+jaR9ASEIukhGC3mkGumKvamDF9Dcj/ah5/MWw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB9048 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBUaW0gSGFydmV5IDx0aGFydmV5 QGdhdGV3b3Jrcy5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAyNywgMjAyMSAxMjow NiBBTQ0KPiBUbzogUmljaGFyZCBaaHUgPGhvbmd4aW5nLnpodUBueHAuY29tPg0KPiBDYzogTHVj YXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0cm9uaXguZGU+OyBLaXNob24gVmlqYXkgQWJyYWhhbSBJ DQo+IDxraXNob25AdGkuY29tPjsgdmtvdWxAa2VybmVsLm9yZzsgUm9iIEhlcnJpbmcgPHJvYmhA a2VybmVsLm9yZz47DQo+IGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc7IFNoYXduIEd1byA8c2hh d25ndW9Aa2VybmVsLm9yZz47DQo+IGxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnOyBEZXZp Y2UgVHJlZSBNYWlsaW5nIExpc3QNCj4gPGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnPjsgTGlu dXggQVJNIE1haWxpbmcgTGlzdA0KPiA8bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnPjsgb3BlbiBsaXN0DQo+IDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPjsgU2FzY2hh IEhhdWVyIDxrZXJuZWxAcGVuZ3V0cm9uaXguZGU+Ow0KPiBkbC1saW51eC1pbXggPGxpbnV4LWlt eEBueHAuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDAvOV0gYWRkIHRoZSBpbXg4bSBw Y2llIHBoeSBkcml2ZXIgYW5kIGlteDhtbSBwY2llDQo+IHN1cHBvcnQNCj4gDQo+IE9uIE1vbiwg T2N0IDI1LCAyMDIxIGF0IDEwOjQxIFBNIFJpY2hhcmQgWmh1IDxob25neGluZy56aHVAbnhwLmNv bT4NCj4gd3JvdGU6DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiBGcm9tOiBUaW0gSGFydmV5IDx0aGFydmV5QGdhdGV3b3Jrcy5jb20+DQo+ID4gPiBTZW50OiBU dWVzZGF5LCBPY3RvYmVyIDI2LCAyMDIxIDE6MTUgQU0NCj4gPiA+IFRvOiBSaWNoYXJkIFpodSA8 aG9uZ3hpbmcuemh1QG54cC5jb20+DQo+ID4gPiBDYzogTHVjYXMgU3RhY2ggPGwuc3RhY2hAcGVu Z3V0cm9uaXguZGU+OyBLaXNob24gVmlqYXkgQWJyYWhhbSBJDQo+ID4gPiA8a2lzaG9uQHRpLmNv bT47IHZrb3VsQGtlcm5lbC5vcmc7IFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+Ow0KPiA+ ID4gZ2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZzsgU2hhd24gR3VvIDxzaGF3bmd1b0BrZXJuZWwu b3JnPjsNCj4gPiA+IGxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnOyBEZXZpY2UgVHJlZSBN YWlsaW5nIExpc3QNCj4gPiA+IDxkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZz47IExpbnV4IEFS TSBNYWlsaW5nIExpc3QNCj4gPiA+IDxsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmc+OyBvcGVuIGxpc3QNCj4gPiA+IDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPjsgU2Fz Y2hhIEhhdWVyDQo+ID4gPiA8a2VybmVsQHBlbmd1dHJvbml4LmRlPjsgZGwtbGludXgtaW14IDxs aW51eC1pbXhAbnhwLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMC85XSBhZGQg dGhlIGlteDhtIHBjaWUgcGh5IGRyaXZlciBhbmQgaW14OG1tDQo+ID4gPiBwY2llIHN1cHBvcnQN Cj4gPiA+DQo+ID4gPiBPbiBNb24sIE9jdCAyNSwgMjAyMSBhdCAxMjoyMyBBTSBSaWNoYXJkIFpo dSA8aG9uZ3hpbmcuemh1QG54cC5jb20+DQo+ID4gPiB3cm90ZToNCj4gPiA+ID4NCj4gPiA+ID4g U25pcHBlZC4uLg0KPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IE15IGJvYXJkcyBkbyBu b3QgdXNlIENMS1JFUSMgc28gSSBkbyBub3QgaGF2ZSB0aGF0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gZGVmaW5lZCBpbiBwaW5tdXggYW5kIEkgZm91bmQgdGhhdCBpZiBJIGFkZA0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IE1YOE1NX0lPTVVYQ19JMkM0X1NDTF9QQ0lFMV9DTEtSRVFfQg0KPiA+ID4g PiA+ID4gPiA+ID4gUENJZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHdvcmtzIG9uIG15IGJvYXJk IGJ1dCB0aGlzIGlzbid0IGEgc29sdXRpb24ganVzdCBhDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g d29yay1hcm91bmQgKEkgaGF2ZSBib2FyZHMgdGhhdCB1c2UgdGhlIG9ubHkgdHdvDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gcG9zc2libGUgcGlucyBmb3IgQ0xLUkVRIGFzIG90aGVyDQo+ID4gPiA+ ID4gPiA+ID4gPiBmZWF0dXJlcykuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiBTaW1pbGFybHkgeW91IHdpbGwgZmluZCBvbiB0aGUgaW14OG1tLWV2ayBpZiB5 b3UNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBjb21tZW50IG91dCB0aGUgQ0xLUkVRICh3aGljaCBp c24ndCByZXF1aXJlZCkgdGhlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gaW14OG1tZXZrIHdpbGwg ZW5kIHVwIGhhbmdpbmcgbGlrZSBteQ0KPiA+ID4gPiA+ID4gPiA+ID4gYm9hcmRzOg0KPiA+ID4g PiA+ID4gPiA+ID4gPiBbUmljaGFyZCBaaHVdIEhpIFRpbToNCj4gPiA+ID4gPiA+ID4gPiA+ID4g UmVnYXJkaW5nIHRoZSBTUEVDLCB0aGUgQ0xLUkVRIyBpcyBtYW5kYXRvcnkgcmVxdWlyZWQsDQo+ ID4gPiA+ID4gPiA+ID4gPiA+IGFuZCBzaG91bGQgYmUNCj4gPiA+ID4gPiA+ID4gPiA+IGNvbmZp Z3VyZWQgYXMgYW4gb3BlbiBkcmFpbiwgYWN0aXZlIGxvdyBzaWduYWwuDQo+ID4gPiA+ID4gPiA+ ID4gPiA+IEFuZCB0aGlzIHNpZ25hbCBzaG91bGQgYmUgZHJpdmVuIGxvdyBieSB0aGUgUENJZSBN LjINCj4gPiA+ID4gPiA+ID4gPiA+ID4gZGV2aWNlIHRvIHJlcXVlc3QgdGhlDQo+ID4gPiA+ID4g PiA+ID4gPiBSRUYgY2xvY2sgYmUgYXZhaWxhYmxlKGFjdGl2ZSBsb3cpLg0KPiA+ID4gPiA+ID4g PiA+ID4gPiBTbywgdGhlcmUgaXMgc3VjaCBraW5kIG9mIENMS1JFUSMgcGluIGRlZmluaXRpb24g b24NCj4gPiA+ID4gPiA+ID4gPiA+ID4gaS5NWDhNTSBFVksNCj4gPiA+ID4gPiA+IGJvYXJkLg0K PiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBBbnl3YXksIEkgdGhpbmsg dGhlIGV4dGVybmFsIE9TQyBjaXJjdWl0IHNob3VsZCBiZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBh bHdheXMgcnVubmluZyBpZiB0aGVyZSBpcw0KPiA+ID4gPiA+ID4gPiA+ID4gbm8gQ0xLUkVRIyBv biB5b3VyIEhXIGJvYXJkIGRlc2lnbi4NCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBUaGUgd2F5IEkgdW5kZXJzdGFuZCBpdCBpcyBDTEtS RVEjIGFsbG93cyB0aGUgaG9zdCB0bw0KPiA+ID4gPiA+ID4gPiA+ID4gZGlzYWJsZSB0aGUgUkVG Q0xLIHdoZW4gbm90IG5lZWRlZCBmb3IgcG93ZXIgc2F2aW5ncyBzbw0KPiA+ID4gPiA+ID4gPiA+ ID4gaXQgd291bGQgc2VlbSBvcHRpb25hbCB0byBpbXBsZW1lbnQgdGhhdCBhbmQgaWYgbm90DQo+ ID4gPiA+ID4gPiA+ID4gPiBpbXBsZW1lbnRlZCBzaG91bGQgYmUgbGVmdCB1bmNvbm5lY3RlZCBv bg0KPiA+ID4gPiA+ID4gdGhlIGNhcmQuDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+IFtSaWNoYXJkIFpodV0gTm8sIG5vdCB0aGF0IHdheS4gUmVnYXJkaW5nIHRoZSBTUEVDLCB0 aGlzDQo+ID4gPiA+ID4gPiA+ID4gc2lnbmFsIGlzDQo+ID4gPiA+ID4gPiBtYW5kYXRvcnkgcmVx dWlyZWQuDQo+ID4gPiA+ID4gPiA+ID4gRXNwZWNpYWxseSBmb3IgdGhlIEwxc3MgdXNhZ2VzLiBU aGlzIHNpZ25hbCB3b3VsZCBiZQ0KPiA+ID4gPiA+ID4gPiA+IE9EKG9wZW4gZHJhaW4pLCBiaS1k aXJlY3Rpb25hbCwgYW5kIG1pZ2h0IGJlIGRyaXZlbg0KPiA+ID4gPiA+ID4gPiA+IGxvdy9oaWdo IGJ5IFJDIG9yIEVQIGF1dG9tYXRpY2FsbHkgaWYNCj4gPiA+ID4gPiA+IEwxc3MgbW9kZXMgYXJl IGVuYWJsZWQuDQo+ID4gPiA+ID4gPiA+ID4gWW91IGNhbiBtYWtlIHJlZmVyZW5jZSB0byB0aGUN Cj4gPiA+ID4gPiA+ID4gPiAiRUNOX0wxX1BNX1N1YnN0YXRlc193aXRoX0NMS1JFUV8zMV9NYXlf MjAxM19SZXYxMGEiLA0KPiBvcg0KPiA+ID4gdGhlDQo+ID4gPiA+ID4gPiBjaGFwdGVyIDUuNSBM MSBQTSBTdWJzdGF0ZXMgb2YgIlBDSSBFeHByZXNzIEJhc2UgU3BlY2lmaWNhdGlvbiwgUmV2Lg0K PiA+ID4gPiA+ID4gNC4wIFZlcnNpb24gMS4wIi4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiBDTEtSRVEgaXMgb25seSBtYW5kYXRvcnkgaWYgeW91IHdpc2gg dG8gc3VwcG9ydCBjbG9jayBwb3dlcg0KPiA+ID4gPiA+ID4gPiBtYW5hZ2VtZW50LiBNYW55IGJv YXJkcyB3aXRoIGEgUENJIGhvc3QgY29udHJvbGxlciBkbyBub3QNCj4gPiA+ID4gPiA+ID4gc3Vw cG9ydCB0aGlzLg0KPiA+ID4gPiA+IFtSaWNoYXJkIFpodV0gT2theSwgdW5kZXJzdG9vZC4NCj4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2lt eDhtbS1ldmsuZHRzaQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGIvYXJjaC9hcm02NC9ib290L2R0 cy9mcmVlc2NhbGUvaW14OG1tLWV2ay5kdHNpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gaW5kZXgg NWNlNDNkYWEwYzhiLi5mMDAyM2I0OGY0NzUgMTAwNjQ0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g LS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1tLWV2ay5kdHNpDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14 OG1tLWV2ay5kdHNpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTQ0OCw3ICs0NDgsOSBAQA0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICBwaW5j dHJsX3BjaWUwOiBwY2llMGdycCB7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAg ICAgIGZzbCxwaW5zID0gPA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsvKg0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gTVg4TU1fSU9NVVhDX0kyQzRfU0NMX1BD SUUxX0NMS1JFUV9CICAgIDB4NjENCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiArKi8NCj4gPiA+ID4g PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gTVg4TU1fSU9NVVhDX1NBSTJfUlhGU19H UElPNF9JTzIxDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gMHg0MQ0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ICAgICAgICAgICAgICAgICA+Ow0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgfTsN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEkgaGF2ZSBQQ0ll IHdvcmtpbmcgd2l0aCBhIGRyaXZlciB0aGF0IEkgcG9ydGVkIGZyb20NCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiBOWFAncyBrZXJuZWwgd2hpY2ggZGlmZmVycyBmcm9tIHlvdXIgZHJpdmVyIGluIHRo YXQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiB0aGUgUENJZSBQSFkgaXMgbm90IGFic3RyYWN0ZWQg dG8gaXRzIG93biBkcml2ZXIgc28NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBJIHRoaW5rIHRoaXMg aGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBvcmRlciBpbg0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+IHdoaWNoIHRoZSBwaHkgaXMgcmVzZXQgb3INCj4gPiA+ID4gPiBpbml0aWFsaXplZD8NCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiBUaGUgY29uZmlndXJhdGlvbiBvZg0KPiA+ID4gPiA+ID4gPiA+ ID4gZ3ByMTQgYml0cyBsb29rcyBjb3JyZWN0IHRvIG1lLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBb UmljaGFyZCBaaHVdIFRoZSBDTEtSRVEjIFBJTiBkZWZpbml0aW9uIHNob3VsZG4ndCBiZQ0KPiBt YXNrZWQuDQo+ID4gPiA+ID4gPiA+ID4gPiA+IEluIHRoZSBOWFAncyBsb2NhbCBCU1Aga2VybmVs LCBJIGp1c3QgZm9yY2UgQ0xLUkVRIw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBsb3cgdG8gbGV2ZWwg dXAgdGhlIEhXDQo+ID4gPiA+ID4gPiA+ID4gPiBjb21wYXRpYmlsaXR5Lg0KPiA+ID4gPiA+ID4g PiA+ID4gPiBUaGF0J3MgbWlnaHQgdGhlIHJlYXNvbiB3aHkgdGhlIFBDSWUgd29ya3Mgb24geW91 ciBIVw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBib2FyZCBhbHRob3VnaCB0aGUNCj4gPiA+ID4gPiA+ ID4gPiA+IENMS1JFUSMgUElOIGlzIG5vdCBkZWZpbmVkLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBU aGlzIG1ldGhvZCBpcyBhIGxpdHRsZSBydWRlIGFuZCB2aW9sYXRlIHRoZSBTUEVDLCBhbmQNCj4g PiA+ID4gPiA+ID4gPiA+ID4gbm90IHJlY29tbWVuZGVkDQo+ID4gPiA+ID4gPiA+ID4gPiBhbHRo b3VnaCBpdCBsZXZlbHMgdXAgdGhlIEhXIGNvbXBhdGliaWxpdHkuDQo+ID4gPiA+ID4gPiA+ID4g PiA+IFNvIEkgZHJvcCB0aGlzIG1ldGhvZCBpbiB0aGlzIHNlcmllcy4NCj4gPiA+ID4gPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBTb3JyeSwgSSBkb24n dCB1bmRlcnN0YW5kIHdoYXQgeW91IGFyZSBzYXlpbmcgaGVyZS4gSXMNCj4gPiA+ID4gPiA+ID4g PiA+IHRoZXJlIGEgY2hhbmdlIHlvdSBhcmUgZ29pbmcgdG8gbWFrZSB0byB2NCB0aGF0IHdpbGwN Cj4gPiA+ID4gPiA+ID4gPiA+IG1ha2UgdGhpcyB3b3JrIGZvciB0aGUgZXZrIGFuZCBteSBib2Fy ZHM/IFdoYXQgaXMgdGhhdCBjaGFuZ2UNCj4gZXhhY3RseT8NCj4gPiA+ID4gPiA+ID4gPiBbUmlj aGFyZCBaaHVdIE5vLiBXaGF0IEkgc2FpZCBhYm92ZSBpcyB0aGF0IHRoZSBDTEtSRVEjIGlzDQo+ ID4gPiA+ID4gPiA+ID4gZm9yY2VkIHRvIGJlIGxvdyBpbiBOWFAgbG9jYWwgQlNQIGtlcm5lbC4g SSBndWVzcyB0aGlzDQo+ID4gPiA+ID4gPiA+ID4gbWlnaHQgYmUgdGhlIHJlYXNvbiB3aHkgeW91 cg0KPiA+ID4gPiA+ID4gYm9hcmQgd29ya3MuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiBCSVQxMSBhbmQgQklUMTAgb2YgSU9NVVhDX0dQUjE0IGNhbiBiZSB1c2VkIHRvIGZvcmNl IHRoZQ0KPiA+ID4gPiA+ID4gPiA+IENMS1JFUSMgdG8NCj4gPiA+ID4gPiA+IGJlIGxvdy4NCj4g PiA+ID4gPiA+ID4gPiBTZXQgQ0xLUkVRX09WRVJSSURFX0VOKGJpdDEwKSAxYjEsIHRoZW4gd3Jp dGUgb25lIHplcm8gdG8NCj4gPiA+ID4gPiA+IENMS1JFUV9PVkVSUklERShiaXQxMSkuDQo+ID4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gT2ssIHRoYXQgbWFrZXMg c2Vuc2UuIFRob3NlIGJpdHMgYXJlIG5vdCBleHBsYWluZWQgd2VsbCBpbg0KPiA+ID4gPiA+ID4g PiB0aGUgSU1YOE1NUk0uIEFzIG15IGJvYXJkJ3MgZXh0ZXJuYWwgUkVGQ0xLIGlzIGFsd2F5cw0K PiA+ID4gPiA+ID4gPiBlbmFibGVkIHRoYXQgbXVzdCBnYXRlIHRoZSBjbG9jayBpbnRlcm5hbGx5 IHRvIHRoZSBob3N0IGNvbnRyb2xsZXINCj4gYmxvY2suDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+IEkgY2FuIGNvbmZpcm0gdGhhdCBhc3NlcnRpbmcgdGhvc2UgR1BSMTQgYml0cyBkb2Vz IHJlc29sdmUgbXkNCj4gaXNzdWU6DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ICNkZWZp bmUgSU1YOE1NX0dQUl9QQ0lFX0NMS1JFUV9PVkVSUklERV9WQUwgICAgQklUKDExKQ0KPiA+ID4g PiA+ID4gPiAjZGVmaW5lIElNWDhNTV9HUFJfUENJRV9DTEtSRVFfT1ZFUlJJREVfRU4NCj4gQklU KDEwKQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiAgICAgICAgLyoNCj4gPiA+ID4gPiA+ ID4gICAgICAgICAqIGZvciBib2FyZHMgdGhhdCBkbyBub3QgY29ubmVjdCBDTEtSRVEjLA0KPiA+ ID4gPiA+ID4gPiAgICAgICAgICogb3ZlcnJpZGUgQ0xLUkVRIyBhbmQgZHJpdmUgaXQgbG93IGlu dGVybmFsbHkNCj4gPiA+ID4gPiA+ID4gICAgICAgICAqLw0KPiA+ID4gPiA+ID4gPiAgICAgICAg cmVnbWFwX3VwZGF0ZV9iaXRzKGlteDhfcGh5LT5pb211eGNfZ3ByLA0KPiA+ID4gSU9NVVhDX0dQ UjE0LA0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSU1YOE1NX0dQUl9QQ0lFX0NMS1JFUV9P VkVSUklERV9WQUwsIDApOw0KPiA+ID4gPiA+ID4gPiAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRz KGlteDhfcGh5LT5pb211eGNfZ3ByLA0KPiA+ID4gSU9NVVhDX0dQUjE0LA0KPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gSU1YOE1NX0dQUl9QQ0lFX0NMS1JFUV9PVkVSUklERV9FTiwgMSk7DQo+ ID4gPiA+ID4gW1JpY2hhcmQgWmh1XSByZWdtYXAgYml0cyBvcGVyYXRpb25zIHNob3VsZCBtYW5p cHVsYXRlIGFjY29yZGluZw0KPiBiaXRzLg0KPiA+ID4gPiA+IFRoZSBCSVQoMTApIGFuZCBCSVQo MTEpIHNob3VsZCBiZSB0b3VjaGVkIGFjdHVhbGx5Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiA+IFNob3VsZCB0aGlzIGJlIGFkZGVkIGFzIGEgJ2ZzbCxjbGtyZXEtdW5z dXBwb3J0ZWQnIGZsYWcgdGhhdA0KPiA+ID4gPiA+ID4gPiBuZWVkcyB0byBiZSBzZXQgdHJ1ZSB0 byBpbXBsZW1lbnQgdGhlIGFib3ZlIGNvZGU/DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gUmljaGFyZCwNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBTb3JyeSAtIHNw b2tlIHRvbyBzb29uLiBNeSB0ZXN0IHdhcyBmbGF3ZWQgYXMgSSBzdGlsbCB3YXMNCj4gPiA+ID4g PiA+IHBpbm11eGluZyBDTEtSRVEgaW4gbXkgZHQgdG8gd29yayBhcm91bmQgdGhlIGlzc3VlIGFu ZCBhZnRlcg0KPiA+ID4gPiA+ID4gcmVtb3ZlZCB0aGUgYWJvdmUgZGlkIG5vdCByZXNvbHZlIG15 IGlzc3VlLiBUaGUgc2V0dGluZyBvZg0KPiA+ID4gPiA+ID4gT1ZFUlJJREVfRU4gd2FzIHdyb25n IGFib3ZlIChzaG91bGQgbm90IGJlIHNldCB0byAnMScgYnV0DQo+ID4gPiA+ID4gPiBCSVQoMTAp DQo+ID4gPiA+ID4gPiBpbnN0ZWFkKSBidXQgdGhpcyBjb2RlIGFscmVhZHkgZXhpc3RzIGluDQo+ ID4gPiA+ID4gPiBpbXg2X3BjaWVfZW5hYmxlX3JlZl9jbGsgYW5kIGlzIHVzZWQgZm9yIElNWDhN TSBwZXIgeW91ciBwYXRjaA0KPiBzbyB0aGlzIGlzIG5vdCB0aGUgaXNzdWUuDQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gV2hhdCBtYWtlcyBteSBib2FyZCB3b3JrIGlzIHRvIGNsZWFyIEdQUjE0 IGJpdDkgKGxpa2UgdGhlIE5YUA0KPiA+ID4gPiA+ID4ga2VybmVsDQo+ID4gPiA+ID4gPiBkb2Vz KSBzbyBJIGRvbid0IHRoaW5rIHRoaXMgYml0IGRvZXMgd2hhdCB3ZSB0aGluayBpdCBkb2VzDQo+ ID4gPiA+ID4gPiAoc2VsZWN0IGJldHdlZW4gaW50ZXJuYWwgYW5kIGV4dCBjbGspLiBJIHRoaW5r IHNldHRpbmcgaXQNCj4gPiA+ID4gPiA+IGVuYWJsZXMgY2xvY2sgZ2F0aW5nIHZpYQ0KPiA+ID4g PiA+IENMS1JFUSMuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gVGhpcyBhbHNvIHBvaW50cyBv dXQgdGhhdCBwZXJoYXBzIHRoZSBDTEtSRVFfT1ZFUlJJREUgbG9naWMNCj4gPiA+ID4gPiA+IHNo b3VsZCBiZSBtb3ZlZCB0byB0aGUgbmV3IHBoeSBkcml2ZXIgZm9yIElNWDhNTS4NCj4gPiA+ID4g PiBbUmljaGFyZCBaaHVdIEl0IHNvdW5kcyByZWFzb25hYmxlIHRvIGNvbnNpZGVyIHRvIGZvcmNl IHRoZQ0KPiA+ID4gPiA+IENMS1JFUSMgdG8gYmUgbG93Lg0KPiA+ID4gPiA+IEkgd2lsbCB0aGlu ayBhYm91dCB0aGF0IGFuZCBhZGQgdGhpcyBpbiBsYXRlciB2NSBwYXRjaC1zZXQgaWYNCj4gPiA+ ID4gPiBub2JvZHkgaGFzIGRpZmZlcmVudCBjb25jZXJucy4NCj4gPiA+ID4gPiBUaGFua3MuDQo+ ID4gPiA+IFtSaWNoYXJkIFpodV0gSGkgVGltOg0KPiA+ID4gPiBBcyB5b3UgbWVudGlvbmVkIGFi b3ZlLCB0aGUgQ0xLUkVRIyBHUElPIFBJTiBpcyBub3QgdXNlZCBmb3IgUENJZQ0KPiA+ID4gPiBv bg0KPiA+ID4geW91ciBib2FyZCwgcmlnaHQ/DQo+ID4gPiA+ICIgKEkgaGF2ZSBib2FyZHMgdGhh dCB1c2UgdGhlIG9ubHkgdHdvIHBvc3NpYmxlIHBpbnMgZm9yIENMS1JFUSBhcw0KPiA+ID4gPiBv dGhlcg0KPiA+ID4gZmVhdHVyZXMpIg0KPiA+ID4gPg0KPiA+ID4gPiBEaWQgdGhlIG92ZXJyaWRl IGNvbmZpZ3VyYXRpb24gb2YgdGhlIGNsa3JlcSMgd2lsbCBicmluZw0KPiA+ID4gPiB1bmV4cGVj dGVkIHJlc3VsdHMNCj4gPiA+IGZvciBvdGhlciBmZWF0dXJlcyBvbiB5b3VyIGJvYXJkPw0KPiA+ ID4gPg0KPiA+ID4NCj4gPiA+IFdoYXQgSSBtZWFuIGlzIHRoYXQgaW14OG1tLXZlbmljZS1ndzc5 MDEuZHRzIHVzZXMgYm90aCBJMkM0IGFuZA0KPiA+ID4gVUFSVDQgYW5kIGJlY2F1c2UgSTJDNF9T Q0wgYW5kIFVBUlQ0X1JYRCBhcmUgdGhlIG9ubHkgdHdvIHBhZHMgdGhhdA0KPiA+ID4gY291bGQg YmUgcGlubXV4ZWQgZm9yIENMS1JFUSMgSSBjYW4ndCB1c2UgdGhlIHdvcmthcm91bmQgb2YgcGlu IG11eGluZw0KPiBpdC4NCj4gPiA+DQo+ID4gPiBDdXJyZW50bHkgeW91ciBkcml2ZXIgb25seSB3 b3JrcyBvbiBteSBpbXg4bW0tdmVuaWNlLSogYm9hcmRzIGlmIEkNCj4gPiA+IGFkZCBvbmUgb2Yg dGhlIGZvbGxvd2luZyBvbiBib2FyZHMgdGhhdCBkb24ndCBjb25uZWN0IHRob3NlIHBhZHMgKG9y DQo+ID4gPiBpZiBJIGNsZWFyDQo+ID4gPiBJTVg4TU1fR1BSX1BDSUVfUkVGX1VTRV9QQUQpOg0K PiA+ID4gTVg4TU1fSU9NVVhDX0kyQzRfU0NMX1BDSUUxX0NMS1JFUV9CDQo+ID4gPiBNWDhNTV9J T01VWENfVUFSVDRfUlhEX1BDSUUxX0NMS1JFUV9CDQo+ID4gPg0KPiA+ID4gTm90ZSB5b3VyICdQ Q0k6IGlteDogYWRkIHRoZSBpbXg4bW0gcGNpZSBzdXBwb3J0JyBwYXRjaCBbMV0gZG9lcw0KPiA+ ID4gZW5hYmxlIHRoaXMgY29kZSBhbHJlYWR5IGluIHRoZSBpbXg2X3BjaWVfZW5hYmxlX3JlZl9j bGsgZnVuY3Rpb24gdG8NCj4gPiA+IG92ZXJyaWRlIFJFRl9DTEsgYW5kIGRyaXZlIGl0IGxvdzoN Cj4gPiA+DQo+ID4gPiBvZmZzZXQgPSBpbXg2X3BjaWVfZ3JwX29mZnNldChpbXg2X3BjaWUpOw0K PiA+ID4gLyoNCj4gPiA+ICogU2V0IHRoZSBvdmVyIHJpZGUgbG93IGFuZCBlbmFibGVkDQo+ID4g PiAqIG1ha2Ugc3VyZSB0aGF0IFJFRl9DTEsgaXMgdHVybmVkIG9uLg0KPiA+ID4gKi8NCj4gPiA+ IHJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsIG9mZnNldCwNCj4gPiA+ ICAgIElNWDhNUV9HUFJfUENJRV9DTEtfUkVRX09WRVJSSURFLA0KPiA+ID4gICAgMCk7DQo+ID4g PiByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBvZmZzZXQsDQo+ID4g PiAgICBJTVg4TVFfR1BSX1BDSUVfQ0xLX1JFUV9PVkVSUklERV9FTiwNCj4gPiA+ICAgIElNWDhN UV9HUFJfUENJRV9DTEtfUkVRX09WRVJSSURFX0VOKTsNCj4gPiA+DQo+ID4gPiBTbyB0aGlzIGlz IGFscmVhZHkgYmVpbmcgcnVuIGFuZCB5ZXQgbXkgYm9hcmRzIHN0aWxsIGRvIG5vdCB3b3JrDQo+ ID4gPiB1bmxlc3MgSSBjbHIgSU1YOE1NX0dQUl9QQ0lFX1JFRl9VU0VfUEFEIGxpa2UgdGhpcyB3 aGljaCBpcyB3aGF0IHRoZQ0KPiA+ID4gTlhQIGRvd25zdHJlYW0gZHJpdmVyIGRvZXM6DQo+ID4g PiByZWdtYXBfdXBkYXRlX2JpdHMoaW14OF9waHktPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxNCwN Cj4gPiA+IElNWDhNTV9HUFJfUENJRV9SRUZfVVNFX1BBRCwgMCk7DQo+ID4gPg0KPiA+ID4gVGhp cyBpcyB3aHkgSSdtIG5vdCBzdXJlIHRoYXQgYml0IGRvZXMgd2hhdCB5b3UgdGhpbmsgaXQgZG9l cy4uLiBJDQo+ID4gPiBmZWVsIGxpa2UgdGhhdCBiaXQgZW5hYmxlcyAnVXNlIENMS1JFUSMgdG8g ZW5hYmxlIENMSycuDQo+ID4gPg0KPiA+ID4gWW91IHRlbGwgbWUgdGhlIGRlc2NyaXB0aW9ucyBm b3IgR1BSMTQgYXJlIHdyb25nIGluIHRoZSByZWZlcmVuY2UgbWFudWFsLg0KPiA+ID4gUGxlYXNl IHByb3ZpZGUgY29ycmVjdCBkZXNjcmlwdGlvbnMgZm9yIHVzIHNvIHdlIGNhbiBzb3J0IHRoaXMg b3V0Lg0KPiA+ID4NCj4gPiBbUmljaGFyZCBaaHVdIEhpIFRpbToNCj4gPiBUaGUgQklUOSBvZiBH UFIxNCBpcyB1c2VkIGFzICJHUFJfUENJRTFfUEhZX0lfQVVYX0VOX09WRVJSSURFX0VOIg0KPiA+ IGFuZCBCSVQxOSBpcyB1c2VkIGFzICJHUFJfUENJRTFfUEhZX0ZVTkNfSV9BVVhfRU4iIG9uIGku TVg4TU0uDQo+ID4gSSB0aGluayB0aGUgdHdvIGJpdHMgZGVzY3JpcHRpb25zIGFyZSB1c2VkIHRv IGRlc2NyaWJlIHRoZSBCSVQxOSBhbmQgQklUOQ0KPiB0b2dldGhlciByZWZlciB0byBteSBndWVz cy4NCj4gPiB7R1BSX1BDSUUxX1BIWV9JX0FVWF9FTl9PVkVSUklERV9FTihCSVQ5KSwNCj4gPiBH UFJfUENJRTFfUEhZX0ZVTkNfSV9BVVhfRU4oQklUMTkpIH0NCj4gPiAyJ2IwMDogRXh0ZXJuYWwg UmVmZXJlbmNlIENsb2NrIEkvTyAoZm9yIFBMTCkgRGlzYWJsZQ0KPiA+IDInYjAxOiBFeHRlcm5h bCBSZWZlcmVuY2UgQ2xvY2sgSS9PIChmb3IgUExMKSBFbmFibGUNCj4gPiAyJ2IxMDogRXh0ZXJu YWwgUmVmZXJlbmNlIENsb2NrIEkvTyAoZm9yIFBMTCkgRGlzYWJsZQ0KPiA+IDInYjExOiBFeHRl cm5hbCBSZWZlcmVuY2UgQ2xvY2sgSS9PIChmb3IgUExMKSBvdXRwdXQgaXMgY29udHJvbGxlZCBi eQ0KPiA+IENMS1JFUSMNCj4gPg0KPiA+IFRoZSBvcHRpb24xJjMgc2hvdWxkIGJlIGZvcmJpZGRl biwgc2luY2UgdGhlIGV4dGVybmFsIFJFRiBDTEsgSS9PIHNob3VsZA0KPiBiZSBlbmFibGVkIG9u IHlvdXIgYm9hcmQgYW5kIEVWSyBib2FyZC4NCj4gPiBJbiB0aGUgb3B0aW9uMiY0LCB0aGUgQklU MTkgc2hvdWxkIGJlIHNldCB0byBiZSAxJ2IxLicNCj4gPg0KPiA+IFNvLCByZWdhcmRpbmcgbXkg dW5kZXJzdGFuZCwgaWYgdGhlIENMS1JFUSMgaXMgbm90IHBpbm11eGVkIGluIHlvdXIgdXNlDQo+ IGNhc2UsIHRoZSBJTVg4TU1fR1BSX1BDSUVfUkVGX1VTRV9QQUQgKEJJVDkpIHNob3VsZCBiZSAx J2IwLg0KPiA+DQo+IA0KPiBSaWNoYXJkLA0KPiANCj4gT2ssIGlmIHRoaXMgaXMgdGhlIGNhc2Ug dGhlbiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jIGZvciBJTVg4TU0NCj4g c2hvdWxkIG5vdCB0b3VjaCBHUFIxNCBhbmQgJ1t2Myw5LzldIFBDSTogaW14OiBhZGQgdGhlIGlt eDhtbSBwY2llIHN1cHBvcnQnDQo+IHNob3VsZCBoYXZlIHRoaXMgb24gdG9wIGFuZCBzcXVhc2hl ZDoNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmMN Cj4gYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jDQo+IGluZGV4IDdjODli ZDFhNjQ0MS4uNDU4ZDU0YzhlMzg1IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9s bGVyL2R3Yy9wY2ktaW14Ni5jDQo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3Bj aS1pbXg2LmMNCj4gQEAgLTQ1Miw4ICs0NTIsMTIgQEAgc3RhdGljIGludCBpbXg2X3BjaWVfZW5h YmxlX3JlZl9jbGsoc3RydWN0DQo+IGlteDZfcGNpZSAqaW14Nl9wY2llKQ0KPiAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ICAgICAgICAgY2FzZSBJTVg3RDoNCj4gICAgICAgICAgICAgICAgIGJy ZWFrOw0KPiAtICAgICAgIGNhc2UgSU1YOE1ROg0KPiAgICAgICAgIGNhc2UgSU1YOE1NOg0KPiAr ICAgICAgICAgICAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGlteDZfcGNpZS0+cGNpZV9h dXgpOw0KPiArICAgICAgICAgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgZGV2X2VycihkZXYsICJ1bmFibGUgdG8gZW5hYmxlIHBjaWVfYXV4DQo+IGNsb2NrXG4iKTsN Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgIGNhc2UgSU1YOE1ROg0KPiAgICAg ICAgICAgICAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGlteDZfcGNpZS0+cGNpZV9hdXgp Ow0KPiAgICAgICAgICAgICAgICAgaWYgKHJldCkgew0KPiAgICAgICAgICAgICAgICAgICAgICAg ICBkZXZfZXJyKGRldiwgInVuYWJsZSB0byBlbmFibGUgcGNpZV9hdXgNCj4gY2xvY2tcbiIpOw0K PiANCltSaWNoYXJkIFpodV0gU29ycnksIEkgbWlnaHQgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0J3Mg bWVhbmluZyBvZiB0aGUgY2hhbmdlcy4NCldoYXQncmUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4g YmVmb3JlIGFuZCBhZnRlciB0aGUgY2hhbmdlcz8NCg0KPiANCj4gQW5kIHlvdXIgJ1t2Myw1Lzld IHBoeTogZnJlZXNjYWxlOiBwY2llOiBpbml0aWFsaXplIHRoZSBpbXg4IHBjaWUgc3RhbmRhbG9u ZSBwaHkNCj4gZHJpdmVyJyBzaG91bGQgaGF2ZSB0aGlzIG9uIHRvcCBhbmQgc3F1YXNoZWQ6DQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bS1wY2llLmMN Cj4gYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bS1wY2llLmMNCj4gaW5kZXgg MzE3Y2Y2MWJmZjM3Li4yN2NhMGI5ZjFkOTIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvcGh5L2Zy ZWVzY2FsZS9waHktZnNsLWlteDhtLXBjaWUuYw0KPiArKysgYi9kcml2ZXJzL3BoeS9mcmVlc2Nh bGUvcGh5LWZzbC1pbXg4bS1wY2llLmMNCj4gQEAgLTQzLDcgKzQzLDcgQEANCj4gICNkZWZpbmUg SU1YOE1NX0dQUl9QQ0lFX0NNTl9SU1QgICAgICAgICAgICAgICAgQklUKDE4KQ0KPiAgI2RlZmlu ZSBJTVg4TU1fR1BSX1BDSUVfUE9XRVJfT0ZGICAgICAgQklUKDE3KQ0KPiAgI2RlZmluZSBJTVg4 TU1fR1BSX1BDSUVfU1NDX0VOICAgICAgICAgQklUKDE2KQ0KPiAtI2RlZmluZSBJTVg4TU1fR1BS X1BDSUVfUkVGX1VTRV9QQUQgICAgQklUKDkpDQo+ICsjZGVmaW5lIElNWDhNTV9HUFJfUENJRV9B VVhfRU5fT1ZFUlJJREUgICAgICAgIEJJVCg5KQ0KPiANCj4gIHN0cnVjdCBpbXg4X3BjaWVfcGh5 IHsNCj4gICAgICAgICB1MzIgICAgICAgICAgICAgICAgICAgICByZWZjbGtfcGFkX21vZGU7DQo+ IEBAIC02MywxMiArNjMsMTIgQEAgc3RhdGljIGludCBpbXg4X3BjaWVfcGh5X2luaXQoc3RydWN0 IHBoeSAqcGh5KQ0KPiAgICAgICAgIHJlc2V0X2NvbnRyb2xfYXNzZXJ0KGlteDhfcGh5LT5yZXNl dCk7DQo+IA0KPiAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg4X3BoeS0+aW9tdXhjX2dw ciwgSU9NVVhDX0dQUjE0LA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICBJTVg4TU1fR1BS X1BDSUVfUkVGX1VTRV9QQUQsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIGlteDhfcGh5 LT5yZWZjbGtfcGFkX21vZGUgPT0gMSA/DQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIElN WDhNTV9HUFJfUENJRV9SRUZfVVNFX1BBRCA6IDApOw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICBJTVg4TU1fR1BSX1BDSUVfQVVYX0VOX09WRVJSSURFLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAwKTsNCj4gICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14OF9waHktPmlv bXV4Y19ncHIsIElPTVVYQ19HUFIxNCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1Y OE1NX0dQUl9QQ0lFX0FVWF9FTiwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOE1N X0dQUl9QQ0lFX0FVWF9FTik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGlteDhfcGh5 LT5yZWZjbGtfcGFkX21vZGUgPT0NCj4gSU1YOF9QQ0lFX1JFRkNMS19QQURfSU5QVVQgPw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICBJTVg4TU1fR1BSX1BDSUVfQVVYX0VOIDogMCk7DQo+ ICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDhfcGh5LT5pb211eGNfZ3ByLCBJT01VWENf R1BSMTQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNWDhNTV9HUFJfUENJRV9QT1dF Ul9PRkYsIDApOw0KPiAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg4X3BoeS0+aW9tdXhj X2dwciwgSU9NVVhDX0dQUjE0LCBAQA0KPiAtNzYsNyArNzYsNyBAQCBzdGF0aWMgaW50IGlteDhf cGNpZV9waHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpDQo+IA0KPiAgICAgICAgIHJlZ21hcF91cGRh dGVfYml0cyhpbXg4X3BoeS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjE0LA0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJTVg4TU1fR1BSX1BDSUVfUkVGX0NMS19TRUwsDQo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgIGlteDhfcGh5LT5yZWZjbGtfcGFkX21vZGUgPT0gMSA/DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIGlteDhfcGh5LT5yZWZjbGtfcGFkX21vZGUgPT0NCj4g SU1YOF9QQ0lFX1JFRkNMS19QQURfSU5QVVQgPw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJTVg4TU1fR1BSX1BDSUVfUkVGX0NMS19FWFQgOg0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJTVg4TU1fR1BSX1BDSUVfUkVGX0NMS19QTEwpOw0KPiAgICAgICAgIHVzbGVlcF9yYW5n ZSgxMDAsIDIwMCk7DQo+IA0KPiBJIHRlc3RlZCB0aGlzIGFuZCBpdCB3b3JrcyBib3RoIG9uIGlt eDhtbS1ldmsgYW5kIGlteDhtbS12ZW5pY2UtKiB3aGljaA0KPiBib3RoIGhhdmUgZXh0ZXJuYWwg Y2xrZ2VuLg0KPiANCj4gSG93ZXZlciwgdGhlIGFib3ZlIGRvZXMgbm90IHNldCBJTVg4TU1fR1BS X1BDSUVfQVVYX0VOX09WRVJSSURFDQo+IGZvciB0aGUgY2FzZSB3aGVyZSBDTEtSRVEjIGlzIGNv bm5lY3RlZCBhbmQgdGh1cyBzaG91bGQgYmUgdXNlZCBzbyBJIHRoaW5rDQo+IHdlIG5lZWQgdG8g YWRkIGEgcHJvcGVydHkgZm9yIHRoYXQgdG8gZGVmaW5lIGlmIENMS1JFUSMgaXMgaG9va2VkIHVw IG9yIG5vdC4gSQ0KPiB0ZXN0ZWQgZW5hYmxpbmcgSU1YOE1NX0dQUl9QQ0lFX0FVWF9FTl9PVkVS UklERSBhbmQgYXMgZXhwZWN0ZWQNCj4gdGhhdCB3b3JrZWQgb24gdGhlIGlteDhtbS1ldmsgd2hp Y2ggaG9va3MgdXAgQ0xLUkVRIyBidXQgbm90DQo+IGlteDhtbS12ZW5pY2Ugd2hpY2ggZG9lcyBu b3QgaG9vayB1cCBDTEtSRVEjLg0KPiANCj4gV2hhdCBkbyB5b3UgdGhpbmsgYWJvdXQgYWRkaW5n IGEgcHJvcGVydHkgZm9yIHRoaXM/DQpbUmljaGFyZCBaaHVdIEZpcnN0IG9mIGFsbCwgdGhhbmtz IGEgbG90IGZvciB5b3VyIGhlbHAgdG8gZmlndXJlIG91dCB0aGUgZGV0YWlscy4NCkFncmVlIHdp dGggeW91ciBwcm9wb3NhbC4NCk9uZSBvcHRpb25hbCBwcm9wZXJ0eSAiZnNsLGNsa3JlcS11bnN1 cHBvcnRlZCIgd291bGQgYmUgYWRkZWQgZm9yIHRoZSBDTEtSRVEjIG5vdCBob29rZWQgY2FzZSBs YXRlci4NCg0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9w aHkvZnNsLGlteDgtcGNpZS1waHkueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k aW5ncy9waHkvZnNsLGlteDgtcGNpZS1waHkueWFtbA0KaW5kZXggMDk3YmEyYTI4ZmI0Li4yMjY0 NDUyOTI0Y2MgMTAwNjQ0DQotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv cGh5L2ZzbCxpbXg4LXBjaWUtcGh5LnlhbWwNCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy9waHkvZnNsLGlteDgtcGNpZS1waHkueWFtbA0KQEAgLTU4LDYgKzU4LDExIEBA IHByb3BlcnRpZXM6DQogICAgICRyZWY6IC9zY2hlbWFzL3R5cGVzLnlhbWwjL2RlZmluaXRpb25z L3VpbnQzMg0KICAgICBkZWZhdWx0OiAwDQoNCisgIGZzbCxjbGtyZXEtdW5zdXBwb3J0ZWQ6DQor ICAgIHR5cGU6IGJvb2xlYW4NCisgICAgZGVzY3JpcHRpb246IEEgYm9vbGVhbiBwcm9wZXJ0eSB3 aG9lcyBwcmVzZW5jZSBpbmRpY2F0ZXMgdGhlIENMS1JFUSMNCisgICAgICBzaWduYWwgaXNuJ3Qg c3VwcG9ydGVkIGluIHRoZSBIVyBib2FyZCBkZXNpZ24gKG9wdGlvbmFsIHJlcXVpcmVkKS4NCisN Cg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDhtLXBjaWUu YyBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDhtLXBjaWUuYw0KaW5kZXggMDdl ZWEzOTI4M2VkLi40YjQ0MDJlYWRkY2MgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3BoeS9mcmVlc2Nh bGUvcGh5LWZzbC1pbXg4bS1wY2llLmMNCisrKyBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHkt ZnNsLWlteDhtLXBjaWUuYw0KQEAgLTQzLDcgKzQzLDcgQEANCiAjZGVmaW5lIElNWDhNTV9HUFJf UENJRV9DTU5fUlNUICAgICAgICAgICAgICAgIEJJVCgxOCkNCiAjZGVmaW5lIElNWDhNTV9HUFJf UENJRV9QT1dFUl9PRkYgICAgICBCSVQoMTcpDQogI2RlZmluZSBJTVg4TU1fR1BSX1BDSUVfU1ND X0VOICAgICAgICAgQklUKDE2KQ0KLSNkZWZpbmUgSU1YOE1NX0dQUl9QQ0lFX1JFRl9VU0VfUEFE ICAgIEJJVCg5KQ0KKyNkZWZpbmUgSU1YOE1NX0dQUl9QQ0lFX0FVWF9FTl9PVkVSUklERSAgICAg ICAgQklUKDkpDQoNCiBzdHJ1Y3QgaW14OF9wY2llX3BoeSB7DQogICAgICAgIHZvaWQgX19pb21l bSAgICAgICAgICAgICpiYXNlOw0KQEAgLTU0LDYgKzU0LDcgQEAgc3RydWN0IGlteDhfcGNpZV9w aHkgew0KICAgICAgICB1MzIgICAgICAgICAgICAgICAgICAgICByZWZjbGtfcGFkX21vZGU7DQog ICAgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgIHR4X2RlZW1waF9nZW4xOw0KICAgICAgICB1 MzIgICAgICAgICAgICAgICAgICAgICB0eF9kZWVtcGhfZ2VuMjsNCisgICAgICAgYm9vbCAgICAg ICAgICAgICAgICAgICAgY2xrcmVxX3VudXNlZDsNCiB9Ow0KDQogc3RhdGljIGludCBpbXg4X3Bj aWVfcGh5X2luaXQoc3RydWN0IHBoeSAqcGh5KQ0KQEAgLTY1LDEzICs2NiwxNSBAQCBzdGF0aWMg aW50IGlteDhfcGNpZV9waHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpDQogICAgICAgIHJlc2V0X2Nv bnRyb2xfYXNzZXJ0KGlteDhfcGh5LT5yZXNldCk7DQoNCiAgICAgICAgcGFkX21vZGUgPSBpbXg4 X3BoeS0+cmVmY2xrX3BhZF9tb2RlOw0KKyAgICAgICAvKiBTZXQgQVVYX0VOX09WRVJSSURFIDEn YjAsIHdoZW4gdGhlIENMS1JFUSMgaXNuJ3QgaG9va2VkICovDQogICAgICAgIHJlZ21hcF91cGRh dGVfYml0cyhpbXg4X3BoeS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjE0LA0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgSU1YOE1NX0dQUl9QQ0lFX1JFRl9VU0VfUEFELA0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFkX21vZGUgPT0gSU1YOE1NX0dQUl9QQ0lFX1JFRl9VU0VfUEFEID8N Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIElNWDhNTV9HUFJfUENJRV9SRUZfVVNFX1BBRCA6 IDApOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOE1NX0dQUl9QQ0lFX0FVWF9FTl9P VkVSUklERSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlteDhfcGh5LT5jbGtyZXFfdW51 c2VkID8NCisgICAgICAgICAgICAgICAgICAgICAgICAgIDAgOiBJTVg4TU1fR1BSX1BDSUVfQVVY X0VOX09WRVJSSURFKTsNCiAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDhfcGh5LT5pb211 eGNfZ3ByLCBJT01VWENfR1BSMTQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBJTVg4TU1f R1BSX1BDSUVfQVVYX0VOLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOE1NX0dQUl9Q Q0lFX0FVWF9FTik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRfbW9kZSA9PSBJTVg4 X1BDSUVfUkVGQ0xLX1BBRF9JTlBVVCA/DQorICAgICAgICAgICAgICAgICAgICAgICAgICBJTVg4 TU1fR1BSX1BDSUVfQVVYX0VOIDogMCk7DQogICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg4 X3BoeS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjE0LA0KICAgICAgICAgICAgICAgICAgICAgICAg ICAgSU1YOE1NX0dQUl9QQ0lFX1BPV0VSX09GRiwgMCk7DQogICAgICAgIHJlZ21hcF91cGRhdGVf Yml0cyhpbXg4X3BoeS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjE0LA0KQEAgLTE3MSw2ICsxNzQs MTEgQEAgc3RhdGljIGludCBpbXg4X3BjaWVfcGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW14OF9waHktPnR4 X2RlZW1waF9nZW4yKSkNCiAgICAgICAgICAgICAgICBpbXg4X3BoeS0+dHhfZGVlbXBoX2dlbjIg PSAwOw0KDQorICAgICAgIGlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsICJmc2wsY2xrcmVx LXVuc3VwcG9ydGVkIikpDQorICAgICAgICAgICAgICAgaW14OF9waHktPmNsa3JlcV91bnVzZWQg PSB0cnVlOw0KKyAgICAgICBlbHNlDQorICAgICAgICAgICAgICAgaW14OF9waHktPmNsa3JlcV91 bnVzZWQgPSBmYWxzZTsNCisNCiAgICAgICAgaW14OF9waHktPmNsayA9IGRldm1fY2xrX2dldChk ZXYsICJyZWYiKTsNCiAgICAgICAgaWYgKElTX0VSUihpbXg4X3BoeS0+Y2xrKSkgew0KICAgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBpbXggcGNpZSBwaHkgY2xvY2tc biIpOw0KDQpCZXN0IFJlZ2FyZHMNClJpY2hhcmQgWmh1DQoNCj4gDQo+IEJlc3QgcmVnYXJkcywN Cj4gDQo+IFRpbQ0K 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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AD8CDC433EF for ; Wed, 27 Oct 2021 06:18:49 +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 5FF5D610A0 for ; Wed, 27 Oct 2021 06:18:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5FF5D610A0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=xVz0d0D8pUtrhljOpnP0c5C/eYmnL7AGX3YKrNQDxX0=; b=hB9zyBTv/OhYDB GhdWuUCGti2rUVO5JE2tOhEoQdLcZmZU6Sx0X3w/aye2ZjFIBFkMQv3UVdLF7eZPlY7GKjmHsxdHO i978Mglr/T6UCfNuV0brv837qjKN5rRBYQLjvkshVTCLIcNBunKP+UUAJGneiOFdmR3totpuqWq2Q tA2i8wEPPhdA/WTWJuqr1ouuUSan5EglyrBALj0LoRazMVMMIskCElRGCguIjR7COpJ4fwev4LNLE F8wU0Z1Yt3WC7rRc2YtpYOdO+7obJQMtAv07ttfVsGJxsGVGwnSrW1QRvnXN4L5bJXwfVKEaXslqW E8tPoHwVMSwJUGrKikpw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfcGu-0040HH-Q6; Wed, 27 Oct 2021 06:18:48 +0000 Received: from mail-eopbgr60071.outbound.protection.outlook.com ([40.107.6.71] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfcGp-0040FU-Md; Wed, 27 Oct 2021 06:18:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cR7rsEh1m4lLewcqXcwhGqp6yCRjT6BkPvTHdp9PTYL4FrF8mpl9rJm8iX/Fo37lri8Mj34DgKSJqZF6gugDoLkQe60U5czMrvAJZmNqtN+5wF2LFQOSUPtgfZfv/M54RedwhYNRbKHWolmi9uL4sZyATa0Pw8hNtr/Sru9d9kxhR2rrnttblCZYQBtCGpaWLs2DV4yd4ZcTadkQ0SKVA9wOzi6fRi9CnBZR1tNwNPcFtE4F0WnZsRQvmpfTnlJnIKjE0eeJLITc9cSrAefrp15dG932450lqZEnj2XvXYeJM5uJt+H593RRuWoIoRAFZh5XAJ4ODsXdYN8o6aRtMQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rT+iwICB4uPuzLpCalOvd3jQLnGkQY+AzSm5N+EvUb8=; b=Qrxszre6pDFar9loyd/49fMgaYI9Glh7A04820N8QqSh/0dgVCNDje2iRCJRrpYX1ehGPxWTPVSoo/gka5ZNEhj6w45RibOY5RvR8XfoKxY0HGVb6tSuYep1z3r900gHN5IdYpoxk3lC9n3ff6wnPSma3X5s3dpJOSewDyQqg4wMoyMFGrOMVynDg4tkEX2lOOBPdO9/u6TjEkWLkaGhRCSs4dzg/yRSLe8ZOzBtIp7LVjOZLz32sP5yVmThF0aAykQIjlLNrisKmpXIzbQByiEll+4fPQ06Cn0iFQms/IZniPW922RzW9atffoU2eqYpspa56sO8ExrGMMdgAsy6g== 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=rT+iwICB4uPuzLpCalOvd3jQLnGkQY+AzSm5N+EvUb8=; b=ihBDqwNeHTpk/FezjQ1ODoTUJb3/22K55vv882j0c9RhfGBnG7IR3kYnUo6+w7jafTtg2SR7E+VYFVonqrKdZZA6oFBV5xnlOgbvo30DKAO9GVBbd7i2x1xCwWU19AqXHmBskkro5JZ9PFlBlaP9iTks0z4fgLdy94GX3+bFGOQ= Received: from AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) by AS8PR04MB9048.eurprd04.prod.outlook.com (2603:10a6:20b:443::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13; Wed, 27 Oct 2021 06:18:38 +0000 Received: from AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::b059:46c6:685b:e0fc]) by AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::b059:46c6:685b:e0fc%5]) with mapi id 15.20.4649.014; Wed, 27 Oct 2021 06:18:38 +0000 From: Richard Zhu To: "tharvey@gateworks.com" CC: Lucas Stach , Kishon Vijay Abraham I , "vkoul@kernel.org" , Rob Herring , "galak@kernel.crashing.org" , Shawn Guo , "linux-phy@lists.infradead.org" , Device Tree Mailing List , Linux ARM Mailing List , open list , Sascha Hauer , dl-linux-imx Subject: RE: [PATCH v3 0/9] add the imx8m pcie phy driver and imx8mm pcie support Thread-Topic: [PATCH v3 0/9] add the imx8m pcie phy driver and imx8mm pcie support Thread-Index: AQHXwf8T9WRZIWT4CUunBVSnJ63L4qvZhp6ggAD4IYCAAKk/cIABRTmAgABCoVCAAPyvgIAAhMLwgAEGQACAAA+SAIADuD4QgABZ2ZCAAKpdAIAAx5NwgAC3poCAAK5bEA== Date: Wed, 27 Oct 2021 06:18:38 +0000 Message-ID: References: <1634028078-2387-1-git-send-email-hongxing.zhu@nxp.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0fb2c547-e270-4984-ce28-08d999119d68 x-ms-traffictypediagnostic: AS8PR04MB9048: x-ld-processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xI5eSTtXoFMJii+QF725W+IhzOF+yj3ERvh+oeZQyGervPSXghhbqlXgfgRdCNt6qAYS+MMXPMuaoiuqTdZLg2Qui6bQUy4HBOjp3iTiefBS53mNTW/aX/5VE+k2pfKsyoKmfuxbd0hOhpenjE6ASrr0Gzwu/GJy6/kri5KikW6Wa7KCl62x7fMEs7dlzVrQtfC3obIjBla4vaewR1IecJZ3HznbEJf37W+SNQc8iZvDaqDl+Pah8shjmSg7cOdvuw4cW5TWkbA7LI0NC5+hevGAv8ahsyYpzsUnm/b/TMXuL1bSM/GnV/TuayYzjPLdivtW9Vp0UbhA290mPU2BpesCSUE0ixRidGV+qxQmYs8fD3RkAAL4j3ThoZctCGQKFZBDoISLMi44Dl7E190yPCIcU25xmToL/ouNYgqc3qq5Mz/UoqBpN/EBgCCN29Q2daNelbshy7oxSYIwHc6g+Sw0Wqh+k0WqCN5uz3myPkGwe/5YYit5OgDEpoYw07X2XBv7lVkT8fs62zPLzjhFOretSjcxHAkfD8wyUKzzz4o5nI45IRWNv7nPBJnZBC+9TvnQPm4xY66FnVLbhhxFWAptjmk4rLW0OgBJifMZqu32c2NYLMn+hosxn2snY4VsrvArN4Z4LZSyA7CdObE4p28m4U+Bt+KbB59vYH0RcXzQQo78h4vh/67P6PnMcNcqkvd0rh1XY9lUzgDh0/q/bg9Y1r2wzzKIhbA25wOrMWc= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8676.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6506007)(86362001)(71200400001)(2906002)(52536014)(53546011)(38070700005)(8676002)(186003)(7696005)(55016002)(316002)(7416002)(508600001)(26005)(9686003)(33656002)(38100700002)(6916009)(76116006)(30864003)(66476007)(66446008)(64756008)(66556008)(66946007)(122000001)(8936002)(5660300002)(83380400001)(54906003)(4326008)(32563001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?L0xlbW40SDA1eDNxREFsSjNPV2Z1aHNYOW5DOUpNcDBQOEJoNnFWWTNOSGVZ?= =?utf-8?B?Yjg0L1RLaGNCdGxuOUFHWUtpdnpDam1HU2FGMGxwSTNkK1BzRVRvZk9nWm9k?= =?utf-8?B?czNGNVRZdGFDc1c3QWpKMmVzdTlsdExIa1ZKMlRCRlVlb0oyV1ZDSWduZmkv?= =?utf-8?B?eXBrSTJYZWlqYXc4NmgyVDB2dnpqeUFJSWFkZWd4QkJCVVRxV3E2UEhteUVu?= =?utf-8?B?RW52U085anBHdFJVUkJ2bFlCQ00vU3JLZUJaOHdwSDdMalpOcHFOMFlkZDVs?= =?utf-8?B?RTdZRWFjSnliVTZwYVBNcmNBOFVsSFlRaEc0QXU2WEwyZmJIckxlaFFNWnJL?= =?utf-8?B?RSs1Y1hIc3V2MXcvY2c0ZTd5a3NZTjYwdlcwdGhRRG1EUlVOc0lZc2w5UkZO?= =?utf-8?B?NkR3MkdOaUdrK3Y2cWtPZmJ3QVlsNGJtSVcvWlIzaDFXakZVVFVpcUFvYUhn?= =?utf-8?B?UW5GY09IVTh3dXpiWXRTMjJpd3RGWHFKZ2JoaldJSWFtaWZ4VnJTQUsvV1U0?= =?utf-8?B?NmNUZk90Vlp5WXhWSXZQVUVTRGtDcUN0Mm9HZHJZSXJzRXM1aHJISHF0clRS?= =?utf-8?B?V3RlVlFYbGVkd2ZZTnFmZTc3R1kvSWN1OXNZZWNCNDkvRWJlM0hoTDZ3Y0Jn?= =?utf-8?B?dDVuaEMrRFFWL0FJMjZVN2xLTWJoWmtJZzBXeWNSdVVDdDlvc3lVU3NpUjFT?= =?utf-8?B?K1A2N0ZBU0xVekVHYU5SQm5uaDVpTlZBK290S040MGNpSlJzOWZwdk9MNWJE?= =?utf-8?B?YnJxZ252Q3VROGlyd3gvYkxuN2I1NWtnQ09kNFgvanF1aDl2WnNTbVlYNzl4?= =?utf-8?B?Tk9JbHJycU93c0I3SGYrRzI4bXd6R0JaeFRkb3FGcm9xVjJFSXlGYVluaGJk?= =?utf-8?B?QitOa3JjTDdvZWdqd1ppYVNqZStHK3dEM0hFcURwNzgveEdycmx2U2REcW8x?= =?utf-8?B?S0I2dXZ3SkZ6SFZyem04azJ2NFVVK3RMamNsZXBuWDhKSzBoR0VxeEloOTAw?= =?utf-8?B?ZDdOSTRoeHVnbmpsLy8zTHlvNXcvVWRlN3JBQ081WktQNDNHN2pWWmVGNWIv?= =?utf-8?B?Sm8xZG41dlZkcWx1QlJ5eExqck5UdmxjTks1YTF4OGhkaktWNnNRbjFRWllK?= =?utf-8?B?TzhrY25uUWtFNW9nQXNRV01BTWsrVnZsbDE4UDQ0MVJ5T0xxdURKTVpWb2FK?= =?utf-8?B?Mmw0ZWRTWHcwWTBGVnl0RDZPVHNVZG1tWG9SNXBHaXVZT1FPT3N6RnNndTZx?= =?utf-8?B?ZU5oUGpDaS82cG9jTmExMUVDQ0FGVHpMU1U5WVo4dXZMdUNmNW5kK2tLMWxW?= =?utf-8?B?QWtrSVA5RXl0cWVwenJ3ZzIzMk0rcEttZXk5YjkvWldWUXNVcGJRbFk1VVRV?= =?utf-8?B?QjVBK3hYMUJPNXYzaUNoMi9reTlPaCt4NkdMdWl1N2NmUUF0QlhlRDliNzUx?= =?utf-8?B?R05MZStYRmlIVFE2cDVpV01HcTVoWWFkK2JqT3p5Wk9lbU1IM3BiblRienFI?= =?utf-8?B?OGtmb2MyTTBOcHBja3c4SkFUZGxaMGZySFFNUTFwNlVVaTBZNi9RbHhFVjZW?= =?utf-8?B?ZFBxRlA4aHJYYit4NjRhTDh1N25yN1J3SEsxM2tvL2xzaUxYSTJzLzJDMFhu?= =?utf-8?B?cnp0V0VCeWxKNUdHamFsRU53TGErQk9OYnByR1dNY0NpZFA2UTVxdWFIdXZw?= =?utf-8?B?S2h1K1VOckh6Mk9FNUFxVlQzaGk4dGxZTFhLQURsblZEclBKYlFzRFNyYS91?= =?utf-8?B?Njc4WitLK0NqVm9xYkQyNHJIZ2dmQitVZkJpbUordEw1NGFVT3pOdXZQOVo1?= =?utf-8?B?THd3M1ZXS1JvMUhPR3RjbHVLZi81aDVpTWtFV1ZMV3poSjFOdHFFMTE1amxP?= =?utf-8?B?cFd3S3hBVmdPdWp4T2FheGZUWjlySU5TZEs5OTNuWXNQeG5rRlJJbm5XMWt0?= =?utf-8?B?VTNhL3pXS1J3UDFIMGQ4OUNWZnNta1Y2am9VQllyaU52Vnp6aEJLQjVjTmFr?= =?utf-8?B?eThlbHRWTWtmSmFIekY1VmxNU1N3bDRVL2NjakRBSHlDNEl1cWFoRE5sbnJm?= =?utf-8?B?RU5HbVRLbjBuODNXZWYvVVFZbUthUkNDUjR2eE1pL3dXTXVnQWVCU1hocGph?= =?utf-8?B?M1lIYStuSWllVCszMWVNM0c2REpGcGNqM2E0VE14K3A1OXBKbVhFYmRnMkM1?= =?utf-8?B?L3c9PQ==?= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8676.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0fb2c547-e270-4984-ce28-08d999119d68 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Oct 2021 06:18:38.3144 (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: JYObOfEU2DiDYOLoV4vbaduEzqqJZkQrJ/ejmVIv0QxPAVln+jaR9ASEIukhGC3mkGumKvamDF9Dcj/ah5/MWw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB9048 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211026_231843_928749_D6252505 X-CRM114-Status: GOOD ( 40.33 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org > -----Original Message----- > From: Tim Harvey > Sent: Wednesday, October 27, 2021 12:06 AM > To: Richard Zhu > Cc: Lucas Stach ; Kishon Vijay Abraham I > ; vkoul@kernel.org; Rob Herring ; > galak@kernel.crashing.org; Shawn Guo ; > linux-phy@lists.infradead.org; Device Tree Mailing List > ; Linux ARM Mailing List > ; open list > ; Sascha Hauer ; > dl-linux-imx > Subject: Re: [PATCH v3 0/9] add the imx8m pcie phy driver and imx8mm pcie > support > > On Mon, Oct 25, 2021 at 10:41 PM Richard Zhu > wrote: > > > > > -----Original Message----- > > > From: Tim Harvey > > > Sent: Tuesday, October 26, 2021 1:15 AM > > > To: Richard Zhu > > > Cc: Lucas Stach ; Kishon Vijay Abraham I > > > ; vkoul@kernel.org; Rob Herring ; > > > galak@kernel.crashing.org; Shawn Guo ; > > > linux-phy@lists.infradead.org; Device Tree Mailing List > > > ; Linux ARM Mailing List > > > ; open list > > > ; Sascha Hauer > > > ; dl-linux-imx > > > Subject: Re: [PATCH v3 0/9] add the imx8m pcie phy driver and imx8mm > > > pcie support > > > > > > On Mon, Oct 25, 2021 at 12:23 AM Richard Zhu > > > wrote: > > > > > > > > Snipped... > > > > > > > > > > > > > > > My boards do not use CLKREQ# so I do not have that > > > > > > > > > > > defined in pinmux and I found that if I add > > > > > > > > > > > MX8MM_IOMUXC_I2C4_SCL_PCIE1_CLKREQ_B > > > > > > > > > PCIe > > > > > > > > > > > works on my board but this isn't a solution just a > > > > > > > > > > > work-around (I have boards that use the only two > > > > > > > > > > > possible pins for CLKREQ as other > > > > > > > > > features). > > > > > > > > > > > > > > > > > > > > > > Similarly you will find on the imx8mm-evk if you > > > > > > > > > > > comment out the CLKREQ (which isn't required) the > > > > > > > > > > > imx8mmevk will end up hanging like my > > > > > > > > > boards: > > > > > > > > > > [Richard Zhu] Hi Tim: > > > > > > > > > > Regarding the SPEC, the CLKREQ# is mandatory required, > > > > > > > > > > and should be > > > > > > > > > configured as an open drain, active low signal. > > > > > > > > > > And this signal should be driven low by the PCIe M.2 > > > > > > > > > > device to request the > > > > > > > > > REF clock be available(active low). > > > > > > > > > > So, there is such kind of CLKREQ# pin definition on > > > > > > > > > > i.MX8MM EVK > > > > > > board. > > > > > > > > > > > > > > > > > > > > Anyway, I think the external OSC circuit should be > > > > > > > > > > always running if there is > > > > > > > > > no CLKREQ# on your HW board design. > > > > > > > > > > > > > > > > > > > > > > > > > > > > The way I understand it is CLKREQ# allows the host to > > > > > > > > > disable the REFCLK when not needed for power savings so > > > > > > > > > it would seem optional to implement that and if not > > > > > > > > > implemented should be left unconnected on > > > > > > the card. > > > > > > > > > > > > > > > > > [Richard Zhu] No, not that way. Regarding the SPEC, this > > > > > > > > signal is > > > > > > mandatory required. > > > > > > > > Especially for the L1ss usages. This signal would be > > > > > > > > OD(open drain), bi-directional, and might be driven > > > > > > > > low/high by RC or EP automatically if > > > > > > L1ss modes are enabled. > > > > > > > > You can make reference to the > > > > > > > > "ECN_L1_PM_Substates_with_CLKREQ_31_May_2013_Rev10a", > or > > > the > > > > > > chapter 5.5 L1 PM Substates of "PCI Express Base Specification, Rev. > > > > > > 4.0 Version 1.0". > > > > > > > > > > > > > > > > > > > > > > CLKREQ is only mandatory if you wish to support clock power > > > > > > > management. Many boards with a PCI host controller do not > > > > > > > support this. > > > > > [Richard Zhu] Okay, understood. > > > > > > > > > > > > > > > > > > > > > > > diff --git > > > > > > > > > > > a/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi > > > > > > > > > > > b/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi > > > > > > > > > > > index 5ce43daa0c8b..f0023b48f475 100644 > > > > > > > > > > > --- a/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi > > > > > > > > > > > +++ b/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi > > > > > > > > > > > @@ -448,7 +448,9 @@ > > > > > > > > > > > > > > > > > > > > > > pinctrl_pcie0: pcie0grp { > > > > > > > > > > > fsl,pins = < > > > > > > > > > > > +/* > > > > > > > > > > > > > > > > > > > > > > MX8MM_IOMUXC_I2C4_SCL_PCIE1_CLKREQ_B 0x61 > > > > > > > > > > > +*/ > > > > > > > > > > > > > > > > > > > > MX8MM_IOMUXC_SAI2_RXFS_GPIO4_IO21 > > > > > > > > > > > 0x41 > > > > > > > > > > > >; > > > > > > > > > > > }; > > > > > > > > > > > > > > > > > > > > > > I have PCIe working with a driver that I ported from > > > > > > > > > > > NXP's kernel which differs from your driver in that > > > > > > > > > > > the PCIe PHY is not abstracted to its own driver so > > > > > > > > > > > I think this has something to do with the order in > > > > > > > > > > > which the phy is reset or > > > > > initialized? > > > > > > > > > > > The configuration of > > > > > > > > > gpr14 bits looks correct to me. > > > > > > > > > > [Richard Zhu] The CLKREQ# PIN definition shouldn't be > masked. > > > > > > > > > > In the NXP's local BSP kernel, I just force CLKREQ# > > > > > > > > > > low to level up the HW > > > > > > > > > compatibility. > > > > > > > > > > That's might the reason why the PCIe works on your HW > > > > > > > > > > board although the > > > > > > > > > CLKREQ# PIN is not defined. > > > > > > > > > > This method is a little rude and violate the SPEC, and > > > > > > > > > > not recommended > > > > > > > > > although it levels up the HW compatibility. > > > > > > > > > > So I drop this method in this series. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Sorry, I don't understand what you are saying here. Is > > > > > > > > > there a change you are going to make to v4 that will > > > > > > > > > make this work for the evk and my boards? What is that change > exactly? > > > > > > > > [Richard Zhu] No. What I said above is that the CLKREQ# is > > > > > > > > forced to be low in NXP local BSP kernel. I guess this > > > > > > > > might be the reason why your > > > > > > board works. > > > > > > > > > > > > > > > > BIT11 and BIT10 of IOMUXC_GPR14 can be used to force the > > > > > > > > CLKREQ# to > > > > > > be low. > > > > > > > > Set CLKREQ_OVERRIDE_EN(bit10) 1b1, then write one zero to > > > > > > CLKREQ_OVERRIDE(bit11). > > > > > > > > > > > > > > > > > > > > > > Ok, that makes sense. Those bits are not explained well in > > > > > > > the IMX8MMRM. As my board's external REFCLK is always > > > > > > > enabled that must gate the clock internally to the host controller > block. > > > > > > > > > > > > > > I can confirm that asserting those GPR14 bits does resolve my > issue: > > > > > > > > > > > > > > #define IMX8MM_GPR_PCIE_CLKREQ_OVERRIDE_VAL BIT(11) > > > > > > > #define IMX8MM_GPR_PCIE_CLKREQ_OVERRIDE_EN > BIT(10) > > > > > > > > > > > > > > /* > > > > > > > * for boards that do not connect CLKREQ#, > > > > > > > * override CLKREQ# and drive it low internally > > > > > > > */ > > > > > > > regmap_update_bits(imx8_phy->iomuxc_gpr, > > > IOMUXC_GPR14, > > > > > > > > > > > > > IMX8MM_GPR_PCIE_CLKREQ_OVERRIDE_VAL, 0); > > > > > > > regmap_update_bits(imx8_phy->iomuxc_gpr, > > > IOMUXC_GPR14, > > > > > > > > > > > > > IMX8MM_GPR_PCIE_CLKREQ_OVERRIDE_EN, 1); > > > > > [Richard Zhu] regmap bits operations should manipulate according > bits. > > > > > The BIT(10) and BIT(11) should be touched actually. > > > > > > > > > > > > > > > > > > > Should this be added as a 'fsl,clkreq-unsupported' flag that > > > > > > > needs to be set true to implement the above code? > > > > > > > > > > > > > > > > > > > Richard, > > > > > > > > > > > > Sorry - spoke too soon. My test was flawed as I still was > > > > > > pinmuxing CLKREQ in my dt to work around the issue and after > > > > > > removed the above did not resolve my issue. The setting of > > > > > > OVERRIDE_EN was wrong above (should not be set to '1' but > > > > > > BIT(10) > > > > > > instead) but this code already exists in > > > > > > imx6_pcie_enable_ref_clk and is used for IMX8MM per your patch > so this is not the issue. > > > > > > > > > > > > What makes my board work is to clear GPR14 bit9 (like the NXP > > > > > > kernel > > > > > > does) so I don't think this bit does what we think it does > > > > > > (select between internal and ext clk). I think setting it > > > > > > enables clock gating via > > > > > CLKREQ#. > > > > > > > > > > > > This also points out that perhaps the CLKREQ_OVERRIDE logic > > > > > > should be moved to the new phy driver for IMX8MM. > > > > > [Richard Zhu] It sounds reasonable to consider to force the > > > > > CLKREQ# to be low. > > > > > I will think about that and add this in later v5 patch-set if > > > > > nobody has different concerns. > > > > > Thanks. > > > > [Richard Zhu] Hi Tim: > > > > As you mentioned above, the CLKREQ# GPIO PIN is not used for PCIe > > > > on > > > your board, right? > > > > " (I have boards that use the only two possible pins for CLKREQ as > > > > other > > > features)" > > > > > > > > Did the override configuration of the clkreq# will bring > > > > unexpected results > > > for other features on your board? > > > > > > > > > > What I mean is that imx8mm-venice-gw7901.dts uses both I2C4 and > > > UART4 and because I2C4_SCL and UART4_RXD are the only two pads that > > > could be pinmuxed for CLKREQ# I can't use the workaround of pin muxing > it. > > > > > > Currently your driver only works on my imx8mm-venice-* boards if I > > > add one of the following on boards that don't connect those pads (or > > > if I clear > > > IMX8MM_GPR_PCIE_REF_USE_PAD): > > > MX8MM_IOMUXC_I2C4_SCL_PCIE1_CLKREQ_B > > > MX8MM_IOMUXC_UART4_RXD_PCIE1_CLKREQ_B > > > > > > Note your 'PCI: imx: add the imx8mm pcie support' patch [1] does > > > enable this code already in the imx6_pcie_enable_ref_clk function to > > > override REF_CLK and drive it low: > > > > > > offset = imx6_pcie_grp_offset(imx6_pcie); > > > /* > > > * Set the over ride low and enabled > > > * make sure that REF_CLK is turned on. > > > */ > > > regmap_update_bits(imx6_pcie->iomuxc_gpr, offset, > > > IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE, > > > 0); > > > regmap_update_bits(imx6_pcie->iomuxc_gpr, offset, > > > IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE_EN, > > > IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE_EN); > > > > > > So this is already being run and yet my boards still do not work > > > unless I clr IMX8MM_GPR_PCIE_REF_USE_PAD like this which is what the > > > NXP downstream driver does: > > > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, > > > IMX8MM_GPR_PCIE_REF_USE_PAD, 0); > > > > > > This is why I'm not sure that bit does what you think it does... I > > > feel like that bit enables 'Use CLKREQ# to enable CLK'. > > > > > > You tell me the descriptions for GPR14 are wrong in the reference manual. > > > Please provide correct descriptions for us so we can sort this out. > > > > > [Richard Zhu] Hi Tim: > > The BIT9 of GPR14 is used as "GPR_PCIE1_PHY_I_AUX_EN_OVERRIDE_EN" > > and BIT19 is used as "GPR_PCIE1_PHY_FUNC_I_AUX_EN" on i.MX8MM. > > I think the two bits descriptions are used to describe the BIT19 and BIT9 > together refer to my guess. > > {GPR_PCIE1_PHY_I_AUX_EN_OVERRIDE_EN(BIT9), > > GPR_PCIE1_PHY_FUNC_I_AUX_EN(BIT19) } > > 2'b00: External Reference Clock I/O (for PLL) Disable > > 2'b01: External Reference Clock I/O (for PLL) Enable > > 2'b10: External Reference Clock I/O (for PLL) Disable > > 2'b11: External Reference Clock I/O (for PLL) output is controlled by > > CLKREQ# > > > > The option1&3 should be forbidden, since the external REF CLK I/O should > be enabled on your board and EVK board. > > In the option2&4, the BIT19 should be set to be 1'b1.' > > > > So, regarding my understand, if the CLKREQ# is not pinmuxed in your use > case, the IMX8MM_GPR_PCIE_REF_USE_PAD (BIT9) should be 1'b0. > > > > Richard, > > Ok, if this is the case then drivers/pci/controller/dwc/pci-imx6.c for IMX8MM > should not touch GPR14 and '[v3,9/9] PCI: imx: add the imx8mm pcie support' > should have this on top and squashed: > diff --git a/drivers/pci/controller/dwc/pci-imx6.c > b/drivers/pci/controller/dwc/pci-imx6.c > index 7c89bd1a6441..458d54c8e385 100644 > --- a/drivers/pci/controller/dwc/pci-imx6.c > +++ b/drivers/pci/controller/dwc/pci-imx6.c > @@ -452,8 +452,12 @@ static int imx6_pcie_enable_ref_clk(struct > imx6_pcie *imx6_pcie) > break; > case IMX7D: > break; > - case IMX8MQ: > case IMX8MM: > + ret = clk_prepare_enable(imx6_pcie->pcie_aux); > + if (ret) > + dev_err(dev, "unable to enable pcie_aux > clock\n"); > + break; > + case IMX8MQ: > ret = clk_prepare_enable(imx6_pcie->pcie_aux); > if (ret) { > dev_err(dev, "unable to enable pcie_aux > clock\n"); > [Richard Zhu] Sorry, I might don't understand what's meaning of the changes. What're the differences between before and after the changes? > > And your '[v3,5/9] phy: freescale: pcie: initialize the imx8 pcie standalone phy > driver' should have this on top and squashed: > diff --git a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c > b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c > index 317cf61bff37..27ca0b9f1d92 100644 > --- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c > +++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c > @@ -43,7 +43,7 @@ > #define IMX8MM_GPR_PCIE_CMN_RST BIT(18) > #define IMX8MM_GPR_PCIE_POWER_OFF BIT(17) > #define IMX8MM_GPR_PCIE_SSC_EN BIT(16) > -#define IMX8MM_GPR_PCIE_REF_USE_PAD BIT(9) > +#define IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE BIT(9) > > struct imx8_pcie_phy { > u32 refclk_pad_mode; > @@ -63,12 +63,12 @@ static int imx8_pcie_phy_init(struct phy *phy) > reset_control_assert(imx8_phy->reset); > > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, > - IMX8MM_GPR_PCIE_REF_USE_PAD, > - imx8_phy->refclk_pad_mode == 1 ? > - IMX8MM_GPR_PCIE_REF_USE_PAD : 0); > + IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE, > + 0); > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, > IMX8MM_GPR_PCIE_AUX_EN, > - IMX8MM_GPR_PCIE_AUX_EN); > + imx8_phy->refclk_pad_mode == > IMX8_PCIE_REFCLK_PAD_INPUT ? > + IMX8MM_GPR_PCIE_AUX_EN : 0); > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, > IMX8MM_GPR_PCIE_POWER_OFF, 0); > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, @@ > -76,7 +76,7 @@ static int imx8_pcie_phy_init(struct phy *phy) > > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, > IMX8MM_GPR_PCIE_REF_CLK_SEL, > - imx8_phy->refclk_pad_mode == 1 ? > + imx8_phy->refclk_pad_mode == > IMX8_PCIE_REFCLK_PAD_INPUT ? > IMX8MM_GPR_PCIE_REF_CLK_EXT : > IMX8MM_GPR_PCIE_REF_CLK_PLL); > usleep_range(100, 200); > > I tested this and it works both on imx8mm-evk and imx8mm-venice-* which > both have external clkgen. > > However, the above does not set IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE > for the case where CLKREQ# is connected and thus should be used so I think > we need to add a property for that to define if CLKREQ# is hooked up or not. I > tested enabling IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE and as expected > that worked on the imx8mm-evk which hooks up CLKREQ# but not > imx8mm-venice which does not hook up CLKREQ#. > > What do you think about adding a property for this? [Richard Zhu] First of all, thanks a lot for your help to figure out the details. Agree with your proposal. One optional property "fsl,clkreq-unsupported" would be added for the CLKREQ# not hooked case later. diff --git a/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml b/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml index 097ba2a28fb4..2264452924cc 100644 --- a/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml +++ b/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml @@ -58,6 +58,11 @@ properties: $ref: /schemas/types.yaml#/definitions/uint32 default: 0 + fsl,clkreq-unsupported: + type: boolean + description: A boolean property whoes presence indicates the CLKREQ# + signal isn't supported in the HW board design (optional required). + diff --git a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c index 07eea39283ed..4b4402eaddcc 100644 --- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c +++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c @@ -43,7 +43,7 @@ #define IMX8MM_GPR_PCIE_CMN_RST BIT(18) #define IMX8MM_GPR_PCIE_POWER_OFF BIT(17) #define IMX8MM_GPR_PCIE_SSC_EN BIT(16) -#define IMX8MM_GPR_PCIE_REF_USE_PAD BIT(9) +#define IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE BIT(9) struct imx8_pcie_phy { void __iomem *base; @@ -54,6 +54,7 @@ struct imx8_pcie_phy { u32 refclk_pad_mode; u32 tx_deemph_gen1; u32 tx_deemph_gen2; + bool clkreq_unused; }; static int imx8_pcie_phy_init(struct phy *phy) @@ -65,13 +66,15 @@ static int imx8_pcie_phy_init(struct phy *phy) reset_control_assert(imx8_phy->reset); pad_mode = imx8_phy->refclk_pad_mode; + /* Set AUX_EN_OVERRIDE 1'b0, when the CLKREQ# isn't hooked */ regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, - IMX8MM_GPR_PCIE_REF_USE_PAD, - pad_mode == IMX8MM_GPR_PCIE_REF_USE_PAD ? - IMX8MM_GPR_PCIE_REF_USE_PAD : 0); + IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE, + imx8_phy->clkreq_unused ? + 0 : IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE); regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, IMX8MM_GPR_PCIE_AUX_EN, - IMX8MM_GPR_PCIE_AUX_EN); + pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT ? + IMX8MM_GPR_PCIE_AUX_EN : 0); regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, IMX8MM_GPR_PCIE_POWER_OFF, 0); regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, @@ -171,6 +174,11 @@ static int imx8_pcie_phy_probe(struct platform_device *pdev) &imx8_phy->tx_deemph_gen2)) imx8_phy->tx_deemph_gen2 = 0; + if (of_property_read_bool(np, "fsl,clkreq-unsupported")) + imx8_phy->clkreq_unused = true; + else + imx8_phy->clkreq_unused = false; + imx8_phy->clk = devm_clk_get(dev, "ref"); if (IS_ERR(imx8_phy->clk)) { dev_err(dev, "failed to get imx pcie phy clock\n"); Best Regards Richard Zhu > > Best regards, > > Tim -- linux-phy mailing list linux-phy@lists.infradead.org https://lists.infradead.org/mailman/listinfo/linux-phy 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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CE320C433EF for ; Wed, 27 Oct 2021 06:20:35 +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 8FC0A60F0F for ; Wed, 27 Oct 2021 06:20:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 8FC0A60F0F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=vH3JqIns424MEkKiJU/r+jDQC12G3Vd9zgQhKjUTrBY=; b=qxjkxCCVkXay4C jTmuTRQom7NDLbXYCbmcHRjmw07PleUyYivEbepAbtjPPQEUpQiryuiEW0uubLasBpxkTHgcBmdkb Ng6S0+bN1G/gIc3VQvuleSouIuYwR/xcq5yREKU73PyGo4rWybuqJO7Lt/4flh7gwb/E8Mu7msikc 9pr/s6X+xLMAfTtfjenKg28/yIk1nr31zqGIYc1PFfqbZVREHH0vizC/5ZpZbo/0zCGlT1HPKsDdK Jck+ORWry5nDrPm86EwZcwwUlnZaDPQkiBQh4pI8pBLq3g+pTBiaHz4iqCd8lJ0jhsi0K0LTkY82F 9wWqDqjmA7mloWg156MQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfcGw-0040HM-6V; Wed, 27 Oct 2021 06:18:50 +0000 Received: from mail-eopbgr60071.outbound.protection.outlook.com ([40.107.6.71] helo=EUR04-DB3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfcGp-0040FU-Md; Wed, 27 Oct 2021 06:18:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cR7rsEh1m4lLewcqXcwhGqp6yCRjT6BkPvTHdp9PTYL4FrF8mpl9rJm8iX/Fo37lri8Mj34DgKSJqZF6gugDoLkQe60U5czMrvAJZmNqtN+5wF2LFQOSUPtgfZfv/M54RedwhYNRbKHWolmi9uL4sZyATa0Pw8hNtr/Sru9d9kxhR2rrnttblCZYQBtCGpaWLs2DV4yd4ZcTadkQ0SKVA9wOzi6fRi9CnBZR1tNwNPcFtE4F0WnZsRQvmpfTnlJnIKjE0eeJLITc9cSrAefrp15dG932450lqZEnj2XvXYeJM5uJt+H593RRuWoIoRAFZh5XAJ4ODsXdYN8o6aRtMQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rT+iwICB4uPuzLpCalOvd3jQLnGkQY+AzSm5N+EvUb8=; b=Qrxszre6pDFar9loyd/49fMgaYI9Glh7A04820N8QqSh/0dgVCNDje2iRCJRrpYX1ehGPxWTPVSoo/gka5ZNEhj6w45RibOY5RvR8XfoKxY0HGVb6tSuYep1z3r900gHN5IdYpoxk3lC9n3ff6wnPSma3X5s3dpJOSewDyQqg4wMoyMFGrOMVynDg4tkEX2lOOBPdO9/u6TjEkWLkaGhRCSs4dzg/yRSLe8ZOzBtIp7LVjOZLz32sP5yVmThF0aAykQIjlLNrisKmpXIzbQByiEll+4fPQ06Cn0iFQms/IZniPW922RzW9atffoU2eqYpspa56sO8ExrGMMdgAsy6g== 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=rT+iwICB4uPuzLpCalOvd3jQLnGkQY+AzSm5N+EvUb8=; b=ihBDqwNeHTpk/FezjQ1ODoTUJb3/22K55vv882j0c9RhfGBnG7IR3kYnUo6+w7jafTtg2SR7E+VYFVonqrKdZZA6oFBV5xnlOgbvo30DKAO9GVBbd7i2x1xCwWU19AqXHmBskkro5JZ9PFlBlaP9iTks0z4fgLdy94GX3+bFGOQ= Received: from AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) by AS8PR04MB9048.eurprd04.prod.outlook.com (2603:10a6:20b:443::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13; Wed, 27 Oct 2021 06:18:38 +0000 Received: from AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::b059:46c6:685b:e0fc]) by AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::b059:46c6:685b:e0fc%5]) with mapi id 15.20.4649.014; Wed, 27 Oct 2021 06:18:38 +0000 From: Richard Zhu To: "tharvey@gateworks.com" CC: Lucas Stach , Kishon Vijay Abraham I , "vkoul@kernel.org" , Rob Herring , "galak@kernel.crashing.org" , Shawn Guo , "linux-phy@lists.infradead.org" , Device Tree Mailing List , Linux ARM Mailing List , open list , Sascha Hauer , dl-linux-imx Subject: RE: [PATCH v3 0/9] add the imx8m pcie phy driver and imx8mm pcie support Thread-Topic: [PATCH v3 0/9] add the imx8m pcie phy driver and imx8mm pcie support Thread-Index: AQHXwf8T9WRZIWT4CUunBVSnJ63L4qvZhp6ggAD4IYCAAKk/cIABRTmAgABCoVCAAPyvgIAAhMLwgAEGQACAAA+SAIADuD4QgABZ2ZCAAKpdAIAAx5NwgAC3poCAAK5bEA== Date: Wed, 27 Oct 2021 06:18:38 +0000 Message-ID: References: <1634028078-2387-1-git-send-email-hongxing.zhu@nxp.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0fb2c547-e270-4984-ce28-08d999119d68 x-ms-traffictypediagnostic: AS8PR04MB9048: x-ld-processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xI5eSTtXoFMJii+QF725W+IhzOF+yj3ERvh+oeZQyGervPSXghhbqlXgfgRdCNt6qAYS+MMXPMuaoiuqTdZLg2Qui6bQUy4HBOjp3iTiefBS53mNTW/aX/5VE+k2pfKsyoKmfuxbd0hOhpenjE6ASrr0Gzwu/GJy6/kri5KikW6Wa7KCl62x7fMEs7dlzVrQtfC3obIjBla4vaewR1IecJZ3HznbEJf37W+SNQc8iZvDaqDl+Pah8shjmSg7cOdvuw4cW5TWkbA7LI0NC5+hevGAv8ahsyYpzsUnm/b/TMXuL1bSM/GnV/TuayYzjPLdivtW9Vp0UbhA290mPU2BpesCSUE0ixRidGV+qxQmYs8fD3RkAAL4j3ThoZctCGQKFZBDoISLMi44Dl7E190yPCIcU25xmToL/ouNYgqc3qq5Mz/UoqBpN/EBgCCN29Q2daNelbshy7oxSYIwHc6g+Sw0Wqh+k0WqCN5uz3myPkGwe/5YYit5OgDEpoYw07X2XBv7lVkT8fs62zPLzjhFOretSjcxHAkfD8wyUKzzz4o5nI45IRWNv7nPBJnZBC+9TvnQPm4xY66FnVLbhhxFWAptjmk4rLW0OgBJifMZqu32c2NYLMn+hosxn2snY4VsrvArN4Z4LZSyA7CdObE4p28m4U+Bt+KbB59vYH0RcXzQQo78h4vh/67P6PnMcNcqkvd0rh1XY9lUzgDh0/q/bg9Y1r2wzzKIhbA25wOrMWc= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8676.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6506007)(86362001)(71200400001)(2906002)(52536014)(53546011)(38070700005)(8676002)(186003)(7696005)(55016002)(316002)(7416002)(508600001)(26005)(9686003)(33656002)(38100700002)(6916009)(76116006)(30864003)(66476007)(66446008)(64756008)(66556008)(66946007)(122000001)(8936002)(5660300002)(83380400001)(54906003)(4326008)(32563001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?L0xlbW40SDA1eDNxREFsSjNPV2Z1aHNYOW5DOUpNcDBQOEJoNnFWWTNOSGVZ?= =?utf-8?B?Yjg0L1RLaGNCdGxuOUFHWUtpdnpDam1HU2FGMGxwSTNkK1BzRVRvZk9nWm9k?= =?utf-8?B?czNGNVRZdGFDc1c3QWpKMmVzdTlsdExIa1ZKMlRCRlVlb0oyV1ZDSWduZmkv?= =?utf-8?B?eXBrSTJYZWlqYXc4NmgyVDB2dnpqeUFJSWFkZWd4QkJCVVRxV3E2UEhteUVu?= =?utf-8?B?RW52U085anBHdFJVUkJ2bFlCQ00vU3JLZUJaOHdwSDdMalpOcHFOMFlkZDVs?= =?utf-8?B?RTdZRWFjSnliVTZwYVBNcmNBOFVsSFlRaEc0QXU2WEwyZmJIckxlaFFNWnJL?= =?utf-8?B?RSs1Y1hIc3V2MXcvY2c0ZTd5a3NZTjYwdlcwdGhRRG1EUlVOc0lZc2w5UkZO?= =?utf-8?B?NkR3MkdOaUdrK3Y2cWtPZmJ3QVlsNGJtSVcvWlIzaDFXakZVVFVpcUFvYUhn?= =?utf-8?B?UW5GY09IVTh3dXpiWXRTMjJpd3RGWHFKZ2JoaldJSWFtaWZ4VnJTQUsvV1U0?= =?utf-8?B?NmNUZk90Vlp5WXhWSXZQVUVTRGtDcUN0Mm9HZHJZSXJzRXM1aHJISHF0clRS?= =?utf-8?B?V3RlVlFYbGVkd2ZZTnFmZTc3R1kvSWN1OXNZZWNCNDkvRWJlM0hoTDZ3Y0Jn?= =?utf-8?B?dDVuaEMrRFFWL0FJMjZVN2xLTWJoWmtJZzBXeWNSdVVDdDlvc3lVU3NpUjFT?= =?utf-8?B?K1A2N0ZBU0xVekVHYU5SQm5uaDVpTlZBK290S040MGNpSlJzOWZwdk9MNWJE?= =?utf-8?B?YnJxZ252Q3VROGlyd3gvYkxuN2I1NWtnQ09kNFgvanF1aDl2WnNTbVlYNzl4?= =?utf-8?B?Tk9JbHJycU93c0I3SGYrRzI4bXd6R0JaeFRkb3FGcm9xVjJFSXlGYVluaGJk?= =?utf-8?B?QitOa3JjTDdvZWdqd1ppYVNqZStHK3dEM0hFcURwNzgveEdycmx2U2REcW8x?= =?utf-8?B?S0I2dXZ3SkZ6SFZyem04azJ2NFVVK3RMamNsZXBuWDhKSzBoR0VxeEloOTAw?= =?utf-8?B?ZDdOSTRoeHVnbmpsLy8zTHlvNXcvVWRlN3JBQ081WktQNDNHN2pWWmVGNWIv?= =?utf-8?B?Sm8xZG41dlZkcWx1QlJ5eExqck5UdmxjTks1YTF4OGhkaktWNnNRbjFRWllK?= =?utf-8?B?TzhrY25uUWtFNW9nQXNRV01BTWsrVnZsbDE4UDQ0MVJ5T0xxdURKTVpWb2FK?= =?utf-8?B?Mmw0ZWRTWHcwWTBGVnl0RDZPVHNVZG1tWG9SNXBHaXVZT1FPT3N6RnNndTZx?= =?utf-8?B?ZU5oUGpDaS82cG9jTmExMUVDQ0FGVHpMU1U5WVo4dXZMdUNmNW5kK2tLMWxW?= =?utf-8?B?QWtrSVA5RXl0cWVwenJ3ZzIzMk0rcEttZXk5YjkvWldWUXNVcGJRbFk1VVRV?= =?utf-8?B?QjVBK3hYMUJPNXYzaUNoMi9reTlPaCt4NkdMdWl1N2NmUUF0QlhlRDliNzUx?= =?utf-8?B?R05MZStYRmlIVFE2cDVpV01HcTVoWWFkK2JqT3p5Wk9lbU1IM3BiblRienFI?= =?utf-8?B?OGtmb2MyTTBOcHBja3c4SkFUZGxaMGZySFFNUTFwNlVVaTBZNi9RbHhFVjZW?= =?utf-8?B?ZFBxRlA4aHJYYit4NjRhTDh1N25yN1J3SEsxM2tvL2xzaUxYSTJzLzJDMFhu?= =?utf-8?B?cnp0V0VCeWxKNUdHamFsRU53TGErQk9OYnByR1dNY0NpZFA2UTVxdWFIdXZw?= =?utf-8?B?S2h1K1VOckh6Mk9FNUFxVlQzaGk4dGxZTFhLQURsblZEclBKYlFzRFNyYS91?= =?utf-8?B?Njc4WitLK0NqVm9xYkQyNHJIZ2dmQitVZkJpbUordEw1NGFVT3pOdXZQOVo1?= =?utf-8?B?THd3M1ZXS1JvMUhPR3RjbHVLZi81aDVpTWtFV1ZMV3poSjFOdHFFMTE1amxP?= =?utf-8?B?cFd3S3hBVmdPdWp4T2FheGZUWjlySU5TZEs5OTNuWXNQeG5rRlJJbm5XMWt0?= =?utf-8?B?VTNhL3pXS1J3UDFIMGQ4OUNWZnNta1Y2am9VQllyaU52Vnp6aEJLQjVjTmFr?= =?utf-8?B?eThlbHRWTWtmSmFIekY1VmxNU1N3bDRVL2NjakRBSHlDNEl1cWFoRE5sbnJm?= =?utf-8?B?RU5HbVRLbjBuODNXZWYvVVFZbUthUkNDUjR2eE1pL3dXTXVnQWVCU1hocGph?= =?utf-8?B?M1lIYStuSWllVCszMWVNM0c2REpGcGNqM2E0VE14K3A1OXBKbVhFYmRnMkM1?= =?utf-8?B?L3c9PQ==?= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8676.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0fb2c547-e270-4984-ce28-08d999119d68 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Oct 2021 06:18:38.3144 (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: JYObOfEU2DiDYOLoV4vbaduEzqqJZkQrJ/ejmVIv0QxPAVln+jaR9ASEIukhGC3mkGumKvamDF9Dcj/ah5/MWw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB9048 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211026_231843_928749_D6252505 X-CRM114-Status: GOOD ( 40.33 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org > -----Original Message----- > From: Tim Harvey > Sent: Wednesday, October 27, 2021 12:06 AM > To: Richard Zhu > Cc: Lucas Stach ; Kishon Vijay Abraham I > ; vkoul@kernel.org; Rob Herring ; > galak@kernel.crashing.org; Shawn Guo ; > linux-phy@lists.infradead.org; Device Tree Mailing List > ; Linux ARM Mailing List > ; open list > ; Sascha Hauer ; > dl-linux-imx > Subject: Re: [PATCH v3 0/9] add the imx8m pcie phy driver and imx8mm pcie > support > > On Mon, Oct 25, 2021 at 10:41 PM Richard Zhu > wrote: > > > > > -----Original Message----- > > > From: Tim Harvey > > > Sent: Tuesday, October 26, 2021 1:15 AM > > > To: Richard Zhu > > > Cc: Lucas Stach ; Kishon Vijay Abraham I > > > ; vkoul@kernel.org; Rob Herring ; > > > galak@kernel.crashing.org; Shawn Guo ; > > > linux-phy@lists.infradead.org; Device Tree Mailing List > > > ; Linux ARM Mailing List > > > ; open list > > > ; Sascha Hauer > > > ; dl-linux-imx > > > Subject: Re: [PATCH v3 0/9] add the imx8m pcie phy driver and imx8mm > > > pcie support > > > > > > On Mon, Oct 25, 2021 at 12:23 AM Richard Zhu > > > wrote: > > > > > > > > Snipped... > > > > > > > > > > > > > > > My boards do not use CLKREQ# so I do not have that > > > > > > > > > > > defined in pinmux and I found that if I add > > > > > > > > > > > MX8MM_IOMUXC_I2C4_SCL_PCIE1_CLKREQ_B > > > > > > > > > PCIe > > > > > > > > > > > works on my board but this isn't a solution just a > > > > > > > > > > > work-around (I have boards that use the only two > > > > > > > > > > > possible pins for CLKREQ as other > > > > > > > > > features). > > > > > > > > > > > > > > > > > > > > > > Similarly you will find on the imx8mm-evk if you > > > > > > > > > > > comment out the CLKREQ (which isn't required) the > > > > > > > > > > > imx8mmevk will end up hanging like my > > > > > > > > > boards: > > > > > > > > > > [Richard Zhu] Hi Tim: > > > > > > > > > > Regarding the SPEC, the CLKREQ# is mandatory required, > > > > > > > > > > and should be > > > > > > > > > configured as an open drain, active low signal. > > > > > > > > > > And this signal should be driven low by the PCIe M.2 > > > > > > > > > > device to request the > > > > > > > > > REF clock be available(active low). > > > > > > > > > > So, there is such kind of CLKREQ# pin definition on > > > > > > > > > > i.MX8MM EVK > > > > > > board. > > > > > > > > > > > > > > > > > > > > Anyway, I think the external OSC circuit should be > > > > > > > > > > always running if there is > > > > > > > > > no CLKREQ# on your HW board design. > > > > > > > > > > > > > > > > > > > > > > > > > > > > The way I understand it is CLKREQ# allows the host to > > > > > > > > > disable the REFCLK when not needed for power savings so > > > > > > > > > it would seem optional to implement that and if not > > > > > > > > > implemented should be left unconnected on > > > > > > the card. > > > > > > > > > > > > > > > > > [Richard Zhu] No, not that way. Regarding the SPEC, this > > > > > > > > signal is > > > > > > mandatory required. > > > > > > > > Especially for the L1ss usages. This signal would be > > > > > > > > OD(open drain), bi-directional, and might be driven > > > > > > > > low/high by RC or EP automatically if > > > > > > L1ss modes are enabled. > > > > > > > > You can make reference to the > > > > > > > > "ECN_L1_PM_Substates_with_CLKREQ_31_May_2013_Rev10a", > or > > > the > > > > > > chapter 5.5 L1 PM Substates of "PCI Express Base Specification, Rev. > > > > > > 4.0 Version 1.0". > > > > > > > > > > > > > > > > > > > > > > CLKREQ is only mandatory if you wish to support clock power > > > > > > > management. Many boards with a PCI host controller do not > > > > > > > support this. > > > > > [Richard Zhu] Okay, understood. > > > > > > > > > > > > > > > > > > > > > > > diff --git > > > > > > > > > > > a/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi > > > > > > > > > > > b/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi > > > > > > > > > > > index 5ce43daa0c8b..f0023b48f475 100644 > > > > > > > > > > > --- a/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi > > > > > > > > > > > +++ b/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi > > > > > > > > > > > @@ -448,7 +448,9 @@ > > > > > > > > > > > > > > > > > > > > > > pinctrl_pcie0: pcie0grp { > > > > > > > > > > > fsl,pins = < > > > > > > > > > > > +/* > > > > > > > > > > > > > > > > > > > > > > MX8MM_IOMUXC_I2C4_SCL_PCIE1_CLKREQ_B 0x61 > > > > > > > > > > > +*/ > > > > > > > > > > > > > > > > > > > > MX8MM_IOMUXC_SAI2_RXFS_GPIO4_IO21 > > > > > > > > > > > 0x41 > > > > > > > > > > > >; > > > > > > > > > > > }; > > > > > > > > > > > > > > > > > > > > > > I have PCIe working with a driver that I ported from > > > > > > > > > > > NXP's kernel which differs from your driver in that > > > > > > > > > > > the PCIe PHY is not abstracted to its own driver so > > > > > > > > > > > I think this has something to do with the order in > > > > > > > > > > > which the phy is reset or > > > > > initialized? > > > > > > > > > > > The configuration of > > > > > > > > > gpr14 bits looks correct to me. > > > > > > > > > > [Richard Zhu] The CLKREQ# PIN definition shouldn't be > masked. > > > > > > > > > > In the NXP's local BSP kernel, I just force CLKREQ# > > > > > > > > > > low to level up the HW > > > > > > > > > compatibility. > > > > > > > > > > That's might the reason why the PCIe works on your HW > > > > > > > > > > board although the > > > > > > > > > CLKREQ# PIN is not defined. > > > > > > > > > > This method is a little rude and violate the SPEC, and > > > > > > > > > > not recommended > > > > > > > > > although it levels up the HW compatibility. > > > > > > > > > > So I drop this method in this series. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Sorry, I don't understand what you are saying here. Is > > > > > > > > > there a change you are going to make to v4 that will > > > > > > > > > make this work for the evk and my boards? What is that change > exactly? > > > > > > > > [Richard Zhu] No. What I said above is that the CLKREQ# is > > > > > > > > forced to be low in NXP local BSP kernel. I guess this > > > > > > > > might be the reason why your > > > > > > board works. > > > > > > > > > > > > > > > > BIT11 and BIT10 of IOMUXC_GPR14 can be used to force the > > > > > > > > CLKREQ# to > > > > > > be low. > > > > > > > > Set CLKREQ_OVERRIDE_EN(bit10) 1b1, then write one zero to > > > > > > CLKREQ_OVERRIDE(bit11). > > > > > > > > > > > > > > > > > > > > > > Ok, that makes sense. Those bits are not explained well in > > > > > > > the IMX8MMRM. As my board's external REFCLK is always > > > > > > > enabled that must gate the clock internally to the host controller > block. > > > > > > > > > > > > > > I can confirm that asserting those GPR14 bits does resolve my > issue: > > > > > > > > > > > > > > #define IMX8MM_GPR_PCIE_CLKREQ_OVERRIDE_VAL BIT(11) > > > > > > > #define IMX8MM_GPR_PCIE_CLKREQ_OVERRIDE_EN > BIT(10) > > > > > > > > > > > > > > /* > > > > > > > * for boards that do not connect CLKREQ#, > > > > > > > * override CLKREQ# and drive it low internally > > > > > > > */ > > > > > > > regmap_update_bits(imx8_phy->iomuxc_gpr, > > > IOMUXC_GPR14, > > > > > > > > > > > > > IMX8MM_GPR_PCIE_CLKREQ_OVERRIDE_VAL, 0); > > > > > > > regmap_update_bits(imx8_phy->iomuxc_gpr, > > > IOMUXC_GPR14, > > > > > > > > > > > > > IMX8MM_GPR_PCIE_CLKREQ_OVERRIDE_EN, 1); > > > > > [Richard Zhu] regmap bits operations should manipulate according > bits. > > > > > The BIT(10) and BIT(11) should be touched actually. > > > > > > > > > > > > > > > > > > > Should this be added as a 'fsl,clkreq-unsupported' flag that > > > > > > > needs to be set true to implement the above code? > > > > > > > > > > > > > > > > > > > Richard, > > > > > > > > > > > > Sorry - spoke too soon. My test was flawed as I still was > > > > > > pinmuxing CLKREQ in my dt to work around the issue and after > > > > > > removed the above did not resolve my issue. The setting of > > > > > > OVERRIDE_EN was wrong above (should not be set to '1' but > > > > > > BIT(10) > > > > > > instead) but this code already exists in > > > > > > imx6_pcie_enable_ref_clk and is used for IMX8MM per your patch > so this is not the issue. > > > > > > > > > > > > What makes my board work is to clear GPR14 bit9 (like the NXP > > > > > > kernel > > > > > > does) so I don't think this bit does what we think it does > > > > > > (select between internal and ext clk). I think setting it > > > > > > enables clock gating via > > > > > CLKREQ#. > > > > > > > > > > > > This also points out that perhaps the CLKREQ_OVERRIDE logic > > > > > > should be moved to the new phy driver for IMX8MM. > > > > > [Richard Zhu] It sounds reasonable to consider to force the > > > > > CLKREQ# to be low. > > > > > I will think about that and add this in later v5 patch-set if > > > > > nobody has different concerns. > > > > > Thanks. > > > > [Richard Zhu] Hi Tim: > > > > As you mentioned above, the CLKREQ# GPIO PIN is not used for PCIe > > > > on > > > your board, right? > > > > " (I have boards that use the only two possible pins for CLKREQ as > > > > other > > > features)" > > > > > > > > Did the override configuration of the clkreq# will bring > > > > unexpected results > > > for other features on your board? > > > > > > > > > > What I mean is that imx8mm-venice-gw7901.dts uses both I2C4 and > > > UART4 and because I2C4_SCL and UART4_RXD are the only two pads that > > > could be pinmuxed for CLKREQ# I can't use the workaround of pin muxing > it. > > > > > > Currently your driver only works on my imx8mm-venice-* boards if I > > > add one of the following on boards that don't connect those pads (or > > > if I clear > > > IMX8MM_GPR_PCIE_REF_USE_PAD): > > > MX8MM_IOMUXC_I2C4_SCL_PCIE1_CLKREQ_B > > > MX8MM_IOMUXC_UART4_RXD_PCIE1_CLKREQ_B > > > > > > Note your 'PCI: imx: add the imx8mm pcie support' patch [1] does > > > enable this code already in the imx6_pcie_enable_ref_clk function to > > > override REF_CLK and drive it low: > > > > > > offset = imx6_pcie_grp_offset(imx6_pcie); > > > /* > > > * Set the over ride low and enabled > > > * make sure that REF_CLK is turned on. > > > */ > > > regmap_update_bits(imx6_pcie->iomuxc_gpr, offset, > > > IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE, > > > 0); > > > regmap_update_bits(imx6_pcie->iomuxc_gpr, offset, > > > IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE_EN, > > > IMX8MQ_GPR_PCIE_CLK_REQ_OVERRIDE_EN); > > > > > > So this is already being run and yet my boards still do not work > > > unless I clr IMX8MM_GPR_PCIE_REF_USE_PAD like this which is what the > > > NXP downstream driver does: > > > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, > > > IMX8MM_GPR_PCIE_REF_USE_PAD, 0); > > > > > > This is why I'm not sure that bit does what you think it does... I > > > feel like that bit enables 'Use CLKREQ# to enable CLK'. > > > > > > You tell me the descriptions for GPR14 are wrong in the reference manual. > > > Please provide correct descriptions for us so we can sort this out. > > > > > [Richard Zhu] Hi Tim: > > The BIT9 of GPR14 is used as "GPR_PCIE1_PHY_I_AUX_EN_OVERRIDE_EN" > > and BIT19 is used as "GPR_PCIE1_PHY_FUNC_I_AUX_EN" on i.MX8MM. > > I think the two bits descriptions are used to describe the BIT19 and BIT9 > together refer to my guess. > > {GPR_PCIE1_PHY_I_AUX_EN_OVERRIDE_EN(BIT9), > > GPR_PCIE1_PHY_FUNC_I_AUX_EN(BIT19) } > > 2'b00: External Reference Clock I/O (for PLL) Disable > > 2'b01: External Reference Clock I/O (for PLL) Enable > > 2'b10: External Reference Clock I/O (for PLL) Disable > > 2'b11: External Reference Clock I/O (for PLL) output is controlled by > > CLKREQ# > > > > The option1&3 should be forbidden, since the external REF CLK I/O should > be enabled on your board and EVK board. > > In the option2&4, the BIT19 should be set to be 1'b1.' > > > > So, regarding my understand, if the CLKREQ# is not pinmuxed in your use > case, the IMX8MM_GPR_PCIE_REF_USE_PAD (BIT9) should be 1'b0. > > > > Richard, > > Ok, if this is the case then drivers/pci/controller/dwc/pci-imx6.c for IMX8MM > should not touch GPR14 and '[v3,9/9] PCI: imx: add the imx8mm pcie support' > should have this on top and squashed: > diff --git a/drivers/pci/controller/dwc/pci-imx6.c > b/drivers/pci/controller/dwc/pci-imx6.c > index 7c89bd1a6441..458d54c8e385 100644 > --- a/drivers/pci/controller/dwc/pci-imx6.c > +++ b/drivers/pci/controller/dwc/pci-imx6.c > @@ -452,8 +452,12 @@ static int imx6_pcie_enable_ref_clk(struct > imx6_pcie *imx6_pcie) > break; > case IMX7D: > break; > - case IMX8MQ: > case IMX8MM: > + ret = clk_prepare_enable(imx6_pcie->pcie_aux); > + if (ret) > + dev_err(dev, "unable to enable pcie_aux > clock\n"); > + break; > + case IMX8MQ: > ret = clk_prepare_enable(imx6_pcie->pcie_aux); > if (ret) { > dev_err(dev, "unable to enable pcie_aux > clock\n"); > [Richard Zhu] Sorry, I might don't understand what's meaning of the changes. What're the differences between before and after the changes? > > And your '[v3,5/9] phy: freescale: pcie: initialize the imx8 pcie standalone phy > driver' should have this on top and squashed: > diff --git a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c > b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c > index 317cf61bff37..27ca0b9f1d92 100644 > --- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c > +++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c > @@ -43,7 +43,7 @@ > #define IMX8MM_GPR_PCIE_CMN_RST BIT(18) > #define IMX8MM_GPR_PCIE_POWER_OFF BIT(17) > #define IMX8MM_GPR_PCIE_SSC_EN BIT(16) > -#define IMX8MM_GPR_PCIE_REF_USE_PAD BIT(9) > +#define IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE BIT(9) > > struct imx8_pcie_phy { > u32 refclk_pad_mode; > @@ -63,12 +63,12 @@ static int imx8_pcie_phy_init(struct phy *phy) > reset_control_assert(imx8_phy->reset); > > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, > - IMX8MM_GPR_PCIE_REF_USE_PAD, > - imx8_phy->refclk_pad_mode == 1 ? > - IMX8MM_GPR_PCIE_REF_USE_PAD : 0); > + IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE, > + 0); > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, > IMX8MM_GPR_PCIE_AUX_EN, > - IMX8MM_GPR_PCIE_AUX_EN); > + imx8_phy->refclk_pad_mode == > IMX8_PCIE_REFCLK_PAD_INPUT ? > + IMX8MM_GPR_PCIE_AUX_EN : 0); > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, > IMX8MM_GPR_PCIE_POWER_OFF, 0); > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, @@ > -76,7 +76,7 @@ static int imx8_pcie_phy_init(struct phy *phy) > > regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, > IMX8MM_GPR_PCIE_REF_CLK_SEL, > - imx8_phy->refclk_pad_mode == 1 ? > + imx8_phy->refclk_pad_mode == > IMX8_PCIE_REFCLK_PAD_INPUT ? > IMX8MM_GPR_PCIE_REF_CLK_EXT : > IMX8MM_GPR_PCIE_REF_CLK_PLL); > usleep_range(100, 200); > > I tested this and it works both on imx8mm-evk and imx8mm-venice-* which > both have external clkgen. > > However, the above does not set IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE > for the case where CLKREQ# is connected and thus should be used so I think > we need to add a property for that to define if CLKREQ# is hooked up or not. I > tested enabling IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE and as expected > that worked on the imx8mm-evk which hooks up CLKREQ# but not > imx8mm-venice which does not hook up CLKREQ#. > > What do you think about adding a property for this? [Richard Zhu] First of all, thanks a lot for your help to figure out the details. Agree with your proposal. One optional property "fsl,clkreq-unsupported" would be added for the CLKREQ# not hooked case later. diff --git a/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml b/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml index 097ba2a28fb4..2264452924cc 100644 --- a/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml +++ b/Documentation/devicetree/bindings/phy/fsl,imx8-pcie-phy.yaml @@ -58,6 +58,11 @@ properties: $ref: /schemas/types.yaml#/definitions/uint32 default: 0 + fsl,clkreq-unsupported: + type: boolean + description: A boolean property whoes presence indicates the CLKREQ# + signal isn't supported in the HW board design (optional required). + diff --git a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c index 07eea39283ed..4b4402eaddcc 100644 --- a/drivers/phy/freescale/phy-fsl-imx8m-pcie.c +++ b/drivers/phy/freescale/phy-fsl-imx8m-pcie.c @@ -43,7 +43,7 @@ #define IMX8MM_GPR_PCIE_CMN_RST BIT(18) #define IMX8MM_GPR_PCIE_POWER_OFF BIT(17) #define IMX8MM_GPR_PCIE_SSC_EN BIT(16) -#define IMX8MM_GPR_PCIE_REF_USE_PAD BIT(9) +#define IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE BIT(9) struct imx8_pcie_phy { void __iomem *base; @@ -54,6 +54,7 @@ struct imx8_pcie_phy { u32 refclk_pad_mode; u32 tx_deemph_gen1; u32 tx_deemph_gen2; + bool clkreq_unused; }; static int imx8_pcie_phy_init(struct phy *phy) @@ -65,13 +66,15 @@ static int imx8_pcie_phy_init(struct phy *phy) reset_control_assert(imx8_phy->reset); pad_mode = imx8_phy->refclk_pad_mode; + /* Set AUX_EN_OVERRIDE 1'b0, when the CLKREQ# isn't hooked */ regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, - IMX8MM_GPR_PCIE_REF_USE_PAD, - pad_mode == IMX8MM_GPR_PCIE_REF_USE_PAD ? - IMX8MM_GPR_PCIE_REF_USE_PAD : 0); + IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE, + imx8_phy->clkreq_unused ? + 0 : IMX8MM_GPR_PCIE_AUX_EN_OVERRIDE); regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, IMX8MM_GPR_PCIE_AUX_EN, - IMX8MM_GPR_PCIE_AUX_EN); + pad_mode == IMX8_PCIE_REFCLK_PAD_INPUT ? + IMX8MM_GPR_PCIE_AUX_EN : 0); regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, IMX8MM_GPR_PCIE_POWER_OFF, 0); regmap_update_bits(imx8_phy->iomuxc_gpr, IOMUXC_GPR14, @@ -171,6 +174,11 @@ static int imx8_pcie_phy_probe(struct platform_device *pdev) &imx8_phy->tx_deemph_gen2)) imx8_phy->tx_deemph_gen2 = 0; + if (of_property_read_bool(np, "fsl,clkreq-unsupported")) + imx8_phy->clkreq_unused = true; + else + imx8_phy->clkreq_unused = false; + imx8_phy->clk = devm_clk_get(dev, "ref"); if (IS_ERR(imx8_phy->clk)) { dev_err(dev, "failed to get imx pcie phy clock\n"); Best Regards Richard Zhu > > Best regards, > > Tim _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel