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=-9.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_NEOMUTT 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 CE5AFC43381 for ; Mon, 25 Mar 2019 09:30:58 +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 986662085A for ; Mon, 25 Mar 2019 09:30:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Dr7H9FwC" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 986662085A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de 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:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=YfzDhiPRBwzfUVNN6HRJnGgS2qRRxMwIU8JB4c6uQes=; b=Dr7H9FwCBMfogT MUEuIEaVKy3/MWd5fUskMhf1eRzogO4GlqFUOiehjnQbDxbI/SejSctmrTO9DjGLM3CoveRX5xmVt 0ogx6OGIfP6v6Uq93G5TOdINEt7nWZqd7YoWp4loQc71BB5e3ZpxZMpZknFgQDHTDe7J3LSur22pU JK8UtVqISgVaq+77xlMsAd9y/PnOSCnXqHyen5x+Hhv4YDvInQcwdemN6MjPfYanIMXsY70wkY1rz aTCJYV99sIeBdkzvIfna6q3wlFKatzKsHFdmVUL9UO+1XT+VY+wCoFu8FgYmWN5pLDzjMjsOTzBGW uolzDeq6M41VqYQ1PIyA==; 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 1h8LwO-000729-K9; Mon, 25 Mar 2019 09:30:48 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h8LwK-0006xZ-0E for linux-arm-kernel@lists.infradead.org; Mon, 25 Mar 2019 09:30:46 +0000 Received: from pty.hi.pengutronix.de ([2001:67c:670:100:1d::c5]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1h8Lvv-0006Hu-EO; Mon, 25 Mar 2019 10:30:19 +0100 Received: from ukl by pty.hi.pengutronix.de with local (Exim 4.89) (envelope-from ) id 1h8Lvt-0007dU-4O; Mon, 25 Mar 2019 10:30:17 +0100 Date: Mon, 25 Mar 2019 10:30:17 +0100 From: Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= To: Anson Huang Subject: Re: [PATCH V9 2/5] pwm: Add i.MX TPM PWM driver support Message-ID: <20190325093017.glw2wfjxga2rddmu@pengutronix.de> References: <1553218974-20464-1-git-send-email-Anson.Huang@nxp.com> <1553218974-20464-3-git-send-email-Anson.Huang@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1553218974-20464-3-git-send-email-Anson.Huang@nxp.com> User-Agent: NeoMutt/20170113 (1.7.2) X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c5 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190325_023044_386198_9B9063F7 X-CRM114-Status: GOOD ( 39.49 ) 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: "mark.rutland@arm.com" , "linux-pwm@vger.kernel.org" , Robin Gong , "otavio@ossystems.com.br" , "devicetree@vger.kernel.org" , "festevam@gmail.com" , "s.hauer@pengutronix.de" , "jan.tuerk@emtrion.com" , "linux@armlinux.org.uk" , "robh+dt@kernel.org" , "linux-kernel@vger.kernel.org" , "thierry.reding@gmail.com" , "stefan@agner.ch" , "kernel@pengutronix.de" , Leonard Crestez , "shawnguo@kernel.org" , "linux-arm-kernel@lists.infradead.org" , 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 T24gRnJpLCBNYXIgMjIsIDIwMTkgYXQgMDE6NDg6MTFBTSArMDAwMCwgQW5zb24gSHVhbmcgd3Jv dGU6Cj4gaS5NWDdVTFAgaGFzIFRQTShMb3cgUG93ZXIgVGltZXIvUHVsc2UgV2lkdGggTW9kdWxh dGlvbiBNb2R1bGUpCj4gaW5zaWRlLCBpdCBjYW4gc3VwcG9ydCBtdWx0aXBsZSBQV00gY2hhbm5l bHMsIGFsbCB0aGUgY2hhbm5lbHMKPiBzaGFyZSBzYW1lIGNvdW50ZXIgYW5kIHBlcmlvZCBzZXR0 aW5nLCBidXQgZWFjaCBjaGFubmVsIGNhbgo+IGNvbmZpZ3VyZSBpdHMgZHV0eSBhbmQgcG9sYXJp dHkgaW5kZXBlbmRlbnRseS4KPiAKPiBUaGVyZSBhcmUgc2V2ZXJhbCBUUE0gbW9kdWxlcyBpbiBp Lk1YN1VMUCwgdGhlIG51bWJlciBvZiBjaGFubmVscwo+IGluIFRQTSBtb2R1bGVzIGFyZSBkaWZm ZXJlbnQsIGl0IGNhbiBiZSByZWFkIGZyb20gZWFjaCBUUE0gbW9kdWxlJ3MKPiBQQVJBTSByZWdp c3Rlci4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbnNvbiBIdWFuZyA8QW5zb24uSHVhbmdAbnhwLmNv bT4KPiAtLS0KPiBDaGFuZ2VzIHNpbmNlIFY4Ogo+IAktIGFkZCBtb3JlIGxpbWl0YXRpb24gbm90 ZXMgZm9yIHBlcmlvZC9kdXR5IHVwZGF0ZSB1bi1hdG9taWMgbGltaXRhdGlvbnM7Cj4gCS0gYWRk IHdhaXRpbmcgZm9yIHBlcmlvZC9kdXR5IHVwZGF0ZSBhY3R1YWxseSBhcHBsaWVkIHRvIEhXOwo+ IAktIG1vdmUgdGhlIGR1dHkgdXBkYXRlIGludG8gcGVyaW9kIHVwZGF0ZSBmdW5jdGlvbiB0byBt YWtlIHRoZW0gdG8gYmUgdXBkYXRlZAo+IAkgIGFzIHRvZ2V0aGVyIGFzIHBvc3NpYWJsZTsKPiAJ LSBkb24ndCBhbGxvdyBQUyBjaGFuZ2UgaWYgY291bnRlciBpcyBydW5uaW5nOwo+IAktIHNhdmUg Y2hhbm5lbCBwb2xhcml0eSBzZXR0aW5ncyBhbmQgcmV0dXJuIGl0IGRpcmVjdGx5IHdoZW4gLmdl dF9zdGF0ZSBpcyBjYWxsZWQsCj4gCSAgYXMgdGhlIEhXIHBvbGFyaXR5IHNldHRpbmcgY291bGQg YmUgaW1wYWN0ZWQgYnkgZW5hYmxlIHN0YXR1cy4KPiAtLS0KPiAgZHJpdmVycy9wd20vS2NvbmZp ZyAgICAgICB8ICAxMSArCj4gIGRyaXZlcnMvcHdtL01ha2VmaWxlICAgICAgfCAgIDEgKwo+ICBk cml2ZXJzL3B3bS9wd20taW14LXRwbS5jIHwgNTE4ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCA1MzAgaW5zZXJ0aW9ucygr KQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wd20vcHdtLWlteC10cG0uYwo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9LY29uZmlnIGIvZHJpdmVycy9wd20vS2NvbmZpZwo+IGlu ZGV4IDU0ZjgyMzguLjNlYTAzOTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wd20vS2NvbmZpZwo+ ICsrKyBiL2RyaXZlcnMvcHdtL0tjb25maWcKPiBAQCAtMjEwLDYgKzIxMCwxNyBAQCBjb25maWcg UFdNX0lNWDI3Cj4gIAkgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29z ZSBNIGhlcmU6IHRoZSBtb2R1bGUKPiAgCSAgd2lsbCBiZSBjYWxsZWQgcHdtLWlteDI3Lgo+ICAK PiArY29uZmlnIFBXTV9JTVhfVFBNCj4gKwl0cmlzdGF0ZSAiaS5NWCBUUE0gUFdNIHN1cHBvcnQi Cj4gKwlkZXBlbmRzIG9uIEFSQ0hfTVhDIHx8IENPTVBJTEVfVEVTVAo+ICsJZGVwZW5kcyBvbiBI QVZFX0NMSyAmJiBIQVNfSU9NRU0KPiArCWhlbHAKPiArCSAgR2VuZXJpYyBQV00gZnJhbWV3b3Jr IGRyaXZlciBmb3IgaS5NWDdVTFAgVFBNIG1vZHVsZSwgVFBNJ3MgZnVsbAo+ICsJICBuYW1lIGlz IExvdyBQb3dlciBUaW1lci9QdWxzZSBXaWR0aCBNb2R1bGF0aW9uIE1vZHVsZS4KPiArCj4gKwkg IFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBt b2R1bGUKPiArCSAgd2lsbCBiZSBjYWxsZWQgcHdtLWlteC10cG0uCj4gKwo+ICBjb25maWcgUFdN X0paNDc0MAo+ICAJdHJpc3RhdGUgIkluZ2VuaWMgSlo0N3h4IFBXTSBzdXBwb3J0Igo+ICAJZGVw ZW5kcyBvbiBNQUNIX0lOR0VOSUMKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vTWFrZWZpbGUg Yi9kcml2ZXJzL3B3bS9NYWtlZmlsZQo+IGluZGV4IDQ0ODgyNWUuLmMzNjg1OTkgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9wd20vTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL3B3bS9NYWtlZmlsZQo+ IEBAIC0xOSw2ICsxOSw3IEBAIG9iai0kKENPTkZJR19QV01fSElCVlQpCQkrPSBwd20taGlidnQu bwo+ICBvYmotJChDT05GSUdfUFdNX0lNRykJCSs9IHB3bS1pbWcubwo+ICBvYmotJChDT05GSUdf UFdNX0lNWDEpCQkrPSBwd20taW14MS5vCj4gIG9iai0kKENPTkZJR19QV01fSU1YMjcpCQkrPSBw d20taW14Mjcubwo+ICtvYmotJChDT05GSUdfUFdNX0lNWF9UUE0pCSs9IHB3bS1pbXgtdHBtLm8K PiAgb2JqLSQoQ09ORklHX1BXTV9KWjQ3NDApCSs9IHB3bS1qejQ3NDAubwo+ICBvYmotJChDT05G SUdfUFdNX0xQMzk0MykJKz0gcHdtLWxwMzk0My5vCj4gIG9iai0kKENPTkZJR19QV01fTFBDMThY WF9TQ1QpCSs9IHB3bS1scGMxOHh4LXNjdC5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHdtL3B3 bS1pbXgtdHBtLmMgYi9kcml2ZXJzL3B3bS9wd20taW14LXRwbS5jCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwLi41OGFmMDkxNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9k cml2ZXJzL3B3bS9wd20taW14LXRwbS5jCj4gQEAgLTAsMCArMSw1MTggQEAKPiArLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMTgtMjAx OSBOWFAuCj4gKyAqCj4gKyAqIExpbWl0YXRpb25zOgo+ICsgKiAtIFRoZSBUUE0gY291bnRlciBh bmQgcGVyaW9kIGNvdW50ZXIgYXJlIHNoYXJlZCBiZXR3ZWVuCj4gKyAqICAgbXVsdGlwbGUgY2hh bm5lbHMsIHNvIGFsbCBjaGFubmVscyBzaG91bGQgdXNlIHNhbWUgcGVyaW9kCj4gKyAqICAgc2V0 dGluZ3MuCj4gKyAqIC0gQ2hhbmdlcyB0byBwb2xhcml0eSBjYW5ub3QgYmUgbGF0Y2hlZCBhdCB0 aGUgdGltZSBvZiB0aGUKPiArICogICBuZXh0IHBlcmlvZCBzdGFydC4KPiArICogLSBUaGUgcGVy aW9kIGFuZCBkdXR5IGNoYW5nZXMgYXJlIE5PVCBhdG9taWMsIGlmIG5ldyBwZXJpb2QgYW5kCj4g KyAqICAgbmV3IGR1dHkgYXJlIHJlcXVlc3RlZCBzaW11bHRhbmVvdXNseSB3aGVuIGNvdW50ZXIg aXMgcnVubmluZywKPiArICogICB0aGVyZSBjb3VsZCBiZSBhIHNtYWxsIHdpbmRvdyBvZiBydW5u aW5nIG9sZCBkdXR5IHdpdGggbmV3Cj4gKyAqICAgcGVyaW9kLCBhcyB0aGUgcGVyaW9kIGlzIHVw ZGF0ZWQgYmVmb3JlIGR1dHkgaW4gdGhpcyBkcml2ZXIsIHRoZQo+ICsgKiAgIHByb2JhYmlsaXR5 IGlzIHZlcnkgbG93LCBPTkxZIGhhcHBlbiB3aGVuIHRoZSBUUE0gY291bnRlciBjaGFuZ2VzCj4g KyAqICAgZnJvbSBNT0QgdG8gemVybyBiZXR3ZWVuIHRoZSBjb25zZWN1dGl2ZSB1cGRhdGUgb2Yg cGVyaW9kIGFuZAo+ICsgKiAgIGR1dHkuCgpUaGUgd2luZG93IHRoYXQgdGhpcyBidWcgdHJpZ2dl cnMgaXMgc21hbGwsIGJ1dCBpZiBpdCBkb2VzLCB0aGUgd2luZG93CndoZXJlIHRoZSBpbnZhbGlk IGNvbWJpbmF0aW9uIGlzIGFwcGxpZWQsIGlzbid0IHNtYWxsLS0taXQncyBvbmUKY29tcGxldGUg cGVyaW9kIGlmIEknbSBub3QgbWlzdGFrZW4uIFNvIEknZCB3cml0ZToKCiAtIENoYW5naW5nIHBl cmlvZCBhbmQgZHV0eSBjeWNsZSB0b2dldGhlciBpc24ndCBhdG9taWMuIFdpdGggdGhlIHdyb25n CiAgIHRpbWluZyBpdCBtaWdodCBoYXBwZW4gdGhhdCBhIHBlcmlvZCBpcyBwcm9kdWNlZCB3aXRo IG9sZCBkdXR5IGN5Y2xlCiAgIGJ1dCBuZXcgcGVyaW9kIHNldHRpbmdzLgoKPiArICovCj4gKwo+ ICsjaW5jbHVkZSA8bGludXgvYml0ZmllbGQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5o Pgo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9sb2cyLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9vZl9hZGRyZXNzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2Uu aD4KPiArI2luY2x1ZGUgPGxpbnV4L3B3bS5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ ICsKPiArI2RlZmluZSBQV01fSU1YX1RQTV9QQVJBTQkweDQKPiArI2RlZmluZSBQV01fSU1YX1RQ TV9HTE9CQUwJMHg4Cj4gKyNkZWZpbmUgUFdNX0lNWF9UUE1fU0MJCTB4MTAKPiArI2RlZmluZSBQ V01fSU1YX1RQTV9DTlQJCTB4MTQKPiArI2RlZmluZSBQV01fSU1YX1RQTV9NT0QJCTB4MTgKPiAr I2RlZmluZSBQV01fSU1YX1RQTV9DblNDKG4pCSgweDIwICsgKG4pICogMHg4KQo+ICsjZGVmaW5l IFBXTV9JTVhfVFBNX0NuVihuKQkoMHgyNCArIChuKSAqIDB4OCkKPiArCj4gKyNkZWZpbmUgUFdN X0lNWF9UUE1fUEFSQU1fQ0hBTgkJCUdFTk1BU0soNywgMCkKPiArCj4gKyNkZWZpbmUgUFdNX0lN WF9UUE1fU0NfUFMJCQlHRU5NQVNLKDIsIDApCj4gKyNkZWZpbmUgUFdNX0lNWF9UUE1fU0NfQ01P RAkJCUdFTk1BU0soNCwgMykKPiArI2RlZmluZSBQV01fSU1YX1RQTV9TQ19DTU9EX0lOQ19FVkVS WV9DTEsJRklFTERfUFJFUChQV01fSU1YX1RQTV9TQ19DTU9ELCAxKQo+ICsjZGVmaW5lIFBXTV9J TVhfVFBNX1NDX0NQV01TCQkJQklUKDUpCj4gKwo+ICsjZGVmaW5lIFBXTV9JTVhfVFBNX0NuU0Nf Q0hGCUJJVCg3KQo+ICsjZGVmaW5lIFBXTV9JTVhfVFBNX0NuU0NfTVNCCUJJVCg1KQo+ICsjZGVm aW5lIFBXTV9JTVhfVFBNX0NuU0NfTVNBCUJJVCg0KQo+ICsKPiArLyoKPiArICogVGhlIHJlZmVy ZW5jZSBtYW51YWwgZGVzY3JpYmVzIHRoaXMgZmllbGQgYXMgdHdvIHNlcGFyYXRlIGJpdHMuIFRo ZQo+ICsgKiBzYW1hbnRpYyBvZiB0aGUgdHdvIGJpdHMgaXNuJ3Qgb3J0aG9nb25hbCB0aG91Z2gs IHNvIHRoZXkgYXJlIHRyZWF0ZWQKCnMvc2FtYW50aWMvc2VtYW50aWMvCgo+ICsgKiB0b2dldGhl ciBhcyBhIDItYml0IGZpZWxkIGhlcmUuCj4gKyAqLwo+ICsjZGVmaW5lIFBXTV9JTVhfVFBNX0Nu U0NfRUxTCUdFTk1BU0soMywgMikKPiArI2RlZmluZSBQV01fSU1YX1RQTV9DblNDX0VMU19QT0xB UklUWV9JTlZFUlNFRAkweDEKPiArI2RlZmluZSBQV01fSU1YX1RQTV9DblNDX0VMU19JTlZFUlNF RAlGSUVMRF9QUkVQKFBXTV9JTVhfVFBNX0NuU0NfRUxTLCAxKQo+ICsjZGVmaW5lIFBXTV9JTVhf VFBNX0NuU0NfRUxTX05PUk1BTAlGSUVMRF9QUkVQKFBXTV9JTVhfVFBNX0NuU0NfRUxTLCAyKQo+ ICsKPiArCj4gKyNkZWZpbmUgUFdNX0lNWF9UUE1fTU9EX1dJRFRICTE2Cj4gKyNkZWZpbmUgUFdN X0lNWF9UUE1fTU9EX01PRAlHRU5NQVNLKFBXTV9JTVhfVFBNX01PRF9XSURUSCAtIDEsIDApCj4g Kwo+ICtzdHJ1Y3QgaW14X3RwbV9wd21fY2hpcCB7Cj4gKwlzdHJ1Y3QgcHdtX2NoaXAgY2hpcDsK PiArCXN0cnVjdCBjbGsgKmNsazsKPiArCXZvaWQgX19pb21lbSAqYmFzZTsKPiArCXN0cnVjdCBt dXRleCBsb2NrOwo+ICsJdTMyIHVzZXJfY291bnQ7Cj4gKwl1MzIgZW5hYmxlX2NvdW50Owo+ICsJ dTMyIHJlYWxfcGVyaW9kOwo+ICt9Owo+ICsKPiArc3RydWN0IGlteF90cG1fcHdtX3BhcmFtIHsK PiArCXU4IHByZXNjYWxlOwo+ICsJdTMyIG1vZDsKPiArCXUzMiB2YWw7Cj4gK307Cj4gKwo+ICtz dHJ1Y3QgaW14X3RwbV9wd21fY2hhbm5lbCB7Cj4gKwllbnVtIHB3bV9wb2xhcml0eSBwb2xhcml0 eTsKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGlteF90cG1fcHdtX2NoaXAgKnRv X2lteF90cG1fcHdtX2NoaXAoc3RydWN0IHB3bV9jaGlwICpjaGlwKQo+ICt7Cj4gKwlyZXR1cm4g Y29udGFpbmVyX29mKGNoaXAsIHN0cnVjdCBpbXhfdHBtX3B3bV9jaGlwLCBjaGlwKTsKPiArfQo+ ICsKPiArc3RhdGljIGludCBwd21faW14X3RwbV9yb3VuZF9zdGF0ZShzdHJ1Y3QgcHdtX2NoaXAg KmNoaXAsCj4gKwkJCQkgICBzdHJ1Y3QgaW14X3RwbV9wd21fcGFyYW0gKnAsCj4gKwkJCQkgICBz dHJ1Y3QgcHdtX3N0YXRlICpzdGF0ZSwKPiArCQkJCSAgIHN0cnVjdCBwd21fc3RhdGUgKnJlYWxf c3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbXhfdHBtX3B3bV9jaGlwICp0cG0gPSB0b19pbXhfdHBt X3B3bV9jaGlwKGNoaXApOwo+ICsJdTMyIHJhdGUsIHByZXNjYWxlLCBwZXJpb2RfY291bnQsIGNs b2NrX3VuaXQ7Cj4gKwl1NjQgdG1wOwo+ICsKPiArCXJhdGUgPSBjbGtfZ2V0X3JhdGUodHBtLT5j bGspOwo+ICsJdG1wID0gKHU2NClzdGF0ZS0+cGVyaW9kICogcmF0ZTsKPiArCWNsb2NrX3VuaXQg PSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwodG1wLCBOU0VDX1BFUl9TRUMpOwo+ICsJaWYgKGNsb2Nr X3VuaXQgPD0gUFdNX0lNWF9UUE1fTU9EX01PRCkKPiArCQlwcmVzY2FsZSA9IDA7Cj4gKwllbHNl Cj4gKwkJcHJlc2NhbGUgPSBpbG9nMihjbG9ja191bml0KSArIDEgLSBQV01fSU1YX1RQTV9NT0Rf V0lEVEg7Cj4gKwo+ICsJaWYgKCghRklFTERfRklUKFBXTV9JTVhfVFBNX1NDX1BTLCBwcmVzY2Fs ZSkpKQo+ICsJCXJldHVybiAtRVJBTkdFOwo+ICsJcC0+cHJlc2NhbGUgPSBwcmVzY2FsZTsKPiAr Cj4gKwlwZXJpb2RfY291bnQgPSAoY2xvY2tfdW5pdCArICgoMSA8PCBwcmVzY2FsZSkgPj4gMSkp ID4+IHByZXNjYWxlOwo+ICsJcC0+bW9kID0gcGVyaW9kX2NvdW50Owo+ICsKPiArCS8qIGNhbGN1 bGF0ZSByZWFsIHBlcmlvZCBIVyBjYW4gc3VwcG9ydCAqLwo+ICsJdG1wID0gKHU2NClwZXJpb2Rf Y291bnQgPDwgcHJlc2NhbGU7Cj4gKwl0bXAgKj0gTlNFQ19QRVJfU0VDOwo+ICsJcmVhbF9zdGF0 ZS0+cGVyaW9kID0gRElWX1JPVU5EX0NMT1NFU1RfVUxMKHRtcCwgcmF0ZSk7Cj4gKwo+ICsJLyoK PiArCSAqIGlmIGV2ZW50dWFsbHkgdGhlIFBXTSBvdXRwdXQgaXMgaW5hY3RpdmUsIGVpdGhlcgo+ ICsJICogZHV0eSBjeWNsZSBpcyAwIG9yIHN0YXR1cyBpcyBkaXNhYmxlZCwgbmVlZCB0bwo+ICsJ ICogbWFrZSBzdXJlIHRoZSBvdXRwdXQgcGluIGlzIGluYWN0aXZlLgo+ICsJICovCj4gKwlpZiAo IXN0YXRlLT5lbmFibGVkKQo+ICsJCXJlYWxfc3RhdGUtPmR1dHlfY3ljbGUgPSAwOwo+ICsJZWxz ZQo+ICsJCXJlYWxfc3RhdGUtPmR1dHlfY3ljbGUgPSBzdGF0ZS0+ZHV0eV9jeWNsZTsKPiArCj4g Kwl0bXAgPSAodTY0KXAtPm1vZCAqIHJlYWxfc3RhdGUtPmR1dHlfY3ljbGU7Cj4gKwlwLT52YWwg PSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwodG1wLCByZWFsX3N0YXRlLT5wZXJpb2QpOwo+ICsKPiAr CXJlYWxfc3RhdGUtPnBvbGFyaXR5ID0gc3RhdGUtPnBvbGFyaXR5Owo+ICsJcmVhbF9zdGF0ZS0+ ZW5hYmxlZCA9IHN0YXRlLT5lbmFibGVkOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsv KiB0aGlzIGZ1bmN0aW9uIGlzIHN1cHBvc2VkIHRvIGJlIGNhbGxlZCB3aXRoIG11dGV4IGhvbGQg Ki8KPiArc3RhdGljIGludCBwd21faW14X3RwbV9zZXR1cF9wZXJpb2RfZHV0eShzdHJ1Y3QgcHdt X2NoaXAgKmNoaXAsCj4gKwkJCQkJIHN0cnVjdCBwd21fZGV2aWNlICpwd20sCj4gKwkJCQkJIHN0 cnVjdCBpbXhfdHBtX3B3bV9wYXJhbSAqcCkKPiArewo+ICsJc3RydWN0IGlteF90cG1fcHdtX2No aXAgKnRwbSA9IHRvX2lteF90cG1fcHdtX2NoaXAoY2hpcCk7Cj4gKwl1bnNpZ25lZCBsb25nIHRp bWVvdXQ7Cj4gKwl1MzIgdmFsLCBjbW9kLCBjdXJfcHJlc2NhbGU7Cj4gKwo+ICsJdmFsID0gcmVh ZGwodHBtLT5iYXNlICsgUFdNX0lNWF9UUE1fU0MpOwo+ICsJY21vZCA9IEZJRUxEX0dFVChQV01f SU1YX1RQTV9TQ19DTU9ELCB2YWwpOwo+ICsJY3VyX3ByZXNjYWxlID0gRklFTERfR0VUKFBXTV9J TVhfVFBNX1NDX1BTLCB2YWwpOwo+ICsJaWYgKGNtb2QgJiYgY3VyX3ByZXNjYWxlICE9IHAtPnBy ZXNjYWxlKQo+ICsJCXJldHVybiAtRUJVU1k7Cj4gKwo+ICsJLyogc2V0IFRQTSBjb3VudGVyIHBy ZXNjYWxlICovCj4gKwl2YWwgJj0gflBXTV9JTVhfVFBNX1NDX1BTOwo+ICsJdmFsIHw9IEZJRUxE X1BSRVAoUFdNX0lNWF9UUE1fU0NfUFMsIHAtPnByZXNjYWxlKTsKPiArCXdyaXRlbCh2YWwsIHRw bS0+YmFzZSArIFBXTV9JTVhfVFBNX1NDKTsKPiArCj4gKwkvKgo+ICsJICogc2V0IHBlcmlvZCBj b3VudDoKPiArCSAqIGlmIChDTU9EWzE6MF0gPSAwOjApIHRoZW4gTU9EIHJlZ2lzdGVyIGlzIHVw ZGF0ZWQgd2hlbiBNT0QKPiArCSAqIHJlZ2lzdGVyIGlzIHdyaXR0ZW4uCj4gKwkgKgo+ICsJICog aWYgKENNT0RbMTowXSDiiaAgMDowKSwgdGhlbiBNT0QgcmVnaXN0ZXIgaXMgdXBkYXRlZCBhY2Nv cmRpbmcKPiArCSAqIHRvIHRoZSBDUFdNUyBiaXQsIHRoYXQgaXM6Cj4gKwkgKgo+ICsJICogaWYg dGhlIHNlbGVjdGVkIG1vZGUgaXMgbm90IENQV00gdGhlbiBNT0QgcmVnaXN0ZXIgaXMgdXBkYXRl ZAo+ICsJICogYWZ0ZXIgTU9EIHJlZ2lzdGVyIHdhcyB3cml0dGVuIGFuZCB0aGUgVFBNIGNvdW50 ZXIgY2hhbmdlcyBmcm9tCj4gKwkgKiBNT0QgdG8gemVyby4KPiArCSAqCj4gKwkgKiBpZiB0aGUg c2VsZWN0ZWQgbW9kZSBpcyBDUFdNIHRoZW4gTU9EIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgYWZ0ZXIK PiArCSAqIE1PRCByZWdpc3RlciB3YXMgd3JpdHRlbiBhbmQgdGhlIFRQTSBjb3VudGVyIGNoYW5n ZXMgZnJvbSBNT0QKPiArCSAqIHRvIChNT0Qg4oCTIDEpLgoKR2l2ZW4gdGhhdCB0aGUgZHJpdmVy IGRvZXNuJ3QgbWFrZSB1c2Ugb2YgQ1BXTSwgdGhpcyBjb21tZW50IGNvdWxkIGJlCnNpbXBsaWZp ZWQuIEknZCB3cml0ZToKCgkvKgoJICogSWYgdGhlIFBXTSBpcyBlbmFibGVkIChDTU9EWzE6MF0g 4omgIDJiMDApLCB0aGUgcGVyaW9kIGxlbmd0aAoJICogaXMgbGF0Y2hlZCBpbnRvIGhhcmR3YXJl IHdoZW4gdGhlIG5leHQgcGVyaW9kIHN0YXJ0cy4KCSAqLwoKVGhpcyBpcyBldmVuIHRydWUgZm9y IHRoZSAoaGVyZSB1bnVzZWQpIENQV00gbW9kZS4gKFRoZSByZWZlcmVuY2UgbWFudWFsCmlzbid0 IGVudGlyZWx5IGNsZWFyIGhlcmUgSU1ITy4gSSBhc3N1bWUgaWYgTU9EID09IDQwMDAgYW5kIENO VCA9PSAyMDAxCnRoZW4gTU9EIGlzIHRoZW4gY2hhbmdlZCB0byAyMDAwLCB0aGUgY3VycmVudGx5 IHJ1bm5pbmcgcGVyaW9kIGlzCmNvbXBsZXRlZCB3aXRoIGEgbGVuZ3RoIG9mIDQwMDAgcHJlc2Nh bGVkIGNsayBjeWNsZXM/ISkKCj4gKwkgKi8KPiArCXdyaXRlbChwLT5tb2QsIHRwbS0+YmFzZSAr IFBXTV9JTVhfVFBNX01PRCk7Cj4gKwo+ICsJLyoKPiArCSAqIHNldCBjaGFubmVsIHZhbHVlOgo+ ICsJICogaWYgKENNT0RbMTowXSA9IDA6MCkgdGhlbiBDblYgcmVnaXN0ZXIgaXMgdXBkYXRlZCB3 aGVuIENuVgo+ICsJICogcmVnaXN0ZXIgaXMgd3JpdHRlbi4KPiArCSAqCj4gKwkgKiBpZiAoQ01P RFsxOjBdIOKJoCAwOjApLCB0aGVuIENuViByZWdpc3RlciBpcyB1cGRhdGVkIGFjY29yZGluZwo+ ICsJICogdG8gdGhlIHNlbGVjdGVkIG1vZGUsIHRoYXQgaXM6Cj4gKwkgKgo+ICsJICogaWYgdGhl IHNlbGVjdGVkIG1vZGUgaXMgb3V0cHV0IGNvbXBhcmUgdGhlbiBDblYgcmVnaXN0ZXIgaXMKPiAr CSAqIHVwZGF0ZWQgb24gdGhlIG5leHQgVFBNIGNvdW50ZXIgaW5jcmVtZW50IChlbmQgb2YgdGhl IHByZXNjYWxlcgo+ICsJICogY291bnRpbmcpIGFmdGVyIENuViByZWdpc3RlciB3YXMgd3JpdHRl bi4KPiArCSAqCj4gKwkgKiBpZiB0aGUgc2VsZWN0ZWQgbW9kZSBpcyBFUFdNIHRoZW4gQ25WIHJl Z2lzdGVyIGlzIHVwZGF0ZWQgYWZ0ZXIKPiArCSAqIENuViByZWdpc3RlciB3YXMgd3JpdHRlbiBh bmQgdGhlIFRQTSBjb3VudGVyIGNoYW5nZXMgZnJvbSBNT0QKPiArCSAqIHRvIHplcm8uCj4gKwkg Kgo+ICsJICogaWYgdGhlIHNlbGVjdGVkIG1vZGUgaXMgQ1BXTSB0aGVuIENuViByZWdpc3RlciBp cyB1cGRhdGVkIGFmdGVyCj4gKwkgKiBDblYgcmVnaXN0ZXIgd2FzIHdyaXR0ZW4gYW5kIHRoZSBU UE0gY291bnRlciBjaGFuZ2VzIGZyb20gTU9ECj4gKwkgKiB0byAoTU9EIOKAkyAxKS4KClRoaXMg aXMgc2ltaWxhciB0byB0aGUgYWJvdmUgdG9vIHZlcmJvc2UgYW5kIGNvdmVycyBzdHVmZiB0aGF0 IGlzIG5vdApyZWxldmFudCBmb3IgdGhpcyBkcml2ZXIuIEFsc28gdGhlIHVzZWQgd29yZGluZyBp cyBub3Qgb2J2aW91cyBpZiB5b3UKZG9uJ3QgbG9vayBpbnRvIHRoZSByZWZlcmVuY2UgbWFudWFs LgoKPiArCSAqLwo+ICsJd3JpdGVsKHAtPnZhbCwgdHBtLT5iYXNlICsgUFdNX0lNWF9UUE1fQ25W KHB3bS0+aHdwd20pKTsKPiArCj4gKwkvKiBtYWtlIHN1cmUgTU9EICYgQ25WIHJlZ2lzdGVycyBh cmUgdXBkYXRlZCAqLwo+ICsJdGltZW91dCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKHRw bS0+cmVhbF9wZXJpb2QgLwo+ICsJCQkJCSAgICAgTlNFQ19QRVJfTVNFQyArIDEpOwo+ICsJd2hp bGUgKHJlYWRsKHRwbS0+YmFzZSArIFBXTV9JTVhfVFBNX01PRCkgIT0gcC0+bW9kCj4gKwkgICAg ICAgfHwgcmVhZGwodHBtLT5iYXNlICsgUFdNX0lNWF9UUE1fQ25WKHB3bS0+aHdwd20pKQo+ICsJ ICAgICAgICE9IHAtPnZhbCkgewo+ICsJCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQp KQo+ICsJCQlyZXR1cm4gLUVUSU1FOwo+ICsJCWNwdV9yZWxheCgpOwo+ICsJfQo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gWy4uLl0KPiArc3RhdGljIGludCBwd21faW14X3RwbV9hcHBseShzdHJ1 Y3QgcHdtX2NoaXAgKmNoaXAsCj4gKwkJCSAgICAgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSwKPiAr CQkJICAgICBzdHJ1Y3QgcHdtX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IGlteF90cG1f cHdtX2NoaXAgKnRwbSA9IHRvX2lteF90cG1fcHdtX2NoaXAoY2hpcCk7Cj4gKwlzdHJ1Y3QgaW14 X3RwbV9wd21fcGFyYW0gcGFyYW07Cj4gKwlzdHJ1Y3QgcHdtX3N0YXRlIHJlYWxfc3RhdGU7Cj4g KwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IHB3bV9pbXhfdHBtX3JvdW5kX3N0YXRlKGNoaXAsICZw YXJhbSwgc3RhdGUsICZyZWFsX3N0YXRlKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmdHBtLT5sb2NrKTsKPiArCj4gKwkvKgo+ICsJICogVFBN IGNvdW50ZXIgaXMgc2hhcmVkIGJ5IG11bHRpcGxlIGNoYW5uZWxzLCBzbwo+ICsJICogcHJlc2Nh bGUgYW5kIHBlcmlvZCBjYW4gTk9UIGJlIG1vZGlmaWVkIHdoZW4KPiArCSAqIHRoZXJlIGFyZSBt dWx0aXBsZSBjaGFubmVscyBpbiB1c2Ugd2l0aCBkaWZmZXJlbnQKPiArCSAqIHBlcmlvZCBzZXR0 aW5ncy4KPiArCSAqLwo+ICsJaWYgKHJlYWxfc3RhdGUucGVyaW9kICE9IHRwbS0+cmVhbF9wZXJp b2QpIHsKPiArCQlpZiAodHBtLT51c2VyX2NvdW50ID4gMSkgewo+ICsJCQlyZXQgPSAtRUJVU1k7 Cj4gKwkJCWdvdG8gZXhpdDsKPiArCQl9Cj4gKwo+ICsJCXJldCA9IHB3bV9pbXhfdHBtX3NldHVw X3BlcmlvZF9kdXR5KGNoaXAsIHB3bSwgJnBhcmFtKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3Rv IGV4aXQ7Cj4gKwo+ICsJCXRwbS0+cmVhbF9wZXJpb2QgPSByZWFsX3N0YXRlLnBlcmlvZDsKPiAr CX0KPiArCj4gKwlyZXQgPSBwd21faW14X3RwbV9hcHBseV9odyhjaGlwLCBwd20sICZyZWFsX3N0 YXRlKTsKCkl0J3MgdW5pbnR1aXRpdmUgaGVyZSB0aGF0IGJvdGggcHdtX2lteF90cG1fc2V0dXBf cGVyaW9kX2R1dHkgYW5kCnB3bV9pbXhfdHBtX2FwcGx5X2h3IChwb3RlbnRpYWxseSkgY29uZmln dXJlIHRoZSBkdXR5IGN5Y2xlLiBJIGRpZG4ndAp0aG91Z2h0IGl0IHRvIGFuIGVuZCwgYnV0IG1h eWJlIHRoaXMgY291bGQgYmUgb3B0aW1pc2VkPwoKPiArZXhpdDoKPiArCW11dGV4X3VubG9jaygm dHBtLT5sb2NrKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHB3 bV9pbXhfdHBtX3JlcXVlc3Qoc3RydWN0IHB3bV9jaGlwICpjaGlwLCBzdHJ1Y3QgcHdtX2Rldmlj ZSAqcHdtKQo+ICt7Cj4gKwlzdHJ1Y3QgaW14X3RwbV9wd21fY2hpcCAqdHBtID0gdG9faW14X3Rw bV9wd21fY2hpcChjaGlwKTsKPiArCXN0cnVjdCBpbXhfdHBtX3B3bV9jaGFubmVsICpjaGFuOwo+ ICsKPiArCWNoYW4gPSBkZXZtX2t6YWxsb2MoY2hpcC0+ZGV2LCBzaXplb2YoKmNoYW4pLCBHRlBf S0VSTkVMKTsKClRoZXJlIGlzIG5vIGFkdmFudGFnZSBpbiB1c2luZyB0aGUgZGV2bSB2YXJpYW50 IGhlcmUgYXMgdGhlIHJlcXVlc3RlZAptZW1vcnkgaXMgZnJlZWQgaW4gLmZyZWUgYW55aG93LiBT byB0aGlzIG9ubHkgYWRkcyBhZGRpdGlvbmFsIG1lbW9yeQpmb29kcHJpbnQgYW5kIHJ1bnRpbWUg b3ZlcmhlYWQuCgo+ICsJaWYgKCFjaGFuKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCXB3 bV9zZXRfY2hpcF9kYXRhKHB3bSwgY2hhbik7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmdHBtLT5sb2Nr KTsKPiArCXRwbS0+dXNlcl9jb3VudCsrOwo+ICsJbXV0ZXhfdW5sb2NrKCZ0cG0tPmxvY2spOwo+ ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBwd21faW14X3RwbV9mcmVl KHN0cnVjdCBwd21fY2hpcCAqY2hpcCwgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSkKPiArewo+ICsJ c3RydWN0IGlteF90cG1fcHdtX2NoaXAgKnRwbSA9IHRvX2lteF90cG1fcHdtX2NoaXAoY2hpcCk7 Cj4gKwo+ICsJbXV0ZXhfbG9jaygmdHBtLT5sb2NrKTsKPiArCXRwbS0+dXNlcl9jb3VudC0tOwo+ ICsJbXV0ZXhfdW5sb2NrKCZ0cG0tPmxvY2spOwo+ICsKPiArCWRldm1fa2ZyZWUoY2hpcC0+ZGV2 LCBwd21fZ2V0X2NoaXBfZGF0YShwd20pKTsKPiArCXB3bV9zZXRfY2hpcF9kYXRhKHB3bSwgTlVM TCk7CgpUaGUgY2FsbCB0byBwd21fc2V0X2NoaXBfZGF0YSBjb3VsZCBiZXR0ZXIgYmUgZG9uZSBp biB0aGUgUFdNIGNvcmUuCgo+ICt9CgotLSAKUGVuZ3V0cm9uaXggZS5LLiAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgVXdlIEtsZWluZS1Lw7ZuaWcgICAgICAgICAgICB8CkluZHVzdHJpYWwg TGludXggU29sdXRpb25zICAgICAgICAgICAgICAgICB8IGh0dHA6Ly93d3cucGVuZ3V0cm9uaXgu ZGUvICB8CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwps aW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1hcm0ta2VybmVsCg==