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=-8.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,T_DKIMWL_WL_HIGH,USER_AGENT_GIT autolearn=unavailable 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 048E5C04AB3 for ; Thu, 9 May 2019 13:29:48 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C8AD12175B for ; Thu, 9 May 2019 13:29:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="SrW9T570"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="TYKNP/iq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C8AD12175B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nxp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-ID:In-Reply-To: References:Message-ID:Date:Subject:To:From:Reply-To:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=g+jDeWX5CzIfaFYOi4g8NvdBRxmuT+CpqWKJfzEyQmc=; b=SrW9T570a8I06X 7lZ/7P+6c/u3WJKkSCpBJtmjXT4d203yClYxPG0l1F1vZvPBuzOPc6/w5DIya3hPq2nyjeJJ0lXbi FN2573q7b4SF1nl2xNajqWII+7LuMbca8Skketyt2ISsJd99iO+hUSR5XVqNZTOJZsavL+CGJ7S/O NYpDZLf8rJGfj+CetIIdCozLZDgw0C5ZEDmHTyYRy066V868wsFyYLkwlDRJA7dYU68ii7Tn9Miou vKXRUxJsV+fO3EeIvZkDtrMBGseoLahe1RxTJ8cgqMye7gAOOTEyHHg6Hlf04Q4PWYfPIngQ0Vf5P 9kt1vrGXCIvrl2ZRzyuw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1hOj7H-0000Rc-Kc; Thu, 09 May 2019 13:29:43 +0000 Received: from mail-eopbgr50068.outbound.protection.outlook.com ([40.107.5.68] helo=EUR03-VE1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hOj77-0000E9-ES for linux-arm-kernel@lists.infradead.org; Thu, 09 May 2019 13:29:40 +0000 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=nWc5yNdkseNezaHsjsE0t55Te8uHelPF0peBYVN5iCQ=; b=TYKNP/iqIrS1LJ4hC6w9pkFteZVKFqzAV1cfQ3p7V7gQlWSmARfraDBPJxt6B3sT0WNwz5owXMZcCmH9qLgNu+HN5tWx3++tpbw7fHfwAH60RXwpUkyDeucW4peN6bZ2auOlrPrAt+xxdVeY+5KGRdaK1O/TDXUgcnYhnKC0TaE= Received: from DB3PR0402MB3916.eurprd04.prod.outlook.com (52.134.72.18) by DB3PR0402MB3673.eurprd04.prod.outlook.com (52.134.70.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1856.11; Thu, 9 May 2019 13:29:29 +0000 Received: from DB3PR0402MB3916.eurprd04.prod.outlook.com ([fe80::d035:3bd0:a56a:189d]) by DB3PR0402MB3916.eurprd04.prod.outlook.com ([fe80::d035:3bd0:a56a:189d%2]) with mapi id 15.20.1878.022; Thu, 9 May 2019 13:29:29 +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" , "otavio@ossystems.com.br" , Leonard Crestez , Robin Gong , "schnitzeltony@gmail.com" , "u.kleine-koenig@pengutronix.de" , "jan.tuerk@emtrion.com" , "linux-pwm@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" Subject: [PATCH V12 2/5] pwm: Add i.MX TPM PWM driver support Thread-Topic: [PATCH V12 2/5] pwm: Add i.MX TPM PWM driver support Thread-Index: AQHVBms6d7ygmfwIuUSDUf7Xa7XKfQ== Date: Thu, 9 May 2019 13:29:29 +0000 Message-ID: <1557408252-21281-3-git-send-email-Anson.Huang@nxp.com> References: <1557408252-21281-1-git-send-email-Anson.Huang@nxp.com> In-Reply-To: <1557408252-21281-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: HK0P153CA0001.APCP153.PROD.OUTLOOK.COM (2603:1096:203:18::13) 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: 735adda7-656d-4095-2506-08d6d4825cfd x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:DB3PR0402MB3673; x-ms-traffictypediagnostic: DB3PR0402MB3673: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6430; x-forefront-prvs: 003245E729 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(136003)(396003)(39860400002)(346002)(366004)(199004)(189003)(7416002)(6512007)(86362001)(2201001)(6486002)(305945005)(66556008)(66946007)(73956011)(66476007)(64756008)(7736002)(66446008)(316002)(99286004)(2906002)(186003)(6436002)(26005)(53936002)(102836004)(66066001)(50226002)(4326008)(76176011)(36756003)(52116002)(81156014)(386003)(6506007)(2501003)(8936002)(71200400001)(14454004)(81166006)(8676002)(71190400001)(68736007)(110136005)(5660300002)(3846002)(11346002)(14444005)(446003)(30864003)(256004)(66574012)(478600001)(486006)(476003)(25786009)(6116002)(2616005)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB3PR0402MB3673; 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: v6jHaYcHq6AE/KDJhFn2JsapE92NIOLbcWz+CSLE19bwd+trzeolH9driuhnEmXndPcIbVCntSPPnNIz7uwjk/iGAmFhxFnTFDzqw/zL+pLd08tGwfQ2a+IFoBODVBDUjnNTEViIuW+sEEzWWaqS1Ah8+LqXDWwnxkJAhssxyBVkW9DaUUaGvqwlxT+bE7OaqDX+EDtmstHuIx+dyc8JxkfJB4OxMRQ+cCmmobTKN4wNE1h0ZIE4ia29jHl8DVUTEzCwcbX9tIUM0tgxwwtC08Tr92D6xKATBzU3ORV2yYImoy4ou6xDWIzQlaxA0tRtF6eoyS4k03/0/bjq4U/oddtmpKOVaaWDO6h9TjljexEGq0u643kpd3Z8ck+xhJUWbRJljp2SSL8arWfqxTbtryRQ0AFijKwxQo90TFET+X8= Content-ID: <7528E1D2B156DA4784BF50ED0ECAD812@eurprd04.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 735adda7-656d-4095-2506-08d6d4825cfd X-MS-Exchange-CrossTenant-originalarrivaltime: 09 May 2019 13:29:29.4407 (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: DB3PR0402MB3673 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190509_062934_465194_AC2750C1 X-CRM114-Status: GOOD ( 22.54 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dl-linux-imx Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org aS5NWDdVTFAgaGFzIFRQTShMb3cgUG93ZXIgVGltZXIvUHVsc2UgV2lkdGggTW9kdWxhdGlvbiBN b2R1bGUpDQppbnNpZGUsIGl0IGNhbiBzdXBwb3J0IG11bHRpcGxlIFBXTSBjaGFubmVscywgYWxs IHRoZSBjaGFubmVscw0Kc2hhcmUgc2FtZSBjb3VudGVyIGFuZCBwZXJpb2Qgc2V0dGluZywgYnV0 IGVhY2ggY2hhbm5lbCBjYW4NCmNvbmZpZ3VyZSBpdHMgZHV0eSBhbmQgcG9sYXJpdHkgaW5kZXBl bmRlbnRseS4NCg0KVGhlcmUgYXJlIHNldmVyYWwgVFBNIG1vZHVsZXMgaW4gaS5NWDdVTFAsIHRo ZSBudW1iZXIgb2YgY2hhbm5lbHMNCmluIFRQTSBtb2R1bGVzIGFyZSBkaWZmZXJlbnQsIGl0IGNh biBiZSByZWFkIGZyb20gZWFjaCBUUE0gbW9kdWxlJ3MNClBBUkFNIHJlZ2lzdGVyLg0KDQpTaWdu ZWQtb2ZmLWJ5OiBBbnNvbiBIdWFuZyA8QW5zb24uSHVhbmdAbnhwLmNvbT4NClJldmlld2VkLWJ5 OiBVd2UgS2xlaW5lLUvDtm5pZyA8dS5rbGVpbmUta29lbmlnQHBlbmd1dHJvbml4LmRlPg0KLS0t DQpDaGFuZ2VzIHNpbmNlIFYxMToNCgktIE9OTFkgYWRkIGZ1bmN0aW9uIGNvbW1lbnQgdG8gcHdt X2lteF90cG1fcm91bmRfc3RhdGUoKSwgbm8gY29kZSBjaGFuZ2UuDQotLS0NCiBkcml2ZXJzL3B3 bS9LY29uZmlnICAgICAgIHwgIDExICsrDQogZHJpdmVycy9wd20vTWFrZWZpbGUgICAgICB8ICAg MSArDQogZHJpdmVycy9wd20vcHdtLWlteC10cG0uYyB8IDQ0OCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQogMyBmaWxlcyBjaGFuZ2VkLCA0NjAgaW5zZXJ0 aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3B3bS9wd20taW14LXRwbS5jDQoN CmRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9LY29uZmlnIGIvZHJpdmVycy9wd20vS2NvbmZpZw0K aW5kZXggYzA1NGJkMS4uMTMxMWI1NDAgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3B3bS9LY29uZmln DQorKysgYi9kcml2ZXJzL3B3bS9LY29uZmlnDQpAQCAtMjEwLDYgKzIxMCwxNyBAQCBjb25maWcg UFdNX0lNWDI3DQogCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3Nl IE0gaGVyZTogdGhlIG1vZHVsZQ0KIAkgIHdpbGwgYmUgY2FsbGVkIHB3bS1pbXgyNy4NCiANCitj b25maWcgUFdNX0lNWF9UUE0NCisJdHJpc3RhdGUgImkuTVggVFBNIFBXTSBzdXBwb3J0Ig0KKwlk ZXBlbmRzIG9uIEFSQ0hfTVhDIHx8IENPTVBJTEVfVEVTVA0KKwlkZXBlbmRzIG9uIEhBVkVfQ0xL ICYmIEhBU19JT01FTQ0KKwloZWxwDQorCSAgR2VuZXJpYyBQV00gZnJhbWV3b3JrIGRyaXZlciBm b3IgaS5NWDdVTFAgVFBNIG1vZHVsZSwgVFBNJ3MgZnVsbA0KKwkgIG5hbWUgaXMgTG93IFBvd2Vy IFRpbWVyL1B1bHNlIFdpZHRoIE1vZHVsYXRpb24gTW9kdWxlLg0KKw0KKwkgIFRvIGNvbXBpbGUg dGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUNCisJICB3 aWxsIGJlIGNhbGxlZCBwd20taW14LXRwbS4NCisNCiBjb25maWcgUFdNX0paNDc0MA0KIAl0cmlz dGF0ZSAiSW5nZW5pYyBKWjQ3eHggUFdNIHN1cHBvcnQiDQogCWRlcGVuZHMgb24gTUFDSF9JTkdF TklDDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vTWFrZWZpbGUgYi9kcml2ZXJzL3B3bS9NYWtl ZmlsZQ0KaW5kZXggNDQ4ODI1ZS4uYzM2ODU5OSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvcHdtL01h a2VmaWxlDQorKysgYi9kcml2ZXJzL3B3bS9NYWtlZmlsZQ0KQEAgLTE5LDYgKzE5LDcgQEAgb2Jq LSQoQ09ORklHX1BXTV9ISUJWVCkJCSs9IHB3bS1oaWJ2dC5vDQogb2JqLSQoQ09ORklHX1BXTV9J TUcpCQkrPSBwd20taW1nLm8NCiBvYmotJChDT05GSUdfUFdNX0lNWDEpCQkrPSBwd20taW14MS5v DQogb2JqLSQoQ09ORklHX1BXTV9JTVgyNykJCSs9IHB3bS1pbXgyNy5vDQorb2JqLSQoQ09ORklH X1BXTV9JTVhfVFBNKQkrPSBwd20taW14LXRwbS5vDQogb2JqLSQoQ09ORklHX1BXTV9KWjQ3NDAp CSs9IHB3bS1qejQ3NDAubw0KIG9iai0kKENPTkZJR19QV01fTFAzOTQzKQkrPSBwd20tbHAzOTQz Lm8NCiBvYmotJChDT05GSUdfUFdNX0xQQzE4WFhfU0NUKQkrPSBwd20tbHBjMTh4eC1zY3Qubw0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL3B3bS1pbXgtdHBtLmMgYi9kcml2ZXJzL3B3bS9wd20t aW14LXRwbS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uNjJmMWVjMg0K LS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9wd20vcHdtLWlteC10cG0uYw0KQEAgLTAsMCAr MSw0NDggQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKy8qDQorICog Q29weXJpZ2h0IDIwMTgtMjAxOSBOWFAuDQorICoNCisgKiBMaW1pdGF0aW9uczoNCisgKiAtIFRo ZSBUUE0gY291bnRlciBhbmQgcGVyaW9kIGNvdW50ZXIgYXJlIHNoYXJlZCBiZXR3ZWVuDQorICog ICBtdWx0aXBsZSBjaGFubmVscywgc28gYWxsIGNoYW5uZWxzIHNob3VsZCB1c2Ugc2FtZSBwZXJp b2QNCisgKiAgIHNldHRpbmdzLg0KKyAqIC0gQ2hhbmdlcyB0byBwb2xhcml0eSBjYW5ub3QgYmUg bGF0Y2hlZCBhdCB0aGUgdGltZSBvZiB0aGUNCisgKiAgIG5leHQgcGVyaW9kIHN0YXJ0Lg0KKyAq IC0gQ2hhbmdpbmcgcGVyaW9kIGFuZCBkdXR5IGN5Y2xlIHRvZ2V0aGVyIGlzbid0IGF0b21pYywN CisgKiAgIHdpdGggdGhlIHdyb25nIHRpbWluZyBpdCBtaWdodCBoYXBwZW4gdGhhdCBhIHBlcmlv ZCBpcw0KKyAqICAgcHJvZHVjZWQgd2l0aCBvbGQgZHV0eSBjeWNsZSBidXQgbmV3IHBlcmlvZCBz ZXR0aW5ncy4NCisgKi8NCisNCisjaW5jbHVkZSA8bGludXgvYml0ZmllbGQuaD4NCisjaW5jbHVk ZSA8bGludXgvYml0b3BzLmg+DQorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KKyNpbmNsdWRlIDxs aW51eC9lcnIuaD4NCisjaW5jbHVkZSA8bGludXgvaW8uaD4NCisjaW5jbHVkZSA8bGludXgvbG9n Mi5oPg0KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgvb2YuaD4N CisjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9y bV9kZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgvcHdtLmg+DQorI2luY2x1ZGUgPGxpbnV4L3Ns YWIuaD4NCisNCisjZGVmaW5lIFBXTV9JTVhfVFBNX1BBUkFNCTB4NA0KKyNkZWZpbmUgUFdNX0lN WF9UUE1fR0xPQkFMCTB4OA0KKyNkZWZpbmUgUFdNX0lNWF9UUE1fU0MJCTB4MTANCisjZGVmaW5l IFBXTV9JTVhfVFBNX0NOVAkJMHgxNA0KKyNkZWZpbmUgUFdNX0lNWF9UUE1fTU9ECQkweDE4DQor I2RlZmluZSBQV01fSU1YX1RQTV9DblNDKG4pCSgweDIwICsgKG4pICogMHg4KQ0KKyNkZWZpbmUg UFdNX0lNWF9UUE1fQ25WKG4pCSgweDI0ICsgKG4pICogMHg4KQ0KKw0KKyNkZWZpbmUgUFdNX0lN WF9UUE1fUEFSQU1fQ0hBTgkJCUdFTk1BU0soNywgMCkNCisNCisjZGVmaW5lIFBXTV9JTVhfVFBN X1NDX1BTCQkJR0VOTUFTSygyLCAwKQ0KKyNkZWZpbmUgUFdNX0lNWF9UUE1fU0NfQ01PRAkJCUdF Tk1BU0soNCwgMykNCisjZGVmaW5lIFBXTV9JTVhfVFBNX1NDX0NNT0RfSU5DX0VWRVJZX0NMSwlG SUVMRF9QUkVQKFBXTV9JTVhfVFBNX1NDX0NNT0QsIDEpDQorI2RlZmluZSBQV01fSU1YX1RQTV9T Q19DUFdNUwkJCUJJVCg1KQ0KKw0KKyNkZWZpbmUgUFdNX0lNWF9UUE1fQ25TQ19DSEYJQklUKDcp DQorI2RlZmluZSBQV01fSU1YX1RQTV9DblNDX01TQglCSVQoNSkNCisjZGVmaW5lIFBXTV9JTVhf VFBNX0NuU0NfTVNBCUJJVCg0KQ0KKw0KKy8qDQorICogVGhlIHJlZmVyZW5jZSBtYW51YWwgZGVz Y3JpYmVzIHRoaXMgZmllbGQgYXMgdHdvIHNlcGFyYXRlIGJpdHMuIFRoZQ0KKyAqIHNlbWFudGlj IG9mIHRoZSB0d28gYml0cyBpc24ndCBvcnRob2dvbmFsIHRob3VnaCwgc28gdGhleSBhcmUgdHJl YXRlZA0KKyAqIHRvZ2V0aGVyIGFzIGEgMi1iaXQgZmllbGQgaGVyZS4NCisgKi8NCisjZGVmaW5l IFBXTV9JTVhfVFBNX0NuU0NfRUxTCUdFTk1BU0soMywgMikNCisjZGVmaW5lIFBXTV9JTVhfVFBN X0NuU0NfRUxTX0lOVkVSU0VECUZJRUxEX1BSRVAoUFdNX0lNWF9UUE1fQ25TQ19FTFMsIDEpDQor I2RlZmluZSBQV01fSU1YX1RQTV9DblNDX0VMU19OT1JNQUwJRklFTERfUFJFUChQV01fSU1YX1RQ TV9DblNDX0VMUywgMikNCisNCisNCisjZGVmaW5lIFBXTV9JTVhfVFBNX01PRF9XSURUSAkxNg0K KyNkZWZpbmUgUFdNX0lNWF9UUE1fTU9EX01PRAlHRU5NQVNLKFBXTV9JTVhfVFBNX01PRF9XSURU SCAtIDEsIDApDQorDQorc3RydWN0IGlteF90cG1fcHdtX2NoaXAgew0KKwlzdHJ1Y3QgcHdtX2No aXAgY2hpcDsNCisJc3RydWN0IGNsayAqY2xrOw0KKwl2b2lkIF9faW9tZW0gKmJhc2U7DQorCXN0 cnVjdCBtdXRleCBsb2NrOw0KKwl1MzIgdXNlcl9jb3VudDsNCisJdTMyIGVuYWJsZV9jb3VudDsN CisJdTMyIHJlYWxfcGVyaW9kOw0KK307DQorDQorc3RydWN0IGlteF90cG1fcHdtX3BhcmFtIHsN CisJdTggcHJlc2NhbGU7DQorCXUzMiBtb2Q7DQorCXUzMiB2YWw7DQorfTsNCisNCitzdGF0aWMg aW5saW5lIHN0cnVjdCBpbXhfdHBtX3B3bV9jaGlwICp0b19pbXhfdHBtX3B3bV9jaGlwKHN0cnVj dCBwd21fY2hpcCAqY2hpcCkNCit7DQorCXJldHVybiBjb250YWluZXJfb2YoY2hpcCwgc3RydWN0 IGlteF90cG1fcHdtX2NoaXAsIGNoaXApOw0KK30NCisNCisvKg0KKyAqIFRoaXMgZnVuY3Rpb24g ZGV0ZXJtaW5lcyBmb3IgYSBnaXZlbiBwd21fc3RhdGUgKnN0YXRlIHRoYXQgYSBjb25zdW1lcg0K KyAqIG1pZ2h0IHJlcXVlc3QgdGhlIHB3bV9zdGF0ZSAqcmVhbF9zdGF0ZSB0aGF0IGV2ZW50dWFs bHkgaXMgaW1wbGVtZW50ZWQNCisgKiBieSB0aGUgaGFyZHdhcmUgYW5kIHRoZSBuZWNlc3Nhcnkg cmVnaXN0ZXIgdmFsdWVzIChpbiAqcCkgdG8gYWNoaWV2ZQ0KKyAqIHRoaXMuDQorICovDQorc3Rh dGljIGludCBwd21faW14X3RwbV9yb3VuZF9zdGF0ZShzdHJ1Y3QgcHdtX2NoaXAgKmNoaXAsDQor CQkJCSAgIHN0cnVjdCBpbXhfdHBtX3B3bV9wYXJhbSAqcCwNCisJCQkJICAgc3RydWN0IHB3bV9z dGF0ZSAqcmVhbF9zdGF0ZSwNCisJCQkJICAgc3RydWN0IHB3bV9zdGF0ZSAqc3RhdGUpDQorew0K KwlzdHJ1Y3QgaW14X3RwbV9wd21fY2hpcCAqdHBtID0gdG9faW14X3RwbV9wd21fY2hpcChjaGlw KTsNCisJdTMyIHJhdGUsIHByZXNjYWxlLCBwZXJpb2RfY291bnQsIGNsb2NrX3VuaXQ7DQorCXU2 NCB0bXA7DQorDQorCXJhdGUgPSBjbGtfZ2V0X3JhdGUodHBtLT5jbGspOw0KKwl0bXAgPSAodTY0 KXN0YXRlLT5wZXJpb2QgKiByYXRlOw0KKwljbG9ja191bml0ID0gRElWX1JPVU5EX0NMT1NFU1Rf VUxMKHRtcCwgTlNFQ19QRVJfU0VDKTsNCisJaWYgKGNsb2NrX3VuaXQgPD0gUFdNX0lNWF9UUE1f TU9EX01PRCkNCisJCXByZXNjYWxlID0gMDsNCisJZWxzZQ0KKwkJcHJlc2NhbGUgPSBpbG9nMihj bG9ja191bml0KSArIDEgLSBQV01fSU1YX1RQTV9NT0RfV0lEVEg7DQorDQorCWlmICgoIUZJRUxE X0ZJVChQV01fSU1YX1RQTV9TQ19QUywgcHJlc2NhbGUpKSkNCisJCXJldHVybiAtRVJBTkdFOw0K KwlwLT5wcmVzY2FsZSA9IHByZXNjYWxlOw0KKw0KKwlwZXJpb2RfY291bnQgPSAoY2xvY2tfdW5p dCArICgoMSA8PCBwcmVzY2FsZSkgPj4gMSkpID4+IHByZXNjYWxlOw0KKwlwLT5tb2QgPSBwZXJp b2RfY291bnQ7DQorDQorCS8qIGNhbGN1bGF0ZSByZWFsIHBlcmlvZCBIVyBjYW4gc3VwcG9ydCAq Lw0KKwl0bXAgPSAodTY0KXBlcmlvZF9jb3VudCA8PCBwcmVzY2FsZTsNCisJdG1wICo9IE5TRUNf UEVSX1NFQzsNCisJcmVhbF9zdGF0ZS0+cGVyaW9kID0gRElWX1JPVU5EX0NMT1NFU1RfVUxMKHRt cCwgcmF0ZSk7DQorDQorCS8qDQorCSAqIGlmIGV2ZW50dWFsbHkgdGhlIFBXTSBvdXRwdXQgaXMg aW5hY3RpdmUsIGVpdGhlcg0KKwkgKiBkdXR5IGN5Y2xlIGlzIDAgb3Igc3RhdHVzIGlzIGRpc2Fi bGVkLCBuZWVkIHRvDQorCSAqIG1ha2Ugc3VyZSB0aGUgb3V0cHV0IHBpbiBpcyBpbmFjdGl2ZS4N CisJICovDQorCWlmICghc3RhdGUtPmVuYWJsZWQpDQorCQlyZWFsX3N0YXRlLT5kdXR5X2N5Y2xl ID0gMDsNCisJZWxzZQ0KKwkJcmVhbF9zdGF0ZS0+ZHV0eV9jeWNsZSA9IHN0YXRlLT5kdXR5X2N5 Y2xlOw0KKw0KKwl0bXAgPSAodTY0KXAtPm1vZCAqIHJlYWxfc3RhdGUtPmR1dHlfY3ljbGU7DQor CXAtPnZhbCA9IERJVl9ST1VORF9DTE9TRVNUX1VMTCh0bXAsIHJlYWxfc3RhdGUtPnBlcmlvZCk7 DQorDQorCXJlYWxfc3RhdGUtPnBvbGFyaXR5ID0gc3RhdGUtPnBvbGFyaXR5Ow0KKwlyZWFsX3N0 YXRlLT5lbmFibGVkID0gc3RhdGUtPmVuYWJsZWQ7DQorDQorCXJldHVybiAwOw0KK30NCisNCitz dGF0aWMgdm9pZCBwd21faW14X3RwbV9nZXRfc3RhdGUoc3RydWN0IHB3bV9jaGlwICpjaGlwLA0K KwkJCQkgIHN0cnVjdCBwd21fZGV2aWNlICpwd20sDQorCQkJCSAgc3RydWN0IHB3bV9zdGF0ZSAq c3RhdGUpDQorew0KKwlzdHJ1Y3QgaW14X3RwbV9wd21fY2hpcCAqdHBtID0gdG9faW14X3RwbV9w d21fY2hpcChjaGlwKTsNCisJdTMyIHJhdGUsIHZhbCwgcHJlc2NhbGU7DQorCXU2NCB0bXA7DQor DQorCS8qIGdldCBwZXJpb2QgKi8NCisJc3RhdGUtPnBlcmlvZCA9IHRwbS0+cmVhbF9wZXJpb2Q7 DQorDQorCS8qIGdldCBkdXR5IGN5Y2xlICovDQorCXJhdGUgPSBjbGtfZ2V0X3JhdGUodHBtLT5j bGspOw0KKwl2YWwgPSByZWFkbCh0cG0tPmJhc2UgKyBQV01fSU1YX1RQTV9TQyk7DQorCXByZXNj YWxlID0gRklFTERfR0VUKFBXTV9JTVhfVFBNX1NDX1BTLCB2YWwpOw0KKwl0bXAgPSByZWFkbCh0 cG0tPmJhc2UgKyBQV01fSU1YX1RQTV9DblYocHdtLT5od3B3bSkpOw0KKwl0bXAgPSAodG1wIDw8 IHByZXNjYWxlKSAqIE5TRUNfUEVSX1NFQzsNCisJc3RhdGUtPmR1dHlfY3ljbGUgPSBESVZfUk9V TkRfQ0xPU0VTVF9VTEwodG1wLCByYXRlKTsNCisNCisJLyogZ2V0IHBvbGFyaXR5ICovDQorCXZh bCA9IHJlYWRsKHRwbS0+YmFzZSArIFBXTV9JTVhfVFBNX0NuU0MocHdtLT5od3B3bSkpOw0KKwlp ZiAoKHZhbCAmIFBXTV9JTVhfVFBNX0NuU0NfRUxTKSA9PSBQV01fSU1YX1RQTV9DblNDX0VMU19J TlZFUlNFRCkNCisJCXN0YXRlLT5wb2xhcml0eSA9IFBXTV9QT0xBUklUWV9JTlZFUlNFRDsNCisJ ZWxzZQ0KKwkJLyoNCisJCSAqIEFzc3VtZSByZXNlcnZlZCB2YWx1ZXMgKDJiMDAgYW5kIDJiMTEp IHRvIHlpZWxkDQorCQkgKiBub3JtYWwgcG9sYXJpdHkuDQorCQkgKi8NCisJCXN0YXRlLT5wb2xh cml0eSA9IFBXTV9QT0xBUklUWV9OT1JNQUw7DQorDQorCS8qIGdldCBjaGFubmVsIHN0YXR1cyAq Lw0KKwlzdGF0ZS0+ZW5hYmxlZCA9IEZJRUxEX0dFVChQV01fSU1YX1RQTV9DblNDX0VMUywgdmFs KSA/IHRydWUgOiBmYWxzZTsNCit9DQorDQorLyogdGhpcyBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0 byBiZSBjYWxsZWQgd2l0aCBtdXRleCBob2xkICovDQorc3RhdGljIGludCBwd21faW14X3RwbV9h cHBseV9odyhzdHJ1Y3QgcHdtX2NoaXAgKmNoaXAsDQorCQkJCXN0cnVjdCBpbXhfdHBtX3B3bV9w YXJhbSAqcCwNCisJCQkJc3RydWN0IHB3bV9zdGF0ZSAqc3RhdGUsDQorCQkJCXN0cnVjdCBwd21f ZGV2aWNlICpwd20pDQorew0KKwlzdHJ1Y3QgaW14X3RwbV9wd21fY2hpcCAqdHBtID0gdG9faW14 X3RwbV9wd21fY2hpcChjaGlwKTsNCisJYm9vbCBwZXJpb2RfdXBkYXRlID0gZmFsc2U7DQorCWJv b2wgZHV0eV91cGRhdGUgPSBmYWxzZTsNCisJdTMyIHZhbCwgY21vZCwgY3VyX3ByZXNjYWxlOw0K Kwl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7DQorCXN0cnVjdCBwd21fc3RhdGUgYzsNCisNCisJaWYg KHN0YXRlLT5wZXJpb2QgIT0gdHBtLT5yZWFsX3BlcmlvZCkgew0KKwkJLyoNCisJCSAqIFRQTSBj b3VudGVyIGlzIHNoYXJlZCBieSBtdWx0aXBsZSBjaGFubmVscywgc28NCisJCSAqIHByZXNjYWxl IGFuZCBwZXJpb2QgY2FuIE5PVCBiZSBtb2RpZmllZCB3aGVuDQorCQkgKiB0aGVyZSBhcmUgbXVs dGlwbGUgY2hhbm5lbHMgaW4gdXNlIHdpdGggZGlmZmVyZW50DQorCQkgKiBwZXJpb2Qgc2V0dGlu Z3MuDQorCQkgKi8NCisJCWlmICh0cG0tPnVzZXJfY291bnQgPiAxKQ0KKwkJCXJldHVybiAtRUJV U1k7DQorDQorCQl2YWwgPSByZWFkbCh0cG0tPmJhc2UgKyBQV01fSU1YX1RQTV9TQyk7DQorCQlj bW9kID0gRklFTERfR0VUKFBXTV9JTVhfVFBNX1NDX0NNT0QsIHZhbCk7DQorCQljdXJfcHJlc2Nh bGUgPSBGSUVMRF9HRVQoUFdNX0lNWF9UUE1fU0NfUFMsIHZhbCk7DQorCQlpZiAoY21vZCAmJiBj dXJfcHJlc2NhbGUgIT0gcC0+cHJlc2NhbGUpDQorCQkJcmV0dXJuIC1FQlVTWTsNCisNCisJCS8q IHNldCBUUE0gY291bnRlciBwcmVzY2FsZSAqLw0KKwkJdmFsICY9IH5QV01fSU1YX1RQTV9TQ19Q UzsNCisJCXZhbCB8PSBGSUVMRF9QUkVQKFBXTV9JTVhfVFBNX1NDX1BTLCBwLT5wcmVzY2FsZSk7 DQorCQl3cml0ZWwodmFsLCB0cG0tPmJhc2UgKyBQV01fSU1YX1RQTV9TQyk7DQorDQorCQkvKg0K KwkJICogc2V0IHBlcmlvZCBjb3VudDoNCisJCSAqIGlmIHRoZSBQV00gaXMgZGlzYWJsZWQgKENN T0RbMTowXSA9IDJiMDApLCB0aGVuIE1PRCByZWdpc3Rlcg0KKwkJICogaXMgdXBkYXRlZCB3aGVu IE1PRCByZWdpc3RlciBpcyB3cml0dGVuLg0KKwkJICoNCisJCSAqIGlmIHRoZSBQV00gaXMgZW5h YmxlZCAoQ01PRFsxOjBdIOKJoCAyYjAwKSwgdGhlIHBlcmlvZCBsZW5ndGgNCisJCSAqIGlzIGxh dGNoZWQgaW50byBoYXJkd2FyZSB3aGVuIHRoZSBuZXh0IHBlcmlvZCBzdGFydHMuDQorCQkgKi8N CisJCXdyaXRlbChwLT5tb2QsIHRwbS0+YmFzZSArIFBXTV9JTVhfVFBNX01PRCk7DQorCQl0cG0t PnJlYWxfcGVyaW9kID0gc3RhdGUtPnBlcmlvZDsNCisJCXBlcmlvZF91cGRhdGUgPSB0cnVlOw0K Kwl9DQorDQorCXB3bV9pbXhfdHBtX2dldF9zdGF0ZShjaGlwLCBwd20sICZjKTsNCisNCisJLyog cG9sYXJpdHkgaXMgTk9UIGFsbG93ZWQgdG8gYmUgY2hhbmdlZCBpZiBQV00gaXMgYWN0aXZlICov DQorCWlmIChjLmVuYWJsZWQgJiYgYy5wb2xhcml0eSAhPSBzdGF0ZS0+cG9sYXJpdHkpDQorCQly ZXR1cm4gLUVCVVNZOw0KKw0KKwlpZiAoc3RhdGUtPmR1dHlfY3ljbGUgIT0gYy5kdXR5X2N5Y2xl KSB7DQorCQkvKg0KKwkJICogc2V0IGNoYW5uZWwgdmFsdWU6DQorCQkgKiBpZiB0aGUgUFdNIGlz IGRpc2FibGVkIChDTU9EWzE6MF0gPSAyYjAwKSwgdGhlbiBDblYgcmVnaXN0ZXINCisJCSAqIGlz IHVwZGF0ZWQgd2hlbiBDblYgcmVnaXN0ZXIgaXMgd3JpdHRlbi4NCisJCSAqDQorCQkgKiBpZiB0 aGUgUFdNIGlzIGVuYWJsZWQgKENNT0RbMTowXSDiiaAgMmIwMCksIHRoZSBkdXR5IGxlbmd0aA0K KwkJICogaXMgbGF0Y2hlZCBpbnRvIGhhcmR3YXJlIHdoZW4gdGhlIG5leHQgcGVyaW9kIHN0YXJ0 cy4NCisJCSAqLw0KKwkJd3JpdGVsKHAtPnZhbCwgdHBtLT5iYXNlICsgUFdNX0lNWF9UUE1fQ25W KHB3bS0+aHdwd20pKTsNCisJCWR1dHlfdXBkYXRlID0gdHJ1ZTsNCisJfQ0KKw0KKwkvKiBtYWtl IHN1cmUgTU9EICYgQ25WIHJlZ2lzdGVycyBhcmUgdXBkYXRlZCAqLw0KKwlpZiAocGVyaW9kX3Vw ZGF0ZSB8fCBkdXR5X3VwZGF0ZSkgew0KKwkJdGltZW91dCA9IGppZmZpZXMgKyBtc2Vjc190b19q aWZmaWVzKHRwbS0+cmVhbF9wZXJpb2QgLw0KKwkJCQkJCSAgICAgTlNFQ19QRVJfTVNFQyArIDEp Ow0KKwkJd2hpbGUgKHJlYWRsKHRwbS0+YmFzZSArIFBXTV9JTVhfVFBNX01PRCkgIT0gcC0+bW9k DQorCQkgICAgICAgfHwgcmVhZGwodHBtLT5iYXNlICsgUFdNX0lNWF9UUE1fQ25WKHB3bS0+aHdw d20pKQ0KKwkJICAgICAgICE9IHAtPnZhbCkgew0KKwkJCWlmICh0aW1lX2FmdGVyKGppZmZpZXMs IHRpbWVvdXQpKQ0KKwkJCQlyZXR1cm4gLUVUSU1FOw0KKwkJCWNwdV9yZWxheCgpOw0KKwkJfQ0K Kwl9DQorDQorCS8qDQorCSAqIHBvbGFyaXR5IHNldHRpbmdzIHdpbGwgZW5hYmxlZC9kaXNhYmxl IG91dHB1dCBzdGF0dXMNCisJICogaW1tZWRpYXRlbHksIHNvIGlmIHRoZSBjaGFubmVsIGlzIGRp c2FibGVkLCBuZWVkIHRvDQorCSAqIG1ha2Ugc3VyZSBNU0EvTVNCL0VMUyBhcmUgc2V0IHRvIDAg d2hpY2ggbWVhbnMgY2hhbm5lbA0KKwkgKiBkaXNhYmxlZC4NCisJICovDQorCXZhbCA9IHJlYWRs KHRwbS0+YmFzZSArIFBXTV9JTVhfVFBNX0NuU0MocHdtLT5od3B3bSkpOw0KKwl2YWwgJj0gfihQ V01fSU1YX1RQTV9DblNDX0VMUyB8IFBXTV9JTVhfVFBNX0NuU0NfTVNBIHwNCisJCSBQV01fSU1Y X1RQTV9DblNDX01TQik7DQorCWlmIChzdGF0ZS0+ZW5hYmxlZCkgew0KKwkJLyoNCisJCSAqIHNl dCBwb2xhcml0eSAoZm9yIGVkZ2UtYWxpZ25lZCBQV00gbW9kZXMpDQorCQkgKg0KKwkJICogRUxT WzE6MF0gPSAyYjEwIHlpZWxkcyBub3JtYWwgcG9sYXJpdHkgYmVoYXZpb3VyLA0KKwkJICogRUxT WzE6MF0gPSAyYjAxIHlpZWxkcyBpbnZlcnNlZCBwb2xhcml0eS4NCisJCSAqIFRoZSBvdGhlciB2 YWx1ZXMgYXJlIHJlc2VydmVkLg0KKwkJICovDQorCQl2YWwgfD0gUFdNX0lNWF9UUE1fQ25TQ19N U0I7DQorCQl2YWwgfD0gKHN0YXRlLT5wb2xhcml0eSA9PSBQV01fUE9MQVJJVFlfTk9STUFMKSA/ DQorCQkJUFdNX0lNWF9UUE1fQ25TQ19FTFNfTk9STUFMIDoNCisJCQlQV01fSU1YX1RQTV9DblND X0VMU19JTlZFUlNFRDsNCisJfQ0KKwl3cml0ZWwodmFsLCB0cG0tPmJhc2UgKyBQV01fSU1YX1RQ TV9DblNDKHB3bS0+aHdwd20pKTsNCisNCisJLyogY29udHJvbCB0aGUgY291bnRlciBzdGF0dXMg Ki8NCisJaWYgKHN0YXRlLT5lbmFibGVkICE9IGMuZW5hYmxlZCkgew0KKwkJdmFsID0gcmVhZGwo dHBtLT5iYXNlICsgUFdNX0lNWF9UUE1fU0MpOw0KKwkJaWYgKHN0YXRlLT5lbmFibGVkKSB7DQor CQkJaWYgKCsrdHBtLT5lbmFibGVfY291bnQgPT0gMSkNCisJCQkJdmFsIHw9IFBXTV9JTVhfVFBN X1NDX0NNT0RfSU5DX0VWRVJZX0NMSzsNCisJCX0gZWxzZSB7DQorCQkJaWYgKC0tdHBtLT5lbmFi bGVfY291bnQgPT0gMCkNCisJCQkJdmFsICY9IH5QV01fSU1YX1RQTV9TQ19DTU9EOw0KKwkJfQ0K KwkJd3JpdGVsKHZhbCwgdHBtLT5iYXNlICsgUFdNX0lNWF9UUE1fU0MpOw0KKwl9DQorDQorCXJl dHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IHB3bV9pbXhfdHBtX2FwcGx5KHN0cnVjdCBwd21f Y2hpcCAqY2hpcCwNCisJCQkgICAgIHN0cnVjdCBwd21fZGV2aWNlICpwd20sDQorCQkJICAgICBz dHJ1Y3QgcHdtX3N0YXRlICpzdGF0ZSkNCit7DQorCXN0cnVjdCBpbXhfdHBtX3B3bV9jaGlwICp0 cG0gPSB0b19pbXhfdHBtX3B3bV9jaGlwKGNoaXApOw0KKwlzdHJ1Y3QgaW14X3RwbV9wd21fcGFy YW0gcGFyYW07DQorCXN0cnVjdCBwd21fc3RhdGUgcmVhbF9zdGF0ZTsNCisJaW50IHJldDsNCisN CisJcmV0ID0gcHdtX2lteF90cG1fcm91bmRfc3RhdGUoY2hpcCwgJnBhcmFtLCAmcmVhbF9zdGF0 ZSwgc3RhdGUpOw0KKwlpZiAocmV0KQ0KKwkJcmV0dXJuIHJldDsNCisNCisJbXV0ZXhfbG9jaygm dHBtLT5sb2NrKTsNCisJcmV0ID0gcHdtX2lteF90cG1fYXBwbHlfaHcoY2hpcCwgJnBhcmFtLCAm cmVhbF9zdGF0ZSwgcHdtKTsNCisJbXV0ZXhfdW5sb2NrKCZ0cG0tPmxvY2spOw0KKw0KKwlyZXR1 cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IHB3bV9pbXhfdHBtX3JlcXVlc3Qoc3RydWN0IHB3 bV9jaGlwICpjaGlwLCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtKQ0KK3sNCisJc3RydWN0IGlteF90 cG1fcHdtX2NoaXAgKnRwbSA9IHRvX2lteF90cG1fcHdtX2NoaXAoY2hpcCk7DQorDQorCW11dGV4 X2xvY2soJnRwbS0+bG9jayk7DQorCXRwbS0+dXNlcl9jb3VudCsrOw0KKwltdXRleF91bmxvY2so JnRwbS0+bG9jayk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBwd21faW14 X3RwbV9mcmVlKHN0cnVjdCBwd21fY2hpcCAqY2hpcCwgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSkN Cit7DQorCXN0cnVjdCBpbXhfdHBtX3B3bV9jaGlwICp0cG0gPSB0b19pbXhfdHBtX3B3bV9jaGlw KGNoaXApOw0KKw0KKwltdXRleF9sb2NrKCZ0cG0tPmxvY2spOw0KKwl0cG0tPnVzZXJfY291bnQt LTsNCisJbXV0ZXhfdW5sb2NrKCZ0cG0tPmxvY2spOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3Ry dWN0IHB3bV9vcHMgaW14X3RwbV9wd21fb3BzID0gew0KKwkucmVxdWVzdCA9IHB3bV9pbXhfdHBt X3JlcXVlc3QsDQorCS5mcmVlID0gcHdtX2lteF90cG1fZnJlZSwNCisJLmdldF9zdGF0ZSA9IHB3 bV9pbXhfdHBtX2dldF9zdGF0ZSwNCisJLmFwcGx5ID0gcHdtX2lteF90cG1fYXBwbHksDQorCS5v d25lciA9IFRISVNfTU9EVUxFLA0KK307DQorDQorc3RhdGljIGludCBwd21faW14X3RwbV9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KK3sNCisJc3RydWN0IGlteF90cG1fcHdt X2NoaXAgKnRwbTsNCisJaW50IHJldDsNCisJdTMyIHZhbDsNCisNCisJdHBtID0gZGV2bV9remFs bG9jKCZwZGV2LT5kZXYsIHNpemVvZigqdHBtKSwgR0ZQX0tFUk5FTCk7DQorCWlmICghdHBtKQ0K KwkJcmV0dXJuIC1FTk9NRU07DQorDQorCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHRwbSk7 DQorDQorCXRwbS0+YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAw KTsNCisJaWYgKElTX0VSUih0cG0tPmJhc2UpKQ0KKwkJcmV0dXJuIFBUUl9FUlIodHBtLT5iYXNl KTsNCisNCisJdHBtLT5jbGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgTlVMTCk7DQorCWlm IChJU19FUlIodHBtLT5jbGspKSB7DQorCQlyZXQgPSBQVFJfRVJSKHRwbS0+Y2xrKTsNCisJCWlm IChyZXQgIT0gLUVQUk9CRV9ERUZFUikNCisJCQlkZXZfZXJyKCZwZGV2LT5kZXYsDQorCQkJCSJm YWlsZWQgdG8gZ2V0IFBXTSBjbG9jazogJWRcbiIsIHJldCk7DQorCQlyZXR1cm4gcmV0Ow0KKwl9 DQorDQorCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZSh0cG0tPmNsayk7DQorCWlmIChyZXQpIHsN CisJCWRldl9lcnIoJnBkZXYtPmRldiwNCisJCQkiZmFpbGVkIHRvIHByZXBhcmUgb3IgZW5hYmxl IGNsb2NrOiAlZFxuIiwgcmV0KTsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJdHBtLT5jaGlw LmRldiA9ICZwZGV2LT5kZXY7DQorCXRwbS0+Y2hpcC5vcHMgPSAmaW14X3RwbV9wd21fb3BzOw0K Kwl0cG0tPmNoaXAuYmFzZSA9IC0xOw0KKwl0cG0tPmNoaXAub2ZfeGxhdGUgPSBvZl9wd21feGxh dGVfd2l0aF9mbGFnczsNCisJdHBtLT5jaGlwLm9mX3B3bV9uX2NlbGxzID0gMzsNCisNCisJLyog Z2V0IG51bWJlciBvZiBjaGFubmVscyAqLw0KKwl2YWwgPSByZWFkbCh0cG0tPmJhc2UgKyBQV01f SU1YX1RQTV9QQVJBTSk7DQorCXRwbS0+Y2hpcC5ucHdtID0gRklFTERfR0VUKFBXTV9JTVhfVFBN X1BBUkFNX0NIQU4sIHZhbCk7DQorDQorCW11dGV4X2luaXQoJnRwbS0+bG9jayk7DQorDQorCXJl dCA9IHB3bWNoaXBfYWRkKCZ0cG0tPmNoaXApOw0KKwlpZiAocmV0KSB7DQorCQlkZXZfZXJyKCZw ZGV2LT5kZXYsICJmYWlsZWQgdG8gYWRkIFBXTSBjaGlwOiAlZFxuIiwgcmV0KTsNCisJCWNsa19k aXNhYmxlX3VucHJlcGFyZSh0cG0tPmNsayk7DQorCX0NCisNCisJcmV0dXJuIHJldDsNCit9DQor DQorc3RhdGljIGludCBwd21faW14X3RwbV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikNCit7DQorCXN0cnVjdCBpbXhfdHBtX3B3bV9jaGlwICp0cG0gPSBwbGF0Zm9ybV9nZXRf ZHJ2ZGF0YShwZGV2KTsNCisJaW50IHJldCA9IHB3bWNoaXBfcmVtb3ZlKCZ0cG0tPmNoaXApOw0K Kw0KKwljbGtfZGlzYWJsZV91bnByZXBhcmUodHBtLT5jbGspOw0KKw0KKwlyZXR1cm4gcmV0Ow0K K30NCisNCitzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHB3bV9pbXhfdHBtX3N1c3BlbmQoc3Ry dWN0IGRldmljZSAqZGV2KQ0KK3sNCisJc3RydWN0IGlteF90cG1fcHdtX2NoaXAgKnRwbSA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOw0KKw0KKwlpZiAodHBtLT5lbmFibGVfY291bnQgPiAwKQ0KKwkJ cmV0dXJuIC1FQlVTWTsNCisNCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHRwbS0+Y2xrKTsNCisN CisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgcHdtX2lteF90 cG1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCit7DQorCXN0cnVjdCBpbXhfdHBtX3B3bV9j aGlwICp0cG0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCisJaW50IHJldCA9IDA7DQorDQorCXJl dCA9IGNsa19wcmVwYXJlX2VuYWJsZSh0cG0tPmNsayk7DQorCWlmIChyZXQpDQorCQlkZXZfZXJy KGRldiwNCisJCQkiZmFpbGVkIHRvIHByZXBhcmUgb3IgZW5hYmxlIGNsb2NrOiAlZFxuIiwNCisJ CQlyZXQpOw0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgU0lNUExFX0RFVl9QTV9P UFMoaW14X3RwbV9wd21fcG0sDQorCQkJIHB3bV9pbXhfdHBtX3N1c3BlbmQsIHB3bV9pbXhfdHBt X3Jlc3VtZSk7DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14X3RwbV9w d21fZHRfaWRzW10gPSB7DQorCXsgLmNvbXBhdGlibGUgPSAiZnNsLGlteDd1bHAtcHdtIiwgfSwN CisJeyAvKiBzZW50aW5lbCAqLyB9DQorfTsNCitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbXhf dHBtX3B3bV9kdF9pZHMpOw0KKw0KK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGlteF90 cG1fcHdtX2RyaXZlciA9IHsNCisJLmRyaXZlciA9IHsNCisJCS5uYW1lID0gImlteDd1bHAtdHBt LXB3bSIsDQorCQkub2ZfbWF0Y2hfdGFibGUgPSBpbXhfdHBtX3B3bV9kdF9pZHMsDQorCQkucG0g PSAmaW14X3RwbV9wd21fcG0sDQorCX0sDQorCS5wcm9iZQk9IHB3bV9pbXhfdHBtX3Byb2JlLA0K KwkucmVtb3ZlID0gcHdtX2lteF90cG1fcmVtb3ZlLA0KK307DQorbW9kdWxlX3BsYXRmb3JtX2Ry aXZlcihpbXhfdHBtX3B3bV9kcml2ZXIpOw0KKw0KK01PRFVMRV9BVVRIT1IoIkFuc29uIEh1YW5n IDxBbnNvbi5IdWFuZ0BueHAuY29tPiIpOw0KK01PRFVMRV9ERVNDUklQVElPTigiaS5NWCBUUE0g UFdNIERyaXZlciIpOw0KK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCi0tIA0KMi43LjQNCg0K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJt LWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtl cm5lbAo=