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=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F2EB3C10F25 for ; Tue, 10 Mar 2020 02:01:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9C9802067C for ; Tue, 10 Mar 2020 02:01:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="cbnrMKQQ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726156AbgCJCBI (ORCPT ); Mon, 9 Mar 2020 22:01:08 -0400 Received: from mail-eopbgr70055.outbound.protection.outlook.com ([40.107.7.55]:32103 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726134AbgCJCBI (ORCPT ); Mon, 9 Mar 2020 22:01:08 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OCyPwdK4qoaHqc0VDvFhDydcNWA4y/imxhjdgUac3SQfbaSTU+2hUs0GQ5D5N3j7hEgZCpIU9zCwhz3FCW/RTFUrCFiNwOfKKL6Z/wceSq1t5avnpIhG0DbLeL36BDGIowbxSw/7W0oYUin7QL1+bxiCqfDXN0c7qSh9ZgAR06xd+QQXAbQedB1Ty7VsG7EnhJ+Gz/jS8OEYm9t8/dnnl43YpcHUo9UaJxsTyama69EMDTxWLNTVzZsJgUYkGtmN+51k2rwcDpgl1iVJRGmvwUq8e4mZvkbAG9JrrMY+iwhtKQdoHpV4TCABDrzroeMEYTGiIfpP7MawG8DmU7pPhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MttUZjgcUnRGqrhHUBC1ea+TR12UCEsgGKO/g0miJgw=; b=EGtyJl7fpukENfd/p/uoTDGi1MAIJgFU9sOQN66x+X9CnBu0w6jbfUt0aNRGnsvxw1/8gaO+TErh0ReuM3qXzARdBQn96+7Ykru9jAvu3VsaG0pgfi3tGd0cTTJBHl44FxuoFzrQwp4GIM8wKmu9NHCA2UjRmqOfge1kDhf1Tzk8sAq6eVc+7GLlCESZD2ikE8izPkpXtF2lqOgzCMjbGSCrMoOLkiOtNWR0D9nIvYfod8L4u7uZor/9oieNsJKHZO5AfSSe6O7D7Ben3fhJ7Jut9odbEmxsVD74Zcpl0YDuMEt4DH/tMY7lLPehLbVXoDpMIn9LE8ryZDxmqGoHsA== 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=MttUZjgcUnRGqrhHUBC1ea+TR12UCEsgGKO/g0miJgw=; b=cbnrMKQQDWOLo6+v/cihkbblyPsBY0jAjfq9xTBElOZiXH/kp9yjamjTWtwLp/j+gahYbMKhZHTCfRKIClqwZut7OPi1/pGyaWnS0GPhHZe8G2qvmqqt4dzjZZZ8VYkJrIUe4hNNSkaLgTlrU9l4lgQH2f5Vf39nFBr5GmAwepk= Received: from VI1PR04MB5040.eurprd04.prod.outlook.com (20.177.52.24) by VI1PR04MB4960.eurprd04.prod.outlook.com (20.177.49.213) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.17; Tue, 10 Mar 2020 01:59:57 +0000 Received: from VI1PR04MB5040.eurprd04.prod.outlook.com ([fe80::d0c7:37d1:d835:a682]) by VI1PR04MB5040.eurprd04.prod.outlook.com ([fe80::d0c7:37d1:d835:a682%7]) with mapi id 15.20.2793.013; Tue, 10 Mar 2020 01:59:57 +0000 From: BOUGH CHEN To: BOUGH CHEN , "jic23@kernel.org" , "knaack.h@gmx.de" , "lars@metafoo.de" , "pmeerw@pmeerw.net" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , dl-linux-imx , "linux-iio@vger.kernel.org" Subject: RE: [PATCH] iio: adc: Add imx8qxp adc driver support Thread-Topic: [PATCH] iio: adc: Add imx8qxp adc driver support Thread-Index: AQHV4L8H/DEl/KIKRUCUkNrFSEHCTahBPXLQ Date: Tue, 10 Mar 2020 01:59:57 +0000 Message-ID: References: <1581413555-31743-1-git-send-email-haibo.chen@nxp.com> In-Reply-To: <1581413555-31743-1-git-send-email-haibo.chen@nxp.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=haibo.chen@nxp.com; x-originating-ip: [112.23.103.235] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 291068d9-be99-4fd4-b48b-08d7c496bc1d x-ms-traffictypediagnostic: VI1PR04MB4960:|VI1PR04MB4960: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-forefront-prvs: 033857D0BD x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(366004)(376002)(346002)(39860400002)(396003)(136003)(189003)(199004)(186003)(55016002)(110136005)(7696005)(33656002)(9686003)(86362001)(478600001)(26005)(53546011)(316002)(64756008)(66556008)(6506007)(66476007)(66446008)(5660300002)(2906002)(8936002)(66946007)(76116006)(8676002)(81166006)(52536014)(71200400001)(30864003)(81156014)(921003)(32563001)(2004002)(1121003)(579004)(352734003);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR04MB4960;H:VI1PR04MB5040.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7Oi16O2qKFEx+InN4SXjgAIpqJP41u6pz4xnB0hkQbmF2SPjnvSNLh8PGhF1vxAvRyqQMZsh/D6g+DFatNBAfmJpsb4yyonnIkf3OKm9//Vm9LX9Ali66UtNlRyvSKyojtJduYSEtJPOb9BBOm3k0P74MOUvV8oyxIVt2Lhmo9tiwguekzboUYl6uJ4P5ZV9BiRNZJGtK5VIYkhT4HzNwXXASbiwk1ijEvtZ6PE/rvs3wqBfygzEGSR/ane/abP0MVSRHMgIsAzbAOJ+dkZOf8WLoxrvFf8BEmfALnNskoVOmrQvL1gFYqzqRtqBQrm7ZAVrcnsvuh0VxuZzsiuNfwRCJw8unkJY6gkZWoig6TlXVzOFdgZMmxvbWR9q833DTkx+GplSa7LCCU631jVzM9T1+9rc1juHWUwifQdyqN3ACT3v1Fc8e+vZTc7wcNhMft4r9ONJKiLFORu+xVGGiLMYMI78vZ++25cMMXEuSGyzNFSSg0IGXMcex53rwASBaTxq/37Dog9HnswioRcdVyjVjp0suIHiNlB/289ZOgWi5Hjs7FCO+630aMfeCovTfmOGsqc/q5E14KohC9O4bQ== x-ms-exchange-antispam-messagedata: /ZubJhzPwMFfm8Yi4vhp1Z7a2YpA5jNpiI5IsITkbLhDSVzM7BeWb3IK49xOalGqBOiIaEp8d/UmS0N+gmN0M23RR4knpAhhSqdsp7Lcc3fsrEPBD4sf3eQYxEqylu2KMmrCVhnO0myulsS481bewQ== Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 291068d9-be99-4fd4-b48b-08d7c496bc1d X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Mar 2020 01:59:57.4230 (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: C/Ptu1IrSllfhNTCC9a9DBvZCe4nBQqQ1krWEUsGQs4o5K1LQwGBQwYKzqOCkt0uOjS3zL/L8dZfwtZyE+wAEw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4960 Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org UGluZy4uLg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogaGFpYm8u Y2hlbkBueHAuY29tIDxoYWliby5jaGVuQG54cC5jb20+DQo+IFNlbnQ6IDIwMjDE6jLUwjExyNUg MTc6MzMNCj4gVG86IGppYzIzQGtlcm5lbC5vcmc7IGtuYWFjay5oQGdteC5kZTsgbGFyc0BtZXRh Zm9vLmRlOw0KPiBwbWVlcndAcG1lZXJ3Lm5ldDsgc2hhd25ndW9Aa2VybmVsLm9yZzsgcy5oYXVl ckBwZW5ndXRyb25peC5kZTsNCj4ga2VybmVsQHBlbmd1dHJvbml4LmRlOyBmZXN0ZXZhbUBnbWFp bC5jb207IGRsLWxpbnV4LWlteA0KPiA8bGludXgtaW14QG54cC5jb20+OyBsaW51eC1paW9Admdl ci5rZXJuZWwub3JnDQo+IENjOiBCT1VHSCBDSEVOIDxoYWliby5jaGVuQG54cC5jb20+DQo+IFN1 YmplY3Q6IFtQQVRDSF0gaWlvOiBhZGM6IEFkZCBpbXg4cXhwIGFkYyBkcml2ZXIgc3VwcG9ydA0K PiANCj4gRnJvbTogSGFpYm8gQ2hlbiA8aGFpYm8uY2hlbkBueHAuY29tPg0KPiANCj4gaS5NWDhR WFAgQjAgYW5kIGkuTVg4UU0gaGFzIHRoZSBzYW1lIEFEQyBJUCwgc28gYWRkIHRoZSBhZGMgZHJp dmVyIHRvDQo+IHN1cHBvcnQgaXQuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBIYWlibyBDaGVuIDxo YWliby5jaGVuQG54cC5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy9paW8vYWRjL0tjb25maWcgICAg ICAgfCAgMTAgKw0KPiAgZHJpdmVycy9paW8vYWRjL01ha2VmaWxlICAgICAgfCAgIDEgKw0KPiAg ZHJpdmVycy9paW8vYWRjL2lteDhxeHBfYWRjLmMgfCA3MjMNCj4gKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKw0KPiAgMyBmaWxlcyBjaGFuZ2VkLCA3MzQgaW5zZXJ0aW9ucygrKQ0K PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvaWlvL2FkYy9pbXg4cXhwX2FkYy5jDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRjL0tjb25maWcgYi9kcml2ZXJzL2lpby9hZGMv S2NvbmZpZyBpbmRleA0KPiA4MmUzMzA4Mjk1OGMuLjEwMzI5ZmU1ZDhkNCAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9paW8vYWRjL0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9paW8vYWRjL0tjb25m aWcNCj4gQEAgLTQ4MCw2ICs0ODAsMTYgQEAgY29uZmlnIElNWDdEX0FEQw0KPiAgCSAgVGhpcyBk cml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIElmIHNvLCB0aGUgbW9kdWxlIHdp bGwgYmUNCj4gIAkgIGNhbGxlZCBpbXg3ZF9hZGMuDQo+IA0KPiArY29uZmlnIElNWDhRWFBfQURD DQo+ICsJdHJpc3RhdGUgIklNWDhRWFAgQURDIGRyaXZlciINCj4gKwlkZXBlbmRzIG9uIEFSQ0hf TVhDIHx8IENPTVBJTEVfVEVTVA0KPiArCWRlcGVuZHMgb24gSEFTX0lPTUVNDQo+ICsJaGVscA0K PiArCSAgU2F5IHllcyBoZXJlIHRvIGJ1aWxkIHN1cHBvcnQgZm9yIElNWDhRWFAgQURDLg0KPiAr DQo+ICsJICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gSWYgc28s IHRoZSBtb2R1bGUgd2lsbCBiZQ0KPiArCSAgY2FsbGVkIGlteDhxeHBfYWRjLg0KPiArDQo+ICBj b25maWcgTFA4Nzg4X0FEQw0KPiAgCXRyaXN0YXRlICJMUDg3ODggQURDIGRyaXZlciINCj4gIAlk ZXBlbmRzIG9uIE1GRF9MUDg3ODgNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2FkYy9NYWtl ZmlsZSBiL2RyaXZlcnMvaWlvL2FkYy9NYWtlZmlsZSBpbmRleA0KPiA5MTkyMjg5MDBkZjkuLjQ4 MGY3NmI2MjhjYSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9paW8vYWRjL01ha2VmaWxlDQo+ICsr KyBiL2RyaXZlcnMvaWlvL2FkYy9NYWtlZmlsZQ0KPiBAQCAtNDMsNiArNDMsNyBAQCBvYmotJChD T05GSUdfRlNMX01YMjVfQURDKSArPSBmc2wtaW14MjUtZ2NxLm8NCj4gIG9iai0kKENPTkZJR19I STg0MzUpICs9IGhpODQzNS5vDQo+ICBvYmotJChDT05GSUdfSFg3MTEpICs9IGh4NzExLm8NCj4g IG9iai0kKENPTkZJR19JTVg3RF9BREMpICs9IGlteDdkX2FkYy5vDQo+ICtvYmotJChDT05GSUdf SU1YOFFYUF9BREMpICs9IGlteDhxeHBfYWRjLm8NCj4gIG9iai0kKENPTkZJR19JTkEyWFhfQURD KSArPSBpbmEyeHgtYWRjLm8NCj4gIG9iai0kKENPTkZJR19JTkdFTklDX0FEQykgKz0gaW5nZW5p Yy1hZGMubw0KPiAgb2JqLSQoQ09ORklHX0lOVEVMX01SRkxEX0FEQykgKz0gaW50ZWxfbXJmbGRf YWRjLm8gZGlmZiAtLWdpdA0KPiBhL2RyaXZlcnMvaWlvL2FkYy9pbXg4cXhwX2FkYy5jIGIvZHJp dmVycy9paW8vYWRjL2lteDhxeHBfYWRjLmMgbmV3IGZpbGUNCj4gbW9kZSAxMDA2NDQgaW5kZXgg MDAwMDAwMDAwMDAwLi5hNmE5YzQyZDA4Y2QNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2 ZXJzL2lpby9hZGMvaW14OHF4cF9hZGMuYw0KPiBAQCAtMCwwICsxLDcyMyBAQA0KPiArLyoNCj4g KyAqIE5YUCBpLk1YOFFYUCBBREMgZHJpdmVyDQo+ICsgKg0KPiArICogQ29weXJpZ2h0IChDKSAy MDE4IE5YUA0KPiArICoNCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQo+ICsgKiBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KPiAr ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3INCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQo+ ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L2NvbXBsZXRpb24uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4NCj4gKyNpbmNsdWRlIDxs aW51eC9pbnRlcnJ1cHQuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPg0KPiArI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+ICsjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPg0KPiAr I2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3Jl Z3VsYXRvci9jb25zdW1lci5oPg0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvaWlvL2lpby5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L2lpby9kcml2ZXIuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9paW8v c3lzZnMuaD4NCj4gKw0KPiArLyogQURDIHJlZ2lzdGVyICovDQo+ICsjZGVmaW5lIElNWDhRWFBf UkVHX0FEQ19WRVJJRAkJMHgwMA0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfUEFSQU0JCTB4 MDQNCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX0NUUkwJCTB4MTANCj4gKyNkZWZpbmUgSU1Y OFFYUF9SRUdfQURDX1NUQVQJCTB4MTQNCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX0lFCQkw eDE4DQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19ERQkJMHgxYw0KPiArI2RlZmluZSBJTVg4 UVhQX1JFR19BRENfQ0ZHCQkweDIwDQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19QQVVTRQkJ MHgyNA0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfRkNUUkwJCTB4MzANCj4gKyNkZWZpbmUg SU1YOFFYUF9SRUdfQURDX1NXVFJJRwkJMHgzNA0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENf VENUUkwwCQkweGMwDQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19UQ1RSTDEJCTB4YzQNCj4g KyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX1RDVFJMMgkJMHhjOA0KPiArI2RlZmluZSBJTVg4UVhQ X1JFR19BRENfVENUUkwzCQkweGNjDQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19UQ1RSTDQJ CTB4ZDANCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX1RDVFJMNQkJMHhkNA0KPiArI2RlZmlu ZSBJTVg4UVhQX1JFR19BRENfVENUUkw2CQkweGQ4DQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FE Q19UQ1RSTDcJCTB4ZGMNCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX0NNREwxCQkweDEwMA0K PiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ01ESDEJCTB4MTA0DQo+ICsjZGVmaW5lIElNWDhR WFBfUkVHX0FEQ19DTURMMgkJMHgxMDgNCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX0NNREgy CQkweDEwYw0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ01ETDMJCTB4MTEwDQo+ICsjZGVm aW5lIElNWDhRWFBfUkVHX0FEQ19DTURIMwkJMHgxMTQNCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdf QURDX0NNREw0CQkweDExOA0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ01ESDQJCTB4MTFj DQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19DTURMNQkJMHgxMjANCj4gKyNkZWZpbmUgSU1Y OFFYUF9SRUdfQURDX0NNREg1CQkweDEyNA0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ01E TDYJCTB4MTI4DQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19DTURINgkJMHgxMmMNCj4gKyNk ZWZpbmUgSU1YOFFYUF9SRUdfQURDX0NNREw3CQkweDEzMA0KPiArI2RlZmluZSBJTVg4UVhQX1JF R19BRENfQ01ESDcJCTB4MTM0DQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19DTURMOAkJMHgx MzgNCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX0NNREg4CQkweDEzYw0KPiArI2RlZmluZSBJ TVg4UVhQX1JFR19BRENfQ1YxCQkweDIwMA0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ1Yy CQkweDIwNA0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ1YzCQkweDIwOA0KPiArI2RlZmlu ZSBJTVg4UVhQX1JFR19BRENfQ1Y0CQkweDIwYw0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENf UkVTRklGTwkJMHgzMDANCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX1RTVAkJMHhmZmMNCj4g Kw0KPiArLyogQURDIElFIGJpdCBzaGlmdCAqLw0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENf SUVfRk9GSUVfU0hJRlQJCSgxKQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfSUVfRldNSUVf U0hJRlQJCSgwKQ0KPiArLyogQURDIENUUkwgYml0IHNoaWZ0Ki8NCj4gKyNkZWZpbmUgSU1YOFFY UF9SRUdfQURDX0NUUkxfRklGT19SRVNFVF9TSElGVAkJKDgpDQo+ICsjZGVmaW5lIElNWDhRWFBf UkVHX0FEQ19DVFJMX1NPRlRXQVJFX1JFU0VUX1NISUZUCSgxKQ0KPiArI2RlZmluZSBJTVg4UVhQ X1JFR19BRENfQ1RSTF9BRENfRU5BQkxFCQkJKDApDQo+ICsvKiBBREMgVENUUkwgYml0IHNoaWZ0 Ki8NCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX1RDVFJMX1RDTURfU0hJRlQJKDI0KQ0KPiAr I2RlZmluZSBJTVg4UVhQX1JFR19BRENfVENUUkxfVERMWV9TSElGVAkoMTYpDQo+ICsjZGVmaW5l IElNWDhRWFBfUkVHX0FEQ19UQ1RSTF9UUFJJX1NISUZUCSg4KQ0KPiArI2RlZmluZSBJTVg4UVhQ X1JFR19BRENfVENUUkxfSFRFTl9TSElGVAkoMCkNCj4gKy8qIEFEQyBDTURMIGJpdCBzaGlmdCov DQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19DTURMX0NTQ0FMRV9TSElGVAkoOCkNCj4gKyNk ZWZpbmUgSU1YOFFYUF9SRUdfQURDX0NNRExfTU9ERV9TSElGVAkJKDcpDQo+ICsjZGVmaW5lIElN WDhRWFBfUkVHX0FEQ19DTURMX0RJRkZfU0hJRlQJCSg2KQ0KPiArI2RlZmluZSBJTVg4UVhQX1JF R19BRENfQ01ETF9BQlNFTF9TSElGVAkoNSkNCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX0NN RExfQURDSF9TSElGVAkJKDApDQo+ICsvKiBBREMgQ01ESCBiaXQgc2hpZnQqLw0KPiArI2RlZmlu ZSBJTVg4UVhQX1JFR19BRENfQ01ESF9ORVhUX1NISUZUCQkoMjQpDQo+ICsjZGVmaW5lIElNWDhR WFBfUkVHX0FEQ19DTURIX0xPT1BfU0hJRlQJCSgxNikNCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdf QURDX0NNREhfQVZHU19TSElGVAkJKDEyKQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ01E SF9TVFNfU0hJRlQJCSg4KQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ01ESF9MV0lfU0hJ RlQJCSg3KQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ01ESF9DTVBFTl9TSElGVAkoMCkN Cj4gKy8qIEFEQyBDRkcgYml0IHNoaWZ0Ki8NCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX0NG R19QV1JFTl9TSElGVAkJKDI4KQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ0ZHX1BVRExZ X1NISUZUCQkoMTYpDQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19DRkdfUkVGU0VMX1NISUZU CSg2KQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ0ZHX1BXUlNFTF9TSElGVAkoNCkNCj4g KyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX0NGR19UUFJJQ1RSTF9TSElGVAkoMCkNCj4gKy8qIEFE QyBGQ1RSTCBiaXQgc2hpZnQqLw0KPiArI2RlZmluZSBJTVg4UVhQX0FEQ19GQ1RSTF9GV01BUktf U0hJRlQJCSgxNikNCj4gKyNkZWZpbmUgSU1YOFFYUF9BRENfRkNUUkxfRldNQVJLX01BU0sJCSgw eDFmIDw8IDE2KQ0KPiArI2RlZmluZSBJTVg4UVhQX0FEQ19GQ1RSTF9GQ09VTlRfTUFTSwkJKDB4 MWYpDQo+ICsvKiBBREMgU1RBVCBiaXQgc2hpZnQqLw0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19B RENfU1RBVF9DTURBQ1RfU0hJRlQJKDI0KQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfU1RB VF9UUkdBQ1RfU0hJRlQJKDE2KQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfU1RBVF9GT0Zf U0hJRlQJCSgxKQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfU1RBVF9SRFlfU0hJRlQJCSgw KQ0KPiArDQo+ICsvKiBBREMgQ01EIFBBUkFNRVRFUiovDQo+ICsjZGVmaW5lIElNWDhRWFBfUkVH X0FEQ19DTURMX0NOQU5ORUxfU0NBTEVfRE9XTgkJKDApDQo+ICsjZGVmaW5lIElNWDhRWFBfUkVH X0FEQ19DTURMX0NIQU5ORUxfU0NBTEVfRlVMTAkJKDB4M2YpDQo+ICsjZGVmaW5lIElNWDhRWFBf UkVHX0FEQ19DTURMX1NFTF9BX0FfQl9DSEFOTkVMCQkoMCkNCj4gKyNkZWZpbmUgSU1YOFFYUF9S RUdfQURDX0NNRExfU0VMX0JfQl9BX0NIQU5ORUwJCSgxKQ0KPiArI2RlZmluZSBJTVg4UVhQX1JF R19BRENfQ01ETF9TVEFOREFSRF9SRVNPTFVUSU9OCSgwKQ0KPiArI2RlZmluZSBJTVg4UVhQX1JF R19BRENfQ01ETF9ISUdIX1JFU09MVVRJT04JCSgxKQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19B RENfQ01ETF9NT0RFX1NJTkdMRQkJKDApDQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19DTURM X01PREVfRElGRgkJCSgxKQ0KPiArDQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19DTURIX0xX SV9JTkNSRU1FTlRfRU5BQkxFCSgxKQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ01ESF9M V0lfSU5DUkVNRU5UX0RJU0FCTEUJKDApDQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19DTURI X0NNUEVOX0RJU0FCTEUJCSgwKQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19BRENfQ01ESF9DTVBF Tl9FTkFCTEVfVFJVRQkJKDIpDQo+ICsjZGVmaW5lIElNWDhRWFBfUkVHX0FEQ19DTURIX0NNUEVO X0VOQUJMRV9VTlRJTEVfVFJVRQkoMHgzKQ0KPiArDQo+ICsvKiBBREMgUEFVU0UgUEFSQU1FVEVS Ki8NCj4gKyNkZWZpbmUgSU1YOFFYUF9SRUdfQURDX1BBVVNFX0VOQUJMRQkJKDB4ODAwMDAwMDAp DQo+ICsvKiBBREMgVFJJR0dFUiBQQVJBTUVURVIqLw0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19B RENfVENUUkxfVFBSSV9QUklPUklUWV9ISUdICSgwKQ0KPiArI2RlZmluZSBJTVg4UVhQX1JFR19B RENfVENUUkxfVFBSSV9QUklPUklUWV9MT1cJKDEpDQo+ICsNCj4gKyNkZWZpbmUgSU1YOFFYUF9S RUdfQURDX1RDVFJMX0hURU5fSEFSRFdBUkVfVElSR0dFUl9ESVNBQkxFDQo+IAkoMCkNCj4gKyNk ZWZpbmUgSU1YOFFYUF9SRUdfQURDX1RDVFJDX0hURU5fSEFSRFdBUkVfVElSR0dFUl9FTkFCTEUN Cj4gCSgxKQ0KPiArDQo+ICsjZGVmaW5lIE1BWF9DTUQgKDgpDQo+ICsjZGVmaW5lIE1BWF9UUklH ICg4KQ0KPiArDQo+ICsjZGVmaW5lIElNWDhRWFBfQURDX1RJTUVPVVQJCW1zZWNzX3RvX2ppZmZp ZXMoMTAwKQ0KPiArDQo+ICtzdHJ1Y3QgaW14OHF4cF9hZGNfdHJpZ2dlcl9jdHJsIHsNCj4gKwl1 MzIgdGNtZDsNCj4gKwl1MzIgdGRseTsNCj4gKwl1MzIgdHByaTsNCj4gKwl1MzIgaHRlbjsNCj4g K307DQo+ICsNCj4gK3N0cnVjdCBpbXg4cXhwX2FkY19jbWRfbCB7DQo+ICsJdTMyIHNjYWxlOw0K PiArCXUzMiBtb2RlOw0KPiArCXUzMiBkaWZmOw0KPiArCXUzMiBhYnNlbDsNCj4gKwl1MzIgYWRj aDsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBpbXg4cXhwX2FkY19jbWRfaCB7DQo+ICsJdTMyIG5l eHQ7DQo+ICsJdTMyIGxvb3A7DQo+ICsJdTMyIGF2Z3M7DQo+ICsJdTMyIHN0czsNCj4gKwl1MzIg bHdpOw0KPiArCXUzMiBjbXBlbjsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBpbXg4cXhwX2FkY19j Zmcgew0KPiArCXUzMiBwd3JlbjsNCj4gKwl1MzIgcHVkbHk7DQo+ICsJdTMyIHJlZnNlbDsNCj4g Kwl1MzIgcHdyc2VsOw0KPiArCXUzMiB0cHJpY3RybDsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBp bXg4cXhwX2FkYyB7DQo+ICsJc3RydWN0IGRldmljZSAqZGV2Ow0KPiArCXZvaWQgX19pb21lbSAq cmVnczsNCj4gKwlzdHJ1Y3QgY2xrICpjbGs7DQo+ICsJc3RydWN0IGNsayAqaXBnX2NsazsNCj4g Kw0KPiArCXUzMiB2cmVmX3V2Ow0KPiArCXUzMiB2YWx1ZTsNCj4gKwl1MzIgY2hhbm5lbF9pZDsN Cj4gKwl1MzIgdHJpZ2dlcl9pZDsNCj4gKwl1MzIgY21kX2lkOw0KPiArDQo+ICsJc3RydWN0IHJl Z3VsYXRvciAqdnJlZjsNCj4gKwlzdHJ1Y3QgaW14OHF4cF9hZGNfY21kX2wgYWRjX2NtZF9sW01B WF9DTUQgKyAxXTsNCj4gKwlzdHJ1Y3QgaW14OHF4cF9hZGNfY21kX2ggYWRjX2NtZF9oW01BWF9D TUQgKyAxXTsNCj4gKwlzdHJ1Y3QgaW14OHF4cF9hZGNfdHJpZ2dlcl9jdHJsIGFkY190cmlnZ2Vy X2N0cmxbTUFYX1RSSUcgKyAxXTsNCj4gKwlzdHJ1Y3QgaW14OHF4cF9hZGNfY2ZnIGFkY19jZmc7 DQo+ICsJc3RydWN0IGNvbXBsZXRpb24gY29tcGxldGlvbjsNCj4gK307DQo+ICsNCj4gKyNkZWZp bmUgSU1YOFFYUF9BRENfQ0hBTihfaWR4KSB7CQkJCQlcDQo+ICsJLnR5cGUgPSBJSU9fVk9MVEFH RSwJCQkJCVwNCj4gKwkuaW5kZXhlZCA9IDEsCQkJCQkJXA0KPiArCS5jaGFubmVsID0gKF9pZHgp LAkJCQkJXA0KPiArCS5pbmZvX21hc2tfc2VwYXJhdGUgPSBCSVQoSUlPX0NIQU5fSU5GT19SQVcp LAkJXA0KPiArCS5pbmZvX21hc2tfc2hhcmVkX2J5X3R5cGUgPSBCSVQoSUlPX0NIQU5fSU5GT19T Q0FMRSkgfAlcDQo+ICsJCQkJQklUKElJT19DSEFOX0lORk9fU0FNUF9GUkVRKSwJXA0KPiArfQ0K PiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWMgaW14OHF4cF9hZGNfaWlv X2NoYW5uZWxzW10gPSB7DQo+ICsJSU1YOFFYUF9BRENfQ0hBTigwKSwNCj4gKwlJTVg4UVhQX0FE Q19DSEFOKDEpLA0KPiArCUlNWDhRWFBfQURDX0NIQU4oMiksDQo+ICsJSU1YOFFYUF9BRENfQ0hB TigzKSwNCj4gKwlJTVg4UVhQX0FEQ19DSEFOKDQpLA0KPiArCUlNWDhRWFBfQURDX0NIQU4oNSks DQo+ICsJSU1YOFFYUF9BRENfQ0hBTig2KSwNCj4gKwlJTVg4UVhQX0FEQ19DSEFOKDcpLA0KPiAr fTsNCj4gKw0KPiArc3RhdGljIHZvaWQgaW14OHF4cF9hZGNfZmVhdHVyZV9wcmVwYXJlKHN0cnVj dCBpbXg4cXhwX2FkYyAqYWRjKSB7DQo+ICsJdTMyIGk7DQo+ICsNCj4gKwlhZGMtPnRyaWdnZXJf aWQgPSAwOw0KPiArCWFkYy0+Y21kX2lkID0gMDsNCj4gKwlhZGMtPmNoYW5uZWxfaWQgPSAwOw0K PiArDQo+ICsJZm9yIChpID0gMDsgaSA8IE1BWF9DTUQgKyAxOyBpKyspIHsNCj4gKwkJYWRjLT5h ZGNfY21kX2xbaV0uc2NhbGUgPSAxOw0KPiArCQlhZGMtPmFkY19jbWRfbFtpXS5tb2RlID0gMDsN Cj4gKwkJYWRjLT5hZGNfY21kX2xbaV0uZGlmZiA9IDA7DQo+ICsJCWFkYy0+YWRjX2NtZF9sW2ld LmFic2VsID0gMDsNCj4gKwkJYWRjLT5hZGNfY21kX2xbaV0uYWRjaCA9IDA7DQo+ICsJCWFkYy0+ YWRjX2NtZF9oW2ldLm5leHQgPSAwOw0KPiArCQlhZGMtPmFkY19jbWRfaFtpXS5sb29wID0gMDsN Cj4gKwkJYWRjLT5hZGNfY21kX2hbaV0uYXZncyA9IDA7DQo+ICsJCWFkYy0+YWRjX2NtZF9oW2ld LnN0cyA9IDA7DQo+ICsJCWFkYy0+YWRjX2NtZF9oW2ldLmx3aSA9IDA7DQo+ICsJCWFkYy0+YWRj X2NtZF9oW2ldLmNtcGVuID0gMDsNCj4gKwl9DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgTUFY X1RSSUc7IGkrKykgew0KPiArCQlhZGMtPmFkY190cmlnZ2VyX2N0cmxbaV0udGNtZCA9IDA7DQo+ ICsJCWFkYy0+YWRjX3RyaWdnZXJfY3RybFtpXS50ZGx5ID0gMDsNCj4gKwkJYWRjLT5hZGNfdHJp Z2dlcl9jdHJsW2ldLnRwcmkgPSAwOw0KPiArCQlhZGMtPmFkY190cmlnZ2VyX2N0cmxbaV0uaHRl biA9IDA7DQo+ICsJfQ0KPiArDQo+ICsJYWRjLT5hZGNfY2ZnLnB3cmVuID0gMDsNCj4gKwlhZGMt PmFkY19jZmcucHVkbHkgPSAwOw0KPiArCWFkYy0+YWRjX2NmZy5yZWZzZWwgPSAwOw0KPiArCWFk Yy0+YWRjX2NmZy5wd3JzZWwgPSAwOw0KPiArCWFkYy0+YWRjX2NmZy50cHJpY3RybCA9IDA7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGlteDhxeHBfYWRjX3Jlc2V0KHN0cnVjdCBpbXg4cXhw X2FkYyAqYWRjKSB7DQo+ICsJdTMyIGN0cmw7DQo+ICsNCj4gKwkvKnNvZnR3YXJlIHJlc2V0LCBu ZWVkIHRvIGNsZWFyIHRoZSBzZXQgYml0Ki8NCj4gKwljdHJsID0gcmVhZGwoYWRjLT5yZWdzICsg SU1YOFFYUF9SRUdfQURDX0NUUkwpOw0KPiArCWN0cmwgfD0gMSA8PCBJTVg4UVhQX1JFR19BRENf Q1RSTF9TT0ZUV0FSRV9SRVNFVF9TSElGVDsNCj4gKwl3cml0ZWwoY3RybCwgYWRjLT5yZWdzICsg SU1YOFFYUF9SRUdfQURDX0NUUkwpOw0KPiArCXVkZWxheSgxMCk7DQo+ICsJY3RybCAmPSB+KDEg PDwgSU1YOFFYUF9SRUdfQURDX0NUUkxfU09GVFdBUkVfUkVTRVRfU0hJRlQpOw0KPiArCXdyaXRl bChjdHJsLCBhZGMtPnJlZ3MgKyBJTVg4UVhQX1JFR19BRENfQ1RSTCk7DQo+ICsNCj4gKwkvKiBy ZXNldCB0aGUgZmlmbyAqLw0KPiArCWN0cmwgfD0gMSA8PCBJTVg4UVhQX1JFR19BRENfQ1RSTF9G SUZPX1JFU0VUX1NISUZUOw0KPiArCXdyaXRlbChjdHJsLCBhZGMtPnJlZ3MgKyBJTVg4UVhQX1JF R19BRENfQ1RSTCk7IH0NCj4gKw0KPiArc3RhdGljIHZvaWQgaW14OHF4cF9hZGNfcmVnX2NvbmZp ZyhzdHJ1Y3QgaW14OHF4cF9hZGMgKmFkYykgew0KPiArCXUzMiBhZGNfY2ZnLCBhZGNfdGN0cmws IGFkY19jbWRsLCBhZGNfY21kaDsNCj4gKwl1MzIgdF9pZCwgY19pZDsNCj4gKw0KPiArCWFkY19j ZmcgPSBhZGMtPmFkY19jZmcucHdyZW4gPDwNCj4gSU1YOFFYUF9SRUdfQURDX0NGR19QV1JFTl9T SElGVA0KPiArCQkJfCBhZGMtPmFkY19jZmcucHVkbHkgPDwNCj4gSU1YOFFYUF9SRUdfQURDX0NG R19QVURMWV9TSElGVA0KPiArCQkJfCBhZGMtPmFkY19jZmcucmVmc2VsIDw8DQo+IElNWDhRWFBf UkVHX0FEQ19DRkdfUkVGU0VMX1NISUZUDQo+ICsJCQl8IGFkYy0+YWRjX2NmZy5wd3JzZWwgPDwN Cj4gSU1YOFFYUF9SRUdfQURDX0NGR19QV1JTRUxfU0hJRlQNCj4gKwkJCXwgYWRjLT5hZGNfY2Zn LnRwcmljdHJsIDw8DQo+IElNWDhRWFBfUkVHX0FEQ19DRkdfVFBSSUNUUkxfU0hJRlQ7DQo+ICsJ d3JpdGVsKGFkY19jZmcsIGFkYy0+cmVncyArIElNWDhRWFBfUkVHX0FEQ19DRkcpOw0KPiArDQo+ ICsJdF9pZCA9IGFkYy0+dHJpZ2dlcl9pZDsNCj4gKwlhZGNfdGN0cmwgPSBhZGMtPmFkY190cmln Z2VyX2N0cmxbdF9pZF0udGNtZCA8PA0KPiBJTVg4UVhQX1JFR19BRENfVENUUkxfVENNRF9TSElG VA0KPiArCQkJfCBhZGMtPmFkY190cmlnZ2VyX2N0cmxbdF9pZF0udGRseSA8PA0KPiBJTVg4UVhQ X1JFR19BRENfVENUUkxfVERMWV9TSElGVA0KPiArCQkJfCBhZGMtPmFkY190cmlnZ2VyX2N0cmxb dF9pZF0udHByaSA8PA0KPiBJTVg4UVhQX1JFR19BRENfVENUUkxfVFBSSV9TSElGVA0KPiArCQkJ fCBhZGMtPmFkY190cmlnZ2VyX2N0cmxbdF9pZF0uaHRlbiA8PA0KPiBJTVg4UVhQX1JFR19BRENf VENUUkxfSFRFTl9TSElGVDsNCj4gKwl3cml0ZWwoYWRjX3RjdHJsLCBhZGMtPnJlZ3MgKyBJTVg4 UVhQX1JFR19BRENfVENUUkwwICsgdF9pZCAqIDQpOw0KPiArDQo+ICsJY19pZCA9IGFkYy0+Y21k X2lkIC0gMTsNCj4gKwlhZGNfY21kbCA9IGFkYy0+YWRjX2NtZF9sW2NfaWRdLnNjYWxlIDw8DQo+ IElNWDhRWFBfUkVHX0FEQ19DTURMX0NTQ0FMRV9TSElGVA0KPiArCQkJfCBhZGMtPmFkY19jbWRf bFtjX2lkXS5tb2RlIDw8DQo+IElNWDhRWFBfUkVHX0FEQ19DTURMX01PREVfU0hJRlQNCj4gKwkJ CXwgYWRjLT5hZGNfY21kX2xbY19pZF0uZGlmZiA8PA0KPiBJTVg4UVhQX1JFR19BRENfQ01ETF9E SUZGX1NISUZUDQo+ICsJCQl8IGFkYy0+YWRjX2NtZF9sW2NfaWRdLmFic2VsIDw8DQo+IElNWDhR WFBfUkVHX0FEQ19DTURMX0FCU0VMX1NISUZUDQo+ICsJCQl8IGFkYy0+YWRjX2NtZF9sW2NfaWRd LmFkY2ggPDwNCj4gSU1YOFFYUF9SRUdfQURDX0NNRExfQURDSF9TSElGVDsNCj4gKwl3cml0ZWwo YWRjX2NtZGwsIGFkYy0+cmVncyArIElNWDhRWFBfUkVHX0FEQ19DTURMMSArIGNfaWQgKiA4KTsN Cj4gKw0KPiArCWFkY19jbWRoID0gYWRjLT5hZGNfY21kX2hbY19pZF0ubmV4dCA8PA0KPiBJTVg4 UVhQX1JFR19BRENfQ01ESF9ORVhUX1NISUZUDQo+ICsJCQl8IGFkYy0+YWRjX2NtZF9oW2NfaWRd Lmxvb3AgPDwNCj4gSU1YOFFYUF9SRUdfQURDX0NNREhfTE9PUF9TSElGVA0KPiArCQkJfCBhZGMt PmFkY19jbWRfaFtjX2lkXS5hdmdzIDw8DQo+IElNWDhRWFBfUkVHX0FEQ19DTURIX0FWR1NfU0hJ RlQNCj4gKwkJCXwgYWRjLT5hZGNfY21kX2hbY19pZF0uc3RzIDw8DQo+IElNWDhRWFBfUkVHX0FE Q19DTURIX1NUU19TSElGVA0KPiArCQkJfCBhZGMtPmFkY19jbWRfaFtjX2lkXS5sd2kgPDwNCj4g SU1YOFFYUF9SRUdfQURDX0NNREhfTFdJX1NISUZUDQo+ICsJCQl8IGFkYy0+YWRjX2NtZF9oW2Nf aWRdLmNtcGVuIDw8DQo+IElNWDhRWFBfUkVHX0FEQ19DTURIX0NNUEVOX1NISUZUOw0KPiArCXdy aXRlbChhZGNfY21kaCwgYWRjLT5yZWdzICsgSU1YOFFYUF9SRUdfQURDX0NNREgxICsgY19pZCAq IDgpOyB9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGlteDhxeHBfYWRjX21vZGVfY29uZmlnKHN0cnVj dCBpbXg4cXhwX2FkYyAqYWRjKSB7DQo+ICsJdTMyIGNtZF9pZCwgdHJpZ2dlcl9pZCwgY2hhbm5l bF9pZDsNCj4gKw0KPiArCWNoYW5uZWxfaWQgPSBhZGMtPmNoYW5uZWxfaWQ7DQo+ICsJY21kX2lk ID0gYWRjLT5jbWRfaWQgLSAxOw0KPiArCXRyaWdnZXJfaWQgPSBhZGMtPnRyaWdnZXJfaWQ7DQo+ ICsNCj4gKwkvKiBjb25maWcgdGhlIGNtZCAqLw0KPiArCWFkYy0+YWRjX2NtZF9sW2NtZF9pZF0u c2NhbGUgPQ0KPiBJTVg4UVhQX1JFR19BRENfQ01ETF9DSEFOTkVMX1NDQUxFX0ZVTEw7DQo+ICsJ YWRjLT5hZGNfY21kX2xbY21kX2lkXS5tb2RlID0NCj4gSU1YOFFYUF9SRUdfQURDX0NNRExfU1RB TkRBUkRfUkVTT0xVVElPTjsNCj4gKwlhZGMtPmFkY19jbWRfbFtjbWRfaWRdLmRpZmYgPQ0KPiBJ TVg4UVhQX1JFR19BRENfQ01ETF9NT0RFX1NJTkdMRTsNCj4gKwlhZGMtPmFkY19jbWRfbFtjbWRf aWRdLmFic2VsID0NCj4gSU1YOFFYUF9SRUdfQURDX0NNRExfU0VMX0FfQV9CX0NIQU5ORUw7DQo+ ICsJYWRjLT5hZGNfY21kX2xbY21kX2lkXS5hZGNoID0gY2hhbm5lbF9pZDsNCj4gKw0KPiArCWFk Yy0+YWRjX2NtZF9oW2NtZF9pZF0ubmV4dCA9IDA7DQo+ICsJYWRjLT5hZGNfY21kX2hbY21kX2lk XS5sb29wID0gMDsNCj4gKwlhZGMtPmFkY19jbWRfaFtjbWRfaWRdLmF2Z3MgPSA3OyAgLy8gMTI4 IHRpbWVzIGNvbnZlcnNpb24NCj4gKwlhZGMtPmFkY19jbWRfaFtjbWRfaWRdLnN0cyA9IDA7DQo+ ICsJYWRjLT5hZGNfY21kX2hbY21kX2lkXS5sd2kgPQ0KPiBJTVg4UVhQX1JFR19BRENfQ01ESF9M V0lfSU5DUkVNRU5UX0RJU0FCTEU7DQo+ICsJYWRjLT5hZGNfY21kX2hbY21kX2lkXS5jbXBlbiA9 DQo+IElNWDhRWFBfUkVHX0FEQ19DTURIX0NNUEVOX0RJU0FCTEU7DQo+ICsNCj4gKwkvKiBjb25m aWcgdGhlIHRyaWdnZXIgY29udHJvbCAqLw0KPiArCWFkYy0+YWRjX3RyaWdnZXJfY3RybFt0cmln Z2VyX2lkXS50Y21kID0gYWRjLT5jbWRfaWQ7ICAvL3BvaW50IHRvDQo+IGNtZDENCj4gKwlhZGMt PmFkY190cmlnZ2VyX2N0cmxbdHJpZ2dlcl9pZF0udGRseSA9IDA7DQo+ICsJYWRjLT5hZGNfdHJp Z2dlcl9jdHJsW3RyaWdnZXJfaWRdLnRwcmkgPQ0KPiBJTVg4UVhQX1JFR19BRENfVENUUkxfVFBS SV9QUklPUklUWV9ISUdIOw0KPiArCWFkYy0+YWRjX3RyaWdnZXJfY3RybFt0cmlnZ2VyX2lkXS5o dGVuID0NCj4gK0lNWDhRWFBfUkVHX0FEQ19UQ1RSTF9IVEVOX0hBUkRXQVJFX1RJUkdHRVJfRElT QUJMRTsNCj4gKw0KPiArCS8qIEFEQyBjb25maWd1cmF0aW9uICovDQo+ICsJYWRjLT5hZGNfY2Zn LnB3cmVuID0gMTsNCj4gKwlhZGMtPmFkY19jZmcucHVkbHkgPSAweDgwOw0KPiArCWFkYy0+YWRj X2NmZy5yZWZzZWwgPSAwOw0KPiArCWFkYy0+YWRjX2NmZy5wd3JzZWwgPSAzOw0KPiArCWFkYy0+ YWRjX2NmZy50cHJpY3RybCA9IDA7DQo+ICsNCj4gKwlpbXg4cXhwX2FkY19yZWdfY29uZmlnKGFk Yyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGlteDhxeHBfYWRjX2ZpZm9fY29uZmlnKHN0 cnVjdCBpbXg4cXhwX2FkYyAqYWRjKSB7DQo+ICsJdTMyIGZpZm9fY3RybCwgaW50ZXJydXB0X2Vu Ow0KPiArDQo+ICsJZmlmb19jdHJsID0gcmVhZGwoYWRjLT5yZWdzICsgSU1YOFFYUF9SRUdfQURD X0ZDVFJMKTsNCj4gKwlmaWZvX2N0cmwgJj0gfklNWDhRWFBfQURDX0ZDVFJMX0ZXTUFSS19NQVNL Ow0KPiArCS8qIHNldCB0aGUgd2F0ZXJtYXJrIGxldmVsIHRvIDEgKi8NCj4gKwlmaWZvX2N0cmwg fD0gMCA8PCBJTVg4UVhQX0FEQ19GQ1RSTF9GV01BUktfU0hJRlQ7DQo+ICsJd3JpdGVsKGZpZm9f Y3RybCwgYWRjLT5yZWdzICsgSU1YOFFYUF9SRUdfQURDX0ZDVFJMKTsNCj4gKw0KPiArCS8qIEZJ Rk8gV2F0ZXJtYXJrIEludGVycnVwdCBFbmFibGUgKi8NCj4gKwlpbnRlcnJ1cHRfZW4gPSByZWFk bChhZGMtPnJlZ3MgKyBJTVg4UVhQX1JFR19BRENfSUUpOw0KPiArCWludGVycnVwdF9lbiB8PSAx IDw8IElNWDhRWFBfUkVHX0FEQ19JRV9GV01JRV9TSElGVDsNCj4gKwl3cml0ZWwoaW50ZXJydXB0 X2VuLCBhZGMtPnJlZ3MgKyBJTVg4UVhQX1JFR19BRENfSUUpOyB9DQo+ICsNCj4gK3N0YXRpYyB2 b2lkIGlteDhxeHBfYWRjX2Rpc2FibGUoc3RydWN0IGlteDhxeHBfYWRjICphZGMpIHsNCj4gKwl1 MzIgY3RybDsNCj4gKw0KPiArCWN0cmwgPSByZWFkbChhZGMtPnJlZ3MgKyBJTVg4UVhQX1JFR19B RENfQ1RSTCk7DQo+ICsJY3RybCAmPSAgfigxIDw8IElNWDhRWFBfUkVHX0FEQ19DVFJMX0FEQ19F TkFCTEUpOw0KPiArCXdyaXRlbChjdHJsLCBhZGMtPnJlZ3MgKyBJTVg4UVhQX1JFR19BRENfQ1RS TCk7IH0NCj4gKw0KPiArc3RhdGljIHZvaWQgaW14OHF4cF9hZGNfZW5hYmxlKHN0cnVjdCBpbXg4 cXhwX2FkYyAqYWRjKSB7DQo+ICsJdTMyIGN0cmw7DQo+ICsNCj4gKwljdHJsID0gcmVhZGwoYWRj LT5yZWdzICsgSU1YOFFYUF9SRUdfQURDX0NUUkwpOw0KPiArCWN0cmwgfD0gMSA8PCBJTVg4UVhQ X1JFR19BRENfQ1RSTF9BRENfRU5BQkxFOw0KPiArCXdyaXRlbChjdHJsLCBhZGMtPnJlZ3MgKyBJ TVg4UVhQX1JFR19BRENfQ1RSTCk7DQo+ICsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgaW14 OHF4cF9hZGNfc3RhcnRfdHJpZ2dlcihzdHJ1Y3QgaW14OHF4cF9hZGMgKmFkYykgew0KPiArCXdy aXRlbCgxIDw8IGFkYy0+dHJpZ2dlcl9pZCwgYWRjLT5yZWdzICsNCj4gSU1YOFFYUF9SRUdfQURD X1NXVFJJRyk7IH0NCj4gKw0KPiArc3RhdGljIHUzMiBpbXg4cXhwX2FkY19nZXRfc2FtcGxlX3Jh dGUoc3RydWN0IGlteDhxeHBfYWRjICphZGMpIHsNCj4gKw0KPiArCXUzMiBpbnB1dF9jbGs7DQo+ ICsNCj4gKwlpbnB1dF9jbGsgPSBjbGtfZ2V0X3JhdGUoYWRjLT5jbGspOw0KPiArDQo+ICsJcmV0 dXJuIGlucHV0X2NsayAvIDM7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgaW14OHF4cF9hZGNf cmVhZF9yYXcoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwNCj4gKwkJCXN0cnVjdCBpaW9fY2hh bl9zcGVjIGNvbnN0ICpjaGFuLA0KPiArCQkJaW50ICp2YWwsDQo+ICsJCQlpbnQgKnZhbDIsDQo+ ICsJCQlsb25nIG1hc2spDQo+ICt7DQo+ICsNCj4gKwlzdHJ1Y3QgaW14OHF4cF9hZGMgKmFkYyA9 IGlpb19wcml2KGluZGlvX2Rldik7DQo+ICsNCj4gKwl1MzIgY2hhbm5lbDsNCj4gKwlsb25nIHJl dDsNCj4gKw0KPiArCXN3aXRjaCAobWFzaykgew0KPiArCWNhc2UgSUlPX0NIQU5fSU5GT19SQVc6 DQo+ICsJCXBtX3J1bnRpbWVfZ2V0X3N5bmMoYWRjLT5kZXYpOw0KPiArDQo+ICsJCW11dGV4X2xv Y2soJmluZGlvX2Rldi0+bWxvY2spOw0KPiArCQlyZWluaXRfY29tcGxldGlvbigmYWRjLT5jb21w bGV0aW9uKTsNCj4gKw0KPiArCQljaGFubmVsID0gY2hhbi0+Y2hhbm5lbCAmIDB4MDc7DQo+ICsJ CWFkYy0+Y2hhbm5lbF9pZCA9IGNoYW5uZWw7DQo+ICsJCWFkYy0+Y21kX2lkID0gMTsNCj4gKwkJ YWRjLT50cmlnZ2VyX2lkID0gMDsNCj4gKwkJaW14OHF4cF9hZGNfbW9kZV9jb25maWcoYWRjKTsN Cj4gKw0KPiArCQlpbXg4cXhwX2FkY19maWZvX2NvbmZpZyhhZGMpOw0KPiArDQo+ICsJCWlteDhx eHBfYWRjX2VuYWJsZShhZGMpOw0KPiArDQo+ICsJCWlteDhxeHBfYWRjX3N0YXJ0X3RyaWdnZXIo YWRjKTsNCj4gKw0KPiArCQlyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGVf dGltZW91dA0KPiArCQkJCSgmYWRjLT5jb21wbGV0aW9uLCBJTVg4UVhQX0FEQ19USU1FT1VUKTsN Cj4gKw0KPiArCQlwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KGFkYy0+ZGV2KTsNCj4gKwkJcG1f cnVudGltZV9wdXRfc3luY19hdXRvc3VzcGVuZChhZGMtPmRldik7DQo+ICsNCj4gKwkJaWYgKHJl dCA9PSAwKSB7DQo+ICsJCQltdXRleF91bmxvY2soJmluZGlvX2Rldi0+bWxvY2spOw0KPiArCQkJ cmV0dXJuIC1FVElNRURPVVQ7DQo+ICsJCX0NCj4gKwkJaWYgKHJldCA8IDApIHsNCj4gKwkJCW11 dGV4X3VubG9jaygmaW5kaW9fZGV2LT5tbG9jayk7DQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQl9 DQo+ICsNCj4gKwkJKnZhbCA9IGFkYy0+dmFsdWU7DQo+ICsJCW11dGV4X3VubG9jaygmaW5kaW9f ZGV2LT5tbG9jayk7DQo+ICsJCXJldHVybiBJSU9fVkFMX0lOVDsNCj4gKw0KPiArCWNhc2UgSUlP X0NIQU5fSU5GT19TQ0FMRToNCj4gKwkJYWRjLT52cmVmX3V2ID0gcmVndWxhdG9yX2dldF92b2x0 YWdlKGFkYy0+dnJlZik7DQo+ICsJCSp2YWwgPSBhZGMtPnZyZWZfdXYgLyAxMDAwOw0KPiArCQkq dmFsMiA9IDEyOw0KPiArCQlyZXR1cm4gSUlPX1ZBTF9GUkFDVElPTkFMX0xPRzI7DQo+ICsNCj4g KwljYXNlIElJT19DSEFOX0lORk9fU0FNUF9GUkVROg0KPiArCQkqdmFsID0gaW14OHF4cF9hZGNf Z2V0X3NhbXBsZV9yYXRlKGFkYyk7DQo+ICsJCXJldHVybiBJSU9fVkFMX0lOVDsNCj4gKw0KPiAr CWRlZmF1bHQ6DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gK30NCj4gKw0KPiArc3Rh dGljIGludCBpbXg4cXhwX2FkY19yZWFkX2RhdGEoc3RydWN0IGlteDhxeHBfYWRjICphZGMpIHsN Cj4gKwl1MzIgdmFsdWU7DQo+ICsNCj4gKwl2YWx1ZSA9IHJlYWRsKGFkYy0+cmVncyArIElNWDhR WFBfUkVHX0FEQ19SRVNGSUZPKTsNCj4gKwl2YWx1ZSAmPSAweGZmZmY7DQo+ICsJcmV0dXJuICh2 YWx1ZSA+PiAzKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlycXJldHVybl90IGlteDhxeHBfYWRj X2lzcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpIHsNCj4gKwlzdHJ1Y3QgaW14OHF4cF9hZGMgKmFk YyA9IChzdHJ1Y3QgaW14OHF4cF9hZGMgKilkZXZfaWQ7DQo+ICsNCj4gKwl1MzIgZmlmb19jb3Vu dDsNCj4gKw0KPiArCWZpZm9fY291bnQgPSByZWFkbChhZGMtPnJlZ3MgKyBJTVg4UVhQX1JFR19B RENfRkNUUkwpDQo+ICsJCQkmIElNWDhRWFBfQURDX0ZDVFJMX0ZDT1VOVF9NQVNLOw0KPiArDQo+ ICsJaWYgKGZpZm9fY291bnQpIHsNCj4gKwkJYWRjLT52YWx1ZSA9IGlteDhxeHBfYWRjX3JlYWRf ZGF0YShhZGMpOw0KPiArCQljb21wbGV0ZSgmYWRjLT5jb21wbGV0aW9uKTsNCj4gKwl9DQo+ICsN Cj4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgaW14OHF4 cF9hZGNfcmVnX2FjY2VzcyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0KPiArCQkJdW5zaWdu ZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHdyaXRldmFsLA0KPiArCQkJdW5zaWduZWQgaW50ICpy ZWFkdmFsKQ0KPiArew0KPiArCXN0cnVjdCBpbXg4cXhwX2FkYyAqYWRjID0gaWlvX3ByaXYoaW5k aW9fZGV2KTsNCj4gKw0KPiArCWlmICghcmVhZHZhbCB8fCByZWcgJSA0IHx8IHJlZyA+IElNWDhR WFBfUkVHX0FEQ19UU1QpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJcG1fcnVudGlt ZV9nZXRfc3luYyhhZGMtPmRldik7DQo+ICsNCj4gKwkqcmVhZHZhbCA9IHJlYWRsKGFkYy0+cmVn cyArIHJlZyk7DQo+ICsNCj4gKwlwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KGFkYy0+ZGV2KTsN Cj4gKwlwbV9ydW50aW1lX3B1dF9zeW5jX2F1dG9zdXNwZW5kKGFkYy0+ZGV2KTsNCj4gKw0KPiAr CXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19pbmZvIGlt eDhxeHBfYWRjX2lpb19pbmZvID0gew0KPiArCS5yZWFkX3JhdyA9ICZpbXg4cXhwX2FkY19yZWFk X3JhdywNCj4gKwkuZGVidWdmc19yZWdfYWNjZXNzID0gJmlteDhxeHBfYWRjX3JlZ19hY2Nlc3Ms IH07DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGlteDhxeHBfYWRj X21hdGNoW10gPSB7DQo+ICsJeyAuY29tcGF0aWJsZSA9ICJmc2wsaW14OHF4cC1hZGMiLCB9LA0K PiArCXsgLyogc2VudGluZWwgKi8gfQ0KPiArfTsNCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2Ys IGlteDhxeHBfYWRjX21hdGNoKTsNCj4gKw0KPiArc3RhdGljIGludCBpbXg4cXhwX2FkY19wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ICsJc3RydWN0IGlteDhxeHBfYWRj ICphZGM7DQo+ICsJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldjsNCj4gKwlzdHJ1Y3QgcmVzb3Vy Y2UgKm1lbTsNCj4gKwlpbnQgaXJxOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlpbmRpb19kZXYg PSBkZXZtX2lpb19kZXZpY2VfYWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCphZGMpKTsNCj4gKwlp ZiAoIWluZGlvX2Rldikgew0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgYWxsb2Nh dGluZyBpaW8gZGV2aWNlXG4iKTsNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsJfQ0KPiArDQo+ ICsJYWRjID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gKwlhZGMtPmRldiA9ICZwZGV2LT5kZXY7 DQo+ICsNCj4gKwltZW0gPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9N RU0sIDApOw0KPiArCWFkYy0+cmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2 LCBtZW0pOw0KPiArCWlmIChJU19FUlIoYWRjLT5yZWdzKSkgew0KPiArCQlyZXQgPSBQVFJfRVJS KGFkYy0+cmVncyk7DQo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwNCj4gKwkJCSJGYWlsZWQgdG8g cmVtYXAgYWRjIG1lbW9yeSwgZXJyID0gJWRcbiIsIHJldCk7DQo+ICsJCXJldHVybiByZXQ7DQo+ ICsJfQ0KPiArDQo+ICsJaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsNCj4gKwlpZiAo aXJxIDwgMCkgew0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJObyBpcnEgcmVzb3VyY2U/XG4i KTsNCj4gKwkJcmV0dXJuIGlycTsNCj4gKwl9DQo+ICsNCj4gKwlhZGMtPmNsayA9IGRldm1fY2xr X2dldCgmcGRldi0+ZGV2LCAicGVyIik7DQo+ICsJaWYgKElTX0VSUihhZGMtPmNsaykpIHsNCj4g KwkJcmV0ID0gUFRSX0VSUihhZGMtPmNsayk7DQo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZh aWxlZCBnZXR0aW5nIGNsb2NrLCBlcnIgPSAlZFxuIiwgcmV0KTsNCj4gKwkJcmV0dXJuIHJldDsN Cj4gKwl9DQo+ICsNCj4gKwlhZGMtPmlwZ19jbGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwg ImlwZyIpOw0KPiArCWlmIChJU19FUlIoYWRjLT5pcGdfY2xrKSkgew0KPiArCQlyZXQgPSBQVFJf RVJSKGFkYy0+aXBnX2Nsayk7DQo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCBnZXR0 aW5nIGNsb2NrLCBlcnIgPSAlZFxuIiwgcmV0KTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ ICsNCj4gKwlhZGMtPnZyZWYgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoJnBkZXYtPmRldiwgInZyZWYi KTsNCj4gKwlpZiAoSVNfRVJSKGFkYy0+dnJlZikpIHsNCj4gKwkJcmV0ID0gUFRSX0VSUihhZGMt PnZyZWYpOw0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsDQo+ICsJCQkiRmFpbGVkIGdldHRpbmcg cmVmZXJlbmNlIHZvbHRhZ2UsIGVyciA9ICVkXG4iLCByZXQpOw0KPiArCQlyZXR1cm4gcmV0Ow0K PiArCX0NCj4gKw0KPiArCXJldCA9IHJlZ3VsYXRvcl9lbmFibGUoYWRjLT52cmVmKTsNCj4gKwlp ZiAocmV0KSB7DQo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwNCj4gKwkJCSJDYW4ndCBlbmFibGUg YWRjIHJlZmVyZW5jZSB0b3Agdm9sdGFnZSwgZXJyID0gJWRcbiIsDQo+ICsJCQlyZXQpOw0KPiAr CQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0KPiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYs IGluZGlvX2Rldik7DQo+ICsNCj4gKwlpbml0X2NvbXBsZXRpb24oJmFkYy0+Y29tcGxldGlvbik7 DQo+ICsNCj4gKwlpbmRpb19kZXYtPm5hbWUgPSBkZXZfbmFtZSgmcGRldi0+ZGV2KTsNCj4gKwlp bmRpb19kZXYtPmRldi5wYXJlbnQgPSAmcGRldi0+ZGV2Ow0KPiArCWluZGlvX2Rldi0+aW5mbyA9 ICZpbXg4cXhwX2FkY19paW9faW5mbzsNCj4gKwlpbmRpb19kZXYtPm1vZGVzID0gSU5ESU9fRElS RUNUX01PREU7DQo+ICsJaW5kaW9fZGV2LT5jaGFubmVscyA9IGlteDhxeHBfYWRjX2lpb19jaGFu bmVsczsNCj4gKwlpbmRpb19kZXYtPm51bV9jaGFubmVscyA9IEFSUkFZX1NJWkUoaW14OHF4cF9h ZGNfaWlvX2NoYW5uZWxzKTsNCj4gKw0KPiArCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShhZGMt PmNsayk7DQo+ICsJaWYgKHJldCkgew0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsDQo+ICsJCQki Q291bGQgbm90IHByZXBhcmUgb3IgZW5hYmxlIHRoZSBjbG9jay5cbiIpOw0KPiArCQlnb3RvIGVy cm9yX2FkY19jbGtfZW5hYmxlOw0KPiArCX0NCj4gKw0KPiArCXJldCA9IGNsa19wcmVwYXJlX2Vu YWJsZShhZGMtPmlwZ19jbGspOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJZGV2X2VycigmcGRldi0+ ZGV2LA0KPiArCQkJIkNvdWxkIG5vdCBwcmVwYXJlIG9yIGVuYWJsZSB0aGUgY2xvY2suXG4iKTsN Cj4gKwkJZ290byBlcnJvcl9hZGNfaXBnX2Nsa19lbmFibGU7DQo+ICsJfQ0KPiArDQo+ICsJcmV0 ID0gZGV2bV9yZXF1ZXN0X2lycShhZGMtPmRldiwgaXJxLA0KPiArCQkJCWlteDhxeHBfYWRjX2lz ciwgMCwNCj4gKwkJCQlkZXZfbmFtZSgmcGRldi0+ZGV2KSwgYWRjKTsNCj4gKwlpZiAocmV0IDwg MCkgew0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgcmVxdWVzdGluZyBpcnEsIGly cSA9ICVkXG4iLCBpcnEpOw0KPiArCQlnb3RvIGVycm9yX2lpb19kZXZpY2VfcmVnaXN0ZXI7DQo+ ICsJfQ0KPiArDQo+ICsJaW14OHF4cF9hZGNfZmVhdHVyZV9wcmVwYXJlKGFkYyk7DQo+ICsJaW14 OHF4cF9hZGNfcmVzZXQoYWRjKTsNCj4gKw0KPiArCXJldCA9IGlpb19kZXZpY2VfcmVnaXN0ZXIo aW5kaW9fZGV2KTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWlteDhxeHBfYWRjX2Rpc2FibGUoYWRj KTsNCj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiQ291bGRuJ3QgcmVnaXN0ZXIgdGhlIGRldmlj ZS5cbiIpOw0KPiArCQlnb3RvIGVycm9yX2lpb19kZXZpY2VfcmVnaXN0ZXI7DQo+ICsJfQ0KPiAr DQo+ICsJcG1fcnVudGltZV9zZXRfYWN0aXZlKCZwZGV2LT5kZXYpOw0KPiArCXBtX3J1bnRpbWVf c2V0X2F1dG9zdXNwZW5kX2RlbGF5KCZwZGV2LT5kZXYsIDUwKTsNCj4gKwlwbV9ydW50aW1lX3Vz ZV9hdXRvc3VzcGVuZCgmcGRldi0+ZGV2KTsNCj4gKwlwbV9ydW50aW1lX2VuYWJsZSgmcGRldi0+ ZGV2KTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArDQo+ICtlcnJvcl9paW9fZGV2aWNlX3JlZ2lz dGVyOg0KPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShhZGMtPmlwZ19jbGspOw0KPiArZXJyb3Jf YWRjX2lwZ19jbGtfZW5hYmxlOg0KPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShhZGMtPmNsayk7 DQo+ICtlcnJvcl9hZGNfY2xrX2VuYWJsZToNCj4gKwlyZWd1bGF0b3JfZGlzYWJsZShhZGMtPnZy ZWYpOw0KPiArDQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBpbXg4 cXhwX2FkY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikgew0KPiArCXN0cnVj dCBpaW9fZGV2ICppbmRpb19kZXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gKwlz dHJ1Y3QgaW14OHF4cF9hZGMgKmFkYyA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ICsNCj4gKwlw bV9ydW50aW1lX2dldF9zeW5jKCZwZGV2LT5kZXYpOw0KPiArDQo+ICsJaWlvX2RldmljZV91bnJl Z2lzdGVyKGluZGlvX2Rldik7DQo+ICsNCj4gKwlpbXg4cXhwX2FkY19kaXNhYmxlKGFkYyk7DQo+ ICsNCj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoYWRjLT5jbGspOw0KPiArCWNsa19kaXNhYmxl X3VucHJlcGFyZShhZGMtPmlwZ19jbGspOw0KPiArCXJlZ3VsYXRvcl9kaXNhYmxlKGFkYy0+dnJl Zik7DQo+ICsNCj4gKwlwbV9ydW50aW1lX2Rpc2FibGUoJnBkZXYtPmRldik7DQo+ICsJcG1fcnVu dGltZV9wdXRfbm9pZGxlKCZwZGV2LT5kZXYpOw0KPiArDQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4g K30NCj4gKw0KPiArc3RhdGljIGludCBpbXg4cXhwX2FkY19ydW50aW1lX3N1c3BlbmQoc3RydWN0 IGRldmljZSAqZGV2KSB7DQo+ICsJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IGRldl9nZXRf ZHJ2ZGF0YShkZXYpOw0KPiArCXN0cnVjdCBpbXg4cXhwX2FkYyAqYWRjID0gaWlvX3ByaXYoaW5k aW9fZGV2KTsNCj4gKw0KPiArCWlteDhxeHBfYWRjX2Rpc2FibGUoYWRjKTsNCj4gKw0KPiArCWNs a19kaXNhYmxlX3VucHJlcGFyZShhZGMtPmNsayk7DQo+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGFkYy0+aXBnX2Nsayk7DQo+ICsJcmVndWxhdG9yX2Rpc2FibGUoYWRjLT52cmVmKTsNCj4gKw0K PiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGlteDhxeHBfYWRjX3J1bnRp bWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikgew0KPiArCXN0cnVjdCBpaW9fZGV2ICppbmRp b19kZXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwlzdHJ1Y3QgaW14OHF4cF9hZGMgKmFk YyA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCXJldCA9IHJl Z3VsYXRvcl9lbmFibGUoYWRjLT52cmVmKTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWRldl9lcnIo YWRjLT5kZXYsDQo+ICsJCQkiQ2FuJ3QgZW5hYmxlIGFkYyByZWZlcmVuY2UgdG9wIHZvbHRhZ2Us IGVyciA9ICVkXG4iLA0KPiArCQkJcmV0KTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsN Cj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoYWRjLT5jbGspOw0KPiArCWlmIChyZXQpIHsN Cj4gKwkJZGV2X2VycihhZGMtPmRldiwNCj4gKwkJCSJDb3VsZCBub3QgcHJlcGFyZSBvciBlbmFi bGUgY2xvY2suXG4iKTsNCj4gKwkJcmVndWxhdG9yX2Rpc2FibGUoYWRjLT52cmVmKTsNCj4gKwkJ cmV0dXJuIHJldDsNCj4gKwl9DQo+ICsNCj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoYWRj LT5pcGdfY2xrKTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWRldl9lcnIoYWRjLT5kZXYsDQo+ICsJ CQkiQ291bGQgbm90IHByZXBhcmUgb3IgZW5hYmxlIGNsb2NrLlxuIik7DQo+ICsJCWNsa19kaXNh YmxlX3VucHJlcGFyZShhZGMtPmNsayk7DQo+ICsJCXJlZ3VsYXRvcl9kaXNhYmxlKGFkYy0+dnJl Zik7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArCWlteDhxeHBfYWRjX3Jlc2V0KGFkYyk7 DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBk ZXZfcG1fb3BzIGlteDhxeHBfYWRjX3BtX29wcyA9IHsNCj4gKwlTRVRfU1lTVEVNX1NMRUVQX1BN X09QUyhwbV9ydW50aW1lX2ZvcmNlX3N1c3BlbmQsDQo+IHBtX3J1bnRpbWVfZm9yY2VfcmVzdW1l KQ0KPiArCVNFVF9SVU5USU1FX1BNX09QUyhpbXg4cXhwX2FkY19ydW50aW1lX3N1c3BlbmQsDQo+ ICtpbXg4cXhwX2FkY19ydW50aW1lX3Jlc3VtZSwgTlVMTCkgfTsNCj4gKw0KPiArc3RhdGljIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW14OHF4cF9hZGNfZHJpdmVyID0gew0KPiArCS5wcm9iZQkJ PSBpbXg4cXhwX2FkY19wcm9iZSwNCj4gKwkucmVtb3ZlCQk9IGlteDhxeHBfYWRjX3JlbW92ZSwN Cj4gKwkuZHJpdmVyCQk9IHsNCj4gKwkJLm5hbWUJPSAiaW14OHF4cF9hZGMiLA0KPiArCQkub2Zf bWF0Y2hfdGFibGUgPSBpbXg4cXhwX2FkY19tYXRjaCwNCj4gKwkJLnBtCT0gJmlteDhxeHBfYWRj X3BtX29wcywNCj4gKwl9LA0KPiArfTsNCj4gKw0KPiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihp bXg4cXhwX2FkY19kcml2ZXIpOw0KPiArDQo+ICtNT0RVTEVfQVVUSE9SKCJIYWlibyBDaGVuIDxo YWliby5jaGVuQG54cC5jb20+Iik7DQo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk5YUCBJTVg4UVhQ IEFEQyBkcml2ZXIiKTsNCj4gTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOw0KPiAtLQ0KPiAyLjE3 LjENCg0K