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 49F7CC433FE for ; Thu, 28 Oct 2021 01:51:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1B7C26109E for ; Thu, 28 Oct 2021 01:51:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229791AbhJ1ByR (ORCPT ); Wed, 27 Oct 2021 21:54:17 -0400 Received: from mail-vi1eur05on2079.outbound.protection.outlook.com ([40.107.21.79]:42657 "EHLO EUR05-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S229534AbhJ1ByP (ORCPT ); Wed, 27 Oct 2021 21:54:15 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ojjz3haKeITverFWMRVn9AHo9vON1yWew0AewcWY6J+cNopVnK6kuBy90i5tMyT3gXvF9YHzsgmishKXWLunSbxoKdhfUgl4aHH4CnKUEfEg1fgrzXPts71xiTkqFH+rjawS99iobkJ5mgYMoX1Z7o0n9dgBU3KDrsL6G9eHsAMWIMGD/6F58qtuiyiPveS2kYt4BWry/W9/id87F2y55Eb3TNDJjKYDvbcuQqwhEU5EqBLLAr6N+ATrzYfiZzhULEZsTEXssZiQ2uY+vGiWRAulbHy9zQesUziX9mCB8QHYkz8+c/2x1FRiHSz0BxaWO2iinLCe2CDZkkDw8I7olw== 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=2Z6lQcucqj3OCvWzwzvrgBOvWcdRBxrK2CTX/fmMaRs=; b=goqxrfh6Qgytfrhgfxnf3Kvj1mvmHdC7+ejqPpR0DjJwaCup4v8gh9A044d8YRXvwGVtVBuJVPrXuRvdANSu0/Xo93FjI4RBoStQ2eWSiSOXkStMBvBNnoa0IQfZN/XCExQldMVkEyJH+hFN3o/R+Hnz9W5cV29J6Rd/Ru30YnFCn/z86vNmX4lICbF30pV/1lSEhyrMwdqAccxVyPgWsSEYLAAC+13eb7qkr3Wsn3gxm/K1z2dYCpL6whMrxcV5PTjo9h2IzObOoxwBMMApC9hy9Gm8RouiwCxthDSmgwSe47sJOr7L2jb5aWpXRYbZmxARNJRfsLuW2W4ZX1tiaw== 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=2Z6lQcucqj3OCvWzwzvrgBOvWcdRBxrK2CTX/fmMaRs=; b=lPBII2EyZ94En2veMHvYJgJmJwIyhq2UScaYyrVHK7AvH5QXPufOMiTtIaNGqU6/3prK4lO2rDHHsIEfYf42E+JMaNvBDK5qRPz77NHy1advYX8JNVGmUgsdr1IUIVFym7+temSaPclS35hoetawRgydwAemO96i7u4lRp/2UqI= Received: from AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) by AS8PR04MB8531.eurprd04.prod.outlook.com (2603:10a6:20b:422::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18; Thu, 28 Oct 2021 01:51:46 +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.015; Thu, 28 Oct 2021 01:51:46 +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+SAIADuD4QgABZ2ZCAAKpdAIAAx5NwgAC3poCAAK5bEIAA3OuAgACiz+A= Date: Thu, 28 Oct 2021 01:51:46 +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: 1a3a045c-5ba4-443c-4aa2-08d999b57ffb x-ms-traffictypediagnostic: AS8PR04MB8531: 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: 9knHySWDzH0nF2xXWdxQcGlxMg13AR2Cmk4Wt8N9GHofkufjt4eg68v/EjIhHk8dendGrW23rTnMW27Bf61HHYlDP52z5BE/7hto0EIWLlVGBIla6K7nr0qR3uaLhwlG7976dqr2CEFg/JaTXoWahIAj13DnPw5C1oTskCit/XUdTPNG7qFgG2v4HbvzP03WO/ptiPL5IjFY/vIOktoig/BW34A3Fqk0pW93ntMnhHRXPZQuL0weWTQVuRhYrn8kKGugel6iA6ZRpPaAZJsICrHCbTMEHmFJ+kAjYexpAN5464NVpYywWBVaiD53ak1wMj7dYEwUXBzWraDXoXWYCKQ4SANTmhP/zcH8M1bTGUyBEDfTpbdpIta9ESC9OJbxQo3kvmt/C5bo8tUIpFnhBnbLvgzjU/OCuxPrAAlTDe4jDw0wm+Grz/XNyxXHygOXiWbXEFtQes0RZHIsIt+InyzDTqVqT31obk+O3vlV21Z4Ubwn7KaVKuE2melcCoEJ/W7/aAtiZjCBYmGGDQgzRSRhsrfGumLw6SCdDnKvCLvDK7K1AJVa1iP7Oxxl/u84fH7WnOQ9orTPcsEshiDLwCt5YpFQVVO8go1BF8Md4SK38NAzs8bt+XRZiNYVEWrBrEgjEymS9S+pml1/CPnaf7OLzvL1tCYWVAVxMPVi7U+b+jNkeCoHKVOpUoE/GAI2Xy6mj65RRwIqj+i7TKEqDSqUUkw0SyKYV2Ck2GHNKC0= 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)(4326008)(122000001)(86362001)(316002)(7696005)(30864003)(508600001)(6506007)(76116006)(66476007)(186003)(26005)(7416002)(54906003)(66556008)(66446008)(64756008)(2906002)(9686003)(55016002)(38070700005)(52536014)(83380400001)(6916009)(71200400001)(8676002)(66946007)(53546011)(5660300002)(8936002)(38100700002)(33656002)(32563001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SFhHUk5RS011dEd1UzMyQytXeXVGREQ2YmZINVdkOHk3dmlyZGlHVjZ0VjZU?= =?utf-8?B?YW41Y3BkSE12TExXbFJLQ005cEc1WTZrMzBlbGU0dFdaRG9MTVEzRlZNRXlB?= =?utf-8?B?dENJV0VxWExMek9udUZucm1qT3diL01ub1RmWjdIbloxSFJXQ0hUL2JyY3R3?= =?utf-8?B?M1crYzFPamw0R1VJbThUS0MzNzlKZXR0OHhGTVBRT2t2Y2JoUS8zNDVVWmlN?= =?utf-8?B?cWF1RFFyNFUrN3NpdUd2RjBwWXgybnBnQm1ZengyTGJRWXdJNkVYNzFxalY5?= =?utf-8?B?VVBYY0lmTjVsZGpxT29QSXhocTMxbmpmU2FPNytuSmt1QzlOeW1NVnVqMEMv?= =?utf-8?B?aE91aWJ5YVpoZGpiUHRhT2xaYkNOaHYwdTJ5TStyOHFKazBNUTRMdEk4aUJ6?= =?utf-8?B?TUd4RzZyZE1NYTd0NkZBSFRSdHhSbXFRbWZCK0kvMFpPcTFVR3JzbUQ0Wllu?= =?utf-8?B?VXo2ZG1rV3dpZFR0TUxZQy82dDZIL09UcDd3MU5VNE8zZTlkbzVzWFVDdFFF?= =?utf-8?B?NjloV2lKU3JFY1J0RGJUaFNEelZOZm14eFpLd0JobXlJVzF6T0l1ZVhSTk5l?= =?utf-8?B?Z0FUZjBOYktlSlBKbjIxYkhWaGNCdExZMEN2L2tZdFU5KzlUVW5BWEtpczlq?= =?utf-8?B?Wkpub0FpNEdzQzBhcEZ0Y0ZYeUNOL0FuTDJjZWVlTVFPZWkxT0lLQjY1ZUdw?= =?utf-8?B?ZFFvc29UY2QvODBNU09EZ1VFOTByREJLTjRtWldWY2ZWV1JhLzZ4a2J1K0dC?= =?utf-8?B?b3hYeDBDQ29neWl6eFFJL2ZSUVZOWmpFRUM5WFVLOUtxZHhvUHFWMWtoRkNP?= =?utf-8?B?dzk2YXBOZ2x5VDRmL09VdVNVS0VwSGZhOHdwVUUzZ25NWGlYOU5DenFEUUlh?= =?utf-8?B?bCtHVWFjU1p3Wk9ybkp2Zm9VSnlmcWdOVTY0R3FqUmN4bWIrYVp1QmZpOXY3?= =?utf-8?B?NFgvc1JEcG9IWndHRk05Y0dUR2dYUEZYWU9jTmVRY29vR2ljWDlTajRSMngr?= =?utf-8?B?RXc1QkdaejVxOG5YYjdrZ3BRbjE1MVpFbDMxNGQ1S1kydzNCY0o3Ulg4L0pB?= =?utf-8?B?VWloSkN5MXpOMzdDYkdSanJZRFk4R2VteGdwTnhuWTNkU3VmV0gveGhyVXlD?= =?utf-8?B?RHEzbFQyQzNnS0N3Wkx4ZEJPQ2M3ZE4vWFpZTGIxQ1Q0RXJjSkY4N0RxYXpr?= =?utf-8?B?SkcvZFJSdjlQRzNDS1NSdFlIOVI5eVhGbU5VUTFjb09TMnlrQWpnek5FNlV1?= =?utf-8?B?bkliamw2eUwvQ1JqNmNKNHorSk1UdUROZFhCQXpESlN4alRrd0ttZ2lHZjR4?= =?utf-8?B?MXJrbTFHdjRoSjlaVkNraG82WjNIZmhoNDVJVjZQbU9kU214dStRN3gybmVU?= =?utf-8?B?TDVoNTVHWXZHR1I3bmQ5MUlib3laMHoyYnR6S0JBYXpTZTV0TkJLaFhwSnBl?= =?utf-8?B?Vjk4Z2VUVE54RHV2MS9nQW5BeW1zUG9vUmQvS0FOT3p4ZEsyRmJOQkRDV2to?= =?utf-8?B?cXFjc1pJWjJNU3VQNlpwanRmei9UZWtBR0hDYWV1YndSNEk5RGNZNnRqK3p5?= =?utf-8?B?SDJXUm9wVmVIUWtOWllEYXFJdjM4MDZwOUNFWHFRYnRkVlBzTWsyZVFMY21X?= =?utf-8?B?bGtDcnkxSTBwNW1jRkJ6c2IrNzVpZ3F1RGI2bzhCeHcvbWtlMVdJZzJPQlRM?= =?utf-8?B?UFE5L0VMdFpoUWRaenFvVDg2OVhJamtqcUgvZG11QVN2VzAwSFJFTmZjcytB?= =?utf-8?B?Y2RlREt3dGpaakJFV0JVT1ZIRkNZVWRGOHZiSFdTd1ZObjBRdHp1SXhxNlhr?= =?utf-8?B?Y3JpZjh4K3hycjQ0ZlZ5MzNtZkIrdEd3OWdhcG9KY3VpNEFVbTZTbmlDRHNh?= =?utf-8?B?U0Irb0NkdFZWOTNQaHl3OElTM1BMTjArK1ZPdWUzMnNvajRhdUpBZTdJRUQ2?= =?utf-8?B?MENvQXFTRFJ4eUlmSGFPTS9tc1JWWmF1RUJJTG5qTHlhcUNodFFJN3FQNHpW?= =?utf-8?B?TTVTbTVjMVVrNVIvaHFVa3BScXIvSDlkRDBwbmZidVV6WnVTSmt5Wjhvdm9l?= =?utf-8?B?RGNucEhOaUU5cVZjdUVhYzRzUkJ0YXNST3pwVzdKajhsdzl0LzVqSlhXRjM5?= =?utf-8?B?NDhJR2I3T294MlZnVVhScWxaYjdkc1JHaFlXbHNGVUdQcFE2ZHYrL2hBOXpj?= =?utf-8?B?RkE9PQ==?= 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: 1a3a045c-5ba4-443c-4aa2-08d999b57ffb X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Oct 2021 01:51:46.4184 (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: ta0FI02qLeCuzkzX/PUObA31VrysPFR47U/dr5+TS99XXEqCiOQZQ53XzqhbbqZdr97KP6aP2l7kcwkc89z7zw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8531 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBUaW0gSGFydmV5IDx0aGFydmV5 QGdhdGV3b3Jrcy5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAyNywgMjAyMSAxMTo0 MSBQTQ0KPiBUbzogUmljaGFyZCBaaHUgPGhvbmd4aW5nLnpodUBueHAuY29tPg0KPiBDYzogTHVj YXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0cm9uaXguZGU+OyBLaXNob24gVmlqYXkgQWJyYWhhbSBJ DQo+IDxraXNob25AdGkuY29tPjsgdmtvdWxAa2VybmVsLm9yZzsgUm9iIEhlcnJpbmcgPHJvYmhA a2VybmVsLm9yZz47DQo+IGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc7IFNoYXduIEd1byA8c2hh d25ndW9Aa2VybmVsLm9yZz47DQo+IGxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnOyBEZXZp Y2UgVHJlZSBNYWlsaW5nIExpc3QNCj4gPGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnPjsgTGlu dXggQVJNIE1haWxpbmcgTGlzdA0KPiA8bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnPjsgb3BlbiBsaXN0DQo+IDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPjsgU2FzY2hh IEhhdWVyIDxrZXJuZWxAcGVuZ3V0cm9uaXguZGU+Ow0KPiBkbC1saW51eC1pbXggPGxpbnV4LWlt eEBueHAuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDAvOV0gYWRkIHRoZSBpbXg4bSBw Y2llIHBoeSBkcml2ZXIgYW5kIGlteDhtbQ0KPiBwY2llIHN1cHBvcnQNCj4gDQo+IE9uIFR1ZSwg T2N0IDI2LCAyMDIxIGF0IDExOjE4IFBNIFJpY2hhcmQgWmh1IDxob25neGluZy56aHVAbnhwLmNv bT4NCj4gd3JvdGU6DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiBGcm9tOiBUaW0gSGFydmV5IDx0aGFydmV5QGdhdGV3b3Jrcy5jb20+DQo+ID4gPiBTZW50OiBX ZWRuZXNkYXksIE9jdG9iZXIgMjcsIDIwMjEgMTI6MDYgQU0NCj4gPiA+IFRvOiBSaWNoYXJkIFpo dSA8aG9uZ3hpbmcuemh1QG54cC5jb20+DQo+ID4gPiBDYzogTHVjYXMgU3RhY2ggPGwuc3RhY2hA cGVuZ3V0cm9uaXguZGU+OyBLaXNob24gVmlqYXkgQWJyYWhhbSBJDQo+ID4gPiA8a2lzaG9uQHRp LmNvbT47IHZrb3VsQGtlcm5lbC5vcmc7IFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+Ow0K PiA+ID4gZ2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZzsgU2hhd24gR3VvIDxzaGF3bmd1b0BrZXJu ZWwub3JnPjsNCj4gPiA+IGxpbnV4LXBoeUBsaXN0cy5pbmZyYWRlYWQub3JnOyBEZXZpY2UgVHJl ZSBNYWlsaW5nIExpc3QNCj4gPiA+IDxkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZz47IExpbnV4 IEFSTSBNYWlsaW5nIExpc3QNCj4gPiA+IDxsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmc+OyBvcGVuIGxpc3QNCj4gPiA+IDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPjsg U2FzY2hhIEhhdWVyDQo+ID4gPiA8a2VybmVsQHBlbmd1dHJvbml4LmRlPjsgZGwtbGludXgtaW14 IDxsaW51eC1pbXhAbnhwLmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMgMC85XSBh ZGQgdGhlIGlteDhtIHBjaWUgcGh5IGRyaXZlciBhbmQNCj4gaW14OG1tDQo+ID4gPiBwY2llIHN1 cHBvcnQNCj4gPiA+DQo+ID4gPiBPbiBNb24sIE9jdCAyNSwgMjAyMSBhdCAxMDo0MSBQTSBSaWNo YXJkIFpodQ0KPiA8aG9uZ3hpbmcuemh1QG54cC5jb20+DQo+ID4gPiB3cm90ZToNCj4gPiA+ID4N Cj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IFRp bSBIYXJ2ZXkgPHRoYXJ2ZXlAZ2F0ZXdvcmtzLmNvbT4NCj4gPiA+ID4gPiBTZW50OiBUdWVzZGF5 LCBPY3RvYmVyIDI2LCAyMDIxIDE6MTUgQU0NCj4gPiA+ID4gPiBUbzogUmljaGFyZCBaaHUgPGhv bmd4aW5nLnpodUBueHAuY29tPg0KPiA+ID4gPiA+IENjOiBMdWNhcyBTdGFjaCA8bC5zdGFjaEBw ZW5ndXRyb25peC5kZT47IEtpc2hvbiBWaWpheSBBYnJhaGFtIEkNCj4gPiA+ID4gPiA8a2lzaG9u QHRpLmNvbT47IHZrb3VsQGtlcm5lbC5vcmc7IFJvYiBIZXJyaW5nDQo+ID4gPiA+ID4gPHJvYmhA a2VybmVsLm9yZz47IGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc7IFNoYXduIEd1bw0KPiA+ID4g PiA+IDxzaGF3bmd1b0BrZXJuZWwub3JnPjsgbGludXgtcGh5QGxpc3RzLmluZnJhZGVhZC5vcmc7 IERldmljZQ0KPiA+ID4gPiA+IFRyZWUgTWFpbGluZyBMaXN0IDxkZXZpY2V0cmVlQHZnZXIua2Vy bmVsLm9yZz47IExpbnV4IEFSTQ0KPiA+ID4gPiA+IE1haWxpbmcgTGlzdCA8bGludXgtYXJtLWtl cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnPjsgb3BlbiBsaXN0DQo+ID4gPiA+ID4gPGxpbnV4LWtl cm5lbEB2Z2VyLmtlcm5lbC5vcmc+OyBTYXNjaGEgSGF1ZXINCj4gPiA+ID4gPiA8a2VybmVsQHBl bmd1dHJvbml4LmRlPjsgZGwtbGludXgtaW14IDxsaW51eC1pbXhAbnhwLmNvbT4NCj4gPiA+ID4g PiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDAvOV0gYWRkIHRoZSBpbXg4bSBwY2llIHBoeSBkcml2 ZXIgYW5kDQo+ID4gPiA+ID4gaW14OG1tIHBjaWUgc3VwcG9ydA0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gT24gTW9uLCBPY3QgMjUsIDIwMjEgYXQgMTI6MjMgQU0gUmljaGFyZCBaaHUNCj4gPiA+ID4g PiA8aG9uZ3hpbmcuemh1QG54cC5jb20+DQo+ID4gPiA+ID4gd3JvdGU6DQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gU25pcHBlZC4uLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gTXkgYm9hcmRzIGRvIG5vdCB1c2UgQ0xLUkVRIyBzbyBJIGRvIG5vdCBoYXZlDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IHRoYXQgZGVmaW5lZCBpbiBwaW5tdXggYW5kIEkgZm91bmQg dGhhdCBpZiBJIGFkZA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBNWDhNTV9JT01VWENfSTJD NF9TQ0xfUENJRTFfQ0xLUkVRX0INCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBQQ0llDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IHdvcmtzIG9uIG15IGJvYXJkIGJ1dCB0aGlzIGlzbid0IGEgc29s dXRpb24ganVzdA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhIHdvcmstYXJvdW5kIChJIGhh dmUgYm9hcmRzIHRoYXQgdXNlIHRoZSBvbmx5DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHR3 byBwb3NzaWJsZSBwaW5zIGZvciBDTEtSRVEgYXMgb3RoZXINCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiBmZWF0dXJlcykuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IFNpbWlsYXJseSB5b3Ugd2lsbCBmaW5kIG9uIHRoZSBpbXg4bW0tZXZrIGlmIHlv dQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBjb21tZW50IG91dCB0aGUgQ0xLUkVRICh3aGlj aCBpc24ndCByZXF1aXJlZCkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gdGhlIGlteDhtbWV2 ayB3aWxsIGVuZCB1cCBoYW5naW5nIGxpa2UgbXkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBib2Fy ZHM6DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBbUmljaGFyZCBaaHVdIEhpIFRpbToNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IFJlZ2FyZGluZyB0aGUgU1BFQywgdGhlIENMS1JFUSMgaXMgbWFu ZGF0b3J5DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiByZXF1aXJlZCwgYW5kIHNob3VsZCBiZQ0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+IGNvbmZpZ3VyZWQgYXMgYW4gb3BlbiBkcmFpbiwgYWN0aXZl IGxvdyBzaWduYWwuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBBbmQgdGhpcyBzaWduYWwgc2hv dWxkIGJlIGRyaXZlbiBsb3cgYnkgdGhlIFBDSWUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IE0u MiBkZXZpY2UgdG8gcmVxdWVzdCB0aGUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBSRUYgY2xvY2sg YmUgYXZhaWxhYmxlKGFjdGl2ZSBsb3cpLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gU28sIHRo ZXJlIGlzIHN1Y2gga2luZCBvZiBDTEtSRVEjIHBpbiBkZWZpbml0aW9uDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiBvbiBpLk1YOE1NIEVWSw0KPiA+ID4gPiA+ID4gPiA+IGJvYXJkLg0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEFueXdheSwgSSB0aGlu ayB0aGUgZXh0ZXJuYWwgT1NDIGNpcmN1aXQgc2hvdWxkIGJlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiBhbHdheXMgcnVubmluZyBpZiB0aGVyZSBpcw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IG5v IENMS1JFUSMgb24geW91ciBIVyBib2FyZCBkZXNpZ24uDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gVGhlIHdheSBJ IHVuZGVyc3RhbmQgaXQgaXMgQ0xLUkVRIyBhbGxvd3MgdGhlIGhvc3QNCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiB0byBkaXNhYmxlIHRoZSBSRUZDTEsgd2hlbiBub3QgbmVlZGVkIGZvciBwb3dlcg0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+IHNhdmluZ3Mgc28gaXQgd291bGQgc2VlbSBvcHRpb25hbCB0 byBpbXBsZW1lbnQgdGhhdA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGFuZCBpZiBub3QgaW1wbGVt ZW50ZWQgc2hvdWxkIGJlIGxlZnQgdW5jb25uZWN0ZWQgb24NCj4gPiA+ID4gPiA+ID4gPiB0aGUg Y2FyZC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBbUmljaGFy ZCBaaHVdIE5vLCBub3QgdGhhdCB3YXkuIFJlZ2FyZGluZyB0aGUgU1BFQywNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gdGhpcyBzaWduYWwgaXMNCj4gPiA+ID4gPiA+ID4gPiBtYW5kYXRvcnkgcmVxdWly ZWQuDQo+ID4gPiA+ID4gPiA+ID4gPiA+IEVzcGVjaWFsbHkgZm9yIHRoZSBMMXNzIHVzYWdlcy4g VGhpcyBzaWduYWwgd291bGQgYmUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gT0Qob3BlbiBkcmFpbiks IGJpLWRpcmVjdGlvbmFsLCBhbmQgbWlnaHQgYmUgZHJpdmVuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ IGxvdy9oaWdoIGJ5IFJDIG9yIEVQIGF1dG9tYXRpY2FsbHkgaWYNCj4gPiA+ID4gPiA+ID4gPiBM MXNzIG1vZGVzIGFyZSBlbmFibGVkLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBZb3UgY2FuIG1ha2Ug cmVmZXJlbmNlIHRvIHRoZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiAiRUNOX0wxX1BNX1N1YnN0 YXRlc193aXRoX0NMS1JFUV8zMV9NYXlfMjAxM19SZXYxMGEiLA0KPiA+ID4gb3INCj4gPiA+ID4g PiB0aGUNCj4gPiA+ID4gPiA+ID4gPiBjaGFwdGVyIDUuNSBMMSBQTSBTdWJzdGF0ZXMgb2YgIlBD SSBFeHByZXNzIEJhc2UNCj4gU3BlY2lmaWNhdGlvbiwgUmV2Lg0KPiA+ID4gPiA+ID4gPiA+IDQu MCBWZXJzaW9uIDEuMCIuDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiA+ID4gQ0xLUkVRIGlzIG9ubHkgbWFuZGF0b3J5IGlmIHlvdSB3aXNoIHRv IHN1cHBvcnQgY2xvY2sNCj4gPiA+ID4gPiA+ID4gPiA+IHBvd2VyIG1hbmFnZW1lbnQuIE1hbnkg Ym9hcmRzIHdpdGggYSBQQ0kgaG9zdA0KPiBjb250cm9sbGVyDQo+ID4gPiA+ID4gPiA+ID4gPiBk byBub3Qgc3VwcG9ydCB0aGlzLg0KPiA+ID4gPiA+ID4gPiBbUmljaGFyZCBaaHVdIE9rYXksIHVu ZGVyc3Rvb2QuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGEvYXJj aC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1tLWV2ay5kdHNpDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IGIvYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14OG1tLWV2ay5k dHNpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGluZGV4IDVjZTQzZGFhMGM4Yi4uZjAwMjNi NDhmNDc1IDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9pbXg4bW0tZXZr LmR0c2kNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gKysrDQo+IGIvYXJjaC9hcm02NC9ib290 L2R0cy9mcmVlc2NhbGUvaW14OG1tLWV2ay5kDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICsr KyB0c2kNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gQEAgLTQ0OCw3ICs0NDgsOSBAQA0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAg IHBpbmN0cmxfcGNpZTA6IHBjaWUwZ3JwIHsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAg ICAgICAgICAgICAgIGZzbCxwaW5zID0gPA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiArLyoN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gTVg4 TU1fSU9NVVhDX0kyQzRfU0NMX1BDSUUxX0NMS1JFUV9CDQo+IDB4NjENCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gKyovDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gTVg4TU1fSU9NVVhDX1NBSTJfUlhGU19HUElPNF9JTzIxDQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IDB4NDENCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgICAg ICAgID47DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgfTsNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gSSBoYXZlIFBDSWUgd29y a2luZyB3aXRoIGEgZHJpdmVyIHRoYXQgSSBwb3J0ZWQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gZnJvbSBOWFAncyBrZXJuZWwgd2hpY2ggZGlmZmVycyBmcm9tIHlvdXIgZHJpdmVyDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IGluIHRoYXQgdGhlIFBDSWUgUEhZIGlzIG5vdCBhYnN0cmFj dGVkIHRvIGl0cw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBvd24gZHJpdmVyIHNvIEkgdGhp bmsgdGhpcyBoYXMgc29tZXRoaW5nIHRvIGRvDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHdp dGggdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBwaHkgaXMgcmVzZXQgb3INCj4gPiA+ID4gPiA+ID4g aW5pdGlhbGl6ZWQ/DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFRoZSBjb25maWd1cmF0aW9u IG9mDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZ3ByMTQgYml0cyBsb29rcyBjb3JyZWN0IHRvIG1l Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gW1JpY2hhcmQgWmh1XSBUaGUgQ0xLUkVRIyBQSU4g ZGVmaW5pdGlvbiBzaG91bGRuJ3QNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGJlDQo+ID4gPiBt YXNrZWQuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBJbiB0aGUgTlhQJ3MgbG9jYWwgQlNQIGtl cm5lbCwgSSBqdXN0IGZvcmNlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBDTEtSRVEjIGxvdyB0 byBsZXZlbCB1cCB0aGUgSFcNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBjb21wYXRpYmlsaXR5Lg0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gVGhhdCdzIG1pZ2h0IHRoZSByZWFzb24gd2h5IHRoZSBQ Q0llIHdvcmtzIG9uIHlvdXINCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEhXIGJvYXJkIGFsdGhv dWdoIHRoZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IENMS1JFUSMgUElOIGlzIG5vdCBkZWZpbmVk Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gVGhpcyBtZXRob2QgaXMgYSBsaXR0bGUgcnVkZSBh bmQgdmlvbGF0ZSB0aGUgU1BFQywNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGFuZCBub3QgcmVj b21tZW5kZWQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhbHRob3VnaCBpdCBsZXZlbHMgdXAgdGhl IEhXIGNvbXBhdGliaWxpdHkuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBTbyBJIGRyb3AgdGhp cyBtZXRob2QgaW4gdGhpcyBzZXJpZXMuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gU29ycnksIEkgZG9uJ3QgdW5k ZXJzdGFuZCB3aGF0IHlvdSBhcmUgc2F5aW5nIGhlcmUuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g SXMgdGhlcmUgYSBjaGFuZ2UgeW91IGFyZSBnb2luZyB0byBtYWtlIHRvIHY0IHRoYXQNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiB3aWxsIG1ha2UgdGhpcyB3b3JrIGZvciB0aGUgZXZrIGFuZCBteSBi b2FyZHM/IFdoYXQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpcyB0aGF0IGNoYW5nZQ0KPiA+ID4g ZXhhY3RseT8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gW1JpY2hhcmQgWmh1XSBOby4gV2hhdCBJIHNh aWQgYWJvdmUgaXMgdGhhdCB0aGUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gQ0xLUkVRIyBpcyBmb3Jj ZWQgdG8gYmUgbG93IGluIE5YUCBsb2NhbCBCU1Aga2VybmVsLiBJDQo+ID4gPiA+ID4gPiA+ID4g PiA+IGd1ZXNzIHRoaXMgbWlnaHQgYmUgdGhlIHJlYXNvbiB3aHkgeW91cg0KPiA+ID4gPiA+ID4g PiA+IGJvYXJkIHdvcmtzLg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4g PiBCSVQxMSBhbmQgQklUMTAgb2YgSU9NVVhDX0dQUjE0IGNhbiBiZSB1c2VkIHRvIGZvcmNlDQo+ ID4gPiA+ID4gPiA+ID4gPiA+IHRoZSBDTEtSRVEjIHRvDQo+ID4gPiA+ID4gPiA+ID4gYmUgbG93 Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBTZXQgQ0xLUkVRX09WRVJSSURFX0VOKGJpdDEwKSAxYjEs IHRoZW4gd3JpdGUgb25lDQo+IHplcm8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gdG8NCj4gPiA+ID4g PiA+ID4gPiBDTEtSRVFfT1ZFUlJJREUoYml0MTEpLg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IE9rLCB0aGF0IG1ha2VzIHNlbnNlLiBU aG9zZSBiaXRzIGFyZSBub3QgZXhwbGFpbmVkIHdlbGwNCj4gPiA+ID4gPiA+ID4gPiA+IGluIHRo ZSBJTVg4TU1STS4gQXMgbXkgYm9hcmQncyBleHRlcm5hbCBSRUZDTEsgaXMNCj4gYWx3YXlzDQo+ ID4gPiA+ID4gPiA+ID4gPiBlbmFibGVkIHRoYXQgbXVzdCBnYXRlIHRoZSBjbG9jayBpbnRlcm5h bGx5IHRvIHRoZSBob3N0DQo+ID4gPiA+ID4gPiA+ID4gPiBjb250cm9sbGVyDQo+ID4gPiBibG9j ay4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBJIGNhbiBjb25maXJtIHRo YXQgYXNzZXJ0aW5nIHRob3NlIEdQUjE0IGJpdHMgZG9lcw0KPiA+ID4gPiA+ID4gPiA+ID4gcmVz b2x2ZSBteQ0KPiA+ID4gaXNzdWU6DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ ID4gI2RlZmluZSBJTVg4TU1fR1BSX1BDSUVfQ0xLUkVRX09WRVJSSURFX1ZBTA0KPiBCSVQoMTEp DQo+ID4gPiA+ID4gPiA+ID4gPiAjZGVmaW5lIElNWDhNTV9HUFJfUENJRV9DTEtSRVFfT1ZFUlJJ REVfRU4NCj4gPiA+IEJJVCgxMCkNCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g PiAgICAgICAgLyoNCj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgKiBmb3IgYm9hcmRzIHRoYXQg ZG8gbm90IGNvbm5lY3QgQ0xLUkVRIywNCj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICAgKiBvdmVy cmlkZSBDTEtSRVEjIGFuZCBkcml2ZSBpdCBsb3cgaW50ZXJuYWxseQ0KPiA+ID4gPiA+ID4gPiA+ ID4gICAgICAgICAqLw0KPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgIHJlZ21hcF91cGRhdGVfYml0 cyhpbXg4X3BoeS0+aW9tdXhjX2dwciwNCj4gPiA+ID4gPiBJT01VWENfR1BSMTQsDQo+ID4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IElNWDhNTV9HUFJfUENJRV9DTEtSRVFfT1ZFUlJJ REVfVkFMLCAwKTsNCj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMo aW14OF9waHktPmlvbXV4Y19ncHIsDQo+ID4gPiA+ID4gSU9NVVhDX0dQUjE0LA0KPiA+ID4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBJTVg4TU1fR1BSX1BDSUVfQ0xLUkVRX09WRVJSSURF X0VOLCAxKTsNCj4gPiA+ID4gPiA+ID4gW1JpY2hhcmQgWmh1XSByZWdtYXAgYml0cyBvcGVyYXRp b25zIHNob3VsZCBtYW5pcHVsYXRlDQo+ID4gPiA+ID4gPiA+IGFjY29yZGluZw0KPiA+ID4gYml0 cy4NCj4gPiA+ID4gPiA+ID4gVGhlIEJJVCgxMCkgYW5kIEJJVCgxMSkgc2hvdWxkIGJlIHRvdWNo ZWQgYWN0dWFsbHkuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+ID4gU2hvdWxkIHRoaXMgYmUgYWRkZWQgYXMgYSAnZnNsLGNsa3JlcS11bnN1cHBvcnRl ZCcgZmxhZw0KPiA+ID4gPiA+ID4gPiA+ID4gdGhhdCBuZWVkcyB0byBiZSBzZXQgdHJ1ZSB0byBp bXBsZW1lbnQgdGhlIGFib3ZlIGNvZGU/DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gUmljaGFyZCwNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+IFNvcnJ5IC0gc3Bva2UgdG9vIHNvb24uIE15IHRlc3Qgd2FzIGZsYXdlZCBhcyBJIHN0 aWxsIHdhcw0KPiA+ID4gPiA+ID4gPiA+IHBpbm11eGluZyBDTEtSRVEgaW4gbXkgZHQgdG8gd29y ayBhcm91bmQgdGhlIGlzc3VlIGFuZA0KPiA+ID4gPiA+ID4gPiA+IGFmdGVyIHJlbW92ZWQgdGhl IGFib3ZlIGRpZCBub3QgcmVzb2x2ZSBteSBpc3N1ZS4gVGhlDQo+ID4gPiA+ID4gPiA+ID4gc2V0 dGluZyBvZiBPVkVSUklERV9FTiB3YXMgd3JvbmcgYWJvdmUgKHNob3VsZCBub3QgYmUgc2V0DQo+ ID4gPiA+ID4gPiA+ID4gdG8gJzEnIGJ1dA0KPiA+ID4gPiA+ID4gPiA+IEJJVCgxMCkNCj4gPiA+ ID4gPiA+ID4gPiBpbnN0ZWFkKSBidXQgdGhpcyBjb2RlIGFscmVhZHkgZXhpc3RzIGluDQo+ID4g PiA+ID4gPiA+ID4gaW14Nl9wY2llX2VuYWJsZV9yZWZfY2xrIGFuZCBpcyB1c2VkIGZvciBJTVg4 TU0gcGVyIHlvdXINCj4gPiA+ID4gPiA+ID4gPiBwYXRjaA0KPiA+ID4gc28gdGhpcyBpcyBub3Qg dGhlIGlzc3VlLg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gV2hhdCBtYWtlcyBt eSBib2FyZCB3b3JrIGlzIHRvIGNsZWFyIEdQUjE0IGJpdDkgKGxpa2UgdGhlDQo+ID4gPiA+ID4g PiA+ID4gTlhQIGtlcm5lbA0KPiA+ID4gPiA+ID4gPiA+IGRvZXMpIHNvIEkgZG9uJ3QgdGhpbmsg dGhpcyBiaXQgZG9lcyB3aGF0IHdlIHRoaW5rIGl0IGRvZXMNCj4gPiA+ID4gPiA+ID4gPiAoc2Vs ZWN0IGJldHdlZW4gaW50ZXJuYWwgYW5kIGV4dCBjbGspLiBJIHRoaW5rIHNldHRpbmcgaXQNCj4g PiA+ID4gPiA+ID4gPiBlbmFibGVzIGNsb2NrIGdhdGluZyB2aWENCj4gPiA+ID4gPiA+ID4gQ0xL UkVRIy4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IFRoaXMgYWxzbyBwb2ludHMg b3V0IHRoYXQgcGVyaGFwcyB0aGUgQ0xLUkVRX09WRVJSSURFDQo+ID4gPiA+ID4gPiA+ID4gbG9n aWMgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSBuZXcgcGh5IGRyaXZlciBmb3IgSU1YOE1NLg0KPiA+ ID4gPiA+ID4gPiBbUmljaGFyZCBaaHVdIEl0IHNvdW5kcyByZWFzb25hYmxlIHRvIGNvbnNpZGVy IHRvIGZvcmNlIHRoZQ0KPiA+ID4gPiA+ID4gPiBDTEtSRVEjIHRvIGJlIGxvdy4NCj4gPiA+ID4g PiA+ID4gSSB3aWxsIHRoaW5rIGFib3V0IHRoYXQgYW5kIGFkZCB0aGlzIGluIGxhdGVyIHY1IHBh dGNoLXNldA0KPiA+ID4gPiA+ID4gPiBpZiBub2JvZHkgaGFzIGRpZmZlcmVudCBjb25jZXJucy4N Cj4gPiA+ID4gPiA+ID4gVGhhbmtzLg0KPiA+ID4gPiA+ID4gW1JpY2hhcmQgWmh1XSBIaSBUaW06 DQo+ID4gPiA+ID4gPiBBcyB5b3UgbWVudGlvbmVkIGFib3ZlLCB0aGUgQ0xLUkVRIyBHUElPIFBJ TiBpcyBub3QgdXNlZCBmb3INCj4gPiA+ID4gPiA+IFBDSWUgb24NCj4gPiA+ID4gPiB5b3VyIGJv YXJkLCByaWdodD8NCj4gPiA+ID4gPiA+ICIgKEkgaGF2ZSBib2FyZHMgdGhhdCB1c2UgdGhlIG9u bHkgdHdvIHBvc3NpYmxlIHBpbnMgZm9yDQo+ID4gPiA+ID4gPiBDTEtSRVEgYXMgb3RoZXINCj4g PiA+ID4gPiBmZWF0dXJlcykiDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gRGlkIHRoZSBvdmVy cmlkZSBjb25maWd1cmF0aW9uIG9mIHRoZSBjbGtyZXEjIHdpbGwgYnJpbmcNCj4gPiA+ID4gPiA+ IHVuZXhwZWN0ZWQgcmVzdWx0cw0KPiA+ID4gPiA+IGZvciBvdGhlciBmZWF0dXJlcyBvbiB5b3Vy IGJvYXJkPw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFdoYXQgSSBtZWFuIGlz IHRoYXQgaW14OG1tLXZlbmljZS1ndzc5MDEuZHRzIHVzZXMgYm90aCBJMkM0DQo+IGFuZA0KPiA+ ID4gPiA+IFVBUlQ0IGFuZCBiZWNhdXNlIEkyQzRfU0NMIGFuZCBVQVJUNF9SWEQgYXJlIHRoZSBv bmx5IHR3bw0KPiBwYWRzDQo+ID4gPiA+ID4gdGhhdCBjb3VsZCBiZSBwaW5tdXhlZCBmb3IgQ0xL UkVRIyBJIGNhbid0IHVzZSB0aGUgd29ya2Fyb3VuZCBvZg0KPiA+ID4gPiA+IHBpbiBtdXhpbmcN Cj4gPiA+IGl0Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQ3VycmVudGx5IHlvdXIgZHJpdmVyIG9u bHkgd29ya3Mgb24gbXkgaW14OG1tLXZlbmljZS0qIGJvYXJkcyBpZg0KPiA+ID4gPiA+IEkgYWRk IG9uZSBvZiB0aGUgZm9sbG93aW5nIG9uIGJvYXJkcyB0aGF0IGRvbid0IGNvbm5lY3QgdGhvc2UN Cj4gPiA+ID4gPiBwYWRzIChvciBpZiBJIGNsZWFyDQo+ID4gPiA+ID4gSU1YOE1NX0dQUl9QQ0lF X1JFRl9VU0VfUEFEKToNCj4gPiA+ID4gPiBNWDhNTV9JT01VWENfSTJDNF9TQ0xfUENJRTFfQ0xL UkVRX0INCj4gPiA+ID4gPiBNWDhNTV9JT01VWENfVUFSVDRfUlhEX1BDSUUxX0NMS1JFUV9CDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiBOb3RlIHlvdXIgJ1BDSTogaW14OiBhZGQgdGhlIGlteDhtbSBw Y2llIHN1cHBvcnQnIHBhdGNoIFsxXSBkb2VzDQo+ID4gPiA+ID4gZW5hYmxlIHRoaXMgY29kZSBh bHJlYWR5IGluIHRoZSBpbXg2X3BjaWVfZW5hYmxlX3JlZl9jbGsNCj4gPiA+ID4gPiBmdW5jdGlv biB0byBvdmVycmlkZSBSRUZfQ0xLIGFuZCBkcml2ZSBpdCBsb3c6DQo+ID4gPiA+ID4NCj4gPiA+ ID4gPiBvZmZzZXQgPSBpbXg2X3BjaWVfZ3JwX29mZnNldChpbXg2X3BjaWUpOw0KPiA+ID4gPiA+ IC8qDQo+ID4gPiA+ID4gKiBTZXQgdGhlIG92ZXIgcmlkZSBsb3cgYW5kIGVuYWJsZWQNCj4gPiA+ ID4gPiAqIG1ha2Ugc3VyZSB0aGF0IFJFRl9DTEsgaXMgdHVybmVkIG9uLg0KPiA+ID4gPiA+ICov DQo+ID4gPiA+ID4gcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgb2Zm c2V0LA0KPiA+ID4gPiA+ICAgIElNWDhNUV9HUFJfUENJRV9DTEtfUkVRX09WRVJSSURFLA0KPiA+ ID4gPiA+ICAgIDApOw0KPiA+ID4gPiA+IHJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlv bXV4Y19ncHIsIG9mZnNldCwNCj4gPiA+ID4gPiAgICBJTVg4TVFfR1BSX1BDSUVfQ0xLX1JFUV9P VkVSUklERV9FTiwNCj4gPiA+ID4gPiAgICBJTVg4TVFfR1BSX1BDSUVfQ0xLX1JFUV9PVkVSUklE RV9FTik7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBTbyB0aGlzIGlzIGFscmVhZHkgYmVpbmcgcnVu IGFuZCB5ZXQgbXkgYm9hcmRzIHN0aWxsIGRvIG5vdCB3b3JrDQo+ID4gPiA+ID4gdW5sZXNzIEkg Y2xyIElNWDhNTV9HUFJfUENJRV9SRUZfVVNFX1BBRCBsaWtlIHRoaXMgd2hpY2ggaXMNCj4gd2hh dA0KPiA+ID4gPiA+IHRoZSBOWFAgZG93bnN0cmVhbSBkcml2ZXIgZG9lczoNCj4gPiA+ID4gPiBy ZWdtYXBfdXBkYXRlX2JpdHMoaW14OF9waHktPmlvbXV4Y19ncHIsIElPTVVYQ19HUFIxNCwNCj4g PiA+ID4gPiBJTVg4TU1fR1BSX1BDSUVfUkVGX1VTRV9QQUQsIDApOw0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gVGhpcyBpcyB3aHkgSSdtIG5vdCBzdXJlIHRoYXQgYml0IGRvZXMgd2hhdCB5b3UgdGhp bmsgaXQgZG9lcy4uLg0KPiA+ID4gPiA+IEkgZmVlbCBsaWtlIHRoYXQgYml0IGVuYWJsZXMgJ1Vz ZSBDTEtSRVEjIHRvIGVuYWJsZSBDTEsnLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gWW91IHRlbGwg bWUgdGhlIGRlc2NyaXB0aW9ucyBmb3IgR1BSMTQgYXJlIHdyb25nIGluIHRoZSByZWZlcmVuY2UN Cj4gbWFudWFsLg0KPiA+ID4gPiA+IFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgZGVzY3JpcHRpb25z IGZvciB1cyBzbyB3ZSBjYW4gc29ydCB0aGlzIG91dC4NCj4gPiA+ID4gPg0KPiA+ID4gPiBbUmlj aGFyZCBaaHVdIEhpIFRpbToNCj4gPiA+ID4gVGhlIEJJVDkgb2YgR1BSMTQgaXMgdXNlZCBhcw0K PiAiR1BSX1BDSUUxX1BIWV9JX0FVWF9FTl9PVkVSUklERV9FTiINCj4gPiA+ID4gYW5kIEJJVDE5 IGlzIHVzZWQgYXMgIkdQUl9QQ0lFMV9QSFlfRlVOQ19JX0FVWF9FTiIgb24NCj4gaS5NWDhNTS4N Cj4gPiA+ID4gSSB0aGluayB0aGUgdHdvIGJpdHMgZGVzY3JpcHRpb25zIGFyZSB1c2VkIHRvIGRl c2NyaWJlIHRoZSBCSVQxOQ0KPiA+ID4gPiBhbmQgQklUOQ0KPiA+ID4gdG9nZXRoZXIgcmVmZXIg dG8gbXkgZ3Vlc3MuDQo+ID4gPiA+IHtHUFJfUENJRTFfUEhZX0lfQVVYX0VOX09WRVJSSURFX0VO KEJJVDkpLA0KPiA+ID4gPiBHUFJfUENJRTFfUEhZX0ZVTkNfSV9BVVhfRU4oQklUMTkpIH0NCj4g PiA+ID4gMidiMDA6IEV4dGVybmFsIFJlZmVyZW5jZSBDbG9jayBJL08gKGZvciBQTEwpIERpc2Fi bGUNCj4gPiA+ID4gMidiMDE6IEV4dGVybmFsIFJlZmVyZW5jZSBDbG9jayBJL08gKGZvciBQTEwp IEVuYWJsZQ0KPiA+ID4gPiAyJ2IxMDogRXh0ZXJuYWwgUmVmZXJlbmNlIENsb2NrIEkvTyAoZm9y IFBMTCkgRGlzYWJsZQ0KPiA+ID4gPiAyJ2IxMTogRXh0ZXJuYWwgUmVmZXJlbmNlIENsb2NrIEkv TyAoZm9yIFBMTCkgb3V0cHV0IGlzIGNvbnRyb2xsZWQNCj4gPiA+ID4gYnkgQ0xLUkVRIw0KPiA+ ID4gPg0KPiA+ID4gPiBUaGUgb3B0aW9uMSYzIHNob3VsZCBiZSBmb3JiaWRkZW4sIHNpbmNlIHRo ZSBleHRlcm5hbCBSRUYgQ0xLIEkvTw0KPiA+ID4gPiBzaG91bGQNCj4gPiA+IGJlIGVuYWJsZWQg b24geW91ciBib2FyZCBhbmQgRVZLIGJvYXJkLg0KPiA+ID4gPiBJbiB0aGUgb3B0aW9uMiY0LCB0 aGUgQklUMTkgc2hvdWxkIGJlIHNldCB0byBiZSAxJ2IxLicNCj4gPiA+ID4NCj4gPiA+ID4gU28s IHJlZ2FyZGluZyBteSB1bmRlcnN0YW5kLCBpZiB0aGUgQ0xLUkVRIyBpcyBub3QgcGlubXV4ZWQg aW4NCj4gPiA+ID4geW91ciB1c2UNCj4gPiA+IGNhc2UsIHRoZSBJTVg4TU1fR1BSX1BDSUVfUkVG X1VTRV9QQUQgKEJJVDkpIHNob3VsZCBiZSAxJ2IwLg0KPiA+ID4gPg0KPiA+ID4NCj4gPiA+IFJp Y2hhcmQsDQo+ID4gPg0KPiA+ID4gT2ssIGlmIHRoaXMgaXMgdGhlIGNhc2UgdGhlbiBkcml2ZXJz L3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jDQo+ID4gPiBmb3IgSU1YOE1NIHNob3VsZCBu b3QgdG91Y2ggR1BSMTQgYW5kICdbdjMsOS85XSBQQ0k6IGlteDogYWRkIHRoZQ0KPiBpbXg4bW0g cGNpZSBzdXBwb3J0Jw0KPiA+ID4gc2hvdWxkIGhhdmUgdGhpcyBvbiB0b3AgYW5kIHNxdWFzaGVk Og0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2 LmMNCj4gPiA+IGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYw0KPiA+ID4g aW5kZXggN2M4OWJkMWE2NDQxLi40NThkNTRjOGUzODUgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2 ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jDQo+ID4gPiArKysgYi9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jDQo+ID4gPiBAQCAtNDUyLDggKzQ1MiwxMiBAQCBz dGF0aWMgaW50IGlteDZfcGNpZV9lbmFibGVfcmVmX2NsayhzdHJ1Y3QNCj4gPiA+IGlteDZfcGNp ZSAqaW14Nl9wY2llKQ0KPiA+ID4gICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gICAgICAg ICBjYXNlIElNWDdEOg0KPiA+ID4gICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gLSAgICAg ICBjYXNlIElNWDhNUToNCj4gPiA+ICAgICAgICAgY2FzZSBJTVg4TU06DQo+ID4gPiArICAgICAg ICAgICAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGlteDZfcGNpZS0+cGNpZV9hdXgpOw0K PiA+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICBkZXZfZXJyKGRldiwgInVuYWJsZSB0byBlbmFibGUNCj4gcGNpZV9hdXgNCj4gPiA+IGNs b2NrXG4iKTsNCj4gPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiA+ICsgICAgICAgY2Fz ZSBJTVg4TVE6DQo+ID4gPiAgICAgICAgICAgICAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxl KGlteDZfcGNpZS0+cGNpZV9hdXgpOw0KPiA+ID4gICAgICAgICAgICAgICAgIGlmIChyZXQpIHsN Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAidW5hYmxlIHRvIGVu YWJsZQ0KPiBwY2llX2F1eA0KPiA+ID4gY2xvY2tcbiIpOw0KPiA+ID4NCj4gPiBbUmljaGFyZCBa aHVdIFNvcnJ5LCBJIG1pZ2h0IGRvbid0IHVuZGVyc3RhbmQgd2hhdCdzIG1lYW5pbmcgb2YgdGhl DQo+IGNoYW5nZXMuDQo+ID4gV2hhdCdyZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBiZWZvcmUg YW5kIGFmdGVyIHRoZSBjaGFuZ2VzPw0KPiA+DQo+IA0KPiBUaGUgYWJvdmUgY2hhbmdlIHRvIHlv dXIgcGF0Y2ggJ29ubHknIGNhbGxzIGNsa19wcmVwYXJlX2VuYWJsZSBmb3INCj4gSU1YOE1NIGFu ZCBkb2VzIG5vdCB0b3VjaCBHUFIxNCBiaXRzIGFzIHRoZSBJTVg4TVEgY2FzZSBkb2VzDQo+IChi ZWNhdXNlIGFzIHlvdSBwb2ludCBvdXQgdGhlIEdQUjE0IGJpdHMgZGlmZmVyIGJldHdlZW4gSU1Y OE1NIGFuZA0KPiBJTVg4TVEpLg0KW1JpY2hhcmQgWmh1XSBHb3QgdGhhdCwgdGhhbmtzIGEgbG90 Lg0KDQo+IA0KPiA+ID4NCj4gPiA+IEFuZCB5b3VyICdbdjMsNS85XSBwaHk6IGZyZWVzY2FsZTog cGNpZTogaW5pdGlhbGl6ZSB0aGUgaW14OCBwY2llDQo+ID4gPiBzdGFuZGFsb25lIHBoeSBkcml2 ZXInIHNob3VsZCBoYXZlIHRoaXMgb24gdG9wIGFuZCBzcXVhc2hlZDoNCj4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bS1wY2llLmMNCj4gPiA+IGIv ZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OG0tcGNpZS5jDQo+ID4gPiBpbmRleCAz MTdjZjYxYmZmMzcuLjI3Y2EwYjlmMWQ5MiAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvcGh5 L2ZyZWVzY2FsZS9waHktZnNsLWlteDhtLXBjaWUuYw0KPiA+ID4gKysrIGIvZHJpdmVycy9waHkv ZnJlZXNjYWxlL3BoeS1mc2wtaW14OG0tcGNpZS5jDQo+ID4gPiBAQCAtNDMsNyArNDMsNyBAQA0K PiA+ID4gICNkZWZpbmUgSU1YOE1NX0dQUl9QQ0lFX0NNTl9SU1QgICAgICAgICAgICAgICAgQklU KDE4KQ0KPiA+ID4gICNkZWZpbmUgSU1YOE1NX0dQUl9QQ0lFX1BPV0VSX09GRiAgICAgIEJJVCgx NykNCj4gPiA+ICAjZGVmaW5lIElNWDhNTV9HUFJfUENJRV9TU0NfRU4gICAgICAgICBCSVQoMTYp DQo+ID4gPiAtI2RlZmluZSBJTVg4TU1fR1BSX1BDSUVfUkVGX1VTRV9QQUQgICAgQklUKDkpDQo+ ID4gPiArI2RlZmluZSBJTVg4TU1fR1BSX1BDSUVfQVVYX0VOX09WRVJSSURFICAgICAgICBCSVQo OSkNCj4gPiA+DQo+ID4gPiAgc3RydWN0IGlteDhfcGNpZV9waHkgew0KPiA+ID4gICAgICAgICB1 MzIgICAgICAgICAgICAgICAgICAgICByZWZjbGtfcGFkX21vZGU7DQo+ID4gPiBAQCAtNjMsMTIg KzYzLDEyIEBAIHN0YXRpYyBpbnQgaW14OF9wY2llX3BoeV9pbml0KHN0cnVjdCBwaHkgKnBoeSkN Cj4gPiA+ICAgICAgICAgcmVzZXRfY29udHJvbF9hc3NlcnQoaW14OF9waHktPnJlc2V0KTsNCj4g PiA+DQo+ID4gPiAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg4X3BoeS0+aW9tdXhjX2dw ciwNCj4gSU9NVVhDX0dQUjE0LA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgSU1Y OE1NX0dQUl9QQ0lFX1JFRl9VU0VfUEFELA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgaW14OF9waHktPnJlZmNsa19wYWRfbW9kZSA9PSAxID8NCj4gPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgIElNWDhNTV9HUFJfUENJRV9SRUZfVVNFX1BBRCA6DQo+IDApOw0KPiA+ID4g Kw0KPiBJTVg4TU1fR1BSX1BDSUVfQVVYX0VOX09WRVJSSURFLA0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgMCk7DQo+ID4gPiAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg4 X3BoeS0+aW9tdXhjX2dwciwNCj4gSU9NVVhDX0dQUjE0LA0KPiA+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgSU1YOE1NX0dQUl9QQ0lFX0FVWF9FTiwNCj4gPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgIElNWDhNTV9HUFJfUENJRV9BVVhfRU4pOw0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgaW14OF9waHktPnJlZmNsa19wYWRfbW9kZSA9PQ0KPiA+ID4gSU1YOF9Q Q0lFX1JFRkNMS19QQURfSU5QVVQgPw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg SU1YOE1NX0dQUl9QQ0lFX0FVWF9FTiA6IDApOw0KPiA+ID4gICAgICAgICByZWdtYXBfdXBkYXRl X2JpdHMoaW14OF9waHktPmlvbXV4Y19ncHIsDQo+IElPTVVYQ19HUFIxNCwNCj4gPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElNWDhNTV9HUFJfUENJRV9QT1dFUl9PRkYsDQo+IDApOw0K PiA+ID4gICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14OF9waHktPmlvbXV4Y19ncHIsDQo+ IElPTVVYQ19HUFIxNCwgQEANCj4gPiA+IC03Niw3ICs3Niw3IEBAIHN0YXRpYyBpbnQgaW14OF9w Y2llX3BoeV9pbml0KHN0cnVjdCBwaHkgKnBoeSkNCj4gPiA+DQo+ID4gPiAgICAgICAgIHJlZ21h cF91cGRhdGVfYml0cyhpbXg4X3BoeS0+aW9tdXhjX2dwciwNCj4gSU9NVVhDX0dQUjE0LA0KPiA+ ID4NCj4gSU1YOE1NX0dQUl9QQ0lFX1JFRl9DTEtfU0VMLA0KPiA+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgaW14OF9waHktPnJlZmNsa19wYWRfbW9kZSA9PSAxID8NCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIGlteDhfcGh5LT5yZWZjbGtfcGFkX21vZGUgPT0NCj4gPiA+ IElNWDhfUENJRV9SRUZDTEtfUEFEX0lOUFVUID8NCj4gPiA+DQo+IElNWDhNTV9HUFJfUENJRV9S RUZfQ0xLX0VYVCA6DQo+ID4gPg0KPiBJTVg4TU1fR1BSX1BDSUVfUkVGX0NMS19QTEwpOw0KPiA+ ID4gICAgICAgICB1c2xlZXBfcmFuZ2UoMTAwLCAyMDApOw0KPiA+ID4NCj4gPiA+IEkgdGVzdGVk IHRoaXMgYW5kIGl0IHdvcmtzIGJvdGggb24gaW14OG1tLWV2ayBhbmQgaW14OG1tLXZlbmljZS0q DQo+ID4gPiB3aGljaCBib3RoIGhhdmUgZXh0ZXJuYWwgY2xrZ2VuLg0KPiA+ID4NCj4gPiA+IEhv d2V2ZXIsIHRoZSBhYm92ZSBkb2VzIG5vdCBzZXQNCj4gSU1YOE1NX0dQUl9QQ0lFX0FVWF9FTl9P VkVSUklERSBmb3INCj4gPiA+IHRoZSBjYXNlIHdoZXJlIENMS1JFUSMgaXMgY29ubmVjdGVkIGFu ZCB0aHVzIHNob3VsZCBiZSB1c2VkIHNvIEkNCj4gPiA+IHRoaW5rIHdlIG5lZWQgdG8gYWRkIGEg cHJvcGVydHkgZm9yIHRoYXQgdG8gZGVmaW5lIGlmIENMS1JFUSMgaXMNCj4gPiA+IGhvb2tlZCB1 cCBvciBub3QuIEkgdGVzdGVkIGVuYWJsaW5nDQo+IElNWDhNTV9HUFJfUENJRV9BVVhfRU5fT1ZF UlJJREUNCj4gPiA+IGFuZCBhcyBleHBlY3RlZCB0aGF0IHdvcmtlZCBvbiB0aGUgaW14OG1tLWV2 ayB3aGljaCBob29rcyB1cA0KPiBDTEtSRVEjDQo+ID4gPiBidXQgbm90IGlteDhtbS12ZW5pY2Ug d2hpY2ggZG9lcyBub3QgaG9vayB1cCBDTEtSRVEjLg0KPiA+ID4NCj4gPiA+IFdoYXQgZG8geW91 IHRoaW5rIGFib3V0IGFkZGluZyBhIHByb3BlcnR5IGZvciB0aGlzPw0KPiA+IFtSaWNoYXJkIFpo dV0gRmlyc3Qgb2YgYWxsLCB0aGFua3MgYSBsb3QgZm9yIHlvdXIgaGVscCB0byBmaWd1cmUgb3V0 IHRoZQ0KPiBkZXRhaWxzLg0KPiA+IEFncmVlIHdpdGggeW91ciBwcm9wb3NhbC4NCj4gPiBPbmUg b3B0aW9uYWwgcHJvcGVydHkgImZzbCxjbGtyZXEtdW5zdXBwb3J0ZWQiIHdvdWxkIGJlIGFkZGVk IGZvciB0aGUNCj4gQ0xLUkVRIyBub3QgaG9va2VkIGNhc2UgbGF0ZXIuDQo+ID4NCj4gPiBkaWZm IC0tZ2l0DQo+ID4gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2ZzbCxp bXg4LXBjaWUtcGh5LnlhbWwNCj4gPiBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n cy9waHkvZnNsLGlteDgtcGNpZS1waHkueWFtbA0KPiA+IGluZGV4IDA5N2JhMmEyOGZiNC4uMjI2 NDQ1MjkyNGNjIDEwMDY0NA0KPiA+IC0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k aW5ncy9waHkvZnNsLGlteDgtcGNpZS1waHkueWFtbA0KPiA+ICsrKyBiL0RvY3VtZW50YXRpb24v ZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvZnNsLGlteDgtcGNpZS1waHkueWFtbA0KPiA+IEBAIC01 OCw2ICs1OCwxMSBAQCBwcm9wZXJ0aWVzOg0KPiA+ICAgICAgJHJlZjogL3NjaGVtYXMvdHlwZXMu eWFtbCMvZGVmaW5pdGlvbnMvdWludDMyDQo+ID4gICAgICBkZWZhdWx0OiAwDQo+ID4NCj4gPiAr ICBmc2wsY2xrcmVxLXVuc3VwcG9ydGVkOg0KPiA+ICsgICAgdHlwZTogYm9vbGVhbg0KPiA+ICsg ICAgZGVzY3JpcHRpb246IEEgYm9vbGVhbiBwcm9wZXJ0eSB3aG9lcyBwcmVzZW5jZSBpbmRpY2F0 ZXMgdGhlDQo+IENMS1JFUSMNCj4gPiArICAgICAgc2lnbmFsIGlzbid0IHN1cHBvcnRlZCBpbiB0 aGUgSFcgYm9hcmQgZGVzaWduIChvcHRpb25hbA0KPiByZXF1aXJlZCkuDQo+ID4gKw0KPiANCj4g QSBib29sZWFuIHByb3BlcnR5IGluZGljYXRpbmcgdGhlIENMS1JFUSMgc2lnbmFsIGlzIG5vdCBz dXBwb3J0ZWQgaW4gdGhlDQo+IGJvYXJkIGRlc2lnbiAob3B0aW9uYWwpDQpbUmljaGFyZCBaaHVd IE9rYXksIHdvdWxkIGJlIHVwZGF0ZWQgbGF0ZXIuDQoNCj4gDQo+ID4NCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OG0tcGNpZS5jDQo+ID4gYi9kcml2 ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1pbXg4bS1wY2llLmMNCj4gPiBpbmRleCAwN2VlYTM5 MjgzZWQuLjRiNDQwMmVhZGRjYyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3BoeS9mcmVlc2Nh bGUvcGh5LWZzbC1pbXg4bS1wY2llLmMNCj4gPiArKysgYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUv cGh5LWZzbC1pbXg4bS1wY2llLmMNCj4gPiBAQCAtNDMsNyArNDMsNyBAQA0KPiA+ICAjZGVmaW5l IElNWDhNTV9HUFJfUENJRV9DTU5fUlNUICAgICAgICAgICAgICAgIEJJVCgxOCkNCj4gPiAgI2Rl ZmluZSBJTVg4TU1fR1BSX1BDSUVfUE9XRVJfT0ZGICAgICAgQklUKDE3KQ0KPiA+ICAjZGVmaW5l IElNWDhNTV9HUFJfUENJRV9TU0NfRU4gICAgICAgICBCSVQoMTYpDQo+ID4gLSNkZWZpbmUgSU1Y OE1NX0dQUl9QQ0lFX1JFRl9VU0VfUEFEICAgIEJJVCg5KQ0KPiA+ICsjZGVmaW5lIElNWDhNTV9H UFJfUENJRV9BVVhfRU5fT1ZFUlJJREUgICAgICAgIEJJVCg5KQ0KPiA+DQo+ID4gIHN0cnVjdCBp bXg4X3BjaWVfcGh5IHsNCj4gPiAgICAgICAgIHZvaWQgX19pb21lbSAgICAgICAgICAgICpiYXNl Ow0KPiA+IEBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBpbXg4X3BjaWVfcGh5IHsNCj4gPiAgICAg ICAgIHUzMiAgICAgICAgICAgICAgICAgICAgIHJlZmNsa19wYWRfbW9kZTsNCj4gPiAgICAgICAg IHUzMiAgICAgICAgICAgICAgICAgICAgIHR4X2RlZW1waF9nZW4xOw0KPiA+ICAgICAgICAgdTMy ICAgICAgICAgICAgICAgICAgICAgdHhfZGVlbXBoX2dlbjI7DQo+ID4gKyAgICAgICBib29sICAg ICAgICAgICAgICAgICAgICBjbGtyZXFfdW51c2VkOw0KPiA+ICB9Ow0KPiA+DQo+ID4gIHN0YXRp YyBpbnQgaW14OF9wY2llX3BoeV9pbml0KHN0cnVjdCBwaHkgKnBoeSkgQEAgLTY1LDEzICs2Niwx NSBAQA0KPiA+IHN0YXRpYyBpbnQgaW14OF9wY2llX3BoeV9pbml0KHN0cnVjdCBwaHkgKnBoeSkN Cj4gPiAgICAgICAgIHJlc2V0X2NvbnRyb2xfYXNzZXJ0KGlteDhfcGh5LT5yZXNldCk7DQo+ID4N Cj4gPiAgICAgICAgIHBhZF9tb2RlID0gaW14OF9waHktPnJlZmNsa19wYWRfbW9kZTsNCj4gPiAr ICAgICAgIC8qIFNldCBBVVhfRU5fT1ZFUlJJREUgMSdiMCwgd2hlbiB0aGUgQ0xLUkVRIyBpc24n dA0KPiBob29rZWQgKi8NCj4gPiAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg4X3BoeS0+ aW9tdXhjX2dwciwNCj4gSU9NVVhDX0dQUjE0LA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgIElNWDhNTV9HUFJfUENJRV9SRUZfVVNFX1BBRCwNCj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICBwYWRfbW9kZSA9PQ0KPiBJTVg4TU1fR1BSX1BDSUVfUkVGX1VTRV9QQUQgPw0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgIElNWDhNTV9HUFJfUENJRV9SRUZfVVNFX1BBRCA6 DQo+IDApOw0KPiA+ICsNCj4gSU1YOE1NX0dQUl9QQ0lFX0FVWF9FTl9PVkVSUklERSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICBpbXg4X3BoeS0+Y2xrcmVxX3VudXNlZCA/DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgMCA6DQo+IElNWDhNTV9HUFJfUENJRV9BVVhfRU5f T1ZFUlJJREUpOw0KPiA+ICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDhfcGh5LT5pb211 eGNfZ3ByLA0KPiBJT01VWENfR1BSMTQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg SU1YOE1NX0dQUl9QQ0lFX0FVWF9FTiwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICBJ TVg4TU1fR1BSX1BDSUVfQVVYX0VOKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBw YWRfbW9kZSA9PQ0KPiBJTVg4X1BDSUVfUkVGQ0xLX1BBRF9JTlBVVCA/DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgSU1YOE1NX0dQUl9QQ0lFX0FVWF9FTiA6IDApOw0KPiA+ICAgICAg ICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDhfcGh5LT5pb211eGNfZ3ByLA0KPiBJT01VWENfR1BS MTQsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOE1NX0dQUl9QQ0lFX1BPV0VS X09GRiwNCj4gMCk7DQo+ID4gICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14OF9waHktPmlv bXV4Y19ncHIsDQo+IElPTVVYQ19HUFIxNCwgQEANCj4gPiAtMTcxLDYgKzE3NCwxMSBAQCBzdGF0 aWMgaW50IGlteDhfcGNpZV9waHlfcHJvYmUoc3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRl dikNCj4gPg0KPiAmaW14OF9waHktPnR4X2RlZW1waF9nZW4yKSkNCj4gPiAgICAgICAgICAgICAg ICAgaW14OF9waHktPnR4X2RlZW1waF9nZW4yID0gMDsNCj4gPg0KPiA+ICsgICAgICAgaWYgKG9m X3Byb3BlcnR5X3JlYWRfYm9vbChucCwgImZzbCxjbGtyZXEtdW5zdXBwb3J0ZWQiKSkNCj4gPiAr ICAgICAgICAgICAgICAgaW14OF9waHktPmNsa3JlcV91bnVzZWQgPSB0cnVlOw0KPiA+ICsgICAg ICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgICBpbXg4X3BoeS0+Y2xrcmVxX3VudXNlZCA9IGZh bHNlOw0KPiA+ICsNCj4gPiAgICAgICAgIGlteDhfcGh5LT5jbGsgPSBkZXZtX2Nsa19nZXQoZGV2 LCAicmVmIik7DQo+ID4gICAgICAgICBpZiAoSVNfRVJSKGlteDhfcGh5LT5jbGspKSB7DQo+ID4g ICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBpbXggcGNpZSBwaHkg Y2xvY2tcbiIpOw0KPiA+DQo+IA0KPiBZZXMgdGhpcyBsb29rcyBnb29kIGFuZCB3b3JrcyBib3Ro IG9uIHZlbmljZSAod2l0aA0KPiAnZnNsLGNsa3JlcS11bnN1cHBvcnRlZCcgYWRkZWQpIGFuZCBv biBpbXg4bW0tZXZrLg0KPiANCj4gVGhhbmtzIGZvciB3b3JraW5nIHRocm91Z2ggdGhpcyB3aXRo IG1lIGFuZCBwbGVhc2UgY2MgbWUgb24geW91ciB2NA0KPiBzdWJtaXNzaW9uLg0KW1JpY2hhcmQg Wmh1XSBXZWxjb21lLiBJJ20gZ2xhZCB0byBoYXZlIHlvdXIgaGVscC4gVGhhbmtzIGEgbG90Lg0K PiANCj4gQmVzdCByZWdhcmRzLA0KPiANCj4gVGltDQo= 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 9ECFBC433F5 for ; Thu, 28 Oct 2021 01:52:10 +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 4C64160F0F for ; Thu, 28 Oct 2021 01:52:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 4C64160F0F 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=DBEvcgqeSoxh6KAnVTBRPUpi8Oxr+VkR72QuTksHB10=; b=l4E6UCyyAg9JIO WpbXTFKkJ5WlT+oBqig0Fm3lYmBSyGmm+Uo+M6zpt0boxom6is/v3pTjbagI6IS003HOO6NPxJv0K ReiBd1cPpkovFm1IiBsCePweB7DIu06tqNgfZrhZoH9tBpGKrnMvlotQRXl3ANlYKncJWDKe6POoG WJ0j8b+xDbnEQo/Jla1NKqF0tpDO6ply2ODL6F04eGf5X1dw8igF6g3KbMBHvT68UME7nwRmUXTQI Zp92Ljz+rw55f370QxUyD9CxGyMnF8vGn0+WsqAsLPPh7cjWa+OTQtYvJhhGYZLLu219cNeFuJBbY tn4kOat180Zn14bT9DBw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfuaP-006gEc-OX; Thu, 28 Oct 2021 01:52:09 +0000 Received: from mail-vi1eur05on20621.outbound.protection.outlook.com ([2a01:111:f400:7d00::621] helo=EUR05-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfuaJ-006g4O-D3; Thu, 28 Oct 2021 01:52:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ojjz3haKeITverFWMRVn9AHo9vON1yWew0AewcWY6J+cNopVnK6kuBy90i5tMyT3gXvF9YHzsgmishKXWLunSbxoKdhfUgl4aHH4CnKUEfEg1fgrzXPts71xiTkqFH+rjawS99iobkJ5mgYMoX1Z7o0n9dgBU3KDrsL6G9eHsAMWIMGD/6F58qtuiyiPveS2kYt4BWry/W9/id87F2y55Eb3TNDJjKYDvbcuQqwhEU5EqBLLAr6N+ATrzYfiZzhULEZsTEXssZiQ2uY+vGiWRAulbHy9zQesUziX9mCB8QHYkz8+c/2x1FRiHSz0BxaWO2iinLCe2CDZkkDw8I7olw== 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=2Z6lQcucqj3OCvWzwzvrgBOvWcdRBxrK2CTX/fmMaRs=; b=goqxrfh6Qgytfrhgfxnf3Kvj1mvmHdC7+ejqPpR0DjJwaCup4v8gh9A044d8YRXvwGVtVBuJVPrXuRvdANSu0/Xo93FjI4RBoStQ2eWSiSOXkStMBvBNnoa0IQfZN/XCExQldMVkEyJH+hFN3o/R+Hnz9W5cV29J6Rd/Ru30YnFCn/z86vNmX4lICbF30pV/1lSEhyrMwdqAccxVyPgWsSEYLAAC+13eb7qkr3Wsn3gxm/K1z2dYCpL6whMrxcV5PTjo9h2IzObOoxwBMMApC9hy9Gm8RouiwCxthDSmgwSe47sJOr7L2jb5aWpXRYbZmxARNJRfsLuW2W4ZX1tiaw== 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=2Z6lQcucqj3OCvWzwzvrgBOvWcdRBxrK2CTX/fmMaRs=; b=lPBII2EyZ94En2veMHvYJgJmJwIyhq2UScaYyrVHK7AvH5QXPufOMiTtIaNGqU6/3prK4lO2rDHHsIEfYf42E+JMaNvBDK5qRPz77NHy1advYX8JNVGmUgsdr1IUIVFym7+temSaPclS35hoetawRgydwAemO96i7u4lRp/2UqI= Received: from AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) by AS8PR04MB8531.eurprd04.prod.outlook.com (2603:10a6:20b:422::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18; Thu, 28 Oct 2021 01:51:46 +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.015; Thu, 28 Oct 2021 01:51:46 +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+SAIADuD4QgABZ2ZCAAKpdAIAAx5NwgAC3poCAAK5bEIAA3OuAgACiz+A= Date: Thu, 28 Oct 2021 01:51:46 +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: 1a3a045c-5ba4-443c-4aa2-08d999b57ffb x-ms-traffictypediagnostic: AS8PR04MB8531: 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: 9knHySWDzH0nF2xXWdxQcGlxMg13AR2Cmk4Wt8N9GHofkufjt4eg68v/EjIhHk8dendGrW23rTnMW27Bf61HHYlDP52z5BE/7hto0EIWLlVGBIla6K7nr0qR3uaLhwlG7976dqr2CEFg/JaTXoWahIAj13DnPw5C1oTskCit/XUdTPNG7qFgG2v4HbvzP03WO/ptiPL5IjFY/vIOktoig/BW34A3Fqk0pW93ntMnhHRXPZQuL0weWTQVuRhYrn8kKGugel6iA6ZRpPaAZJsICrHCbTMEHmFJ+kAjYexpAN5464NVpYywWBVaiD53ak1wMj7dYEwUXBzWraDXoXWYCKQ4SANTmhP/zcH8M1bTGUyBEDfTpbdpIta9ESC9OJbxQo3kvmt/C5bo8tUIpFnhBnbLvgzjU/OCuxPrAAlTDe4jDw0wm+Grz/XNyxXHygOXiWbXEFtQes0RZHIsIt+InyzDTqVqT31obk+O3vlV21Z4Ubwn7KaVKuE2melcCoEJ/W7/aAtiZjCBYmGGDQgzRSRhsrfGumLw6SCdDnKvCLvDK7K1AJVa1iP7Oxxl/u84fH7WnOQ9orTPcsEshiDLwCt5YpFQVVO8go1BF8Md4SK38NAzs8bt+XRZiNYVEWrBrEgjEymS9S+pml1/CPnaf7OLzvL1tCYWVAVxMPVi7U+b+jNkeCoHKVOpUoE/GAI2Xy6mj65RRwIqj+i7TKEqDSqUUkw0SyKYV2Ck2GHNKC0= 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)(4326008)(122000001)(86362001)(316002)(7696005)(30864003)(508600001)(6506007)(76116006)(66476007)(186003)(26005)(7416002)(54906003)(66556008)(66446008)(64756008)(2906002)(9686003)(55016002)(38070700005)(52536014)(83380400001)(6916009)(71200400001)(8676002)(66946007)(53546011)(5660300002)(8936002)(38100700002)(33656002)(32563001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SFhHUk5RS011dEd1UzMyQytXeXVGREQ2YmZINVdkOHk3dmlyZGlHVjZ0VjZU?= =?utf-8?B?YW41Y3BkSE12TExXbFJLQ005cEc1WTZrMzBlbGU0dFdaRG9MTVEzRlZNRXlB?= =?utf-8?B?dENJV0VxWExMek9udUZucm1qT3diL01ub1RmWjdIbloxSFJXQ0hUL2JyY3R3?= =?utf-8?B?M1crYzFPamw0R1VJbThUS0MzNzlKZXR0OHhGTVBRT2t2Y2JoUS8zNDVVWmlN?= =?utf-8?B?cWF1RFFyNFUrN3NpdUd2RjBwWXgybnBnQm1ZengyTGJRWXdJNkVYNzFxalY5?= =?utf-8?B?VVBYY0lmTjVsZGpxT29QSXhocTMxbmpmU2FPNytuSmt1QzlOeW1NVnVqMEMv?= =?utf-8?B?aE91aWJ5YVpoZGpiUHRhT2xaYkNOaHYwdTJ5TStyOHFKazBNUTRMdEk4aUJ6?= =?utf-8?B?TUd4RzZyZE1NYTd0NkZBSFRSdHhSbXFRbWZCK0kvMFpPcTFVR3JzbUQ0Wllu?= =?utf-8?B?VXo2ZG1rV3dpZFR0TUxZQy82dDZIL09UcDd3MU5VNE8zZTlkbzVzWFVDdFFF?= =?utf-8?B?NjloV2lKU3JFY1J0RGJUaFNEelZOZm14eFpLd0JobXlJVzF6T0l1ZVhSTk5l?= =?utf-8?B?Z0FUZjBOYktlSlBKbjIxYkhWaGNCdExZMEN2L2tZdFU5KzlUVW5BWEtpczlq?= =?utf-8?B?Wkpub0FpNEdzQzBhcEZ0Y0ZYeUNOL0FuTDJjZWVlTVFPZWkxT0lLQjY1ZUdw?= =?utf-8?B?ZFFvc29UY2QvODBNU09EZ1VFOTByREJLTjRtWldWY2ZWV1JhLzZ4a2J1K0dC?= =?utf-8?B?b3hYeDBDQ29neWl6eFFJL2ZSUVZOWmpFRUM5WFVLOUtxZHhvUHFWMWtoRkNP?= =?utf-8?B?dzk2YXBOZ2x5VDRmL09VdVNVS0VwSGZhOHdwVUUzZ25NWGlYOU5DenFEUUlh?= =?utf-8?B?bCtHVWFjU1p3Wk9ybkp2Zm9VSnlmcWdOVTY0R3FqUmN4bWIrYVp1QmZpOXY3?= =?utf-8?B?NFgvc1JEcG9IWndHRk05Y0dUR2dYUEZYWU9jTmVRY29vR2ljWDlTajRSMngr?= =?utf-8?B?RXc1QkdaejVxOG5YYjdrZ3BRbjE1MVpFbDMxNGQ1S1kydzNCY0o3Ulg4L0pB?= =?utf-8?B?VWloSkN5MXpOMzdDYkdSanJZRFk4R2VteGdwTnhuWTNkU3VmV0gveGhyVXlD?= =?utf-8?B?RHEzbFQyQzNnS0N3Wkx4ZEJPQ2M3ZE4vWFpZTGIxQ1Q0RXJjSkY4N0RxYXpr?= =?utf-8?B?SkcvZFJSdjlQRzNDS1NSdFlIOVI5eVhGbU5VUTFjb09TMnlrQWpnek5FNlV1?= =?utf-8?B?bkliamw2eUwvQ1JqNmNKNHorSk1UdUROZFhCQXpESlN4alRrd0ttZ2lHZjR4?= =?utf-8?B?MXJrbTFHdjRoSjlaVkNraG82WjNIZmhoNDVJVjZQbU9kU214dStRN3gybmVU?= =?utf-8?B?TDVoNTVHWXZHR1I3bmQ5MUlib3laMHoyYnR6S0JBYXpTZTV0TkJLaFhwSnBl?= =?utf-8?B?Vjk4Z2VUVE54RHV2MS9nQW5BeW1zUG9vUmQvS0FOT3p4ZEsyRmJOQkRDV2to?= =?utf-8?B?cXFjc1pJWjJNU3VQNlpwanRmei9UZWtBR0hDYWV1YndSNEk5RGNZNnRqK3p5?= =?utf-8?B?SDJXUm9wVmVIUWtOWllEYXFJdjM4MDZwOUNFWHFRYnRkVlBzTWsyZVFMY21X?= =?utf-8?B?bGtDcnkxSTBwNW1jRkJ6c2IrNzVpZ3F1RGI2bzhCeHcvbWtlMVdJZzJPQlRM?= =?utf-8?B?UFE5L0VMdFpoUWRaenFvVDg2OVhJamtqcUgvZG11QVN2VzAwSFJFTmZjcytB?= =?utf-8?B?Y2RlREt3dGpaakJFV0JVT1ZIRkNZVWRGOHZiSFdTd1ZObjBRdHp1SXhxNlhr?= =?utf-8?B?Y3JpZjh4K3hycjQ0ZlZ5MzNtZkIrdEd3OWdhcG9KY3VpNEFVbTZTbmlDRHNh?= =?utf-8?B?U0Irb0NkdFZWOTNQaHl3OElTM1BMTjArK1ZPdWUzMnNvajRhdUpBZTdJRUQ2?= =?utf-8?B?MENvQXFTRFJ4eUlmSGFPTS9tc1JWWmF1RUJJTG5qTHlhcUNodFFJN3FQNHpW?= =?utf-8?B?TTVTbTVjMVVrNVIvaHFVa3BScXIvSDlkRDBwbmZidVV6WnVTSmt5Wjhvdm9l?= =?utf-8?B?RGNucEhOaUU5cVZjdUVhYzRzUkJ0YXNST3pwVzdKajhsdzl0LzVqSlhXRjM5?= =?utf-8?B?NDhJR2I3T294MlZnVVhScWxaYjdkc1JHaFlXbHNGVUdQcFE2ZHYrL2hBOXpj?= =?utf-8?B?RkE9PQ==?= 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: 1a3a045c-5ba4-443c-4aa2-08d999b57ffb X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Oct 2021 01:51:46.4184 (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: ta0FI02qLeCuzkzX/PUObA31VrysPFR47U/dr5+TS99XXEqCiOQZQ53XzqhbbqZdr97KP6aP2l7kcwkc89z7zw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8531 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211027_185203_648875_788F45DB X-CRM114-Status: GOOD ( 31.41 ) 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 11:41 PM > 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 Tue, Oct 26, 2021 at 11:18 PM Richard Zhu > wrote: > > > > > -----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.d > > > > > > > > > > > > > +++ tsi > > > > > > > > > > > > > @@ -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? > > > > The above change to your patch 'only' calls clk_prepare_enable for > IMX8MM and does not touch GPR14 bits as the IMX8MQ case does > (because as you point out the GPR14 bits differ between IMX8MM and > IMX8MQ). [Richard Zhu] Got that, thanks a lot. > > > > > > > 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). > > + > > A boolean property indicating the CLKREQ# signal is not supported in the > board design (optional) [Richard Zhu] Okay, would be updated later. > > > > > 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"); > > > > Yes this looks good and works both on venice (with > 'fsl,clkreq-unsupported' added) and on imx8mm-evk. > > Thanks for working through this with me and please cc me on your v4 > submission. [Richard Zhu] Welcome. I'm glad to have your help. Thanks a lot. > > 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 40BAAC433EF for ; Thu, 28 Oct 2021 01:53: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 EB8AE6113B for ; Thu, 28 Oct 2021 01:53:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org EB8AE6113B 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=pDU5iVFEdsJ8D9Zyvkpf44U23TgWWV744nA0DGgc7mg=; b=iZAdyKCwZEz34y KzzShSNwTowZfkQnyo5bsN2PHNG359gA9dq81lSfhpCVgHcWguR0W7UN4cBM2tkxy+AfFrgw/H1IF GmR8ufiA340UhsWT75IV+3HKEHyQ2VolO2cLEGyLVmVpA5uiECNXvQPHNPrqD3B5dTBHPo6VzeXX7 KWJZAbJ4qPLqmzcH/5yIq0BJ5mcVXilpZF9+T4veTx/ON8WWk+5SXI3GsH8Erd4HgDcWYLClKuMK5 dCTqp+97QJBe6ZtNbKy8k19BJHPl2r6UBv6SS+1S1LVFBN6KB+khG3/gOzZfPwPCmgoygxIIbRT4Z GyClNiPKNnZhLu8+L8tw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfuaQ-006gEh-TC; Thu, 28 Oct 2021 01:52:11 +0000 Received: from mail-vi1eur05on20621.outbound.protection.outlook.com ([2a01:111:f400:7d00::621] helo=EUR05-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mfuaJ-006g4O-D3; Thu, 28 Oct 2021 01:52:08 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ojjz3haKeITverFWMRVn9AHo9vON1yWew0AewcWY6J+cNopVnK6kuBy90i5tMyT3gXvF9YHzsgmishKXWLunSbxoKdhfUgl4aHH4CnKUEfEg1fgrzXPts71xiTkqFH+rjawS99iobkJ5mgYMoX1Z7o0n9dgBU3KDrsL6G9eHsAMWIMGD/6F58qtuiyiPveS2kYt4BWry/W9/id87F2y55Eb3TNDJjKYDvbcuQqwhEU5EqBLLAr6N+ATrzYfiZzhULEZsTEXssZiQ2uY+vGiWRAulbHy9zQesUziX9mCB8QHYkz8+c/2x1FRiHSz0BxaWO2iinLCe2CDZkkDw8I7olw== 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=2Z6lQcucqj3OCvWzwzvrgBOvWcdRBxrK2CTX/fmMaRs=; b=goqxrfh6Qgytfrhgfxnf3Kvj1mvmHdC7+ejqPpR0DjJwaCup4v8gh9A044d8YRXvwGVtVBuJVPrXuRvdANSu0/Xo93FjI4RBoStQ2eWSiSOXkStMBvBNnoa0IQfZN/XCExQldMVkEyJH+hFN3o/R+Hnz9W5cV29J6Rd/Ru30YnFCn/z86vNmX4lICbF30pV/1lSEhyrMwdqAccxVyPgWsSEYLAAC+13eb7qkr3Wsn3gxm/K1z2dYCpL6whMrxcV5PTjo9h2IzObOoxwBMMApC9hy9Gm8RouiwCxthDSmgwSe47sJOr7L2jb5aWpXRYbZmxARNJRfsLuW2W4ZX1tiaw== 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=2Z6lQcucqj3OCvWzwzvrgBOvWcdRBxrK2CTX/fmMaRs=; b=lPBII2EyZ94En2veMHvYJgJmJwIyhq2UScaYyrVHK7AvH5QXPufOMiTtIaNGqU6/3prK4lO2rDHHsIEfYf42E+JMaNvBDK5qRPz77NHy1advYX8JNVGmUgsdr1IUIVFym7+temSaPclS35hoetawRgydwAemO96i7u4lRp/2UqI= Received: from AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) by AS8PR04MB8531.eurprd04.prod.outlook.com (2603:10a6:20b:422::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18; Thu, 28 Oct 2021 01:51:46 +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.015; Thu, 28 Oct 2021 01:51:46 +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+SAIADuD4QgABZ2ZCAAKpdAIAAx5NwgAC3poCAAK5bEIAA3OuAgACiz+A= Date: Thu, 28 Oct 2021 01:51:46 +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: 1a3a045c-5ba4-443c-4aa2-08d999b57ffb x-ms-traffictypediagnostic: AS8PR04MB8531: 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: 9knHySWDzH0nF2xXWdxQcGlxMg13AR2Cmk4Wt8N9GHofkufjt4eg68v/EjIhHk8dendGrW23rTnMW27Bf61HHYlDP52z5BE/7hto0EIWLlVGBIla6K7nr0qR3uaLhwlG7976dqr2CEFg/JaTXoWahIAj13DnPw5C1oTskCit/XUdTPNG7qFgG2v4HbvzP03WO/ptiPL5IjFY/vIOktoig/BW34A3Fqk0pW93ntMnhHRXPZQuL0weWTQVuRhYrn8kKGugel6iA6ZRpPaAZJsICrHCbTMEHmFJ+kAjYexpAN5464NVpYywWBVaiD53ak1wMj7dYEwUXBzWraDXoXWYCKQ4SANTmhP/zcH8M1bTGUyBEDfTpbdpIta9ESC9OJbxQo3kvmt/C5bo8tUIpFnhBnbLvgzjU/OCuxPrAAlTDe4jDw0wm+Grz/XNyxXHygOXiWbXEFtQes0RZHIsIt+InyzDTqVqT31obk+O3vlV21Z4Ubwn7KaVKuE2melcCoEJ/W7/aAtiZjCBYmGGDQgzRSRhsrfGumLw6SCdDnKvCLvDK7K1AJVa1iP7Oxxl/u84fH7WnOQ9orTPcsEshiDLwCt5YpFQVVO8go1BF8Md4SK38NAzs8bt+XRZiNYVEWrBrEgjEymS9S+pml1/CPnaf7OLzvL1tCYWVAVxMPVi7U+b+jNkeCoHKVOpUoE/GAI2Xy6mj65RRwIqj+i7TKEqDSqUUkw0SyKYV2Ck2GHNKC0= 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)(4326008)(122000001)(86362001)(316002)(7696005)(30864003)(508600001)(6506007)(76116006)(66476007)(186003)(26005)(7416002)(54906003)(66556008)(66446008)(64756008)(2906002)(9686003)(55016002)(38070700005)(52536014)(83380400001)(6916009)(71200400001)(8676002)(66946007)(53546011)(5660300002)(8936002)(38100700002)(33656002)(32563001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SFhHUk5RS011dEd1UzMyQytXeXVGREQ2YmZINVdkOHk3dmlyZGlHVjZ0VjZU?= =?utf-8?B?YW41Y3BkSE12TExXbFJLQ005cEc1WTZrMzBlbGU0dFdaRG9MTVEzRlZNRXlB?= =?utf-8?B?dENJV0VxWExMek9udUZucm1qT3diL01ub1RmWjdIbloxSFJXQ0hUL2JyY3R3?= =?utf-8?B?M1crYzFPamw0R1VJbThUS0MzNzlKZXR0OHhGTVBRT2t2Y2JoUS8zNDVVWmlN?= =?utf-8?B?cWF1RFFyNFUrN3NpdUd2RjBwWXgybnBnQm1ZengyTGJRWXdJNkVYNzFxalY5?= =?utf-8?B?VVBYY0lmTjVsZGpxT29QSXhocTMxbmpmU2FPNytuSmt1QzlOeW1NVnVqMEMv?= =?utf-8?B?aE91aWJ5YVpoZGpiUHRhT2xaYkNOaHYwdTJ5TStyOHFKazBNUTRMdEk4aUJ6?= =?utf-8?B?TUd4RzZyZE1NYTd0NkZBSFRSdHhSbXFRbWZCK0kvMFpPcTFVR3JzbUQ0Wllu?= =?utf-8?B?VXo2ZG1rV3dpZFR0TUxZQy82dDZIL09UcDd3MU5VNE8zZTlkbzVzWFVDdFFF?= =?utf-8?B?NjloV2lKU3JFY1J0RGJUaFNEelZOZm14eFpLd0JobXlJVzF6T0l1ZVhSTk5l?= =?utf-8?B?Z0FUZjBOYktlSlBKbjIxYkhWaGNCdExZMEN2L2tZdFU5KzlUVW5BWEtpczlq?= =?utf-8?B?Wkpub0FpNEdzQzBhcEZ0Y0ZYeUNOL0FuTDJjZWVlTVFPZWkxT0lLQjY1ZUdw?= =?utf-8?B?ZFFvc29UY2QvODBNU09EZ1VFOTByREJLTjRtWldWY2ZWV1JhLzZ4a2J1K0dC?= =?utf-8?B?b3hYeDBDQ29neWl6eFFJL2ZSUVZOWmpFRUM5WFVLOUtxZHhvUHFWMWtoRkNP?= =?utf-8?B?dzk2YXBOZ2x5VDRmL09VdVNVS0VwSGZhOHdwVUUzZ25NWGlYOU5DenFEUUlh?= =?utf-8?B?bCtHVWFjU1p3Wk9ybkp2Zm9VSnlmcWdOVTY0R3FqUmN4bWIrYVp1QmZpOXY3?= =?utf-8?B?NFgvc1JEcG9IWndHRk05Y0dUR2dYUEZYWU9jTmVRY29vR2ljWDlTajRSMngr?= =?utf-8?B?RXc1QkdaejVxOG5YYjdrZ3BRbjE1MVpFbDMxNGQ1S1kydzNCY0o3Ulg4L0pB?= =?utf-8?B?VWloSkN5MXpOMzdDYkdSanJZRFk4R2VteGdwTnhuWTNkU3VmV0gveGhyVXlD?= =?utf-8?B?RHEzbFQyQzNnS0N3Wkx4ZEJPQ2M3ZE4vWFpZTGIxQ1Q0RXJjSkY4N0RxYXpr?= =?utf-8?B?SkcvZFJSdjlQRzNDS1NSdFlIOVI5eVhGbU5VUTFjb09TMnlrQWpnek5FNlV1?= =?utf-8?B?bkliamw2eUwvQ1JqNmNKNHorSk1UdUROZFhCQXpESlN4alRrd0ttZ2lHZjR4?= =?utf-8?B?MXJrbTFHdjRoSjlaVkNraG82WjNIZmhoNDVJVjZQbU9kU214dStRN3gybmVU?= =?utf-8?B?TDVoNTVHWXZHR1I3bmQ5MUlib3laMHoyYnR6S0JBYXpTZTV0TkJLaFhwSnBl?= =?utf-8?B?Vjk4Z2VUVE54RHV2MS9nQW5BeW1zUG9vUmQvS0FOT3p4ZEsyRmJOQkRDV2to?= =?utf-8?B?cXFjc1pJWjJNU3VQNlpwanRmei9UZWtBR0hDYWV1YndSNEk5RGNZNnRqK3p5?= =?utf-8?B?SDJXUm9wVmVIUWtOWllEYXFJdjM4MDZwOUNFWHFRYnRkVlBzTWsyZVFMY21X?= =?utf-8?B?bGtDcnkxSTBwNW1jRkJ6c2IrNzVpZ3F1RGI2bzhCeHcvbWtlMVdJZzJPQlRM?= =?utf-8?B?UFE5L0VMdFpoUWRaenFvVDg2OVhJamtqcUgvZG11QVN2VzAwSFJFTmZjcytB?= =?utf-8?B?Y2RlREt3dGpaakJFV0JVT1ZIRkNZVWRGOHZiSFdTd1ZObjBRdHp1SXhxNlhr?= =?utf-8?B?Y3JpZjh4K3hycjQ0ZlZ5MzNtZkIrdEd3OWdhcG9KY3VpNEFVbTZTbmlDRHNh?= =?utf-8?B?U0Irb0NkdFZWOTNQaHl3OElTM1BMTjArK1ZPdWUzMnNvajRhdUpBZTdJRUQ2?= =?utf-8?B?MENvQXFTRFJ4eUlmSGFPTS9tc1JWWmF1RUJJTG5qTHlhcUNodFFJN3FQNHpW?= =?utf-8?B?TTVTbTVjMVVrNVIvaHFVa3BScXIvSDlkRDBwbmZidVV6WnVTSmt5Wjhvdm9l?= =?utf-8?B?RGNucEhOaUU5cVZjdUVhYzRzUkJ0YXNST3pwVzdKajhsdzl0LzVqSlhXRjM5?= =?utf-8?B?NDhJR2I3T294MlZnVVhScWxaYjdkc1JHaFlXbHNGVUdQcFE2ZHYrL2hBOXpj?= =?utf-8?B?RkE9PQ==?= 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: 1a3a045c-5ba4-443c-4aa2-08d999b57ffb X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Oct 2021 01:51:46.4184 (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: ta0FI02qLeCuzkzX/PUObA31VrysPFR47U/dr5+TS99XXEqCiOQZQ53XzqhbbqZdr97KP6aP2l7kcwkc89z7zw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8531 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211027_185203_648875_788F45DB X-CRM114-Status: GOOD ( 31.41 ) 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 11:41 PM > 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 Tue, Oct 26, 2021 at 11:18 PM Richard Zhu > wrote: > > > > > -----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.d > > > > > > > > > > > > > +++ tsi > > > > > > > > > > > > > @@ -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? > > > > The above change to your patch 'only' calls clk_prepare_enable for > IMX8MM and does not touch GPR14 bits as the IMX8MQ case does > (because as you point out the GPR14 bits differ between IMX8MM and > IMX8MQ). [Richard Zhu] Got that, thanks a lot. > > > > > > > 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). > > + > > A boolean property indicating the CLKREQ# signal is not supported in the > board design (optional) [Richard Zhu] Okay, would be updated later. > > > > > 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"); > > > > Yes this looks good and works both on venice (with > 'fsl,clkreq-unsupported' added) and on imx8mm-evk. > > Thanks for working through this with me and please cc me on your v4 > submission. [Richard Zhu] Welcome. I'm glad to have your help. Thanks a lot. > > Best regards, > > Tim _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel