Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp4409083yba; Tue, 9 Apr 2019 18:48:56 -0700 (PDT) X-Google-Smtp-Source: APXvYqximcyJugB6E2bB3JCe8imZf5swhKPymLi0dCCGwt9lw9mcWMPEOClE7X9LdJlGqWG3zr2y X-Received: by 2002:a17:902:2ec1:: with SMTP id r59mr41121417plb.171.1554860936640; Tue, 09 Apr 2019 18:48:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554860936; cv=none; d=google.com; s=arc-20160816; b=tP714HB+peJ8uP5zyVUczHcQ9NSvgKCus0biO1xEhUM1LnnGBasoahJ8iCCv9YhPMV q0lS6ca1GLbKTgHyqnDVKIg4weFmAsyRaT7xBCwuC0J6agrzAlBoFIbeB2O+fiqnskSL 7d/R3Ye4GTW2Nn2yNsjZotNlEiD0POkD4Y6Y57y7bApZFsPjmCg50Uo/T4kTefkxoyOz 96SO/wN2fVZyZ2hINkvtDBN/vdWj6Gv2PMNqYoMVYzWYe+RTuzXUEjAohVDVrStdV7Tc LDNY7KxLuNYXaZSIEayiHvDJLD1r747I5beBHIRnKPcgSr580qOoop91M/wvbgZDj9Tb wpbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=imopN5PCp1u3UjvVpiOyac0ig7tk+VEd2JWaKKLwdMY=; b=sE9GaylVNBdfu3vNz2jtMZQp/Gv+0BpQavIKnrMw2N8gPL/uYeJfDiOL3lwvHipFH9 2sbahSErP52tUSOX8jkom4bw+qn6AHS8+2aio+LLC3xVklATv9ul9Ub5zBExtn3tqYNh 2wAL0MjACQEdZiVW8mjnNOmM+oDd4JY395LJWiyyqsad+Q5XZI7dMeZdBZtw0W9rCqNm XdQZk4xxoLfJqQmFQY0N6otNHYJa4NpIbeL+IoyAdzE1uweMgLL6xqHmqT0ROHD5gXfg f3rkKH1ttwC7HroylUZi4fzOQyIRJD8wmEA06ZTvxF48Rt4SxuZcXK3wbfehRHSODTSH owMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=EK3CUoHt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d3si23677206pfc.278.2019.04.09.18.48.41; Tue, 09 Apr 2019 18:48:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=EK3CUoHt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726919AbfDJBrz (ORCPT + 99 others); Tue, 9 Apr 2019 21:47:55 -0400 Received: from mail-eopbgr130074.outbound.protection.outlook.com ([40.107.13.74]:20494 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726577AbfDJBrz (ORCPT ); Tue, 9 Apr 2019 21:47:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=imopN5PCp1u3UjvVpiOyac0ig7tk+VEd2JWaKKLwdMY=; b=EK3CUoHt9ko99UGIOVI3CrnU9QCOouBuIjv5OgMtsXa61B/DQ6zhgNM2u9tQr3ZDs3arejkyWnu6GzUC0MzuQPobFq94znbYBC5z19IUIMyuhGRYh6zgQC3ldkWsCEO/nrBPikQ9HM6cuXUAivS6Tt9hl8ZkbxtCaj63inOCHIw= Received: from DB3PR0402MB3916.eurprd04.prod.outlook.com (52.134.72.18) by DB3PR0402MB3721.eurprd04.prod.outlook.com (52.134.67.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.14; Wed, 10 Apr 2019 01:47:40 +0000 Received: from DB3PR0402MB3916.eurprd04.prod.outlook.com ([fe80::e8ca:4f6b:e43:c170]) by DB3PR0402MB3916.eurprd04.prod.outlook.com ([fe80::e8ca:4f6b:e43:c170%3]) with mapi id 15.20.1771.016; Wed, 10 Apr 2019 01:47:40 +0000 From: Anson Huang To: "thierry.reding@gmail.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , "linux@armlinux.org.uk" , "stefan@agner.ch" , "otavio@ossystems.com.br" , Leonard Crestez , Robin Gong , "u.kleine-koenig@pengutronix.de" , "linux-pwm@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" CC: dl-linux-imx Subject: [PATCH V11 2/5] pwm: Add i.MX TPM PWM driver support Thread-Topic: [PATCH V11 2/5] pwm: Add i.MX TPM PWM driver support Thread-Index: AQHU7z9hqTzaY+VYR0K/HkDKw3ExdA== Date: Wed, 10 Apr 2019 01:47:40 +0000 Message-ID: <1554860547-18237-3-git-send-email-Anson.Huang@nxp.com> References: <1554860547-18237-1-git-send-email-Anson.Huang@nxp.com> In-Reply-To: <1554860547-18237-1-git-send-email-Anson.Huang@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.7.4 x-clientproxiedby: HK2P15301CA0004.APCP153.PROD.OUTLOOK.COM (2603:1096:202:1::14) To DB3PR0402MB3916.eurprd04.prod.outlook.com (2603:10a6:8:10::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=anson.huang@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [119.31.174.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fc53e51a-b8dd-4724-a848-08d6bd5683f3 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020);SRVR:DB3PR0402MB3721; x-ms-traffictypediagnostic: DB3PR0402MB3721: x-microsoft-antispam-prvs: x-forefront-prvs: 00032065B2 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(39860400002)(346002)(376002)(366004)(396003)(199004)(189003)(2201001)(71190400001)(71200400001)(97736004)(105586002)(68736007)(6436002)(14454004)(8676002)(8936002)(478600001)(50226002)(81166006)(81156014)(7736002)(256004)(53936002)(25786009)(6512007)(14444005)(305945005)(4326008)(6486002)(26005)(7416002)(106356001)(36756003)(66066001)(186003)(3846002)(6116002)(52116002)(316002)(102836004)(30864003)(6506007)(386003)(446003)(486006)(2906002)(76176011)(110136005)(86362001)(2616005)(476003)(2501003)(11346002)(5660300002)(99286004)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:DB3PR0402MB3721;H:DB3PR0402MB3916.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 7sRtDmvm3B6LysnGKD7i+Gsvo9gqTfbNzbXE7+2+b5Z+fg1JhuwCZId49saKAGryDeVhleSafUV+o7ONKV0H9W4xvkwVHxNU5B2/guuBN3SYiq1HdWEbwDoa+7PP/Zfd5iqjnefKX/Tua7ah6IaMJ9uBB26zlD1Lx2oy5EY9atwLOpP5TjBukPllsP+6eImrmHE5XpakE7Pkenhw4o3+aa2NaAgb8jazE/RPEJHT61cB3J9Hiu1K0uPyBHMTe7R7C7RxwjGtQ1lqtvV1x2eIP7NIjTw0XUgzfoSclF/E6tLKpCQ3FMAET1MyAoo0VRT5oniKSpFg8kEXkI3dZZ4j79vUyFw+oSJEKq4bAWd/zF2r6iBu8fvygKWLE/NGNtPwy8dWv54y5wO10t3fRzteNF86Oz1w4vNwubp6fbtM6x8= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc53e51a-b8dd-4724-a848-08d6bd5683f3 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Apr 2019 01:47:40.2097 (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-Transport-CrossTenantHeadersStamped: DB3PR0402MB3721 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org aS5NWDdVTFAgaGFzIFRQTShMb3cgUG93ZXIgVGltZXIvUHVsc2UgV2lkdGggTW9kdWxhdGlvbiBN b2R1bGUpDQppbnNpZGUsIGl0IGNhbiBzdXBwb3J0IG11bHRpcGxlIFBXTSBjaGFubmVscywgYWxs IHRoZSBjaGFubmVscw0Kc2hhcmUgc2FtZSBjb3VudGVyIGFuZCBwZXJpb2Qgc2V0dGluZywgYnV0 IGVhY2ggY2hhbm5lbCBjYW4NCmNvbmZpZ3VyZSBpdHMgZHV0eSBhbmQgcG9sYXJpdHkgaW5kZXBl bmRlbnRseS4NCg0KVGhlcmUgYXJlIHNldmVyYWwgVFBNIG1vZHVsZXMgaW4gaS5NWDdVTFAsIHRo ZSBudW1iZXIgb2YgY2hhbm5lbHMNCmluIFRQTSBtb2R1bGVzIGFyZSBkaWZmZXJlbnQsIGl0IGNh biBiZSByZWFkIGZyb20gZWFjaCBUUE0gbW9kdWxlJ3MNClBBUkFNIHJlZ2lzdGVyLg0KDQpTaWdu ZWQtb2ZmLWJ5OiBBbnNvbiBIdWFuZyA8QW5zb24uSHVhbmdAbnhwLmNvbT4NCi0tLQ0KQ2hhbmdl cyBzaW5jZSBWMTA6DQoJLSByZW1vdmUgY2hhbm5lbCBwcml2YXRlIGRhdGEgd2hpY2ggaXMgT05M WSBmb3Igc3RvcmluZyBwb2xhcml0eSwganVzdCByZWFkIGl0IGZyb20gSFcgcmVnaXN0ZXI7DQoJ LSBpbXByb3ZlIHB3bV9pbXhfdHBtX3JvdW5kX3N0YXRlKCkgYW5kIHB3bV9pbXhfdHBtX2FwcGx5 X2h3KCkgcGFyYW1ldGVycyBzZXF1ZW5jZTsNCgktIGltcHJvdmUgY29tbWVudHMgZm9yIHBvbGFy aXR5IHNldHRpbmc7DQoJLSByZWZ1c2UgcG9sYXJpdHkgY2hhbmdlIGlmIFBXTSBpcyBhY3RpdmUu DQotLS0NCiBkcml2ZXJzL3B3bS9LY29uZmlnICAgICAgIHwgIDExICsrDQogZHJpdmVycy9wd20v TWFrZWZpbGUgICAgICB8ICAgMSArDQogZHJpdmVycy9wd20vcHdtLWlteC10cG0uYyB8IDQ0MiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogMyBmaWxlcyBj aGFuZ2VkLCA0NTQgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3B3 bS9wd20taW14LXRwbS5jDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9LY29uZmlnIGIvZHJp dmVycy9wd20vS2NvbmZpZw0KaW5kZXggYzA1NGJkMS4uMTMxMWI1NDAgMTAwNjQ0DQotLS0gYS9k cml2ZXJzL3B3bS9LY29uZmlnDQorKysgYi9kcml2ZXJzL3B3bS9LY29uZmlnDQpAQCAtMjEwLDYg KzIxMCwxNyBAQCBjb25maWcgUFdNX0lNWDI3DQogCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBh cyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZQ0KIAkgIHdpbGwgYmUgY2FsbGVk IHB3bS1pbXgyNy4NCiANCitjb25maWcgUFdNX0lNWF9UUE0NCisJdHJpc3RhdGUgImkuTVggVFBN IFBXTSBzdXBwb3J0Ig0KKwlkZXBlbmRzIG9uIEFSQ0hfTVhDIHx8IENPTVBJTEVfVEVTVA0KKwlk ZXBlbmRzIG9uIEhBVkVfQ0xLICYmIEhBU19JT01FTQ0KKwloZWxwDQorCSAgR2VuZXJpYyBQV00g ZnJhbWV3b3JrIGRyaXZlciBmb3IgaS5NWDdVTFAgVFBNIG1vZHVsZSwgVFBNJ3MgZnVsbA0KKwkg IG5hbWUgaXMgTG93IFBvd2VyIFRpbWVyL1B1bHNlIFdpZHRoIE1vZHVsYXRpb24gTW9kdWxlLg0K Kw0KKwkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6 IHRoZSBtb2R1bGUNCisJICB3aWxsIGJlIGNhbGxlZCBwd20taW14LXRwbS4NCisNCiBjb25maWcg UFdNX0paNDc0MA0KIAl0cmlzdGF0ZSAiSW5nZW5pYyBKWjQ3eHggUFdNIHN1cHBvcnQiDQogCWRl cGVuZHMgb24gTUFDSF9JTkdFTklDDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vTWFrZWZpbGUg Yi9kcml2ZXJzL3B3bS9NYWtlZmlsZQ0KaW5kZXggNDQ4ODI1ZS4uYzM2ODU5OSAxMDA2NDQNCi0t LSBhL2RyaXZlcnMvcHdtL01ha2VmaWxlDQorKysgYi9kcml2ZXJzL3B3bS9NYWtlZmlsZQ0KQEAg LTE5LDYgKzE5LDcgQEAgb2JqLSQoQ09ORklHX1BXTV9ISUJWVCkJCSs9IHB3bS1oaWJ2dC5vDQog b2JqLSQoQ09ORklHX1BXTV9JTUcpCQkrPSBwd20taW1nLm8NCiBvYmotJChDT05GSUdfUFdNX0lN WDEpCQkrPSBwd20taW14MS5vDQogb2JqLSQoQ09ORklHX1BXTV9JTVgyNykJCSs9IHB3bS1pbXgy Ny5vDQorb2JqLSQoQ09ORklHX1BXTV9JTVhfVFBNKQkrPSBwd20taW14LXRwbS5vDQogb2JqLSQo Q09ORklHX1BXTV9KWjQ3NDApCSs9IHB3bS1qejQ3NDAubw0KIG9iai0kKENPTkZJR19QV01fTFAz OTQzKQkrPSBwd20tbHAzOTQzLm8NCiBvYmotJChDT05GSUdfUFdNX0xQQzE4WFhfU0NUKQkrPSBw d20tbHBjMTh4eC1zY3Qubw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL3B3bS1pbXgtdHBtLmMg Yi9kcml2ZXJzL3B3bS9wd20taW14LXRwbS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMC4uOTM0OWY0Zg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9wd20vcHdtLWlt eC10cG0uYw0KQEAgLTAsMCArMSw0NDIgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMA0KKy8qDQorICogQ29weXJpZ2h0IDIwMTgtMjAxOSBOWFAuDQorICoNCisgKiBMaW1p dGF0aW9uczoNCisgKiAtIFRoZSBUUE0gY291bnRlciBhbmQgcGVyaW9kIGNvdW50ZXIgYXJlIHNo YXJlZCBiZXR3ZWVuDQorICogICBtdWx0aXBsZSBjaGFubmVscywgc28gYWxsIGNoYW5uZWxzIHNo b3VsZCB1c2Ugc2FtZSBwZXJpb2QNCisgKiAgIHNldHRpbmdzLg0KKyAqIC0gQ2hhbmdlcyB0byBw b2xhcml0eSBjYW5ub3QgYmUgbGF0Y2hlZCBhdCB0aGUgdGltZSBvZiB0aGUNCisgKiAgIG5leHQg cGVyaW9kIHN0YXJ0Lg0KKyAqIC0gQ2hhbmdpbmcgcGVyaW9kIGFuZCBkdXR5IGN5Y2xlIHRvZ2V0 aGVyIGlzbid0IGF0b21pYywNCisgKiAgIHdpdGggdGhlIHdyb25nIHRpbWluZyBpdCBtaWdodCBo YXBwZW4gdGhhdCBhIHBlcmlvZCBpcw0KKyAqICAgcHJvZHVjZWQgd2l0aCBvbGQgZHV0eSBjeWNs ZSBidXQgbmV3IHBlcmlvZCBzZXR0aW5ncy4NCisgKi8NCisNCisjaW5jbHVkZSA8bGludXgvYml0 ZmllbGQuaD4NCisjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+DQorI2luY2x1ZGUgPGxpbnV4L2Ns ay5oPg0KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4NCisjaW5jbHVkZSA8bGludXgvaW8uaD4NCisj aW5jbHVkZSA8bGludXgvbG9nMi5oPg0KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisjaW5j bHVkZSA8bGludXgvb2YuaD4NCisjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0KKyNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgvcHdtLmg+DQor I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCisNCisjZGVmaW5lIFBXTV9JTVhfVFBNX1BBUkFNCTB4 NA0KKyNkZWZpbmUgUFdNX0lNWF9UUE1fR0xPQkFMCTB4OA0KKyNkZWZpbmUgUFdNX0lNWF9UUE1f U0MJCTB4MTANCisjZGVmaW5lIFBXTV9JTVhfVFBNX0NOVAkJMHgxNA0KKyNkZWZpbmUgUFdNX0lN WF9UUE1fTU9ECQkweDE4DQorI2RlZmluZSBQV01fSU1YX1RQTV9DblNDKG4pCSgweDIwICsgKG4p ICogMHg4KQ0KKyNkZWZpbmUgUFdNX0lNWF9UUE1fQ25WKG4pCSgweDI0ICsgKG4pICogMHg4KQ0K Kw0KKyNkZWZpbmUgUFdNX0lNWF9UUE1fUEFSQU1fQ0hBTgkJCUdFTk1BU0soNywgMCkNCisNCisj ZGVmaW5lIFBXTV9JTVhfVFBNX1NDX1BTCQkJR0VOTUFTSygyLCAwKQ0KKyNkZWZpbmUgUFdNX0lN WF9UUE1fU0NfQ01PRAkJCUdFTk1BU0soNCwgMykNCisjZGVmaW5lIFBXTV9JTVhfVFBNX1NDX0NN T0RfSU5DX0VWRVJZX0NMSwlGSUVMRF9QUkVQKFBXTV9JTVhfVFBNX1NDX0NNT0QsIDEpDQorI2Rl ZmluZSBQV01fSU1YX1RQTV9TQ19DUFdNUwkJCUJJVCg1KQ0KKw0KKyNkZWZpbmUgUFdNX0lNWF9U UE1fQ25TQ19DSEYJQklUKDcpDQorI2RlZmluZSBQV01fSU1YX1RQTV9DblNDX01TQglCSVQoNSkN CisjZGVmaW5lIFBXTV9JTVhfVFBNX0NuU0NfTVNBCUJJVCg0KQ0KKw0KKy8qDQorICogVGhlIHJl ZmVyZW5jZSBtYW51YWwgZGVzY3JpYmVzIHRoaXMgZmllbGQgYXMgdHdvIHNlcGFyYXRlIGJpdHMu IFRoZQ0KKyAqIHNlbWFudGljIG9mIHRoZSB0d28gYml0cyBpc24ndCBvcnRob2dvbmFsIHRob3Vn aCwgc28gdGhleSBhcmUgdHJlYXRlZA0KKyAqIHRvZ2V0aGVyIGFzIGEgMi1iaXQgZmllbGQgaGVy ZS4NCisgKi8NCisjZGVmaW5lIFBXTV9JTVhfVFBNX0NuU0NfRUxTCUdFTk1BU0soMywgMikNCisj ZGVmaW5lIFBXTV9JTVhfVFBNX0NuU0NfRUxTX0lOVkVSU0VECUZJRUxEX1BSRVAoUFdNX0lNWF9U UE1fQ25TQ19FTFMsIDEpDQorI2RlZmluZSBQV01fSU1YX1RQTV9DblNDX0VMU19OT1JNQUwJRklF TERfUFJFUChQV01fSU1YX1RQTV9DblNDX0VMUywgMikNCisNCisNCisjZGVmaW5lIFBXTV9JTVhf VFBNX01PRF9XSURUSAkxNg0KKyNkZWZpbmUgUFdNX0lNWF9UUE1fTU9EX01PRAlHRU5NQVNLKFBX TV9JTVhfVFBNX01PRF9XSURUSCAtIDEsIDApDQorDQorc3RydWN0IGlteF90cG1fcHdtX2NoaXAg ew0KKwlzdHJ1Y3QgcHdtX2NoaXAgY2hpcDsNCisJc3RydWN0IGNsayAqY2xrOw0KKwl2b2lkIF9f aW9tZW0gKmJhc2U7DQorCXN0cnVjdCBtdXRleCBsb2NrOw0KKwl1MzIgdXNlcl9jb3VudDsNCisJ dTMyIGVuYWJsZV9jb3VudDsNCisJdTMyIHJlYWxfcGVyaW9kOw0KK307DQorDQorc3RydWN0IGlt eF90cG1fcHdtX3BhcmFtIHsNCisJdTggcHJlc2NhbGU7DQorCXUzMiBtb2Q7DQorCXUzMiB2YWw7 DQorfTsNCisNCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpbXhfdHBtX3B3bV9jaGlwICp0b19pbXhf dHBtX3B3bV9jaGlwKHN0cnVjdCBwd21fY2hpcCAqY2hpcCkNCit7DQorCXJldHVybiBjb250YWlu ZXJfb2YoY2hpcCwgc3RydWN0IGlteF90cG1fcHdtX2NoaXAsIGNoaXApOw0KK30NCisNCitzdGF0 aWMgaW50IHB3bV9pbXhfdHBtX3JvdW5kX3N0YXRlKHN0cnVjdCBwd21fY2hpcCAqY2hpcCwNCisJ CQkJICAgc3RydWN0IGlteF90cG1fcHdtX3BhcmFtICpwLA0KKwkJCQkgICBzdHJ1Y3QgcHdtX3N0 YXRlICpyZWFsX3N0YXRlLA0KKwkJCQkgICBzdHJ1Y3QgcHdtX3N0YXRlICpzdGF0ZSkNCit7DQor CXN0cnVjdCBpbXhfdHBtX3B3bV9jaGlwICp0cG0gPSB0b19pbXhfdHBtX3B3bV9jaGlwKGNoaXAp Ow0KKwl1MzIgcmF0ZSwgcHJlc2NhbGUsIHBlcmlvZF9jb3VudCwgY2xvY2tfdW5pdDsNCisJdTY0 IHRtcDsNCisNCisJcmF0ZSA9IGNsa19nZXRfcmF0ZSh0cG0tPmNsayk7DQorCXRtcCA9ICh1NjQp c3RhdGUtPnBlcmlvZCAqIHJhdGU7DQorCWNsb2NrX3VuaXQgPSBESVZfUk9VTkRfQ0xPU0VTVF9V TEwodG1wLCBOU0VDX1BFUl9TRUMpOw0KKwlpZiAoY2xvY2tfdW5pdCA8PSBQV01fSU1YX1RQTV9N T0RfTU9EKQ0KKwkJcHJlc2NhbGUgPSAwOw0KKwllbHNlDQorCQlwcmVzY2FsZSA9IGlsb2cyKGNs b2NrX3VuaXQpICsgMSAtIFBXTV9JTVhfVFBNX01PRF9XSURUSDsNCisNCisJaWYgKCghRklFTERf RklUKFBXTV9JTVhfVFBNX1NDX1BTLCBwcmVzY2FsZSkpKQ0KKwkJcmV0dXJuIC1FUkFOR0U7DQor CXAtPnByZXNjYWxlID0gcHJlc2NhbGU7DQorDQorCXBlcmlvZF9jb3VudCA9IChjbG9ja191bml0 ICsgKCgxIDw8IHByZXNjYWxlKSA+PiAxKSkgPj4gcHJlc2NhbGU7DQorCXAtPm1vZCA9IHBlcmlv ZF9jb3VudDsNCisNCisJLyogY2FsY3VsYXRlIHJlYWwgcGVyaW9kIEhXIGNhbiBzdXBwb3J0ICov DQorCXRtcCA9ICh1NjQpcGVyaW9kX2NvdW50IDw8IHByZXNjYWxlOw0KKwl0bXAgKj0gTlNFQ19Q RVJfU0VDOw0KKwlyZWFsX3N0YXRlLT5wZXJpb2QgPSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwodG1w LCByYXRlKTsNCisNCisJLyoNCisJICogaWYgZXZlbnR1YWxseSB0aGUgUFdNIG91dHB1dCBpcyBp bmFjdGl2ZSwgZWl0aGVyDQorCSAqIGR1dHkgY3ljbGUgaXMgMCBvciBzdGF0dXMgaXMgZGlzYWJs ZWQsIG5lZWQgdG8NCisJICogbWFrZSBzdXJlIHRoZSBvdXRwdXQgcGluIGlzIGluYWN0aXZlLg0K KwkgKi8NCisJaWYgKCFzdGF0ZS0+ZW5hYmxlZCkNCisJCXJlYWxfc3RhdGUtPmR1dHlfY3ljbGUg PSAwOw0KKwllbHNlDQorCQlyZWFsX3N0YXRlLT5kdXR5X2N5Y2xlID0gc3RhdGUtPmR1dHlfY3lj bGU7DQorDQorCXRtcCA9ICh1NjQpcC0+bW9kICogcmVhbF9zdGF0ZS0+ZHV0eV9jeWNsZTsNCisJ cC0+dmFsID0gRElWX1JPVU5EX0NMT1NFU1RfVUxMKHRtcCwgcmVhbF9zdGF0ZS0+cGVyaW9kKTsN CisNCisJcmVhbF9zdGF0ZS0+cG9sYXJpdHkgPSBzdGF0ZS0+cG9sYXJpdHk7DQorCXJlYWxfc3Rh dGUtPmVuYWJsZWQgPSBzdGF0ZS0+ZW5hYmxlZDsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0 YXRpYyB2b2lkIHB3bV9pbXhfdHBtX2dldF9zdGF0ZShzdHJ1Y3QgcHdtX2NoaXAgKmNoaXAsDQor CQkJCSAgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSwNCisJCQkJICBzdHJ1Y3QgcHdtX3N0YXRlICpz dGF0ZSkNCit7DQorCXN0cnVjdCBpbXhfdHBtX3B3bV9jaGlwICp0cG0gPSB0b19pbXhfdHBtX3B3 bV9jaGlwKGNoaXApOw0KKwl1MzIgcmF0ZSwgdmFsLCBwcmVzY2FsZTsNCisJdTY0IHRtcDsNCisN CisJLyogZ2V0IHBlcmlvZCAqLw0KKwlzdGF0ZS0+cGVyaW9kID0gdHBtLT5yZWFsX3BlcmlvZDsN CisNCisJLyogZ2V0IGR1dHkgY3ljbGUgKi8NCisJcmF0ZSA9IGNsa19nZXRfcmF0ZSh0cG0tPmNs ayk7DQorCXZhbCA9IHJlYWRsKHRwbS0+YmFzZSArIFBXTV9JTVhfVFBNX1NDKTsNCisJcHJlc2Nh bGUgPSBGSUVMRF9HRVQoUFdNX0lNWF9UUE1fU0NfUFMsIHZhbCk7DQorCXRtcCA9IHJlYWRsKHRw bS0+YmFzZSArIFBXTV9JTVhfVFBNX0NuVihwd20tPmh3cHdtKSk7DQorCXRtcCA9ICh0bXAgPDwg cHJlc2NhbGUpICogTlNFQ19QRVJfU0VDOw0KKwlzdGF0ZS0+ZHV0eV9jeWNsZSA9IERJVl9ST1VO RF9DTE9TRVNUX1VMTCh0bXAsIHJhdGUpOw0KKw0KKwkvKiBnZXQgcG9sYXJpdHkgKi8NCisJdmFs ID0gcmVhZGwodHBtLT5iYXNlICsgUFdNX0lNWF9UUE1fQ25TQyhwd20tPmh3cHdtKSk7DQorCWlm ICgodmFsICYgUFdNX0lNWF9UUE1fQ25TQ19FTFMpID09IFBXTV9JTVhfVFBNX0NuU0NfRUxTX0lO VkVSU0VEKQ0KKwkJc3RhdGUtPnBvbGFyaXR5ID0gUFdNX1BPTEFSSVRZX0lOVkVSU0VEOw0KKwll bHNlDQorCQkvKg0KKwkJICogQXNzdW1lIHJlc2VydmVkIHZhbHVlcyAoMmIwMCBhbmQgMmIxMSkg dG8geWllbGQNCisJCSAqIG5vcm1hbCBwb2xhcml0eS4NCisJCSAqLw0KKwkJc3RhdGUtPnBvbGFy aXR5ID0gUFdNX1BPTEFSSVRZX05PUk1BTDsNCisNCisJLyogZ2V0IGNoYW5uZWwgc3RhdHVzICov DQorCXN0YXRlLT5lbmFibGVkID0gRklFTERfR0VUKFBXTV9JTVhfVFBNX0NuU0NfRUxTLCB2YWwp ID8gdHJ1ZSA6IGZhbHNlOw0KK30NCisNCisvKiB0aGlzIGZ1bmN0aW9uIGlzIHN1cHBvc2VkIHRv IGJlIGNhbGxlZCB3aXRoIG11dGV4IGhvbGQgKi8NCitzdGF0aWMgaW50IHB3bV9pbXhfdHBtX2Fw cGx5X2h3KHN0cnVjdCBwd21fY2hpcCAqY2hpcCwNCisJCQkJc3RydWN0IGlteF90cG1fcHdtX3Bh cmFtICpwLA0KKwkJCQlzdHJ1Y3QgcHdtX3N0YXRlICpzdGF0ZSwNCisJCQkJc3RydWN0IHB3bV9k ZXZpY2UgKnB3bSkNCit7DQorCXN0cnVjdCBpbXhfdHBtX3B3bV9jaGlwICp0cG0gPSB0b19pbXhf dHBtX3B3bV9jaGlwKGNoaXApOw0KKwlib29sIHBlcmlvZF91cGRhdGUgPSBmYWxzZTsNCisJYm9v bCBkdXR5X3VwZGF0ZSA9IGZhbHNlOw0KKwl1MzIgdmFsLCBjbW9kLCBjdXJfcHJlc2NhbGU7DQor CXVuc2lnbmVkIGxvbmcgdGltZW91dDsNCisJc3RydWN0IHB3bV9zdGF0ZSBjOw0KKw0KKwlpZiAo c3RhdGUtPnBlcmlvZCAhPSB0cG0tPnJlYWxfcGVyaW9kKSB7DQorCQkvKg0KKwkJICogVFBNIGNv dW50ZXIgaXMgc2hhcmVkIGJ5IG11bHRpcGxlIGNoYW5uZWxzLCBzbw0KKwkJICogcHJlc2NhbGUg YW5kIHBlcmlvZCBjYW4gTk9UIGJlIG1vZGlmaWVkIHdoZW4NCisJCSAqIHRoZXJlIGFyZSBtdWx0 aXBsZSBjaGFubmVscyBpbiB1c2Ugd2l0aCBkaWZmZXJlbnQNCisJCSAqIHBlcmlvZCBzZXR0aW5n cy4NCisJCSAqLw0KKwkJaWYgKHRwbS0+dXNlcl9jb3VudCA+IDEpDQorCQkJcmV0dXJuIC1FQlVT WTsNCisNCisJCXZhbCA9IHJlYWRsKHRwbS0+YmFzZSArIFBXTV9JTVhfVFBNX1NDKTsNCisJCWNt b2QgPSBGSUVMRF9HRVQoUFdNX0lNWF9UUE1fU0NfQ01PRCwgdmFsKTsNCisJCWN1cl9wcmVzY2Fs ZSA9IEZJRUxEX0dFVChQV01fSU1YX1RQTV9TQ19QUywgdmFsKTsNCisJCWlmIChjbW9kICYmIGN1 cl9wcmVzY2FsZSAhPSBwLT5wcmVzY2FsZSkNCisJCQlyZXR1cm4gLUVCVVNZOw0KKw0KKwkJLyog c2V0IFRQTSBjb3VudGVyIHByZXNjYWxlICovDQorCQl2YWwgJj0gflBXTV9JTVhfVFBNX1NDX1BT Ow0KKwkJdmFsIHw9IEZJRUxEX1BSRVAoUFdNX0lNWF9UUE1fU0NfUFMsIHAtPnByZXNjYWxlKTsN CisJCXdyaXRlbCh2YWwsIHRwbS0+YmFzZSArIFBXTV9JTVhfVFBNX1NDKTsNCisNCisJCS8qDQor CQkgKiBzZXQgcGVyaW9kIGNvdW50Og0KKwkJICogaWYgdGhlIFBXTSBpcyBkaXNhYmxlZCAoQ01P RFsxOjBdID0gMmIwMCksIHRoZW4gTU9EIHJlZ2lzdGVyDQorCQkgKiBpcyB1cGRhdGVkIHdoZW4g TU9EIHJlZ2lzdGVyIGlzIHdyaXR0ZW4uDQorCQkgKg0KKwkJICogaWYgdGhlIFBXTSBpcyBlbmFi bGVkIChDTU9EWzE6MF0g4omgIDJiMDApLCB0aGUgcGVyaW9kIGxlbmd0aA0KKwkJICogaXMgbGF0 Y2hlZCBpbnRvIGhhcmR3YXJlIHdoZW4gdGhlIG5leHQgcGVyaW9kIHN0YXJ0cy4NCisJCSAqLw0K KwkJd3JpdGVsKHAtPm1vZCwgdHBtLT5iYXNlICsgUFdNX0lNWF9UUE1fTU9EKTsNCisJCXRwbS0+ cmVhbF9wZXJpb2QgPSBzdGF0ZS0+cGVyaW9kOw0KKwkJcGVyaW9kX3VwZGF0ZSA9IHRydWU7DQor CX0NCisNCisJcHdtX2lteF90cG1fZ2V0X3N0YXRlKGNoaXAsIHB3bSwgJmMpOw0KKw0KKwkvKiBw b2xhcml0eSBpcyBOT1QgYWxsb3dlZCB0byBiZSBjaGFuZ2VkIGlmIFBXTSBpcyBhY3RpdmUgKi8N CisJaWYgKGMuZW5hYmxlZCAmJiBjLnBvbGFyaXR5ICE9IHN0YXRlLT5wb2xhcml0eSkNCisJCXJl dHVybiAtRUJVU1k7DQorDQorCWlmIChzdGF0ZS0+ZHV0eV9jeWNsZSAhPSBjLmR1dHlfY3ljbGUp IHsNCisJCS8qDQorCQkgKiBzZXQgY2hhbm5lbCB2YWx1ZToNCisJCSAqIGlmIHRoZSBQV00gaXMg ZGlzYWJsZWQgKENNT0RbMTowXSA9IDJiMDApLCB0aGVuIENuViByZWdpc3Rlcg0KKwkJICogaXMg dXBkYXRlZCB3aGVuIENuViByZWdpc3RlciBpcyB3cml0dGVuLg0KKwkJICoNCisJCSAqIGlmIHRo ZSBQV00gaXMgZW5hYmxlZCAoQ01PRFsxOjBdIOKJoCAyYjAwKSwgdGhlIGR1dHkgbGVuZ3RoDQor CQkgKiBpcyBsYXRjaGVkIGludG8gaGFyZHdhcmUgd2hlbiB0aGUgbmV4dCBwZXJpb2Qgc3RhcnRz Lg0KKwkJICovDQorCQl3cml0ZWwocC0+dmFsLCB0cG0tPmJhc2UgKyBQV01fSU1YX1RQTV9DblYo cHdtLT5od3B3bSkpOw0KKwkJZHV0eV91cGRhdGUgPSB0cnVlOw0KKwl9DQorDQorCS8qIG1ha2Ug c3VyZSBNT0QgJiBDblYgcmVnaXN0ZXJzIGFyZSB1cGRhdGVkICovDQorCWlmIChwZXJpb2RfdXBk YXRlIHx8IGR1dHlfdXBkYXRlKSB7DQorCQl0aW1lb3V0ID0gamlmZmllcyArIG1zZWNzX3RvX2pp ZmZpZXModHBtLT5yZWFsX3BlcmlvZCAvDQorCQkJCQkJICAgICBOU0VDX1BFUl9NU0VDICsgMSk7 DQorCQl3aGlsZSAocmVhZGwodHBtLT5iYXNlICsgUFdNX0lNWF9UUE1fTU9EKSAhPSBwLT5tb2QN CisJCSAgICAgICB8fCByZWFkbCh0cG0tPmJhc2UgKyBQV01fSU1YX1RQTV9DblYocHdtLT5od3B3 bSkpDQorCQkgICAgICAgIT0gcC0+dmFsKSB7DQorCQkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywg dGltZW91dCkpDQorCQkJCXJldHVybiAtRVRJTUU7DQorCQkJY3B1X3JlbGF4KCk7DQorCQl9DQor CX0NCisNCisJLyoNCisJICogcG9sYXJpdHkgc2V0dGluZ3Mgd2lsbCBlbmFibGVkL2Rpc2FibGUg b3V0cHV0IHN0YXR1cw0KKwkgKiBpbW1lZGlhdGVseSwgc28gaWYgdGhlIGNoYW5uZWwgaXMgZGlz YWJsZWQsIG5lZWQgdG8NCisJICogbWFrZSBzdXJlIE1TQS9NU0IvRUxTIGFyZSBzZXQgdG8gMCB3 aGljaCBtZWFucyBjaGFubmVsDQorCSAqIGRpc2FibGVkLg0KKwkgKi8NCisJdmFsID0gcmVhZGwo dHBtLT5iYXNlICsgUFdNX0lNWF9UUE1fQ25TQyhwd20tPmh3cHdtKSk7DQorCXZhbCAmPSB+KFBX TV9JTVhfVFBNX0NuU0NfRUxTIHwgUFdNX0lNWF9UUE1fQ25TQ19NU0EgfA0KKwkJIFBXTV9JTVhf VFBNX0NuU0NfTVNCKTsNCisJaWYgKHN0YXRlLT5lbmFibGVkKSB7DQorCQkvKg0KKwkJICogc2V0 IHBvbGFyaXR5IChmb3IgZWRnZS1hbGlnbmVkIFBXTSBtb2RlcykNCisJCSAqDQorCQkgKiBFTFNb MTowXSA9IDJiMTAgeWllbGRzIG5vcm1hbCBwb2xhcml0eSBiZWhhdmlvdXIsDQorCQkgKiBFTFNb MTowXSA9IDJiMDEgeWllbGRzIGludmVyc2VkIHBvbGFyaXR5Lg0KKwkJICogVGhlIG90aGVyIHZh bHVlcyBhcmUgcmVzZXJ2ZWQuDQorCQkgKi8NCisJCXZhbCB8PSBQV01fSU1YX1RQTV9DblNDX01T QjsNCisJCXZhbCB8PSAoc3RhdGUtPnBvbGFyaXR5ID09IFBXTV9QT0xBUklUWV9OT1JNQUwpID8N CisJCQlQV01fSU1YX1RQTV9DblNDX0VMU19OT1JNQUwgOg0KKwkJCVBXTV9JTVhfVFBNX0NuU0Nf RUxTX0lOVkVSU0VEOw0KKwl9DQorCXdyaXRlbCh2YWwsIHRwbS0+YmFzZSArIFBXTV9JTVhfVFBN X0NuU0MocHdtLT5od3B3bSkpOw0KKw0KKwkvKiBjb250cm9sIHRoZSBjb3VudGVyIHN0YXR1cyAq Lw0KKwlpZiAoc3RhdGUtPmVuYWJsZWQgIT0gYy5lbmFibGVkKSB7DQorCQl2YWwgPSByZWFkbCh0 cG0tPmJhc2UgKyBQV01fSU1YX1RQTV9TQyk7DQorCQlpZiAoc3RhdGUtPmVuYWJsZWQpIHsNCisJ CQlpZiAoKyt0cG0tPmVuYWJsZV9jb3VudCA9PSAxKQ0KKwkJCQl2YWwgfD0gUFdNX0lNWF9UUE1f U0NfQ01PRF9JTkNfRVZFUllfQ0xLOw0KKwkJfSBlbHNlIHsNCisJCQlpZiAoLS10cG0tPmVuYWJs ZV9jb3VudCA9PSAwKQ0KKwkJCQl2YWwgJj0gflBXTV9JTVhfVFBNX1NDX0NNT0Q7DQorCQl9DQor CQl3cml0ZWwodmFsLCB0cG0tPmJhc2UgKyBQV01fSU1YX1RQTV9TQyk7DQorCX0NCisNCisJcmV0 dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgcHdtX2lteF90cG1fYXBwbHkoc3RydWN0IHB3bV9j aGlwICpjaGlwLA0KKwkJCSAgICAgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSwNCisJCQkgICAgIHN0 cnVjdCBwd21fc3RhdGUgKnN0YXRlKQ0KK3sNCisJc3RydWN0IGlteF90cG1fcHdtX2NoaXAgKnRw bSA9IHRvX2lteF90cG1fcHdtX2NoaXAoY2hpcCk7DQorCXN0cnVjdCBpbXhfdHBtX3B3bV9wYXJh bSBwYXJhbTsNCisJc3RydWN0IHB3bV9zdGF0ZSByZWFsX3N0YXRlOw0KKwlpbnQgcmV0Ow0KKw0K KwlyZXQgPSBwd21faW14X3RwbV9yb3VuZF9zdGF0ZShjaGlwLCAmcGFyYW0sICZyZWFsX3N0YXRl LCBzdGF0ZSk7DQorCWlmIChyZXQpDQorCQlyZXR1cm4gcmV0Ow0KKw0KKwltdXRleF9sb2NrKCZ0 cG0tPmxvY2spOw0KKwlyZXQgPSBwd21faW14X3RwbV9hcHBseV9odyhjaGlwLCAmcGFyYW0sICZy ZWFsX3N0YXRlLCBwd20pOw0KKwltdXRleF91bmxvY2soJnRwbS0+bG9jayk7DQorDQorCXJldHVy biByZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgcHdtX2lteF90cG1fcmVxdWVzdChzdHJ1Y3QgcHdt X2NoaXAgKmNoaXAsIHN0cnVjdCBwd21fZGV2aWNlICpwd20pDQorew0KKwlzdHJ1Y3QgaW14X3Rw bV9wd21fY2hpcCAqdHBtID0gdG9faW14X3RwbV9wd21fY2hpcChjaGlwKTsNCisNCisJbXV0ZXhf bG9jaygmdHBtLT5sb2NrKTsNCisJdHBtLT51c2VyX2NvdW50Kys7DQorCW11dGV4X3VubG9jaygm dHBtLT5sb2NrKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHB3bV9pbXhf dHBtX2ZyZWUoc3RydWN0IHB3bV9jaGlwICpjaGlwLCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtKQ0K K3sNCisJc3RydWN0IGlteF90cG1fcHdtX2NoaXAgKnRwbSA9IHRvX2lteF90cG1fcHdtX2NoaXAo Y2hpcCk7DQorDQorCW11dGV4X2xvY2soJnRwbS0+bG9jayk7DQorCXRwbS0+dXNlcl9jb3VudC0t Ow0KKwltdXRleF91bmxvY2soJnRwbS0+bG9jayk7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgcHdtX29wcyBpbXhfdHBtX3B3bV9vcHMgPSB7DQorCS5yZXF1ZXN0ID0gcHdtX2lteF90cG1f cmVxdWVzdCwNCisJLmZyZWUgPSBwd21faW14X3RwbV9mcmVlLA0KKwkuZ2V0X3N0YXRlID0gcHdt X2lteF90cG1fZ2V0X3N0YXRlLA0KKwkuYXBwbHkgPSBwd21faW14X3RwbV9hcHBseSwNCisJLm93 bmVyID0gVEhJU19NT0RVTEUsDQorfTsNCisNCitzdGF0aWMgaW50IHB3bV9pbXhfdHBtX3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQorew0KKwlzdHJ1Y3QgaW14X3RwbV9wd21f Y2hpcCAqdHBtOw0KKwlpbnQgcmV0Ow0KKwl1MzIgdmFsOw0KKw0KKwl0cG0gPSBkZXZtX2t6YWxs b2MoJnBkZXYtPmRldiwgc2l6ZW9mKCp0cG0pLCBHRlBfS0VSTkVMKTsNCisJaWYgKCF0cG0pDQor CQlyZXR1cm4gLUVOT01FTTsNCisNCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgdHBtKTsN CisNCisJdHBtLT5iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDAp Ow0KKwlpZiAoSVNfRVJSKHRwbS0+YmFzZSkpDQorCQlyZXR1cm4gUFRSX0VSUih0cG0tPmJhc2Up Ow0KKw0KKwl0cG0tPmNsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCBOVUxMKTsNCisJaWYg KElTX0VSUih0cG0tPmNsaykpIHsNCisJCXJldCA9IFBUUl9FUlIodHBtLT5jbGspOw0KKwkJaWYg KHJldCAhPSAtRVBST0JFX0RFRkVSKQ0KKwkJCWRldl9lcnIoJnBkZXYtPmRldiwNCisJCQkJImZh aWxlZCB0byBnZXQgUFdNIGNsb2NrOiAlZFxuIiwgcmV0KTsNCisJCXJldHVybiByZXQ7DQorCX0N CisNCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHRwbS0+Y2xrKTsNCisJaWYgKHJldCkgew0K KwkJZGV2X2VycigmcGRldi0+ZGV2LA0KKwkJCSJmYWlsZWQgdG8gcHJlcGFyZSBvciBlbmFibGUg Y2xvY2s6ICVkXG4iLCByZXQpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwl0cG0tPmNoaXAu ZGV2ID0gJnBkZXYtPmRldjsNCisJdHBtLT5jaGlwLm9wcyA9ICZpbXhfdHBtX3B3bV9vcHM7DQor CXRwbS0+Y2hpcC5iYXNlID0gLTE7DQorCXRwbS0+Y2hpcC5vZl94bGF0ZSA9IG9mX3B3bV94bGF0 ZV93aXRoX2ZsYWdzOw0KKwl0cG0tPmNoaXAub2ZfcHdtX25fY2VsbHMgPSAzOw0KKw0KKwkvKiBn ZXQgbnVtYmVyIG9mIGNoYW5uZWxzICovDQorCXZhbCA9IHJlYWRsKHRwbS0+YmFzZSArIFBXTV9J TVhfVFBNX1BBUkFNKTsNCisJdHBtLT5jaGlwLm5wd20gPSBGSUVMRF9HRVQoUFdNX0lNWF9UUE1f UEFSQU1fQ0hBTiwgdmFsKTsNCisNCisJbXV0ZXhfaW5pdCgmdHBtLT5sb2NrKTsNCisNCisJcmV0 ID0gcHdtY2hpcF9hZGQoJnRwbS0+Y2hpcCk7DQorCWlmIChyZXQpIHsNCisJCWRldl9lcnIoJnBk ZXYtPmRldiwgImZhaWxlZCB0byBhZGQgUFdNIGNoaXA6ICVkXG4iLCByZXQpOw0KKwkJY2xrX2Rp c2FibGVfdW5wcmVwYXJlKHRwbS0+Y2xrKTsNCisJfQ0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisN CitzdGF0aWMgaW50IHB3bV9pbXhfdHBtX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQ0KK3sNCisJc3RydWN0IGlteF90cG1fcHdtX2NoaXAgKnRwbSA9IHBsYXRmb3JtX2dldF9k cnZkYXRhKHBkZXYpOw0KKwlpbnQgcmV0ID0gcHdtY2hpcF9yZW1vdmUoJnRwbS0+Y2hpcCk7DQor DQorCWNsa19kaXNhYmxlX3VucHJlcGFyZSh0cG0tPmNsayk7DQorDQorCXJldHVybiByZXQ7DQor fQ0KKw0KK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgcHdtX2lteF90cG1fc3VzcGVuZChzdHJ1 Y3QgZGV2aWNlICpkZXYpDQorew0KKwlzdHJ1Y3QgaW14X3RwbV9wd21fY2hpcCAqdHBtID0gZGV2 X2dldF9kcnZkYXRhKGRldik7DQorDQorCWlmICh0cG0tPmVuYWJsZV9jb3VudCA+IDApDQorCQly ZXR1cm4gLUVCVVNZOw0KKw0KKwljbGtfZGlzYWJsZV91bnByZXBhcmUodHBtLT5jbGspOw0KKw0K KwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBfX21heWJlX3VudXNlZCBwd21faW14X3Rw bV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJc3RydWN0IGlteF90cG1fcHdtX2No aXAgKnRwbSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KKwlpbnQgcmV0ID0gMDsNCisNCisJcmV0 ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHRwbS0+Y2xrKTsNCisJaWYgKHJldCkNCisJCWRldl9lcnIo ZGV2LA0KKwkJCSJmYWlsZWQgdG8gcHJlcGFyZSBvciBlbmFibGUgY2xvY2s6ICVkXG4iLA0KKwkJ CXJldCk7DQorDQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRpYyBTSU1QTEVfREVWX1BNX09Q UyhpbXhfdHBtX3B3bV9wbSwNCisJCQkgcHdtX2lteF90cG1fc3VzcGVuZCwgcHdtX2lteF90cG1f cmVzdW1lKTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBpbXhfdHBtX3B3 bV9kdF9pZHNbXSA9IHsNCisJeyAuY29tcGF0aWJsZSA9ICJmc2wsaW14N3VscC1wd20iLCB9LA0K Kwl7IC8qIHNlbnRpbmVsICovIH0NCit9Ow0KK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGlteF90 cG1fcHdtX2R0X2lkcyk7DQorDQorc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW14X3Rw bV9wd21fZHJpdmVyID0gew0KKwkuZHJpdmVyID0gew0KKwkJLm5hbWUgPSAiaW14N3VscC10cG0t cHdtIiwNCisJCS5vZl9tYXRjaF90YWJsZSA9IGlteF90cG1fcHdtX2R0X2lkcywNCisJCS5wbSA9 ICZpbXhfdHBtX3B3bV9wbSwNCisJfSwNCisJLnByb2JlCT0gcHdtX2lteF90cG1fcHJvYmUsDQor CS5yZW1vdmUgPSBwd21faW14X3RwbV9yZW1vdmUsDQorfTsNCittb2R1bGVfcGxhdGZvcm1fZHJp dmVyKGlteF90cG1fcHdtX2RyaXZlcik7DQorDQorTU9EVUxFX0FVVEhPUigiQW5zb24gSHVhbmcg PEFuc29uLkh1YW5nQG54cC5jb20+Iik7DQorTU9EVUxFX0RFU0NSSVBUSU9OKCJpLk1YIFRQTSBQ V00gRHJpdmVyIik7DQorTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOw0KLS0gDQoyLjcuNA0KDQo=