From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C0691C64EB8 for ; Tue, 9 Oct 2018 10:02:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5D24720835 for ; Tue, 9 Oct 2018 10:02:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="zvhDmy/I" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5D24720835 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726752AbeJIRSH (ORCPT ); Tue, 9 Oct 2018 13:18:07 -0400 Received: from mail-cys01nam02on0069.outbound.protection.outlook.com ([104.47.37.69]:56938 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726160AbeJIRSH (ORCPT ); Tue, 9 Oct 2018 13:18:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0ZjEpyWnrtYcI0Jy0PRfNHuLRLF+ZRmlFX2wSR4a6RI=; b=zvhDmy/IiYjFAEmU3uFCJTnlKonuRBiLgYSw4PNV4lsOtRaYIA+rHQ049+ANmYk2PqihPEaIWONCCpM8I9jEaB0oBqSUBdEm37u15jkKNOI17ghi+nTAiHfekE1Kq4px+LverR8hlfP1x1P5qXKD5r7tegExNWhmQ0vDE1Gr8tY= Received: from BL0PR02MB5633.namprd02.prod.outlook.com (20.177.241.80) by BL0PR02MB3699.namprd02.prod.outlook.com (52.132.8.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.26; Tue, 9 Oct 2018 10:01:48 +0000 Received: from BL0PR02MB5633.namprd02.prod.outlook.com ([fe80::8cbf:c901:e10:b871]) by BL0PR02MB5633.namprd02.prod.outlook.com ([fe80::8cbf:c901:e10:b871%4]) with mapi id 15.20.1207.024; Tue, 9 Oct 2018 10:01:48 +0000 From: Anurag Kumar Vulisha To: Kishon Vijay Abraham I , "robh+dt@kernel.org" , "mark.rutland@arm.com" , Michal Simek , "vivek.gautam@codeaurora.org" CC: "v.anuragkumar@gmail.com" , Ajay Yugalkishore Pandey , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v4 2/2] phy: zynqmp: Add phy driver for xilinx zynqmp phy core Thread-Topic: [PATCH v4 2/2] phy: zynqmp: Add phy driver for xilinx zynqmp phy core Thread-Index: AQHUSrToIb1AkVp4IUOqG1NUGQ3QpKUWs0eAgAACJrA= Date: Tue, 9 Oct 2018 10:01:48 +0000 Message-ID: References: <1536769366-31398-1-git-send-email-anurag.kumar.vulisha@xilinx.com> <1536769366-31398-3-git-send-email-anurag.kumar.vulisha@xilinx.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=anuragku@xilinx.com; x-originating-ip: [149.199.50.133] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BL0PR02MB3699;6:sDIHdKXOxptDjW3cxUdJT8ZJQrfBOt1eIHV4JlQFodJsBc3+ttWSL/gnqXbejYV4HFnMKyC8y7i4uK6KfwZ1Rn0sHbu9ZjD5o1LC3iacW/L4oZt5sg5AF85cKUS53B92HKjRlRZFk6bhBK4XXclQwVRy/nKfU0Yg9pZrgAM7gl/zHzaNJIS0USjXFY7epRdQY3k6AY3o+BZvEf18VC7GpUgr/wXgRQ2l54m6qZnoE60faXTIqswABzzqbgekkGjVXM4klMWnj2iqKSyn4yqtv90VDWsqqBwLTEZDePYItHQFPvrlwoOeZUNPir8trm/6h6jY1ZjKY5lcKm2YTJrf0EOcYwhgeQTJXHaRkM4EXxHklqctTMNGo2XV9TlP/PsJvQcCUndIDu5iDrqkwUZjl15RoqbshvQ1VIOH2pi4oBxAkM18xcYmlORN4M0WVSVbChk8SUL/l+rLqabJf5TrNw==;5:ZHyAdSp8nB4PXFTtq/gp3QL+H/iuVmg2qnYCrfMsteA6PDMWtVrCEDGSqyY0avKGwXrCydpQ7Zie4bKFJUtiojCs2pNSm1pbU2BuMPYEbu+hpotfzPGAVhnQRjq/QAWqD4EZJLhRbQG/sHHuY2X+drNnD1eZnNLQoiI/qN31ATY=;7:lV+neaka18tSdB3UDxXym6UmREbCqLWNuKFw/J53AJsxSXBGlTOReJsS2IKGynadXfWa/CpE/mzupLGv2H199Y5rkhhnx4/Zq3X4x11hDWrfaIce9cmsSSXMq9M88QH8O2R7yDf6F5J0w8FOmK6kHezTTLttzsVql5LsDeRZ3L2f+wG35CL1Ldl5NWUBTFjDP1TcSbbHbSJOQVDAo6HtRzQSg6DBGKJ6ZhulRBXE220JXXogObAXwYutx2shXL+J x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: 91bfc99d-996a-42ac-6497-08d62dce3a98 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);SRVR:BL0PR02MB3699; x-ms-traffictypediagnostic: BL0PR02MB3699: x-ld-processed: 657af505-d5df-48d0-8300-c31994686c5c,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(31051911155226)(180628864354917)(85827821059158)(9452136761055)(258649278758335)(21532816269658)(192813158149592); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231355)(944501410)(52105095)(6055026)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051);SRVR:BL0PR02MB3699;BCL:0;PCL:0;RULEID:;SRVR:BL0PR02MB3699; x-forefront-prvs: 08200063E9 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(136003)(39860400002)(346002)(376002)(396003)(189003)(199004)(13464003)(86362001)(5250100002)(305945005)(25786009)(97736004)(476003)(5660300001)(446003)(11346002)(39060400002)(2906002)(478600001)(7736002)(66066001)(4326008)(14444005)(33656002)(3846002)(6116002)(256004)(105586002)(486006)(26005)(575784001)(106356001)(186003)(2501003)(14454004)(316002)(53946003)(53936002)(102836004)(9686003)(55016002)(71200400001)(6246003)(71190400001)(76176011)(7696005)(68736007)(2900100001)(110136005)(8676002)(229853002)(74316002)(54906003)(99286004)(81166006)(6436002)(81156014)(6506007)(4744004)(8936002);DIR:OUT;SFP:1101;SCL:1;SRVR:BL0PR02MB3699;H:BL0PR02MB5633.namprd02.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: xilinx.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: XJxCk/lHMn2l2j+gxnpz+81dgvkTWPJr72N5CiMbwKcnWTNz4oPnboTVETS9ynjLKuUaIGK+E258vqYj/7MaT389fsMJLeUYAPyYLmzNrBX1+/OeAKQLFfBG5ERlPYVgvOTXLfYAuWIcZJNW8e+t5aCg1p3LNqyBz/gEa0/DK7KKC/9vfSFtIwmpedyXrcdSIypE7CzarWTLiV0Bi5NQvKrnB3ynVucoUA+pvfQrBgaFvTjq7eg85jBcjged4o1N+yJXd3ynIEMhX8g1qkx4aH7Pi3DTQ8s5E81I8/bPRpsGL0PnBkG3IRPz4ImYYKxXt9w4Ht/Tn6UueVlyCveg+I/Qw/38KqGJ6bcjhG/ItLQ= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-Network-Message-Id: 91bfc99d-996a-42ac-6497-08d62dce3a98 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Oct 2018 10:01:48.7988 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR02MB3699 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgS2lzaG9uLA0KDQo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBLaXNob24g VmlqYXkgQWJyYWhhbSBJIFttYWlsdG86a2lzaG9uQHRpLmNvbV0NCj5TZW50OiBUdWVzZGF5LCBP Y3RvYmVyIDA5LCAyMDE4IDE6MTggUE0NCj5UbzogQW51cmFnIEt1bWFyIFZ1bGlzaGEgPGFudXJh Z2t1QHhpbGlueC5jb20+OyByb2JoK2R0QGtlcm5lbC5vcmc7DQo+bWFyay5ydXRsYW5kQGFybS5j b207IE1pY2hhbCBTaW1layA8bWljaGFsc0B4aWxpbnguY29tPjsNCj52aXZlay5nYXV0YW1AY29k ZWF1cm9yYS5vcmcNCj5DYzogdi5hbnVyYWdrdW1hckBnbWFpbC5jb207IEFqYXkgWXVnYWxraXNo b3JlIFBhbmRleSA8QVBBTkRFWUB4aWxpbnguY29tPjsNCj5kZXZpY2V0cmVlQHZnZXIua2VybmVs Lm9yZzsgbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC0NCj5rZXJu ZWxAdmdlci5rZXJuZWwub3JnDQo+U3ViamVjdDogUmU6IFtQQVRDSCB2NCAyLzJdIHBoeTogenlu cW1wOiBBZGQgcGh5IGRyaXZlciBmb3IgeGlsaW54IHp5bnFtcCBwaHkgY29yZQ0KPg0KPkhpIEFu dXJhZywNCj4NCj5PbiBXZWRuZXNkYXkgMTIgU2VwdGVtYmVyIDIwMTggMDk6NTIgUE0sIEFudXJh ZyBLdW1hciBWdWxpc2hhIHdyb3RlOg0KPj4gWnlucU1QIFNvQyBoYXMgYSBHaWdhYml0IFRyYW5z Y2VpdmVyIHdpdGggZm91ciBsYW5lcy4gQWxsIHRoZSBoaWdoIHNwZWVkDQo+PiBwZXJpcGhlcmFs cyBzdWNoIGFzIFVTQiwgU0FUQSwgUENJRSwgRGlzcGxheSBQb3J0IGFuZCBFdGhlcm5ldCBTR01J SSBjYW4NCj4+IHJlbHkgb24gYW55IG9mIHRoZSBmb3VyIEdUIGxhbmVzIGZvciBQSFkgbGF5ZXIu IFRoaXMgcGF0Y2ggYWRkcyBkcml2ZXINCj4+IGZvciB0aGF0IFp5bnFNUCBHVCBjb3JlLg0KPj4N Cj4+IFNpZ25lZC1vZmYtYnk6IEFudXJhZyBLdW1hciBWdWxpc2hhIDxhbnVyYWcua3VtYXIudnVs aXNoYUB4aWxpbnguY29tPg0KPj4gLS0tDQo+PiBDaGFuZ2VzIGluIHY0Og0KPj4gCTEuIE1vdmVk IGluY2x1ZGUvZHQtYmluZGluZ3MvcGh5L3BoeS5oIGludG8gcGF0Y2ggMSBhcyBzdWdnZXN0ZWQg YnkNCj4+IAkgICAiUm9iIEhlcnJpbmciDQo+Pg0KPj4gQ2hhbmdlcyBpbiB2MzoNCj4+IAkxLiBD b3JyZWN0ZWQgdGhlIERvY3VtZW50YXRpb24gYXMgc3VnZ2VzdGVkIGJ5ICJWaXZlayBHYXV0YW0i DQo+Pg0KPj4gQ2hhbmdlcyBpbiB2MjoNCj4+IAkxLiBGaXhlZCB0aGUgY29tcGlsYXRpb24gZXJy b3Igd2hlbiBjb21waWxlZCBwaHktenlucW1wLmMgYXMgYSBtb2R1bGUNCj4+IAkyLiBBZGRlZCBD T05GSUdfUE0gbWFjcm8gaW4gcGh5LXp5bnFtcC5jIGRyaXZlcg0KPj4gLS0tDQo+PiAgZHJpdmVy cy9waHkvS2NvbmZpZyAgICAgICAgICAgIHwgICAgOCArDQo+PiAgZHJpdmVycy9waHkvTWFrZWZp bGUgICAgICAgICAgIHwgICAgMSArDQo+PiAgZHJpdmVycy9waHkvcGh5LXp5bnFtcC5jICAgICAg IHwgMTU4MQ0KPisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+ICBp bmNsdWRlL2xpbnV4L3BoeS9waHktenlucW1wLmggfCAgIDUyICsrDQo+PiAgNCBmaWxlcyBjaGFu Z2VkLCAxNjQyIGluc2VydGlvbnMoKykNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9w aHkvcGh5LXp5bnFtcC5jDQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvcGh5 L3BoeS16eW5xbXAuaA0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9LY29uZmlnIGIv ZHJpdmVycy9waHkvS2NvbmZpZw0KPj4gaW5kZXggNWM4ZDQ1Mi4uMTRjZjMzMzAgMTAwNjQ0DQo+ PiAtLS0gYS9kcml2ZXJzL3BoeS9LY29uZmlnDQo+PiArKysgYi9kcml2ZXJzL3BoeS9LY29uZmln DQo+PiBAQCAtNDAsNiArNDAsMTQgQEAgY29uZmlnIFBIWV9YR0VORQ0KPj4gIAloZWxwDQo+PiAg CSAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBBUE0gWC1HZW5lIFNvQyBtdWx0aS1w dXJwb3NlIFBIWS4NCj4+DQo+PiArY29uZmlnIFBIWV9YSUxJTlhfWllOUU1QDQo+PiArCXRyaXN0 YXRlICJYaWxpbnggWnlucU1QIFBIWSBkcml2ZXIiDQo+PiArCWRlcGVuZHMgb24gQVJDSF9aWU5R TVANCj4+ICsJc2VsZWN0IEdFTkVSSUNfUEhZDQo+PiArCWhlbHANCj4+ICsJICBFbmFibGUgdGhp cyB0byBzdXBwb3J0IFp5bnFNUCBIaWdoIFNwZWVkIEdpZ2FiaXQgVHJhbnNjZWl2ZXINCj4+ICsJ ICB0aGF0IGlzIHBhcnQgb2YgWnlucU1QIFNvQy4NCj4+ICsNCj4+ICBzb3VyY2UgImRyaXZlcnMv cGh5L2FsbHdpbm5lci9LY29uZmlnIg0KPj4gIHNvdXJjZSAiZHJpdmVycy9waHkvYW1sb2dpYy9L Y29uZmlnIg0KPj4gIHNvdXJjZSAiZHJpdmVycy9waHkvYnJvYWRjb20vS2NvbmZpZyINCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5L01ha2VmaWxlDQo+ PiBpbmRleCA4NGUzYmQ5Li5mMmE4ZDI3IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9waHkvTWFr ZWZpbGUNCj4+ICsrKyBiL2RyaXZlcnMvcGh5L01ha2VmaWxlDQo+PiBAQCAtNyw2ICs3LDcgQEAg b2JqLSQoQ09ORklHX0dFTkVSSUNfUEhZKQkJKz0gcGh5LWNvcmUubw0KPj4gIG9iai0kKENPTkZJ R19QSFlfTFBDMThYWF9VU0JfT1RHKQkrPSBwaHktbHBjMTh4eC11c2Itb3RnLm8NCj4+ICBvYmot JChDT05GSUdfUEhZX1hHRU5FKQkJCSs9IHBoeS14Z2VuZS5vDQo+PiAgb2JqLSQoQ09ORklHX1BI WV9QSVNUQUNISU9fVVNCKQkJKz0gcGh5LXBpc3RhY2hpby11c2Iubw0KPj4gK29iai0kKENPTkZJ R19QSFlfWElMSU5YX1pZTlFNUCkJCSs9IHBoeS16eW5xbXAubw0KPj4gIG9iai0kKENPTkZJR19B UkNIX1NVTlhJKQkJKz0gYWxsd2lubmVyLw0KPj4gIG9iai0kKENPTkZJR19BUkNIX01FU09OKQkJ Kz0gYW1sb2dpYy8NCj4+ICBvYmotJChDT05GSUdfTEFOVElRKQkJCSs9IGxhbnRpcS8NCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9waHktenlucW1wLmMgYi9kcml2ZXJzL3BoeS9waHktenlu cW1wLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwLi40OTc4NjJk DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL3BoeS9waHktenlucW1wLmMNCj4+ IEBAIC0wLDAgKzEsMTU4MSBAQA0KPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wDQo+PiArLyoNCj4+ICsgKiBwaHktenlucW1wLmMgLSBQSFkgZHJpdmVyIGZvciBYaWxpbngg WnlucU1QIEdULg0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChDKSAyMDE4IFhpbGlueCBJbmMu DQo+PiArICoNCj4+ICsgKiBBdXRob3I6IEFudXJhZyBLdW1hciBWdWxpc2hhIDxhbnVyYWdrdUB4 aWxpbnguY29tPg0KPj4gKyAqDQo+PiArICogVGhpcyBkcml2ZXIgaXMgdGVzdGVkIGZvciBVU0Is IFNBVEEgYW5kIERpc3BsYXkgUG9ydCBjdXJyZW50bHkuDQo+PiArICogT3RoZXIgY29udHJvbGxl cnMgUENJZSBhbmQgU0dNSUkgc2hvdWxkIGFsc28gd29yayBidXQgdGhhdCBpcw0KPj4gKyAqIGV4 cGVyaW1lbnRhbCBhcyBvZiBub3cuDQo+PiArICovDQo+PiArDQo+PiArI2luY2x1ZGUgPGxpbnV4 L2Nsay5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51 eC9pby5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4+ICsjaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+PiArI2luY2x1ZGUgPGxp bnV4L29mX3BsYXRmb3JtLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4NCj4+ ICsjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5 LXp5bnFtcC5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4+ICsj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvcGh5L3Bo eS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9s aXN0Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4+ICsNCj4+ICsvKiBJbnRlciBD b25uZWN0IE1hdHJpeCBwYXJhbWV0ZXJzICovDQo+PiArI2RlZmluZSBJQ01fQ0ZHMAkJCTB4MTAw MTANCj4+ICsjZGVmaW5lIElDTV9DRkcxCQkJMHgxMDAxNA0KPj4gKyNkZWZpbmUgSUNNX0NGRzBf TDBfTUFTSwkJMHgwNw0KPj4gKyNkZWZpbmUgSUNNX0NGRzBfTDFfTUFTSwkJMHg3MA0KPj4gKyNk ZWZpbmUgSUNNX0NGRzFfTDJfTUFTSwkJMHgwNw0KPj4gKyNkZWZpbmUgSUNNX0NGRzJfTDNfTUFT SwkJMHg3MA0KPj4gKyNkZWZpbmUgSUNNX0NGR19TSElGVAkJCTQNCj4+ICsNCj4+ICsvKiBJbnRl ciBDb25uZWN0IE1hdHJpeCBhbGxvd2VkIHByb3RvY29scyAqLw0KPj4gKyNkZWZpbmUgSUNNX1BS T1RPQ09MX1BECQkJMHgwDQo+PiArI2RlZmluZSBJQ01fUFJPVE9DT0xfUENJRQkJMHgxDQo+PiAr I2RlZmluZSBJQ01fUFJPVE9DT0xfU0FUQQkJMHgyDQo+PiArI2RlZmluZSBJQ01fUFJPVE9DT0xf VVNCCQkweDMNCj4+ICsjZGVmaW5lIElDTV9QUk9UT0NPTF9EUAkJCTB4NA0KPj4gKyNkZWZpbmUg SUNNX1BST1RPQ09MX1NHTUlJCQkweDUNCj4+ICsNCj4+ICsvKiBUZXN0IE1vZGUgY29tbW9uIHJl c2V0IGNvbnRyb2wgIHBhcmFtZXRlcnMgKi8NCj4+ICsjZGVmaW5lIFRNX0NNTl9SU1QJCQkweDEw MDE4DQo+PiArI2RlZmluZSBUTV9DTU5fUlNUX0VOCQkJMHgxDQo+PiArI2RlZmluZSBUTV9DTU5f UlNUX1NFVAkJCTB4Mg0KPj4gKyNkZWZpbmUgVE1fQ01OX1JTVF9NQVNLCQkJMHgzDQo+PiArDQo+ PiArLyogUmVmY2xrIHNlbGVjdGlvbiBwYXJhbWV0ZXJzICovDQo+PiArI2RlZmluZSBQTExfUkVG X1NFTDAJCQkweDEwMDAwDQo+PiArI2RlZmluZSBQTExfUkVGX09GRlNFVAkJCTB4NA0KPj4gKyNk ZWZpbmUgUExMX0ZSRVFfTUFTSwkJCTB4MUYNCj4+ICsjZGVmaW5lIFBMTF9TVEFUVVNfUkVBRF9P RkZTRVQJCTB4NDAwMA0KPj4gKyNkZWZpbmUgUExMX1NUQVRVU19MT0NLRUQJCTB4MTANCj4+ICsN Cj4+ICsvKiBQTEwgU1NDIHN0ZXAgc2l6ZSBvZmZzZXRzICovDQo+PiArI2RlZmluZSBMMF9MMF9S RUZfQ0xLX1NFTAkJMHgyODYwDQo+PiArI2RlZmluZSBMMF9QTExfU1NfU1RFUFNfMF9MU0IJCTB4 MjM2OA0KPj4gKyNkZWZpbmUgTDBfUExMX1NTX1NURVBTXzFfTVNCCQkweDIzNkMNCj4+ICsjZGVm aW5lIEwwX1BMTF9TU19TVEVQX1NJWkVfMF9MU0IJMHgyMzcwDQo+PiArI2RlZmluZSBMMF9QTExf U1NfU1RFUF9TSVpFXzEJCTB4MjM3NA0KPj4gKyNkZWZpbmUgTDBfUExMX1NTX1NURVBfU0laRV8y CQkweDIzNzgNCj4+ICsjZGVmaW5lIEwwX1BMTF9TU19TVEVQX1NJWkVfM19NU0IJMHgyMzdDDQo+ PiArI2RlZmluZSBMMF9QTExfU1RBVFVTX1JFQURfMQkJMHgyM0U0DQo+PiArDQo+PiArLyogU1ND IHN0ZXAgc2l6ZSBwYXJhbWV0ZXJzICovDQo+PiArI2RlZmluZSBTVEVQX1NJWkVfT0ZGU0VUCQkw eDQwMDANCj4+ICsjZGVmaW5lIFNURVBfU0laRV8wX01BU0sJCTB4RkYNCj4+ICsjZGVmaW5lIFNU RVBfU0laRV8xX01BU0sJCTB4RkYNCj4+ICsjZGVmaW5lIFNURVBfU0laRV8yX01BU0sJCTB4RkYN Cj4+ICsjZGVmaW5lIFNURVBfU0laRV8zX01BU0sJCTB4Mw0KPj4gKyNkZWZpbmUgU1RFUF9TSVpF X1NISUZUCQkJOA0KPj4gKyNkZWZpbmUgRk9SQ0VfU1RFUF9TSVpFCQkJMHgxMA0KPj4gKyNkZWZp bmUgRk9SQ0VfU1RFUFMJCQkweDIwDQo+PiArI2RlZmluZSBTVEVQU19PRkZTRVQJCQkweDQwMDAN Cj4+ICsjZGVmaW5lIFNURVBTXzBfTUFTSwkJCTB4RkYNCj4+ICsjZGVmaW5lIFNURVBTXzFfTUFT SwkJCTB4MDcNCj4+ICsNCj4+ICsvKiBCRyBjYWxpYnJhdGlvbiBwYXJhbWV0ZXJzICovDQo+PiAr I2RlZmluZSBCR0NBTF9SRUZfU0VMCQkJMHgxMDAyOA0KPj4gKyNkZWZpbmUgQkdDQUxfUkVGX1ZB TFVFCQkJMHgwQw0KPj4gKw0KPj4gKy8qIENhbGlicmF0aW9uIGRpZ2l0YWwgbG9naWMgcGFyYW1l dGVycyAqLw0KPj4gKyNkZWZpbmUgTDNfVE1fQ0FMSUJfRElHMTkJCTB4RUM0Qw0KPj4gKyNkZWZp bmUgTDNfQ0FMSUJfRE9ORV9TVEFUVVMJCTB4RUYxNA0KPj4gKyNkZWZpbmUgTDNfVE1fQ0FMSUJf RElHMTgJCTB4RUM0OA0KPj4gKyNkZWZpbmUgTDNfVE1fQ0FMSUJfRElHMTlfTlNXCQkweDA3DQo+ PiArI2RlZmluZSBMM19UTV9DQUxJQl9ESUcxOF9OU1cJCTB4RTANCj4+ICsjZGVmaW5lIEwzX1RN X09WRVJSSURFX05TV19DT0RFICAgICAgICAgMHgyMA0KPj4gKyNkZWZpbmUgTDNfQ0FMSUJfRE9O RQkJCTB4MDINCj4+ICsjZGVmaW5lIEwzX05TV19TSElGVAkJCTUNCj4+ICsjZGVmaW5lIEwzX05T V19QSVBFX1NISUZUCQk0DQo+PiArI2RlZmluZSBMM19OU1dfQ0FMSUJfU0hJRlQJCTMNCj4+ICsN Cj4+ICsvKiBETiBSZXNpc3RvciBjYWxpYnJhdGlvbiBjb2RlIHBhcmFtZXRlcnMgKi8NCj4+ICsj ZGVmaW5lIEwwX1RYUE1BX1NUXzMJCQkweDBCMEMNCj4+ICsjZGVmaW5lIEwwX0ROX0NBTElCX0NP REUJCTB4M0YNCj4+ICsNCj4+ICsvKiBQTEwgVGVzdCBNb2RlIHJlZ2lzdGVyIHBhcmFtZXRlcnMg Ki8NCj4+ICsjZGVmaW5lIEwwX1RNX1BMTF9ESUdfMzcJCTB4MjA5NA0KPj4gKyNkZWZpbmUgTDBf VE1fUExMX0RJR18zN19PRkZTRVQJCTB4NDAwMA0KPj4gKyNkZWZpbmUgTDBfVE1fQ09BUlNFX0NP REVfTElNSVQJCTB4MTANCj4+ICsNCj4+ICsvKiBQQ1MgY29udHJvbCBwYXJhbWV0ZXJzICovDQo+ PiArI2RlZmluZSBMMF9UTV9ESUdfNgkJCTB4MTA2Qw0KPj4gKyNkZWZpbmUgTDBfVFhfRElHXzYx CQkJMHgwMEY0DQo+PiArI2RlZmluZSBMMF9UTV9ESUdfNl9PRkZTRVQJCTB4NDAwMA0KPj4gKyNk ZWZpbmUgTDBfVFhfRElHXzYxX09GRlNFVAkJMHg0MDAwDQo+PiArI2RlZmluZSBMMF9UTV9ESVNf REVTQ1JBTUJMRV9ERUNPREVSCTB4MEYNCj4+ICsjZGVmaW5lIEwwX1RNX0RJU0FCTEVfU0NSQU1C TEVfRU5DT0RFUgkweDBGDQo+PiArDQo+PiArLyogVFggRGUtZW1waGFzaXMgcGFyYW1ldGVycyAq Lw0KPj4gKyNkZWZpbmUgTDBfVFhfQU5BX1RNXzE4CQkJMHgwMDQ4DQo+PiArI2RlZmluZSBMMF9U WF9BTkFfVE1fMTE4CQkweDAxRDgNCj4+ICsjZGVmaW5lIEwwX1RYX0FOQV9UTV8xOF9PRkZTRVQJ CTB4NDAwMA0KPj4gKyNkZWZpbmUgTDBfVFhfQU5BX1RNXzExOF9PRkZTRVQJCTB4NDAwMA0KPj4g KyNkZWZpbmUgTDBfVFhfQU5BX1RNXzExOF9GT1JDRV8xN18wCUJJVCgwKQ0KPj4gKw0KPj4gKy8q IFBNQSBjb250cm9sIHBhcmFtZXRlcnMgKi8NCj4+ICsjZGVmaW5lIEwwX1RYUE1EX1RNXzQ1CQkJ MHgwQ0I0DQo+PiArI2RlZmluZSBMMF9UWFBNRF9UTV80OAkJCTB4MENDMA0KPj4gKyNkZWZpbmUg TDBfVFhQTURfVE1fNDVfT0ZGU0VUCQkweDQwMDANCj4+ICsjZGVmaW5lIEwwX1RYUE1EX1RNXzQ4 X09GRlNFVAkJMHg0MDAwDQo+PiArI2RlZmluZSBMMF9UWFBNRF9UTV80NV9PVkVSX0RQX01BSU4J QklUKDApDQo+PiArI2RlZmluZSBMMF9UWFBNRF9UTV80NV9FTkFCTEVfRFBfTUFJTglCSVQoMSkN Cj4+ICsjZGVmaW5lIEwwX1RYUE1EX1RNXzQ1X09WRVJfRFBfUE9TVDEJQklUKDIpDQo+PiArI2Rl ZmluZSBMMF9UWFBNRF9UTV80NV9FTkFCTEVfRFBfUE9TVDEJQklUKDMpDQo+PiArI2RlZmluZSBM MF9UWFBNRF9UTV80NV9PVkVSX0RQX1BPU1QyCUJJVCg0KQ0KPj4gKyNkZWZpbmUgTDBfVFhQTURf VE1fNDVfRU5BQkxFX0RQX1BPU1QyCUJJVCg1KQ0KPj4gKw0KPj4gKy8qIEJ1cyB3aWR0aCBwYXJh bWV0ZXJzICovDQo+PiArI2RlZmluZSBUWF9QUk9UX0JVU19XSURUSAkJMHgxMDA0MA0KPj4gKyNk ZWZpbmUgUlhfUFJPVF9CVVNfV0lEVEgJCTB4MTAwNDQNCj4+ICsjZGVmaW5lIFBST1RfQlVTX1dJ RFRIXzEwCQkweDANCj4+ICsjZGVmaW5lIFBST1RfQlVTX1dJRFRIXzIwCQkweDENCj4+ICsjZGVm aW5lIFBST1RfQlVTX1dJRFRIXzQwCQkweDINCj4+ICsjZGVmaW5lIFBST1RfQlVTX1dJRFRIX1NI SUZUCQkyDQo+PiArDQo+PiArLyogTWF4IG51bWJlciBvZiBHVCBsYW5lcyAqLw0KPj4gKyNkZWZp bmUgTUFYX0xBTkVTCQkJNA0KPj4gKw0KPj4gKy8qIE1heCBBbGxvd2VkIHJlZmNsayBmcmVxdWVu Y2llcyAqLw0KPj4gKyNkZWZpbmUgTUFYX1JFRkNMSwkJCTEzDQo+PiArDQo+PiArLyogTGFuZSBD TEsgc2hhcmluZyBtYXNrICovDQo+PiArI2RlZmluZSBMQU5FX0NMS19TSEFSRV9NQVNLCQkweDhG DQo+PiArDQo+PiArLyogU0lPVSBTQVRBIGNvbnRyb2wgcmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5l IFNBVEFfQ09OVFJPTF9PRkZTRVQJCTB4MDEwMA0KPj4gKw0KPj4gKy8qIFRvdGFsIG51bWJlciBv ZiBjb250cm9sbGVycyAqLw0KPj4gKyNkZWZpbmUgQ09OVFJPTExFUlNfUEVSX0xBTkUJCTUNCj4+ ICsNCj4+ICsvKiBVU0IgcGlwZSBjb250cm9sIHBhcmFtZXRlcnMgKi8NCj4+ICsjZGVmaW5lIFBJ UEVfQ0xLX09GRlNFVAkJCTB4N2MNCj4+ICsjZGVmaW5lIFBJUEVfUE9XRVJfT0ZGU0VUCQkweDgw DQo+PiArI2RlZmluZSBQSVBFX0NMS19PTgkJCTENCj4+ICsjZGVmaW5lIFBJUEVfQ0xLX09GRgkJ CTANCj4+ICsjZGVmaW5lIFBJUEVfUE9XRVJfT04JCQkxDQo+PiArI2RlZmluZSBQSVBFX1BPV0VS X09GRgkJCTANCj4+ICsNCj4+ICsvKiBQcm90b2NvbCBUeXBlIFBwYXJhbWV0ZXJzICovDQo+PiAr I2RlZmluZSBYUFNHVFJfVFlQRV9VU0IwCQkwICAvKiBVU0IgY29udHJvbGxlciAwICovDQo+PiAr I2RlZmluZSBYUFNHVFJfVFlQRV9VU0IxCQkxICAvKiBVU0IgY29udHJvbGxlciAxICovDQo+PiAr I2RlZmluZSBYUFNHVFJfVFlQRV9TQVRBXzAJCTIgIC8qIFNBVEEgY29udHJvbGxlciBsYW5lIDAg Ki8NCj4+ICsjZGVmaW5lIFhQU0dUUl9UWVBFX1NBVEFfMQkJMyAgLyogU0FUQSBjb250cm9sbGVy IGxhbmUgMSAqLw0KPj4gKyNkZWZpbmUgWFBTR1RSX1RZUEVfUENJRV8wCQk0ICAvKiBQQ0llIGNv bnRyb2xsZXIgbGFuZSAwICovDQo+PiArI2RlZmluZSBYUFNHVFJfVFlQRV9QQ0lFXzEJCTUgIC8q IFBDSWUgY29udHJvbGxlciBsYW5lIDEgKi8NCj4+ICsjZGVmaW5lIFhQU0dUUl9UWVBFX1BDSUVf MgkJNiAgLyogUENJZSBjb250cm9sbGVyIGxhbmUgMiAqLw0KPj4gKyNkZWZpbmUgWFBTR1RSX1RZ UEVfUENJRV8zCQk3ICAvKiBQQ0llIGNvbnRyb2xsZXIgbGFuZSAzICovDQo+PiArI2RlZmluZSBY UFNHVFJfVFlQRV9EUF8wCQk4ICAvKiBEaXNwbGF5IFBvcnQgY29udHJvbGxlciBsYW5lIDAgKi8N Cj4+ICsjZGVmaW5lIFhQU0dUUl9UWVBFX0RQXzEJCTkgIC8qIERpc3BsYXkgUG9ydCBjb250cm9s bGVyIGxhbmUgMSAqLw0KPj4gKyNkZWZpbmUgWFBTR1RSX1RZUEVfU0dNSUkwCQkxMCAvKiBFdGhl cm5ldCBTR01JSSBjb250cm9sbGVyIDAgKi8NCj4+ICsjZGVmaW5lIFhQU0dUUl9UWVBFX1NHTUlJ MQkJMTEgLyogRXRoZXJuZXQgU0dNSUkgY29udHJvbGxlciAxICovDQo+PiArI2RlZmluZSBYUFNH VFJfVFlQRV9TR01JSTIJCTEyIC8qIEV0aGVybmV0IFNHTUlJIGNvbnRyb2xsZXIgMiAqLw0KPj4g KyNkZWZpbmUgWFBTR1RSX1RZUEVfU0dNSUkzCQkxMyAvKiBFdGhlcm5ldCBTR01JSSBjb250cm9s bGVyIDMgKi8NCj4+ICsNCj4+ICsvKiBUaW1lb3V0IHZhbHVlcyAqLw0KPj4gKyNkZWZpbmUgUlNU X1RJTUVPVVRfTVMJCQkxMDAwDQo+PiArI2RlZmluZSBUSU1FT1VUX1VTCQkJMTAwMA0KPj4gKw0K Pj4gKy8qDQo+PiArICogVGhpcyB0YWJsZSBob2xkcyB0aGUgdmFsaWQgY29tYmluYXRpb25zIG9m IGNvbnRyb2xsZXJzIGFuZA0KPj4gKyAqIGxhbmVzKEludGVyY29ubmVjdCBNYXRyaXgpLg0KPj4g KyAqLw0KPj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgaWNtX21hdHJpeFtNQVhfTEFORVNdW0NPTlRS T0xMRVJTX1BFUl9MQU5FXSA9IHsNCj4+ICsJeyBYUFNHVFJfVFlQRV9QQ0lFXzAsIFhQU0dUUl9U WVBFX1NBVEFfMCwgWFBTR1RSX1RZUEVfVVNCMCwNCj4+ICsJCVhQU0dUUl9UWVBFX0RQXzEsIFhQ U0dUUl9UWVBFX1NHTUlJMCB9LA0KPj4gKwl7IFhQU0dUUl9UWVBFX1BDSUVfMSwgWFBTR1RSX1RZ UEVfU0FUQV8xLCBYUFNHVFJfVFlQRV9VU0IwLA0KPj4gKwkJWFBTR1RSX1RZUEVfRFBfMCwgWFBT R1RSX1RZUEVfU0dNSUkxIH0sDQo+PiArCXsgWFBTR1RSX1RZUEVfUENJRV8yLCBYUFNHVFJfVFlQ RV9TQVRBXzAsIFhQU0dUUl9UWVBFX1VTQjAsDQo+PiArCQlYUFNHVFJfVFlQRV9EUF8xLCBYUFNH VFJfVFlQRV9TR01JSTIgfSwNCj4+ICsJeyBYUFNHVFJfVFlQRV9QQ0lFXzMsIFhQU0dUUl9UWVBF X1NBVEFfMSwgWFBTR1RSX1RZUEVfVVNCMSwNCj4+ICsJCVhQU0dUUl9UWVBFX0RQXzAsIFhQU0dU Ul9UWVBFX1NHTUlJMyB9DQo+PiArfTsNCj4+ICsNCj4+ICsvKiBBbGxvd2VkIFBMTCByZWZlcmVu Y2UgY2xvY2sgZnJlcXVlbmNpZXMgKi8NCj4+ICtlbnVtIHBsbF9mcmVxdWVuY2llcyB7DQo+PiAr CVJFRl8xOV8yTSA9IDAsDQo+PiArCVJFRl8yME0sDQo+PiArCVJFRl8yNE0sDQo+PiArCVJFRl8y Nk0sDQo+PiArCVJFRl8yN00sDQo+PiArCVJFRl8zOF80TSwNCj4+ICsJUkVGXzQwTSwNCj4+ICsJ UkVGXzUyTSwNCj4+ICsJUkVGXzEwME0sDQo+PiArCVJFRl8xMDhNLA0KPj4gKwlSRUZfMTI1TSwN Cj4+ICsJUkVGXzEzNU0sDQo+PiArCVJFRl8xNTBNLA0KPj4gK307DQo+PiArDQo+PiArLyoqDQo+ PiArICogc3RydWN0IHhwc2d0cl9waHkgLSByZXByZXNlbnRhdGlvbiBvZiBhIGxhbmUNCj4+ICsg KiBAcGh5OiBwb2ludGVyIHRvIHRoZSBrZXJuZWwgUEhZIGRldmljZQ0KPj4gKyAqIEB0eXBlOiBj b250cm9sbGVyIHdoaWNoIHVzZXMgdGhpcyBsYW5lDQo+PiArICogQGxhbmU6IGxhbmUgbnVtYmVy DQo+PiArICogQHByb3RvY29sOiBwcm90b2NvbCBpbiB3aGljaCB0aGUgbGFuZSBvcGVyYXRlcw0K Pj4gKyAqIEByZWZfY2xrOiBlbnVtIG9mIGFsbG93ZWQgcmVmIGNsb2NrIHJhdGVzIGZvciB0aGlz IGxhbmUgUExMDQo+PiArICogQHBsbF9sb2NrOiBQTEwgc3RhdHVzDQo+PiArICogQHNraXBfcGh5 X2luaXQ6IHNraXAgcGh5X2luaXQoKSBpZiB0cnVlDQo+PiArICogQGRhdGE6IHBvaW50ZXIgdG8g aG9sZCBwcml2YXRlIGRhdGENCj4+ICsgKiBAcmVmY2xrX3JhdGU6IFBMTCByZWZlcmVuY2UgY2xv Y2sgZnJlcXVlbmN5DQo+PiArICogQHNoYXJlX2xhbmVjbGs6IGxhbmUgbnVtYmVyIG9mIHRoZSBj bG9jayB0byBiZSBzaGFyZWQNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgeHBzZ3RyX3BoeSB7DQo+PiAr CXN0cnVjdCBwaHkgKnBoeTsNCj4+ICsJdTggdHlwZTsNCj4+ICsJdTggbGFuZTsNCj4+ICsJdTgg cHJvdG9jb2w7DQo+PiArCWVudW0gcGxsX2ZyZXF1ZW5jaWVzIHJlZl9jbGs7DQo+PiArCWJvb2wg cGxsX2xvY2s7DQo+PiArCWJvb2wgc2tpcF9waHlfaW5pdDsNCj4+ICsJdm9pZCAqZGF0YTsNCj4+ ICsJdTMyIHJlZmNsa19yYXRlOw0KPj4gKwl1MzIgc2hhcmVfbGFuZWNsazsNCj4+ICt9Ow0KPj4g Kw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCB4cHNndHJfc3NjIC0gc3RydWN0dXJlIHRvIGhvbGQg U1NDIHNldHRpbmdzIGZvciBhIGxhbmUNCj4+ICsgKiBAcmVmY2xrX3JhdGU6IFBMTCByZWZlcmVu Y2UgY2xvY2sgZnJlcXVlbmN5DQo+PiArICogQHBsbF9yZWZfY2xrOiB2YWx1ZSB0byBiZSB3cml0 dGVuIHRvIHJlZ2lzdGVyIGZvciBjb3JyZXNwb25kaW5nIHJlZiBjbGsgcmF0ZQ0KPj4gKyAqIEBz dGVwczogbnVtYmVyIG9mIHN0ZXBzIG9mIFNTQyAoU3ByZWFkIFNwZWN0cnVtIENsb2NrKQ0KPj4g KyAqIEBzdGVwX3NpemU6IHN0ZXAgc2l6ZSBvZiBlYWNoIHN0ZXANCj4+ICsgKi8NCj4+ICtzdHJ1 Y3QgeHBzZ3RyX3NzYyB7DQo+PiArCXUzMiByZWZjbGtfcmF0ZTsNCj4+ICsJdTggIHBsbF9yZWZf Y2xrOw0KPj4gKwl1MzIgc3RlcHM7DQo+PiArCXUzMiBzdGVwX3NpemU7DQo+PiArfTsNCj4+ICsN Cj4+ICsvKiBsb29rdXAgdGFibGUgdG8gaG9sZCBhbGwgc2V0dGluZ3MgbmVlZGVkIGZvciBhIHJl ZiBjbG9jayBmcmVxdWVuY3kgKi8NCj4+ICtzdGF0aWMgc3RydWN0IHhwc2d0cl9zc2Mgc3NjX2xv b2t1cFtNQVhfUkVGQ0xLXSA9IHsNCj4+ICsJezE5MjAwMDAwLCAweDA1LCA2MDgsIDI2NDAyMH0s DQo+PiArCXsyMDAwMDAwMCwgMHgwNiwgNjM0LCAyNDM0NTR9LA0KPj4gKwl7MjQwMDAwMDAsIDB4 MDcsIDc2MCwgMTY4OTczfSwNCj4+ICsJezI2MDAwMDAwLCAweDA4LCA4MjQsIDE0Mzg2MH0sDQo+ PiArCXsyNzAwMDAwMCwgMHgwOSwgODU2LCA4NjU1MX0sDQo+PiArCXszODQwMDAwMCwgMHgwQSwg MTIxOCwgNjU4OTZ9LA0KPj4gKwl7NDAwMDAwMDAsIDB4MEIsIDYzNCwgMjQzNDU0fSwNCj4+ICsJ ezUyMDAwMDAwLCAweDBDLCA4MjQsIDE0Mzg2MH0sDQo+PiArCXsxMDAwMDAwMDAsIDB4MEQsIDEw NTgsIDg3NTMzfSwNCj4+ICsJezEwODAwMDAwMCwgMHgwRSwgODU2LCA4NjU1MX0sDQo+PiArCXsx MjUwMDAwMDAsIDB4MEYsIDk5MiwgMTE5NDk3fSwNCj4+ICsJezEzNTAwMDAwMCwgMHgxMCwgMTA3 MCwgNTUzOTN9LA0KPj4gKwl7MTUwMDAwMDAwLCAweDExLCA3OTIsIDE4NzA5MX0NCj4+ICt9Ow0K Pj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCB4cHNndHJfZGV2IC0gcmVwcmVzZW50YXRpb24g b2YgYSBaeW5NUCBHVCBkZXZpY2UNCj4+ICsgKiBAZGV2OiBwb2ludGVyIHRvIGRldmljZQ0KPj4g KyAqIEBzZXJkZXM6IHNlcmRlcyBiYXNlIGFkZHJlc3MNCj4+ICsgKiBAc2lvdTogc2lvdSBiYXNl IGFkZHJlc3MNCj4+ICsgKiBAZ3RyX211dGV4OiBtdXRleCBmb3IgbG9ja2luZw0KPj4gKyAqIEBw aHlzOiBwb2ludGVyIHRvIGFsbCB0aGUgbGFuZXMNCj4+ICsgKiBAdHhfdGVybV9maXg6IGZpeCBm b3IgR1QgaXNzdWUNCj4+ICsgKiBAc2F2ZWRfaWNtX2NmZzA6IHN0b3JlZCB2YWx1ZSBvZiBJQ00g Q0ZHMCByZWdpc3Rlcg0KPj4gKyAqIEBzYXZlZF9pY21fY2ZnMTogc3RvcmVkIHZhbHVlIG9mIElD TSBDRkcxIHJlZ2lzdGVyDQo+PiArICogQHNhdGFfcnN0OiBhIHJlc2V0IGNvbnRyb2wgZm9yIFNB VEENCj4+ICsgKiBAZHBfcnN0OiBhIHJlc2V0IGNvbnRyb2wgZm9yIERQDQo+PiArICogQHVzYjBf Y3JzdDogYSByZXNldCBjb250cm9sIGZvciB1c2IwIGNvcmUNCj4+ICsgKiBAdXNiMV9jcnN0OiBh IHJlc2V0IGNvbnRyb2wgZm9yIHVzYjEgY29yZQ0KPj4gKyAqIEB1c2IwX2hpYnJzdDogYSByZXNl dCBjb250cm9sIGZvciB1c2IwIGhpYmVybmF0aW9uIG1vZHVsZQ0KPj4gKyAqIEB1c2IxX2hpYnJz dDogYSByZXNldCBjb250cm9sIGZvciB1c2IxIGhpYmVybmF0aW9uIG1vZHVsZQ0KPj4gKyAqIEB1 c2IwX2FwYnJzdDogYSByZXNldCBjb250cm9sIGZvciB1c2IwIGFwYiBidXMNCj4+ICsgKiBAdXNi MV9hcGJyc3Q6IGEgcmVzZXQgY29udHJvbCBmb3IgdXNiMSBhcGIgYnVzDQo+PiArICogQGdlbTBf cnN0OiBhIHJlc2V0IGNvbnRyb2wgZm9yIGdlbTANCj4+ICsgKiBAZ2VtMV9yc3Q6IGEgcmVzZXQg Y29udHJvbCBmb3IgZ2VtMQ0KPj4gKyAqIEBnZW0yX3JzdDogYSByZXNldCBjb250cm9sIGZvciBn ZW0yDQo+PiArICogQGdlbTNfcnN0OiBhIHJlc2V0IGNvbnRyb2wgZm9yIGdlbTMNCj4+ICsgKi8N Cj4+ICtzdHJ1Y3QgeHBzZ3RyX2RldiB7DQo+PiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4+ICsJ dm9pZCBfX2lvbWVtICpzZXJkZXM7DQo+PiArCXZvaWQgX19pb21lbSAqc2lvdTsNCj4+ICsJc3Ry dWN0IG11dGV4IGd0cl9tdXRleDsgLyogbXV0ZXggZm9yIGxvY2tpbmcgKi8NCj4+ICsJc3RydWN0 IHhwc2d0cl9waHkgKipwaHlzOw0KPj4gKwlib29sIHR4X3Rlcm1fZml4Ow0KPj4gKwl1bnNpZ25l ZCBpbnQgc2F2ZWRfaWNtX2NmZzA7DQo+PiArCXVuc2lnbmVkIGludCBzYXZlZF9pY21fY2ZnMTsN Cj4+ICsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnNhdGFfcnN0Ow0KPj4gKwlzdHJ1Y3QgcmVzZXRf Y29udHJvbCAqZHBfcnN0Ow0KPj4gKwlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqdXNiMF9jcnN0Ow0K Pj4gKwlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqdXNiMV9jcnN0Ow0KPj4gKwlzdHJ1Y3QgcmVzZXRf Y29udHJvbCAqdXNiMF9oaWJyc3Q7DQo+PiArCXN0cnVjdCByZXNldF9jb250cm9sICp1c2IxX2hp YnJzdDsNCj4+ICsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnVzYjBfYXBicnN0Ow0KPj4gKwlzdHJ1 Y3QgcmVzZXRfY29udHJvbCAqdXNiMV9hcGJyc3Q7DQo+PiArCXN0cnVjdCByZXNldF9jb250cm9s ICpnZW0wX3JzdDsNCj4+ICsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKmdlbTFfcnN0Ow0KPj4gKwlz dHJ1Y3QgcmVzZXRfY29udHJvbCAqZ2VtMl9yc3Q7DQo+PiArCXN0cnVjdCByZXNldF9jb250cm9s ICpnZW0zX3JzdDsNCj4+ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHhwc2d0cl9vdmVycmlk ZV9kZWVtcGggLSBvdmVycmlkZSBQSVBFIFRYIGRlLWVtcGhhc2lzDQo+PiArICogQHBoeTogcG9p bnRlciB0byBwaHkNCj4+ICsgKiBAcGx2bDogcHJlLWVtcGhhc2lzIGxldmVsDQo+PiArICogQHZs dmw6IHZvbHRhZ2Ugc3dpbmcgbGV2ZWwNCj4+ICsgKg0KPj4gKyAqIFJldHVybjogTm9uZQ0KPj4g KyAqLw0KPj4gK3ZvaWQgeHBzZ3RyX292ZXJyaWRlX2RlZW1waChzdHJ1Y3QgcGh5ICpwaHksIHU4 IHBsdmwsIHU4IHZsdmwpDQo+PiArew0KPj4gKwlzdHJ1Y3QgeHBzZ3RyX3BoeSAqZ3RyX3BoeSA9 IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOw0KPj4gKwlzdHJ1Y3QgeHBzZ3RyX2RldiAqZ3RyX2RldiA9 IGd0cl9waHktPmRhdGE7DQo+PiArCXN0YXRpYyB1OCBwZVs0XVs0XSA9IHsgeyAweDIsIDB4Miwg MHgyLCAweDIgfSwNCj4+ICsJCQkgICAgICAgeyAweDEsIDB4MSwgMHgxLCAweEZGIH0sDQo+PiAr CQkJICAgICAgIHsgMHgwLCAweDAsIDB4RkYsIDB4RkYgfSwNCj4+ICsJCQkgICAgICAgeyAweEZG LCAweEZGLCAweEZGLCAweEZGIH0gfTsNCj4NCj5IZXJlIHRoZSBjb25zdW1lciBkcml2ZXIgZGly ZWN0bHkgcGFzc2VzIHRoZSBpbmRleCBvZiBhIGxvY2FsIGFycmF5IGFzDQo+YXJndW1lbnQuIEhv dyBpcyB0aGUgY29uc3VtZXIgZHJpdmVyIHN1cHBvc2VkIHRvIHRoaXMgaW5kZXguIFdoYXQgaGFw cGVucyBpZg0KPnRoZSBzYW1lIGNvbnN1bWVyIGlzIGNvbm5lY3RlZCB0byBhIGRpZmZlcmVudCBQ SFk/DQo+DQoNClRoYW5rcyBhIGxvdCBmb3Igc3BlbmRpbmcgeW91ciB0aW1lIGluIHJldmlld2lu ZyB0aGlzIHBhdGNoLiBUaGUgY29uc3VtZXIgb2YgdGhpcw0KcGFydGljdWxhciBmdW5jdGlvbiAg aXMgYSBEaXNwbGF5IFBvcnQgYW5kIGl0IGlzIFhpbGlueCBzcGVjaWZpYyBJUC4gSSBhbSBub3Qg dmVyeSBzdXJlIG9mDQp0aGUgaW5mb3JtYXRpb24gaWYgYW55IG90aGVyIERpc3BsYXkgUG9ydCBk cml2ZXJzIG5lZWQgdG8gaGFuZGxlIHRoaXMgc2ltaWxhciBraW5kIG9mDQpydW50aW1lIGFkanVz dG1lbnQgb2YgdGhlIGRlLWVtcGhhc2lzIG9yIHZvbHRhZ2Ugc3dpbmcgdmFsdWVzLCBidXQgdGhl IFhpbGlueCBEUA0KaGFzIHRvIGRvIGl0IGF0IHJ1bnRpbWUgYXMgYSBwYXJ0IG9mIHRyYWluaW5n IHNlcXVlbmNlLiBZb3UgbWF5IGNvbnNpZGVyIHRoaXMgYXMgYW4NCmltcGxlbWVudGF0aW9uIHJl cXVpcmVtZW50LiBUaGUgWGlsaW54IERQIGlzIGV4cGVjdGVkIHRvIHdvcmsgb25seSB3aXRoIHRo aXMgenlucW1wDQpwaHkgYW5kIHRoZXNlIHBsdmwgJiB2bHZsIHZhbHVlcyBhcmUgcHJlZGVmaW5l ZCBhbmQgdGhlcmUgaXMgYW4gb25lIHRvIG9uZSBtYXBwaW5nIG9mDQp0aGVzZSB2YWx1ZXMgYmV0 d2VlbiBYaWxpbnggRFAgZHJpdmVyIGFuZCBwaHktenlucW1wIGRyaXZlci4gVGhlc2UgdmFsdWVz IGFyZSBjYWxjdWxhdGVkDQpieSB0aGUgRFAgZHJpdmVyIGJhc2VkIG9uIHRoZSBEUENEIGRhdGEg cmVhZCBmcm9tIHNpbmsgYW5kIHBhc3NlZCBhcyBhbiBhcmd1bWVudHMNCnRvIHhwc2d0cl9vdmVy cmlkZV9kZWVtcGgoKSBmdW5jdGlvbi4gSG9wZSB0aGlzIGFuc3dlcnMgeW91ciBxdWVyeS4NClBs ZWFzZSBjb3JyZWN0IG1lLCBpZiBJIGFtIG1pc3Npbmcgc29tZXRoaW5nIG9yIG15IHVuZGVyc3Rh bmRpbmcgaXMgd3JvbmcgDQoNClRoYW5rcywNCkFudXJhZyBLdW1hciBWdWxpc2hhDQo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anurag Kumar Vulisha Subject: RE: [PATCH v4 2/2] phy: zynqmp: Add phy driver for xilinx zynqmp phy core Date: Tue, 9 Oct 2018 10:01:48 +0000 Message-ID: References: <1536769366-31398-1-git-send-email-anurag.kumar.vulisha@xilinx.com> <1536769366-31398-3-git-send-email-anurag.kumar.vulisha@xilinx.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org To: Kishon Vijay Abraham I , "robh+dt@kernel.org" , "mark.rutland@arm.com" , Michal Simek , "vivek.gautam@codeaurora.org" Cc: "v.anuragkumar@gmail.com" , Ajay Yugalkishore Pandey , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" List-Id: devicetree@vger.kernel.org SGkgS2lzaG9uLA0KDQo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBLaXNob24g VmlqYXkgQWJyYWhhbSBJIFttYWlsdG86a2lzaG9uQHRpLmNvbV0NCj5TZW50OiBUdWVzZGF5LCBP Y3RvYmVyIDA5LCAyMDE4IDE6MTggUE0NCj5UbzogQW51cmFnIEt1bWFyIFZ1bGlzaGEgPGFudXJh Z2t1QHhpbGlueC5jb20+OyByb2JoK2R0QGtlcm5lbC5vcmc7DQo+bWFyay5ydXRsYW5kQGFybS5j b207IE1pY2hhbCBTaW1layA8bWljaGFsc0B4aWxpbnguY29tPjsNCj52aXZlay5nYXV0YW1AY29k ZWF1cm9yYS5vcmcNCj5DYzogdi5hbnVyYWdrdW1hckBnbWFpbC5jb207IEFqYXkgWXVnYWxraXNo b3JlIFBhbmRleSA8QVBBTkRFWUB4aWxpbnguY29tPjsNCj5kZXZpY2V0cmVlQHZnZXIua2VybmVs Lm9yZzsgbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC0NCj5rZXJu ZWxAdmdlci5rZXJuZWwub3JnDQo+U3ViamVjdDogUmU6IFtQQVRDSCB2NCAyLzJdIHBoeTogenlu cW1wOiBBZGQgcGh5IGRyaXZlciBmb3IgeGlsaW54IHp5bnFtcCBwaHkgY29yZQ0KPg0KPkhpIEFu dXJhZywNCj4NCj5PbiBXZWRuZXNkYXkgMTIgU2VwdGVtYmVyIDIwMTggMDk6NTIgUE0sIEFudXJh ZyBLdW1hciBWdWxpc2hhIHdyb3RlOg0KPj4gWnlucU1QIFNvQyBoYXMgYSBHaWdhYml0IFRyYW5z Y2VpdmVyIHdpdGggZm91ciBsYW5lcy4gQWxsIHRoZSBoaWdoIHNwZWVkDQo+PiBwZXJpcGhlcmFs cyBzdWNoIGFzIFVTQiwgU0FUQSwgUENJRSwgRGlzcGxheSBQb3J0IGFuZCBFdGhlcm5ldCBTR01J SSBjYW4NCj4+IHJlbHkgb24gYW55IG9mIHRoZSBmb3VyIEdUIGxhbmVzIGZvciBQSFkgbGF5ZXIu IFRoaXMgcGF0Y2ggYWRkcyBkcml2ZXINCj4+IGZvciB0aGF0IFp5bnFNUCBHVCBjb3JlLg0KPj4N Cj4+IFNpZ25lZC1vZmYtYnk6IEFudXJhZyBLdW1hciBWdWxpc2hhIDxhbnVyYWcua3VtYXIudnVs aXNoYUB4aWxpbnguY29tPg0KPj4gLS0tDQo+PiBDaGFuZ2VzIGluIHY0Og0KPj4gCTEuIE1vdmVk IGluY2x1ZGUvZHQtYmluZGluZ3MvcGh5L3BoeS5oIGludG8gcGF0Y2ggMSBhcyBzdWdnZXN0ZWQg YnkNCj4+IAkgICAiUm9iIEhlcnJpbmciDQo+Pg0KPj4gQ2hhbmdlcyBpbiB2MzoNCj4+IAkxLiBD b3JyZWN0ZWQgdGhlIERvY3VtZW50YXRpb24gYXMgc3VnZ2VzdGVkIGJ5ICJWaXZlayBHYXV0YW0i DQo+Pg0KPj4gQ2hhbmdlcyBpbiB2MjoNCj4+IAkxLiBGaXhlZCB0aGUgY29tcGlsYXRpb24gZXJy b3Igd2hlbiBjb21waWxlZCBwaHktenlucW1wLmMgYXMgYSBtb2R1bGUNCj4+IAkyLiBBZGRlZCBD T05GSUdfUE0gbWFjcm8gaW4gcGh5LXp5bnFtcC5jIGRyaXZlcg0KPj4gLS0tDQo+PiAgZHJpdmVy cy9waHkvS2NvbmZpZyAgICAgICAgICAgIHwgICAgOCArDQo+PiAgZHJpdmVycy9waHkvTWFrZWZp bGUgICAgICAgICAgIHwgICAgMSArDQo+PiAgZHJpdmVycy9waHkvcGh5LXp5bnFtcC5jICAgICAg IHwgMTU4MQ0KPisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+ICBp bmNsdWRlL2xpbnV4L3BoeS9waHktenlucW1wLmggfCAgIDUyICsrDQo+PiAgNCBmaWxlcyBjaGFu Z2VkLCAxNjQyIGluc2VydGlvbnMoKykNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9w aHkvcGh5LXp5bnFtcC5jDQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvcGh5 L3BoeS16eW5xbXAuaA0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9LY29uZmlnIGIv ZHJpdmVycy9waHkvS2NvbmZpZw0KPj4gaW5kZXggNWM4ZDQ1Mi4uMTRjZjMzMzAgMTAwNjQ0DQo+ PiAtLS0gYS9kcml2ZXJzL3BoeS9LY29uZmlnDQo+PiArKysgYi9kcml2ZXJzL3BoeS9LY29uZmln DQo+PiBAQCAtNDAsNiArNDAsMTQgQEAgY29uZmlnIFBIWV9YR0VORQ0KPj4gIAloZWxwDQo+PiAg CSAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZvciBBUE0gWC1HZW5lIFNvQyBtdWx0aS1w dXJwb3NlIFBIWS4NCj4+DQo+PiArY29uZmlnIFBIWV9YSUxJTlhfWllOUU1QDQo+PiArCXRyaXN0 YXRlICJYaWxpbnggWnlucU1QIFBIWSBkcml2ZXIiDQo+PiArCWRlcGVuZHMgb24gQVJDSF9aWU5R TVANCj4+ICsJc2VsZWN0IEdFTkVSSUNfUEhZDQo+PiArCWhlbHANCj4+ICsJICBFbmFibGUgdGhp cyB0byBzdXBwb3J0IFp5bnFNUCBIaWdoIFNwZWVkIEdpZ2FiaXQgVHJhbnNjZWl2ZXINCj4+ICsJ ICB0aGF0IGlzIHBhcnQgb2YgWnlucU1QIFNvQy4NCj4+ICsNCj4+ICBzb3VyY2UgImRyaXZlcnMv cGh5L2FsbHdpbm5lci9LY29uZmlnIg0KPj4gIHNvdXJjZSAiZHJpdmVycy9waHkvYW1sb2dpYy9L Y29uZmlnIg0KPj4gIHNvdXJjZSAiZHJpdmVycy9waHkvYnJvYWRjb20vS2NvbmZpZyINCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5L01ha2VmaWxlDQo+ PiBpbmRleCA4NGUzYmQ5Li5mMmE4ZDI3IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9waHkvTWFr ZWZpbGUNCj4+ICsrKyBiL2RyaXZlcnMvcGh5L01ha2VmaWxlDQo+PiBAQCAtNyw2ICs3LDcgQEAg b2JqLSQoQ09ORklHX0dFTkVSSUNfUEhZKQkJKz0gcGh5LWNvcmUubw0KPj4gIG9iai0kKENPTkZJ R19QSFlfTFBDMThYWF9VU0JfT1RHKQkrPSBwaHktbHBjMTh4eC11c2Itb3RnLm8NCj4+ICBvYmot JChDT05GSUdfUEhZX1hHRU5FKQkJCSs9IHBoeS14Z2VuZS5vDQo+PiAgb2JqLSQoQ09ORklHX1BI WV9QSVNUQUNISU9fVVNCKQkJKz0gcGh5LXBpc3RhY2hpby11c2Iubw0KPj4gK29iai0kKENPTkZJ R19QSFlfWElMSU5YX1pZTlFNUCkJCSs9IHBoeS16eW5xbXAubw0KPj4gIG9iai0kKENPTkZJR19B UkNIX1NVTlhJKQkJKz0gYWxsd2lubmVyLw0KPj4gIG9iai0kKENPTkZJR19BUkNIX01FU09OKQkJ Kz0gYW1sb2dpYy8NCj4+ICBvYmotJChDT05GSUdfTEFOVElRKQkJCSs9IGxhbnRpcS8NCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9waHktenlucW1wLmMgYi9kcml2ZXJzL3BoeS9waHktenlu cW1wLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwLi40OTc4NjJk DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9kcml2ZXJzL3BoeS9waHktenlucW1wLmMNCj4+ IEBAIC0wLDAgKzEsMTU4MSBAQA0KPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wDQo+PiArLyoNCj4+ICsgKiBwaHktenlucW1wLmMgLSBQSFkgZHJpdmVyIGZvciBYaWxpbngg WnlucU1QIEdULg0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChDKSAyMDE4IFhpbGlueCBJbmMu DQo+PiArICoNCj4+ICsgKiBBdXRob3I6IEFudXJhZyBLdW1hciBWdWxpc2hhIDxhbnVyYWdrdUB4 aWxpbnguY29tPg0KPj4gKyAqDQo+PiArICogVGhpcyBkcml2ZXIgaXMgdGVzdGVkIGZvciBVU0Is IFNBVEEgYW5kIERpc3BsYXkgUG9ydCBjdXJyZW50bHkuDQo+PiArICogT3RoZXIgY29udHJvbGxl cnMgUENJZSBhbmQgU0dNSUkgc2hvdWxkIGFsc28gd29yayBidXQgdGhhdCBpcw0KPj4gKyAqIGV4 cGVyaW1lbnRhbCBhcyBvZiBub3cuDQo+PiArICovDQo+PiArDQo+PiArI2luY2x1ZGUgPGxpbnV4 L2Nsay5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51 eC9pby5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4+ICsjaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+PiArI2luY2x1ZGUgPGxp bnV4L29mX3BsYXRmb3JtLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4NCj4+ ICsjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5 LXp5bnFtcC5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4+ICsj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvcGh5L3Bo eS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9s aXN0Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4+ICsNCj4+ICsvKiBJbnRlciBD b25uZWN0IE1hdHJpeCBwYXJhbWV0ZXJzICovDQo+PiArI2RlZmluZSBJQ01fQ0ZHMAkJCTB4MTAw MTANCj4+ICsjZGVmaW5lIElDTV9DRkcxCQkJMHgxMDAxNA0KPj4gKyNkZWZpbmUgSUNNX0NGRzBf TDBfTUFTSwkJMHgwNw0KPj4gKyNkZWZpbmUgSUNNX0NGRzBfTDFfTUFTSwkJMHg3MA0KPj4gKyNk ZWZpbmUgSUNNX0NGRzFfTDJfTUFTSwkJMHgwNw0KPj4gKyNkZWZpbmUgSUNNX0NGRzJfTDNfTUFT SwkJMHg3MA0KPj4gKyNkZWZpbmUgSUNNX0NGR19TSElGVAkJCTQNCj4+ICsNCj4+ICsvKiBJbnRl ciBDb25uZWN0IE1hdHJpeCBhbGxvd2VkIHByb3RvY29scyAqLw0KPj4gKyNkZWZpbmUgSUNNX1BS T1RPQ09MX1BECQkJMHgwDQo+PiArI2RlZmluZSBJQ01fUFJPVE9DT0xfUENJRQkJMHgxDQo+PiAr I2RlZmluZSBJQ01fUFJPVE9DT0xfU0FUQQkJMHgyDQo+PiArI2RlZmluZSBJQ01fUFJPVE9DT0xf VVNCCQkweDMNCj4+ICsjZGVmaW5lIElDTV9QUk9UT0NPTF9EUAkJCTB4NA0KPj4gKyNkZWZpbmUg SUNNX1BST1RPQ09MX1NHTUlJCQkweDUNCj4+ICsNCj4+ICsvKiBUZXN0IE1vZGUgY29tbW9uIHJl c2V0IGNvbnRyb2wgIHBhcmFtZXRlcnMgKi8NCj4+ICsjZGVmaW5lIFRNX0NNTl9SU1QJCQkweDEw MDE4DQo+PiArI2RlZmluZSBUTV9DTU5fUlNUX0VOCQkJMHgxDQo+PiArI2RlZmluZSBUTV9DTU5f UlNUX1NFVAkJCTB4Mg0KPj4gKyNkZWZpbmUgVE1fQ01OX1JTVF9NQVNLCQkJMHgzDQo+PiArDQo+ PiArLyogUmVmY2xrIHNlbGVjdGlvbiBwYXJhbWV0ZXJzICovDQo+PiArI2RlZmluZSBQTExfUkVG X1NFTDAJCQkweDEwMDAwDQo+PiArI2RlZmluZSBQTExfUkVGX09GRlNFVAkJCTB4NA0KPj4gKyNk ZWZpbmUgUExMX0ZSRVFfTUFTSwkJCTB4MUYNCj4+ICsjZGVmaW5lIFBMTF9TVEFUVVNfUkVBRF9P RkZTRVQJCTB4NDAwMA0KPj4gKyNkZWZpbmUgUExMX1NUQVRVU19MT0NLRUQJCTB4MTANCj4+ICsN Cj4+ICsvKiBQTEwgU1NDIHN0ZXAgc2l6ZSBvZmZzZXRzICovDQo+PiArI2RlZmluZSBMMF9MMF9S RUZfQ0xLX1NFTAkJMHgyODYwDQo+PiArI2RlZmluZSBMMF9QTExfU1NfU1RFUFNfMF9MU0IJCTB4 MjM2OA0KPj4gKyNkZWZpbmUgTDBfUExMX1NTX1NURVBTXzFfTVNCCQkweDIzNkMNCj4+ICsjZGVm aW5lIEwwX1BMTF9TU19TVEVQX1NJWkVfMF9MU0IJMHgyMzcwDQo+PiArI2RlZmluZSBMMF9QTExf U1NfU1RFUF9TSVpFXzEJCTB4MjM3NA0KPj4gKyNkZWZpbmUgTDBfUExMX1NTX1NURVBfU0laRV8y CQkweDIzNzgNCj4+ICsjZGVmaW5lIEwwX1BMTF9TU19TVEVQX1NJWkVfM19NU0IJMHgyMzdDDQo+ PiArI2RlZmluZSBMMF9QTExfU1RBVFVTX1JFQURfMQkJMHgyM0U0DQo+PiArDQo+PiArLyogU1ND IHN0ZXAgc2l6ZSBwYXJhbWV0ZXJzICovDQo+PiArI2RlZmluZSBTVEVQX1NJWkVfT0ZGU0VUCQkw eDQwMDANCj4+ICsjZGVmaW5lIFNURVBfU0laRV8wX01BU0sJCTB4RkYNCj4+ICsjZGVmaW5lIFNU RVBfU0laRV8xX01BU0sJCTB4RkYNCj4+ICsjZGVmaW5lIFNURVBfU0laRV8yX01BU0sJCTB4RkYN Cj4+ICsjZGVmaW5lIFNURVBfU0laRV8zX01BU0sJCTB4Mw0KPj4gKyNkZWZpbmUgU1RFUF9TSVpF X1NISUZUCQkJOA0KPj4gKyNkZWZpbmUgRk9SQ0VfU1RFUF9TSVpFCQkJMHgxMA0KPj4gKyNkZWZp bmUgRk9SQ0VfU1RFUFMJCQkweDIwDQo+PiArI2RlZmluZSBTVEVQU19PRkZTRVQJCQkweDQwMDAN Cj4+ICsjZGVmaW5lIFNURVBTXzBfTUFTSwkJCTB4RkYNCj4+ICsjZGVmaW5lIFNURVBTXzFfTUFT SwkJCTB4MDcNCj4+ICsNCj4+ICsvKiBCRyBjYWxpYnJhdGlvbiBwYXJhbWV0ZXJzICovDQo+PiAr I2RlZmluZSBCR0NBTF9SRUZfU0VMCQkJMHgxMDAyOA0KPj4gKyNkZWZpbmUgQkdDQUxfUkVGX1ZB TFVFCQkJMHgwQw0KPj4gKw0KPj4gKy8qIENhbGlicmF0aW9uIGRpZ2l0YWwgbG9naWMgcGFyYW1l dGVycyAqLw0KPj4gKyNkZWZpbmUgTDNfVE1fQ0FMSUJfRElHMTkJCTB4RUM0Qw0KPj4gKyNkZWZp bmUgTDNfQ0FMSUJfRE9ORV9TVEFUVVMJCTB4RUYxNA0KPj4gKyNkZWZpbmUgTDNfVE1fQ0FMSUJf RElHMTgJCTB4RUM0OA0KPj4gKyNkZWZpbmUgTDNfVE1fQ0FMSUJfRElHMTlfTlNXCQkweDA3DQo+ PiArI2RlZmluZSBMM19UTV9DQUxJQl9ESUcxOF9OU1cJCTB4RTANCj4+ICsjZGVmaW5lIEwzX1RN X09WRVJSSURFX05TV19DT0RFICAgICAgICAgMHgyMA0KPj4gKyNkZWZpbmUgTDNfQ0FMSUJfRE9O RQkJCTB4MDINCj4+ICsjZGVmaW5lIEwzX05TV19TSElGVAkJCTUNCj4+ICsjZGVmaW5lIEwzX05T V19QSVBFX1NISUZUCQk0DQo+PiArI2RlZmluZSBMM19OU1dfQ0FMSUJfU0hJRlQJCTMNCj4+ICsN Cj4+ICsvKiBETiBSZXNpc3RvciBjYWxpYnJhdGlvbiBjb2RlIHBhcmFtZXRlcnMgKi8NCj4+ICsj ZGVmaW5lIEwwX1RYUE1BX1NUXzMJCQkweDBCMEMNCj4+ICsjZGVmaW5lIEwwX0ROX0NBTElCX0NP REUJCTB4M0YNCj4+ICsNCj4+ICsvKiBQTEwgVGVzdCBNb2RlIHJlZ2lzdGVyIHBhcmFtZXRlcnMg Ki8NCj4+ICsjZGVmaW5lIEwwX1RNX1BMTF9ESUdfMzcJCTB4MjA5NA0KPj4gKyNkZWZpbmUgTDBf VE1fUExMX0RJR18zN19PRkZTRVQJCTB4NDAwMA0KPj4gKyNkZWZpbmUgTDBfVE1fQ09BUlNFX0NP REVfTElNSVQJCTB4MTANCj4+ICsNCj4+ICsvKiBQQ1MgY29udHJvbCBwYXJhbWV0ZXJzICovDQo+ PiArI2RlZmluZSBMMF9UTV9ESUdfNgkJCTB4MTA2Qw0KPj4gKyNkZWZpbmUgTDBfVFhfRElHXzYx CQkJMHgwMEY0DQo+PiArI2RlZmluZSBMMF9UTV9ESUdfNl9PRkZTRVQJCTB4NDAwMA0KPj4gKyNk ZWZpbmUgTDBfVFhfRElHXzYxX09GRlNFVAkJMHg0MDAwDQo+PiArI2RlZmluZSBMMF9UTV9ESVNf REVTQ1JBTUJMRV9ERUNPREVSCTB4MEYNCj4+ICsjZGVmaW5lIEwwX1RNX0RJU0FCTEVfU0NSQU1C TEVfRU5DT0RFUgkweDBGDQo+PiArDQo+PiArLyogVFggRGUtZW1waGFzaXMgcGFyYW1ldGVycyAq Lw0KPj4gKyNkZWZpbmUgTDBfVFhfQU5BX1RNXzE4CQkJMHgwMDQ4DQo+PiArI2RlZmluZSBMMF9U WF9BTkFfVE1fMTE4CQkweDAxRDgNCj4+ICsjZGVmaW5lIEwwX1RYX0FOQV9UTV8xOF9PRkZTRVQJ CTB4NDAwMA0KPj4gKyNkZWZpbmUgTDBfVFhfQU5BX1RNXzExOF9PRkZTRVQJCTB4NDAwMA0KPj4g KyNkZWZpbmUgTDBfVFhfQU5BX1RNXzExOF9GT1JDRV8xN18wCUJJVCgwKQ0KPj4gKw0KPj4gKy8q IFBNQSBjb250cm9sIHBhcmFtZXRlcnMgKi8NCj4+ICsjZGVmaW5lIEwwX1RYUE1EX1RNXzQ1CQkJ MHgwQ0I0DQo+PiArI2RlZmluZSBMMF9UWFBNRF9UTV80OAkJCTB4MENDMA0KPj4gKyNkZWZpbmUg TDBfVFhQTURfVE1fNDVfT0ZGU0VUCQkweDQwMDANCj4+ICsjZGVmaW5lIEwwX1RYUE1EX1RNXzQ4 X09GRlNFVAkJMHg0MDAwDQo+PiArI2RlZmluZSBMMF9UWFBNRF9UTV80NV9PVkVSX0RQX01BSU4J QklUKDApDQo+PiArI2RlZmluZSBMMF9UWFBNRF9UTV80NV9FTkFCTEVfRFBfTUFJTglCSVQoMSkN Cj4+ICsjZGVmaW5lIEwwX1RYUE1EX1RNXzQ1X09WRVJfRFBfUE9TVDEJQklUKDIpDQo+PiArI2Rl ZmluZSBMMF9UWFBNRF9UTV80NV9FTkFCTEVfRFBfUE9TVDEJQklUKDMpDQo+PiArI2RlZmluZSBM MF9UWFBNRF9UTV80NV9PVkVSX0RQX1BPU1QyCUJJVCg0KQ0KPj4gKyNkZWZpbmUgTDBfVFhQTURf VE1fNDVfRU5BQkxFX0RQX1BPU1QyCUJJVCg1KQ0KPj4gKw0KPj4gKy8qIEJ1cyB3aWR0aCBwYXJh bWV0ZXJzICovDQo+PiArI2RlZmluZSBUWF9QUk9UX0JVU19XSURUSAkJMHgxMDA0MA0KPj4gKyNk ZWZpbmUgUlhfUFJPVF9CVVNfV0lEVEgJCTB4MTAwNDQNCj4+ICsjZGVmaW5lIFBST1RfQlVTX1dJ RFRIXzEwCQkweDANCj4+ICsjZGVmaW5lIFBST1RfQlVTX1dJRFRIXzIwCQkweDENCj4+ICsjZGVm aW5lIFBST1RfQlVTX1dJRFRIXzQwCQkweDINCj4+ICsjZGVmaW5lIFBST1RfQlVTX1dJRFRIX1NI SUZUCQkyDQo+PiArDQo+PiArLyogTWF4IG51bWJlciBvZiBHVCBsYW5lcyAqLw0KPj4gKyNkZWZp bmUgTUFYX0xBTkVTCQkJNA0KPj4gKw0KPj4gKy8qIE1heCBBbGxvd2VkIHJlZmNsayBmcmVxdWVu Y2llcyAqLw0KPj4gKyNkZWZpbmUgTUFYX1JFRkNMSwkJCTEzDQo+PiArDQo+PiArLyogTGFuZSBD TEsgc2hhcmluZyBtYXNrICovDQo+PiArI2RlZmluZSBMQU5FX0NMS19TSEFSRV9NQVNLCQkweDhG DQo+PiArDQo+PiArLyogU0lPVSBTQVRBIGNvbnRyb2wgcmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5l IFNBVEFfQ09OVFJPTF9PRkZTRVQJCTB4MDEwMA0KPj4gKw0KPj4gKy8qIFRvdGFsIG51bWJlciBv ZiBjb250cm9sbGVycyAqLw0KPj4gKyNkZWZpbmUgQ09OVFJPTExFUlNfUEVSX0xBTkUJCTUNCj4+ ICsNCj4+ICsvKiBVU0IgcGlwZSBjb250cm9sIHBhcmFtZXRlcnMgKi8NCj4+ICsjZGVmaW5lIFBJ UEVfQ0xLX09GRlNFVAkJCTB4N2MNCj4+ICsjZGVmaW5lIFBJUEVfUE9XRVJfT0ZGU0VUCQkweDgw DQo+PiArI2RlZmluZSBQSVBFX0NMS19PTgkJCTENCj4+ICsjZGVmaW5lIFBJUEVfQ0xLX09GRgkJ CTANCj4+ICsjZGVmaW5lIFBJUEVfUE9XRVJfT04JCQkxDQo+PiArI2RlZmluZSBQSVBFX1BPV0VS X09GRgkJCTANCj4+ICsNCj4+ICsvKiBQcm90b2NvbCBUeXBlIFBwYXJhbWV0ZXJzICovDQo+PiAr I2RlZmluZSBYUFNHVFJfVFlQRV9VU0IwCQkwICAvKiBVU0IgY29udHJvbGxlciAwICovDQo+PiAr I2RlZmluZSBYUFNHVFJfVFlQRV9VU0IxCQkxICAvKiBVU0IgY29udHJvbGxlciAxICovDQo+PiAr I2RlZmluZSBYUFNHVFJfVFlQRV9TQVRBXzAJCTIgIC8qIFNBVEEgY29udHJvbGxlciBsYW5lIDAg Ki8NCj4+ICsjZGVmaW5lIFhQU0dUUl9UWVBFX1NBVEFfMQkJMyAgLyogU0FUQSBjb250cm9sbGVy IGxhbmUgMSAqLw0KPj4gKyNkZWZpbmUgWFBTR1RSX1RZUEVfUENJRV8wCQk0ICAvKiBQQ0llIGNv bnRyb2xsZXIgbGFuZSAwICovDQo+PiArI2RlZmluZSBYUFNHVFJfVFlQRV9QQ0lFXzEJCTUgIC8q IFBDSWUgY29udHJvbGxlciBsYW5lIDEgKi8NCj4+ICsjZGVmaW5lIFhQU0dUUl9UWVBFX1BDSUVf MgkJNiAgLyogUENJZSBjb250cm9sbGVyIGxhbmUgMiAqLw0KPj4gKyNkZWZpbmUgWFBTR1RSX1RZ UEVfUENJRV8zCQk3ICAvKiBQQ0llIGNvbnRyb2xsZXIgbGFuZSAzICovDQo+PiArI2RlZmluZSBY UFNHVFJfVFlQRV9EUF8wCQk4ICAvKiBEaXNwbGF5IFBvcnQgY29udHJvbGxlciBsYW5lIDAgKi8N Cj4+ICsjZGVmaW5lIFhQU0dUUl9UWVBFX0RQXzEJCTkgIC8qIERpc3BsYXkgUG9ydCBjb250cm9s bGVyIGxhbmUgMSAqLw0KPj4gKyNkZWZpbmUgWFBTR1RSX1RZUEVfU0dNSUkwCQkxMCAvKiBFdGhl cm5ldCBTR01JSSBjb250cm9sbGVyIDAgKi8NCj4+ICsjZGVmaW5lIFhQU0dUUl9UWVBFX1NHTUlJ MQkJMTEgLyogRXRoZXJuZXQgU0dNSUkgY29udHJvbGxlciAxICovDQo+PiArI2RlZmluZSBYUFNH VFJfVFlQRV9TR01JSTIJCTEyIC8qIEV0aGVybmV0IFNHTUlJIGNvbnRyb2xsZXIgMiAqLw0KPj4g KyNkZWZpbmUgWFBTR1RSX1RZUEVfU0dNSUkzCQkxMyAvKiBFdGhlcm5ldCBTR01JSSBjb250cm9s bGVyIDMgKi8NCj4+ICsNCj4+ICsvKiBUaW1lb3V0IHZhbHVlcyAqLw0KPj4gKyNkZWZpbmUgUlNU X1RJTUVPVVRfTVMJCQkxMDAwDQo+PiArI2RlZmluZSBUSU1FT1VUX1VTCQkJMTAwMA0KPj4gKw0K Pj4gKy8qDQo+PiArICogVGhpcyB0YWJsZSBob2xkcyB0aGUgdmFsaWQgY29tYmluYXRpb25zIG9m IGNvbnRyb2xsZXJzIGFuZA0KPj4gKyAqIGxhbmVzKEludGVyY29ubmVjdCBNYXRyaXgpLg0KPj4g KyAqLw0KPj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgaWNtX21hdHJpeFtNQVhfTEFORVNdW0NPTlRS T0xMRVJTX1BFUl9MQU5FXSA9IHsNCj4+ICsJeyBYUFNHVFJfVFlQRV9QQ0lFXzAsIFhQU0dUUl9U WVBFX1NBVEFfMCwgWFBTR1RSX1RZUEVfVVNCMCwNCj4+ICsJCVhQU0dUUl9UWVBFX0RQXzEsIFhQ U0dUUl9UWVBFX1NHTUlJMCB9LA0KPj4gKwl7IFhQU0dUUl9UWVBFX1BDSUVfMSwgWFBTR1RSX1RZ UEVfU0FUQV8xLCBYUFNHVFJfVFlQRV9VU0IwLA0KPj4gKwkJWFBTR1RSX1RZUEVfRFBfMCwgWFBT R1RSX1RZUEVfU0dNSUkxIH0sDQo+PiArCXsgWFBTR1RSX1RZUEVfUENJRV8yLCBYUFNHVFJfVFlQ RV9TQVRBXzAsIFhQU0dUUl9UWVBFX1VTQjAsDQo+PiArCQlYUFNHVFJfVFlQRV9EUF8xLCBYUFNH VFJfVFlQRV9TR01JSTIgfSwNCj4+ICsJeyBYUFNHVFJfVFlQRV9QQ0lFXzMsIFhQU0dUUl9UWVBF X1NBVEFfMSwgWFBTR1RSX1RZUEVfVVNCMSwNCj4+ICsJCVhQU0dUUl9UWVBFX0RQXzAsIFhQU0dU Ul9UWVBFX1NHTUlJMyB9DQo+PiArfTsNCj4+ICsNCj4+ICsvKiBBbGxvd2VkIFBMTCByZWZlcmVu Y2UgY2xvY2sgZnJlcXVlbmNpZXMgKi8NCj4+ICtlbnVtIHBsbF9mcmVxdWVuY2llcyB7DQo+PiAr CVJFRl8xOV8yTSA9IDAsDQo+PiArCVJFRl8yME0sDQo+PiArCVJFRl8yNE0sDQo+PiArCVJFRl8y Nk0sDQo+PiArCVJFRl8yN00sDQo+PiArCVJFRl8zOF80TSwNCj4+ICsJUkVGXzQwTSwNCj4+ICsJ UkVGXzUyTSwNCj4+ICsJUkVGXzEwME0sDQo+PiArCVJFRl8xMDhNLA0KPj4gKwlSRUZfMTI1TSwN Cj4+ICsJUkVGXzEzNU0sDQo+PiArCVJFRl8xNTBNLA0KPj4gK307DQo+PiArDQo+PiArLyoqDQo+ PiArICogc3RydWN0IHhwc2d0cl9waHkgLSByZXByZXNlbnRhdGlvbiBvZiBhIGxhbmUNCj4+ICsg KiBAcGh5OiBwb2ludGVyIHRvIHRoZSBrZXJuZWwgUEhZIGRldmljZQ0KPj4gKyAqIEB0eXBlOiBj b250cm9sbGVyIHdoaWNoIHVzZXMgdGhpcyBsYW5lDQo+PiArICogQGxhbmU6IGxhbmUgbnVtYmVy DQo+PiArICogQHByb3RvY29sOiBwcm90b2NvbCBpbiB3aGljaCB0aGUgbGFuZSBvcGVyYXRlcw0K Pj4gKyAqIEByZWZfY2xrOiBlbnVtIG9mIGFsbG93ZWQgcmVmIGNsb2NrIHJhdGVzIGZvciB0aGlz IGxhbmUgUExMDQo+PiArICogQHBsbF9sb2NrOiBQTEwgc3RhdHVzDQo+PiArICogQHNraXBfcGh5 X2luaXQ6IHNraXAgcGh5X2luaXQoKSBpZiB0cnVlDQo+PiArICogQGRhdGE6IHBvaW50ZXIgdG8g aG9sZCBwcml2YXRlIGRhdGENCj4+ICsgKiBAcmVmY2xrX3JhdGU6IFBMTCByZWZlcmVuY2UgY2xv Y2sgZnJlcXVlbmN5DQo+PiArICogQHNoYXJlX2xhbmVjbGs6IGxhbmUgbnVtYmVyIG9mIHRoZSBj bG9jayB0byBiZSBzaGFyZWQNCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgeHBzZ3RyX3BoeSB7DQo+PiAr CXN0cnVjdCBwaHkgKnBoeTsNCj4+ICsJdTggdHlwZTsNCj4+ICsJdTggbGFuZTsNCj4+ICsJdTgg cHJvdG9jb2w7DQo+PiArCWVudW0gcGxsX2ZyZXF1ZW5jaWVzIHJlZl9jbGs7DQo+PiArCWJvb2wg cGxsX2xvY2s7DQo+PiArCWJvb2wgc2tpcF9waHlfaW5pdDsNCj4+ICsJdm9pZCAqZGF0YTsNCj4+ ICsJdTMyIHJlZmNsa19yYXRlOw0KPj4gKwl1MzIgc2hhcmVfbGFuZWNsazsNCj4+ICt9Ow0KPj4g Kw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCB4cHNndHJfc3NjIC0gc3RydWN0dXJlIHRvIGhvbGQg U1NDIHNldHRpbmdzIGZvciBhIGxhbmUNCj4+ICsgKiBAcmVmY2xrX3JhdGU6IFBMTCByZWZlcmVu Y2UgY2xvY2sgZnJlcXVlbmN5DQo+PiArICogQHBsbF9yZWZfY2xrOiB2YWx1ZSB0byBiZSB3cml0 dGVuIHRvIHJlZ2lzdGVyIGZvciBjb3JyZXNwb25kaW5nIHJlZiBjbGsgcmF0ZQ0KPj4gKyAqIEBz dGVwczogbnVtYmVyIG9mIHN0ZXBzIG9mIFNTQyAoU3ByZWFkIFNwZWN0cnVtIENsb2NrKQ0KPj4g KyAqIEBzdGVwX3NpemU6IHN0ZXAgc2l6ZSBvZiBlYWNoIHN0ZXANCj4+ICsgKi8NCj4+ICtzdHJ1 Y3QgeHBzZ3RyX3NzYyB7DQo+PiArCXUzMiByZWZjbGtfcmF0ZTsNCj4+ICsJdTggIHBsbF9yZWZf Y2xrOw0KPj4gKwl1MzIgc3RlcHM7DQo+PiArCXUzMiBzdGVwX3NpemU7DQo+PiArfTsNCj4+ICsN Cj4+ICsvKiBsb29rdXAgdGFibGUgdG8gaG9sZCBhbGwgc2V0dGluZ3MgbmVlZGVkIGZvciBhIHJl ZiBjbG9jayBmcmVxdWVuY3kgKi8NCj4+ICtzdGF0aWMgc3RydWN0IHhwc2d0cl9zc2Mgc3NjX2xv b2t1cFtNQVhfUkVGQ0xLXSA9IHsNCj4+ICsJezE5MjAwMDAwLCAweDA1LCA2MDgsIDI2NDAyMH0s DQo+PiArCXsyMDAwMDAwMCwgMHgwNiwgNjM0LCAyNDM0NTR9LA0KPj4gKwl7MjQwMDAwMDAsIDB4 MDcsIDc2MCwgMTY4OTczfSwNCj4+ICsJezI2MDAwMDAwLCAweDA4LCA4MjQsIDE0Mzg2MH0sDQo+ PiArCXsyNzAwMDAwMCwgMHgwOSwgODU2LCA4NjU1MX0sDQo+PiArCXszODQwMDAwMCwgMHgwQSwg MTIxOCwgNjU4OTZ9LA0KPj4gKwl7NDAwMDAwMDAsIDB4MEIsIDYzNCwgMjQzNDU0fSwNCj4+ICsJ ezUyMDAwMDAwLCAweDBDLCA4MjQsIDE0Mzg2MH0sDQo+PiArCXsxMDAwMDAwMDAsIDB4MEQsIDEw NTgsIDg3NTMzfSwNCj4+ICsJezEwODAwMDAwMCwgMHgwRSwgODU2LCA4NjU1MX0sDQo+PiArCXsx MjUwMDAwMDAsIDB4MEYsIDk5MiwgMTE5NDk3fSwNCj4+ICsJezEzNTAwMDAwMCwgMHgxMCwgMTA3 MCwgNTUzOTN9LA0KPj4gKwl7MTUwMDAwMDAwLCAweDExLCA3OTIsIDE4NzA5MX0NCj4+ICt9Ow0K Pj4gKw0KPj4gKy8qKg0KPj4gKyAqIHN0cnVjdCB4cHNndHJfZGV2IC0gcmVwcmVzZW50YXRpb24g b2YgYSBaeW5NUCBHVCBkZXZpY2UNCj4+ICsgKiBAZGV2OiBwb2ludGVyIHRvIGRldmljZQ0KPj4g KyAqIEBzZXJkZXM6IHNlcmRlcyBiYXNlIGFkZHJlc3MNCj4+ICsgKiBAc2lvdTogc2lvdSBiYXNl IGFkZHJlc3MNCj4+ICsgKiBAZ3RyX211dGV4OiBtdXRleCBmb3IgbG9ja2luZw0KPj4gKyAqIEBw aHlzOiBwb2ludGVyIHRvIGFsbCB0aGUgbGFuZXMNCj4+ICsgKiBAdHhfdGVybV9maXg6IGZpeCBm b3IgR1QgaXNzdWUNCj4+ICsgKiBAc2F2ZWRfaWNtX2NmZzA6IHN0b3JlZCB2YWx1ZSBvZiBJQ00g Q0ZHMCByZWdpc3Rlcg0KPj4gKyAqIEBzYXZlZF9pY21fY2ZnMTogc3RvcmVkIHZhbHVlIG9mIElD TSBDRkcxIHJlZ2lzdGVyDQo+PiArICogQHNhdGFfcnN0OiBhIHJlc2V0IGNvbnRyb2wgZm9yIFNB VEENCj4+ICsgKiBAZHBfcnN0OiBhIHJlc2V0IGNvbnRyb2wgZm9yIERQDQo+PiArICogQHVzYjBf Y3JzdDogYSByZXNldCBjb250cm9sIGZvciB1c2IwIGNvcmUNCj4+ICsgKiBAdXNiMV9jcnN0OiBh IHJlc2V0IGNvbnRyb2wgZm9yIHVzYjEgY29yZQ0KPj4gKyAqIEB1c2IwX2hpYnJzdDogYSByZXNl dCBjb250cm9sIGZvciB1c2IwIGhpYmVybmF0aW9uIG1vZHVsZQ0KPj4gKyAqIEB1c2IxX2hpYnJz dDogYSByZXNldCBjb250cm9sIGZvciB1c2IxIGhpYmVybmF0aW9uIG1vZHVsZQ0KPj4gKyAqIEB1 c2IwX2FwYnJzdDogYSByZXNldCBjb250cm9sIGZvciB1c2IwIGFwYiBidXMNCj4+ICsgKiBAdXNi MV9hcGJyc3Q6IGEgcmVzZXQgY29udHJvbCBmb3IgdXNiMSBhcGIgYnVzDQo+PiArICogQGdlbTBf cnN0OiBhIHJlc2V0IGNvbnRyb2wgZm9yIGdlbTANCj4+ICsgKiBAZ2VtMV9yc3Q6IGEgcmVzZXQg Y29udHJvbCBmb3IgZ2VtMQ0KPj4gKyAqIEBnZW0yX3JzdDogYSByZXNldCBjb250cm9sIGZvciBn ZW0yDQo+PiArICogQGdlbTNfcnN0OiBhIHJlc2V0IGNvbnRyb2wgZm9yIGdlbTMNCj4+ICsgKi8N Cj4+ICtzdHJ1Y3QgeHBzZ3RyX2RldiB7DQo+PiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4+ICsJ dm9pZCBfX2lvbWVtICpzZXJkZXM7DQo+PiArCXZvaWQgX19pb21lbSAqc2lvdTsNCj4+ICsJc3Ry dWN0IG11dGV4IGd0cl9tdXRleDsgLyogbXV0ZXggZm9yIGxvY2tpbmcgKi8NCj4+ICsJc3RydWN0 IHhwc2d0cl9waHkgKipwaHlzOw0KPj4gKwlib29sIHR4X3Rlcm1fZml4Ow0KPj4gKwl1bnNpZ25l ZCBpbnQgc2F2ZWRfaWNtX2NmZzA7DQo+PiArCXVuc2lnbmVkIGludCBzYXZlZF9pY21fY2ZnMTsN Cj4+ICsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnNhdGFfcnN0Ow0KPj4gKwlzdHJ1Y3QgcmVzZXRf Y29udHJvbCAqZHBfcnN0Ow0KPj4gKwlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqdXNiMF9jcnN0Ow0K Pj4gKwlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqdXNiMV9jcnN0Ow0KPj4gKwlzdHJ1Y3QgcmVzZXRf Y29udHJvbCAqdXNiMF9oaWJyc3Q7DQo+PiArCXN0cnVjdCByZXNldF9jb250cm9sICp1c2IxX2hp YnJzdDsNCj4+ICsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnVzYjBfYXBicnN0Ow0KPj4gKwlzdHJ1 Y3QgcmVzZXRfY29udHJvbCAqdXNiMV9hcGJyc3Q7DQo+PiArCXN0cnVjdCByZXNldF9jb250cm9s ICpnZW0wX3JzdDsNCj4+ICsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKmdlbTFfcnN0Ow0KPj4gKwlz dHJ1Y3QgcmVzZXRfY29udHJvbCAqZ2VtMl9yc3Q7DQo+PiArCXN0cnVjdCByZXNldF9jb250cm9s ICpnZW0zX3JzdDsNCj4+ICt9Ow0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIHhwc2d0cl9vdmVycmlk ZV9kZWVtcGggLSBvdmVycmlkZSBQSVBFIFRYIGRlLWVtcGhhc2lzDQo+PiArICogQHBoeTogcG9p bnRlciB0byBwaHkNCj4+ICsgKiBAcGx2bDogcHJlLWVtcGhhc2lzIGxldmVsDQo+PiArICogQHZs dmw6IHZvbHRhZ2Ugc3dpbmcgbGV2ZWwNCj4+ICsgKg0KPj4gKyAqIFJldHVybjogTm9uZQ0KPj4g KyAqLw0KPj4gK3ZvaWQgeHBzZ3RyX292ZXJyaWRlX2RlZW1waChzdHJ1Y3QgcGh5ICpwaHksIHU4 IHBsdmwsIHU4IHZsdmwpDQo+PiArew0KPj4gKwlzdHJ1Y3QgeHBzZ3RyX3BoeSAqZ3RyX3BoeSA9 IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOw0KPj4gKwlzdHJ1Y3QgeHBzZ3RyX2RldiAqZ3RyX2RldiA9 IGd0cl9waHktPmRhdGE7DQo+PiArCXN0YXRpYyB1OCBwZVs0XVs0XSA9IHsgeyAweDIsIDB4Miwg MHgyLCAweDIgfSwNCj4+ICsJCQkgICAgICAgeyAweDEsIDB4MSwgMHgxLCAweEZGIH0sDQo+PiAr CQkJICAgICAgIHsgMHgwLCAweDAsIDB4RkYsIDB4RkYgfSwNCj4+ICsJCQkgICAgICAgeyAweEZG LCAweEZGLCAweEZGLCAweEZGIH0gfTsNCj4NCj5IZXJlIHRoZSBjb25zdW1lciBkcml2ZXIgZGly ZWN0bHkgcGFzc2VzIHRoZSBpbmRleCBvZiBhIGxvY2FsIGFycmF5IGFzDQo+YXJndW1lbnQuIEhv dyBpcyB0aGUgY29uc3VtZXIgZHJpdmVyIHN1cHBvc2VkIHRvIHRoaXMgaW5kZXguIFdoYXQgaGFw cGVucyBpZg0KPnRoZSBzYW1lIGNvbnN1bWVyIGlzIGNvbm5lY3RlZCB0byBhIGRpZmZlcmVudCBQ SFk/DQo+DQoNClRoYW5rcyBhIGxvdCBmb3Igc3BlbmRpbmcgeW91ciB0aW1lIGluIHJldmlld2lu ZyB0aGlzIHBhdGNoLiBUaGUgY29uc3VtZXIgb2YgdGhpcw0KcGFydGljdWxhciBmdW5jdGlvbiAg aXMgYSBEaXNwbGF5IFBvcnQgYW5kIGl0IGlzIFhpbGlueCBzcGVjaWZpYyBJUC4gSSBhbSBub3Qg dmVyeSBzdXJlIG9mDQp0aGUgaW5mb3JtYXRpb24gaWYgYW55IG90aGVyIERpc3BsYXkgUG9ydCBk cml2ZXJzIG5lZWQgdG8gaGFuZGxlIHRoaXMgc2ltaWxhciBraW5kIG9mDQpydW50aW1lIGFkanVz dG1lbnQgb2YgdGhlIGRlLWVtcGhhc2lzIG9yIHZvbHRhZ2Ugc3dpbmcgdmFsdWVzLCBidXQgdGhl IFhpbGlueCBEUA0KaGFzIHRvIGRvIGl0IGF0IHJ1bnRpbWUgYXMgYSBwYXJ0IG9mIHRyYWluaW5n IHNlcXVlbmNlLiBZb3UgbWF5IGNvbnNpZGVyIHRoaXMgYXMgYW4NCmltcGxlbWVudGF0aW9uIHJl cXVpcmVtZW50LiBUaGUgWGlsaW54IERQIGlzIGV4cGVjdGVkIHRvIHdvcmsgb25seSB3aXRoIHRo aXMgenlucW1wDQpwaHkgYW5kIHRoZXNlIHBsdmwgJiB2bHZsIHZhbHVlcyBhcmUgcHJlZGVmaW5l ZCBhbmQgdGhlcmUgaXMgYW4gb25lIHRvIG9uZSBtYXBwaW5nIG9mDQp0aGVzZSB2YWx1ZXMgYmV0 d2VlbiBYaWxpbnggRFAgZHJpdmVyIGFuZCBwaHktenlucW1wIGRyaXZlci4gVGhlc2UgdmFsdWVz IGFyZSBjYWxjdWxhdGVkDQpieSB0aGUgRFAgZHJpdmVyIGJhc2VkIG9uIHRoZSBEUENEIGRhdGEg cmVhZCBmcm9tIHNpbmsgYW5kIHBhc3NlZCBhcyBhbiBhcmd1bWVudHMNCnRvIHhwc2d0cl9vdmVy cmlkZV9kZWVtcGgoKSBmdW5jdGlvbi4gSG9wZSB0aGlzIGFuc3dlcnMgeW91ciBxdWVyeS4NClBs ZWFzZSBjb3JyZWN0IG1lLCBpZiBJIGFtIG1pc3Npbmcgc29tZXRoaW5nIG9yIG15IHVuZGVyc3Rh bmRpbmcgaXMgd3JvbmcgDQoNClRoYW5rcywNCkFudXJhZyBLdW1hciBWdWxpc2hhDQo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: anuragku@xilinx.com (Anurag Kumar Vulisha) Date: Tue, 9 Oct 2018 10:01:48 +0000 Subject: [PATCH v4 2/2] phy: zynqmp: Add phy driver for xilinx zynqmp phy core In-Reply-To: References: <1536769366-31398-1-git-send-email-anurag.kumar.vulisha@xilinx.com> <1536769366-31398-3-git-send-email-anurag.kumar.vulisha@xilinx.com> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Kishon, >-----Original Message----- >From: Kishon Vijay Abraham I [mailto:kishon at ti.com] >Sent: Tuesday, October 09, 2018 1:18 PM >To: Anurag Kumar Vulisha ; robh+dt at kernel.org; >mark.rutland at arm.com; Michal Simek ; >vivek.gautam at codeaurora.org >Cc: v.anuragkumar at gmail.com; Ajay Yugalkishore Pandey ; >devicetree at vger.kernel.org; linux-arm-kernel at lists.infradead.org; linux- >kernel at vger.kernel.org >Subject: Re: [PATCH v4 2/2] phy: zynqmp: Add phy driver for xilinx zynqmp phy core > >Hi Anurag, > >On Wednesday 12 September 2018 09:52 PM, Anurag Kumar Vulisha wrote: >> ZynqMP SoC has a Gigabit Transceiver with four lanes. All the high speed >> peripherals such as USB, SATA, PCIE, Display Port and Ethernet SGMII can >> rely on any of the four GT lanes for PHY layer. This patch adds driver >> for that ZynqMP GT core. >> >> Signed-off-by: Anurag Kumar Vulisha >> --- >> Changes in v4: >> 1. Moved include/dt-bindings/phy/phy.h into patch 1 as suggested by >> "Rob Herring" >> >> Changes in v3: >> 1. Corrected the Documentation as suggested by "Vivek Gautam" >> >> Changes in v2: >> 1. Fixed the compilation error when compiled phy-zynqmp.c as a module >> 2. Added CONFIG_PM macro in phy-zynqmp.c driver >> --- >> drivers/phy/Kconfig | 8 + >> drivers/phy/Makefile | 1 + >> drivers/phy/phy-zynqmp.c | 1581 >++++++++++++++++++++++++++++++++++++++++ >> include/linux/phy/phy-zynqmp.h | 52 ++ >> 4 files changed, 1642 insertions(+) >> create mode 100644 drivers/phy/phy-zynqmp.c >> create mode 100644 include/linux/phy/phy-zynqmp.h >> >> diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig >> index 5c8d452..14cf3330 100644 >> --- a/drivers/phy/Kconfig >> +++ b/drivers/phy/Kconfig >> @@ -40,6 +40,14 @@ config PHY_XGENE >> help >> This option enables support for APM X-Gene SoC multi-purpose PHY. >> >> +config PHY_XILINX_ZYNQMP >> + tristate "Xilinx ZynqMP PHY driver" >> + depends on ARCH_ZYNQMP >> + select GENERIC_PHY >> + help >> + Enable this to support ZynqMP High Speed Gigabit Transceiver >> + that is part of ZynqMP SoC. >> + >> source "drivers/phy/allwinner/Kconfig" >> source "drivers/phy/amlogic/Kconfig" >> source "drivers/phy/broadcom/Kconfig" >> diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile >> index 84e3bd9..f2a8d27 100644 >> --- a/drivers/phy/Makefile >> +++ b/drivers/phy/Makefile >> @@ -7,6 +7,7 @@ obj-$(CONFIG_GENERIC_PHY) += phy-core.o >> obj-$(CONFIG_PHY_LPC18XX_USB_OTG) += phy-lpc18xx-usb-otg.o >> obj-$(CONFIG_PHY_XGENE) += phy-xgene.o >> obj-$(CONFIG_PHY_PISTACHIO_USB) += phy-pistachio-usb.o >> +obj-$(CONFIG_PHY_XILINX_ZYNQMP) += phy-zynqmp.o >> obj-$(CONFIG_ARCH_SUNXI) += allwinner/ >> obj-$(CONFIG_ARCH_MESON) += amlogic/ >> obj-$(CONFIG_LANTIQ) += lantiq/ >> diff --git a/drivers/phy/phy-zynqmp.c b/drivers/phy/phy-zynqmp.c >> new file mode 100644 >> index 0000000..497862d >> --- /dev/null >> +++ b/drivers/phy/phy-zynqmp.c >> @@ -0,0 +1,1581 @@ >> +// SPDX-License-Identifier: GPL-2.0 >> +/* >> + * phy-zynqmp.c - PHY driver for Xilinx ZynqMP GT. >> + * >> + * Copyright (C) 2018 Xilinx Inc. >> + * >> + * Author: Anurag Kumar Vulisha >> + * >> + * This driver is tested for USB, SATA and Display Port currently. >> + * Other controllers PCIe and SGMII should also work but that is >> + * experimental as of now. >> + */ >> + >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> +#include >> + >> +/* Inter Connect Matrix parameters */ >> +#define ICM_CFG0 0x10010 >> +#define ICM_CFG1 0x10014 >> +#define ICM_CFG0_L0_MASK 0x07 >> +#define ICM_CFG0_L1_MASK 0x70 >> +#define ICM_CFG1_L2_MASK 0x07 >> +#define ICM_CFG2_L3_MASK 0x70 >> +#define ICM_CFG_SHIFT 4 >> + >> +/* Inter Connect Matrix allowed protocols */ >> +#define ICM_PROTOCOL_PD 0x0 >> +#define ICM_PROTOCOL_PCIE 0x1 >> +#define ICM_PROTOCOL_SATA 0x2 >> +#define ICM_PROTOCOL_USB 0x3 >> +#define ICM_PROTOCOL_DP 0x4 >> +#define ICM_PROTOCOL_SGMII 0x5 >> + >> +/* Test Mode common reset control parameters */ >> +#define TM_CMN_RST 0x10018 >> +#define TM_CMN_RST_EN 0x1 >> +#define TM_CMN_RST_SET 0x2 >> +#define TM_CMN_RST_MASK 0x3 >> + >> +/* Refclk selection parameters */ >> +#define PLL_REF_SEL0 0x10000 >> +#define PLL_REF_OFFSET 0x4 >> +#define PLL_FREQ_MASK 0x1F >> +#define PLL_STATUS_READ_OFFSET 0x4000 >> +#define PLL_STATUS_LOCKED 0x10 >> + >> +/* PLL SSC step size offsets */ >> +#define L0_L0_REF_CLK_SEL 0x2860 >> +#define L0_PLL_SS_STEPS_0_LSB 0x2368 >> +#define L0_PLL_SS_STEPS_1_MSB 0x236C >> +#define L0_PLL_SS_STEP_SIZE_0_LSB 0x2370 >> +#define L0_PLL_SS_STEP_SIZE_1 0x2374 >> +#define L0_PLL_SS_STEP_SIZE_2 0x2378 >> +#define L0_PLL_SS_STEP_SIZE_3_MSB 0x237C >> +#define L0_PLL_STATUS_READ_1 0x23E4 >> + >> +/* SSC step size parameters */ >> +#define STEP_SIZE_OFFSET 0x4000 >> +#define STEP_SIZE_0_MASK 0xFF >> +#define STEP_SIZE_1_MASK 0xFF >> +#define STEP_SIZE_2_MASK 0xFF >> +#define STEP_SIZE_3_MASK 0x3 >> +#define STEP_SIZE_SHIFT 8 >> +#define FORCE_STEP_SIZE 0x10 >> +#define FORCE_STEPS 0x20 >> +#define STEPS_OFFSET 0x4000 >> +#define STEPS_0_MASK 0xFF >> +#define STEPS_1_MASK 0x07 >> + >> +/* BG calibration parameters */ >> +#define BGCAL_REF_SEL 0x10028 >> +#define BGCAL_REF_VALUE 0x0C >> + >> +/* Calibration digital logic parameters */ >> +#define L3_TM_CALIB_DIG19 0xEC4C >> +#define L3_CALIB_DONE_STATUS 0xEF14 >> +#define L3_TM_CALIB_DIG18 0xEC48 >> +#define L3_TM_CALIB_DIG19_NSW 0x07 >> +#define L3_TM_CALIB_DIG18_NSW 0xE0 >> +#define L3_TM_OVERRIDE_NSW_CODE 0x20 >> +#define L3_CALIB_DONE 0x02 >> +#define L3_NSW_SHIFT 5 >> +#define L3_NSW_PIPE_SHIFT 4 >> +#define L3_NSW_CALIB_SHIFT 3 >> + >> +/* DN Resistor calibration code parameters */ >> +#define L0_TXPMA_ST_3 0x0B0C >> +#define L0_DN_CALIB_CODE 0x3F >> + >> +/* PLL Test Mode register parameters */ >> +#define L0_TM_PLL_DIG_37 0x2094 >> +#define L0_TM_PLL_DIG_37_OFFSET 0x4000 >> +#define L0_TM_COARSE_CODE_LIMIT 0x10 >> + >> +/* PCS control parameters */ >> +#define L0_TM_DIG_6 0x106C >> +#define L0_TX_DIG_61 0x00F4 >> +#define L0_TM_DIG_6_OFFSET 0x4000 >> +#define L0_TX_DIG_61_OFFSET 0x4000 >> +#define L0_TM_DIS_DESCRAMBLE_DECODER 0x0F >> +#define L0_TM_DISABLE_SCRAMBLE_ENCODER 0x0F >> + >> +/* TX De-emphasis parameters */ >> +#define L0_TX_ANA_TM_18 0x0048 >> +#define L0_TX_ANA_TM_118 0x01D8 >> +#define L0_TX_ANA_TM_18_OFFSET 0x4000 >> +#define L0_TX_ANA_TM_118_OFFSET 0x4000 >> +#define L0_TX_ANA_TM_118_FORCE_17_0 BIT(0) >> + >> +/* PMA control parameters */ >> +#define L0_TXPMD_TM_45 0x0CB4 >> +#define L0_TXPMD_TM_48 0x0CC0 >> +#define L0_TXPMD_TM_45_OFFSET 0x4000 >> +#define L0_TXPMD_TM_48_OFFSET 0x4000 >> +#define L0_TXPMD_TM_45_OVER_DP_MAIN BIT(0) >> +#define L0_TXPMD_TM_45_ENABLE_DP_MAIN BIT(1) >> +#define L0_TXPMD_TM_45_OVER_DP_POST1 BIT(2) >> +#define L0_TXPMD_TM_45_ENABLE_DP_POST1 BIT(3) >> +#define L0_TXPMD_TM_45_OVER_DP_POST2 BIT(4) >> +#define L0_TXPMD_TM_45_ENABLE_DP_POST2 BIT(5) >> + >> +/* Bus width parameters */ >> +#define TX_PROT_BUS_WIDTH 0x10040 >> +#define RX_PROT_BUS_WIDTH 0x10044 >> +#define PROT_BUS_WIDTH_10 0x0 >> +#define PROT_BUS_WIDTH_20 0x1 >> +#define PROT_BUS_WIDTH_40 0x2 >> +#define PROT_BUS_WIDTH_SHIFT 2 >> + >> +/* Max number of GT lanes */ >> +#define MAX_LANES 4 >> + >> +/* Max Allowed refclk frequencies */ >> +#define MAX_REFCLK 13 >> + >> +/* Lane CLK sharing mask */ >> +#define LANE_CLK_SHARE_MASK 0x8F >> + >> +/* SIOU SATA control register */ >> +#define SATA_CONTROL_OFFSET 0x0100 >> + >> +/* Total number of controllers */ >> +#define CONTROLLERS_PER_LANE 5 >> + >> +/* USB pipe control parameters */ >> +#define PIPE_CLK_OFFSET 0x7c >> +#define PIPE_POWER_OFFSET 0x80 >> +#define PIPE_CLK_ON 1 >> +#define PIPE_CLK_OFF 0 >> +#define PIPE_POWER_ON 1 >> +#define PIPE_POWER_OFF 0 >> + >> +/* Protocol Type Pparameters */ >> +#define XPSGTR_TYPE_USB0 0 /* USB controller 0 */ >> +#define XPSGTR_TYPE_USB1 1 /* USB controller 1 */ >> +#define XPSGTR_TYPE_SATA_0 2 /* SATA controller lane 0 */ >> +#define XPSGTR_TYPE_SATA_1 3 /* SATA controller lane 1 */ >> +#define XPSGTR_TYPE_PCIE_0 4 /* PCIe controller lane 0 */ >> +#define XPSGTR_TYPE_PCIE_1 5 /* PCIe controller lane 1 */ >> +#define XPSGTR_TYPE_PCIE_2 6 /* PCIe controller lane 2 */ >> +#define XPSGTR_TYPE_PCIE_3 7 /* PCIe controller lane 3 */ >> +#define XPSGTR_TYPE_DP_0 8 /* Display Port controller lane 0 */ >> +#define XPSGTR_TYPE_DP_1 9 /* Display Port controller lane 1 */ >> +#define XPSGTR_TYPE_SGMII0 10 /* Ethernet SGMII controller 0 */ >> +#define XPSGTR_TYPE_SGMII1 11 /* Ethernet SGMII controller 1 */ >> +#define XPSGTR_TYPE_SGMII2 12 /* Ethernet SGMII controller 2 */ >> +#define XPSGTR_TYPE_SGMII3 13 /* Ethernet SGMII controller 3 */ >> + >> +/* Timeout values */ >> +#define RST_TIMEOUT_MS 1000 >> +#define TIMEOUT_US 1000 >> + >> +/* >> + * This table holds the valid combinations of controllers and >> + * lanes(Interconnect Matrix). >> + */ >> +static unsigned int icm_matrix[MAX_LANES][CONTROLLERS_PER_LANE] = { >> + { XPSGTR_TYPE_PCIE_0, XPSGTR_TYPE_SATA_0, XPSGTR_TYPE_USB0, >> + XPSGTR_TYPE_DP_1, XPSGTR_TYPE_SGMII0 }, >> + { XPSGTR_TYPE_PCIE_1, XPSGTR_TYPE_SATA_1, XPSGTR_TYPE_USB0, >> + XPSGTR_TYPE_DP_0, XPSGTR_TYPE_SGMII1 }, >> + { XPSGTR_TYPE_PCIE_2, XPSGTR_TYPE_SATA_0, XPSGTR_TYPE_USB0, >> + XPSGTR_TYPE_DP_1, XPSGTR_TYPE_SGMII2 }, >> + { XPSGTR_TYPE_PCIE_3, XPSGTR_TYPE_SATA_1, XPSGTR_TYPE_USB1, >> + XPSGTR_TYPE_DP_0, XPSGTR_TYPE_SGMII3 } >> +}; >> + >> +/* Allowed PLL reference clock frequencies */ >> +enum pll_frequencies { >> + REF_19_2M = 0, >> + REF_20M, >> + REF_24M, >> + REF_26M, >> + REF_27M, >> + REF_38_4M, >> + REF_40M, >> + REF_52M, >> + REF_100M, >> + REF_108M, >> + REF_125M, >> + REF_135M, >> + REF_150M, >> +}; >> + >> +/** >> + * struct xpsgtr_phy - representation of a lane >> + * @phy: pointer to the kernel PHY device >> + * @type: controller which uses this lane >> + * @lane: lane number >> + * @protocol: protocol in which the lane operates >> + * @ref_clk: enum of allowed ref clock rates for this lane PLL >> + * @pll_lock: PLL status >> + * @skip_phy_init: skip phy_init() if true >> + * @data: pointer to hold private data >> + * @refclk_rate: PLL reference clock frequency >> + * @share_laneclk: lane number of the clock to be shared >> + */ >> +struct xpsgtr_phy { >> + struct phy *phy; >> + u8 type; >> + u8 lane; >> + u8 protocol; >> + enum pll_frequencies ref_clk; >> + bool pll_lock; >> + bool skip_phy_init; >> + void *data; >> + u32 refclk_rate; >> + u32 share_laneclk; >> +}; >> + >> +/** >> + * struct xpsgtr_ssc - structure to hold SSC settings for a lane >> + * @refclk_rate: PLL reference clock frequency >> + * @pll_ref_clk: value to be written to register for corresponding ref clk rate >> + * @steps: number of steps of SSC (Spread Spectrum Clock) >> + * @step_size: step size of each step >> + */ >> +struct xpsgtr_ssc { >> + u32 refclk_rate; >> + u8 pll_ref_clk; >> + u32 steps; >> + u32 step_size; >> +}; >> + >> +/* lookup table to hold all settings needed for a ref clock frequency */ >> +static struct xpsgtr_ssc ssc_lookup[MAX_REFCLK] = { >> + {19200000, 0x05, 608, 264020}, >> + {20000000, 0x06, 634, 243454}, >> + {24000000, 0x07, 760, 168973}, >> + {26000000, 0x08, 824, 143860}, >> + {27000000, 0x09, 856, 86551}, >> + {38400000, 0x0A, 1218, 65896}, >> + {40000000, 0x0B, 634, 243454}, >> + {52000000, 0x0C, 824, 143860}, >> + {100000000, 0x0D, 1058, 87533}, >> + {108000000, 0x0E, 856, 86551}, >> + {125000000, 0x0F, 992, 119497}, >> + {135000000, 0x10, 1070, 55393}, >> + {150000000, 0x11, 792, 187091} >> +}; >> + >> +/** >> + * struct xpsgtr_dev - representation of a ZynMP GT device >> + * @dev: pointer to device >> + * @serdes: serdes base address >> + * @siou: siou base address >> + * @gtr_mutex: mutex for locking >> + * @phys: pointer to all the lanes >> + * @tx_term_fix: fix for GT issue >> + * @saved_icm_cfg0: stored value of ICM CFG0 register >> + * @saved_icm_cfg1: stored value of ICM CFG1 register >> + * @sata_rst: a reset control for SATA >> + * @dp_rst: a reset control for DP >> + * @usb0_crst: a reset control for usb0 core >> + * @usb1_crst: a reset control for usb1 core >> + * @usb0_hibrst: a reset control for usb0 hibernation module >> + * @usb1_hibrst: a reset control for usb1 hibernation module >> + * @usb0_apbrst: a reset control for usb0 apb bus >> + * @usb1_apbrst: a reset control for usb1 apb bus >> + * @gem0_rst: a reset control for gem0 >> + * @gem1_rst: a reset control for gem1 >> + * @gem2_rst: a reset control for gem2 >> + * @gem3_rst: a reset control for gem3 >> + */ >> +struct xpsgtr_dev { >> + struct device *dev; >> + void __iomem *serdes; >> + void __iomem *siou; >> + struct mutex gtr_mutex; /* mutex for locking */ >> + struct xpsgtr_phy **phys; >> + bool tx_term_fix; >> + unsigned int saved_icm_cfg0; >> + unsigned int saved_icm_cfg1; >> + struct reset_control *sata_rst; >> + struct reset_control *dp_rst; >> + struct reset_control *usb0_crst; >> + struct reset_control *usb1_crst; >> + struct reset_control *usb0_hibrst; >> + struct reset_control *usb1_hibrst; >> + struct reset_control *usb0_apbrst; >> + struct reset_control *usb1_apbrst; >> + struct reset_control *gem0_rst; >> + struct reset_control *gem1_rst; >> + struct reset_control *gem2_rst; >> + struct reset_control *gem3_rst; >> +}; >> + >> +/** >> + * xpsgtr_override_deemph - override PIPE TX de-emphasis >> + * @phy: pointer to phy >> + * @plvl: pre-emphasis level >> + * @vlvl: voltage swing level >> + * >> + * Return: None >> + */ >> +void xpsgtr_override_deemph(struct phy *phy, u8 plvl, u8 vlvl) >> +{ >> + struct xpsgtr_phy *gtr_phy = phy_get_drvdata(phy); >> + struct xpsgtr_dev *gtr_dev = gtr_phy->data; >> + static u8 pe[4][4] = { { 0x2, 0x2, 0x2, 0x2 }, >> + { 0x1, 0x1, 0x1, 0xFF }, >> + { 0x0, 0x0, 0xFF, 0xFF }, >> + { 0xFF, 0xFF, 0xFF, 0xFF } }; > >Here the consumer driver directly passes the index of a local array as >argument. How is the consumer driver supposed to this index. What happens if >the same consumer is connected to a different PHY? > Thanks a lot for spending your time in reviewing this patch. The consumer of this particular function is a Display Port and it is Xilinx specific IP. I am not very sure of the information if any other Display Port drivers need to handle this similar kind of runtime adjustment of the de-emphasis or voltage swing values, but the Xilinx DP has to do it at runtime as a part of training sequence. You may consider this as an implementation requirement. The Xilinx DP is expected to work only with this zynqmp phy and these plvl & vlvl values are predefined and there is an one to one mapping of these values between Xilinx DP driver and phy-zynqmp driver. These values are calculated by the DP driver based on the DPCD data read from sink and passed as an arguments to xpsgtr_override_deemph() function. Hope this answers your query. Please correct me, if I am missing something or my understanding is wrong Thanks, Anurag Kumar Vulisha