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.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 E3782C3A5A3 for ; Fri, 30 Aug 2019 07:28:49 +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 ADEB222CE3 for ; Fri, 30 Aug 2019 07:28:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="MAfCu95X"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ti.com header.i=@ti.com header.b="cvzcotxY" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org ADEB222CE3 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=ti.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-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=AG6Gaa5bznq0EvKMzBVSOxe1yoYHOa+e24TaupUGm2E=; b=MAfCu95X7K1Kqp0Mm9pOCS2VW OM/jhWQOlN5yPXdz9aZw7WlOxP14heg2VGYADUDeUmozsrIcY2EF+25bU5sbIMBTf6a1pMe6KDhE3 ofnR0U7A7u7JLO/VFcKqTGXYlOsqjZ46zrN+bn+kFkTg3IU9XCeoIWCPnpbxvn6KpfCpyNWYRBa2o QkRGw846/Y1tPoUGEOSL/vL2j1cmAxkGBDqB4b5zTS3zmCpCYYGuUnw9BTBHSxnXpigdQsRArcvqj xfAc42Cop2GH8wL/E3d713BYBpgsbvCBh7KZu0K9TbU47TaoPghNCgLD3hrS45bdIK7EESK8O6/8P wJZJI3/5g==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1i3bKz-0004vk-95; Fri, 30 Aug 2019 07:28:49 +0000 Received: from lelv0142.ext.ti.com ([198.47.23.249]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1i3bKY-0004gn-3g for linux-arm-kernel@lists.infradead.org; Fri, 30 Aug 2019 07:28:24 +0000 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id x7U7SI50073271; Fri, 30 Aug 2019 02:28:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1567150098; bh=8sdTCRtdplYo/h5ZDE5eJXQIxLz1e8dYm1qiYiYwDQo=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=cvzcotxYZ+yZtU5U/G4E5SwGBvdD5hQRC8OVg2VpqPFIhzs1/KnzFHbCZDir07kSS 998ubvRTtmooaoX7JZS5mnbu3c0/GwzPDc3nsPi1B6pxzINbXjJxOH4MdxVUlHCFV5 RUX/Eg2LF6JJkWxwkzjlONfxCkhaC296bo8rKrKA= Received: from DLEE108.ent.ti.com (dlee108.ent.ti.com [157.170.170.38]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x7U7SIPZ073565 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 30 Aug 2019 02:28:18 -0500 Received: from DLEE108.ent.ti.com (157.170.170.38) by DLEE108.ent.ti.com (157.170.170.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Fri, 30 Aug 2019 02:28:16 -0500 Received: from lelv0327.itg.ti.com (10.180.67.183) by DLEE108.ent.ti.com (157.170.170.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5 via Frontend Transport; Fri, 30 Aug 2019 02:28:16 -0500 Received: from [127.0.0.1] (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0327.itg.ti.com (8.15.2/8.15.2) with ESMTP id x7U7SEX2051736; Fri, 30 Aug 2019 02:28:15 -0500 Subject: Re: [PATCHv2 02/11] soc: ti: add initial PRM driver with reset control support To: Philipp Zabel , , , , References: <20190828071941.32378-1-t-kristo@ti.com> <20190828071941.32378-3-t-kristo@ti.com> <1567084339.5345.7.camel@pengutronix.de> From: Tero Kristo Message-ID: <049da607-c352-4ed1-9a2d-2374d7a7e372@ti.com> Date: Fri, 30 Aug 2019 10:28:13 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <1567084339.5345.7.camel@pengutronix.de> Content-Language: en-US X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190830_002822_233662_8C72187F X-CRM114-Status: GOOD ( 36.78 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: tony@atomide.com, devicetree@vger.kernel.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMjkvMDgvMjAxOSAxNjoxMiwgUGhpbGlwcCBaYWJlbCB3cm90ZToKPiBPbiBXZWQsIDIwMTkt MDgtMjggYXQgMTA6MTkgKzAzMDAsIFRlcm8gS3Jpc3RvIHdyb3RlOgo+PiBBZGQgaW5pdGlhbCBQ Uk0gKFBvd2VyIGFuZCBSZXNldCBNYW5hZ2VtZW50KSBkcml2ZXIgZm9yIFRJIE9NQVAgY2xhc3MK Pj4gU29Dcy4gSW5pdGlhbGx5IHRoaXMgZHJpdmVyIG9ubHkgc3VwcG9ydHMgcmVzZXQgY29udHJv bCwgYnV0IGNhbiBiZQo+PiBleHRlbmRlZCB0byBzdXBwb3J0IHJlc3Qgb2YgdGhlIGZ1bmN0aW9u YWxpdHksIGxpa2UgcG93ZXJkb21haW4KPj4gY29udHJvbCwgUFJDTSBpcnEgc3VwcG9ydCBldGMu Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFRlcm8gS3Jpc3RvIDx0LWtyaXN0b0B0aS5jb20+Cj4+IC0t LQo+PiAgIGFyY2gvYXJtL21hY2gtb21hcDIvS2NvbmZpZyB8ICAgMSArCj4+ICAgZHJpdmVycy9z b2MvdGkvTWFrZWZpbGUgICAgIHwgICAxICsKPj4gICBkcml2ZXJzL3NvYy90aS9vbWFwX3BybS5j ICAgfCAyMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgMyBmaWxl cyBjaGFuZ2VkLCAyMzcgaW5zZXJ0aW9ucygrKQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL3NvYy90aS9vbWFwX3BybS5jCj4+Cj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9t YXAyL0tjb25maWcgYi9hcmNoL2FybS9tYWNoLW9tYXAyL0tjb25maWcKPj4gaW5kZXggZmRiNjc0 Mzc2MGEyLi5hZDA4ZDQ3MGEyY2EgMTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIv S2NvbmZpZwo+PiArKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL0tjb25maWcKPj4gQEAgLTEwOSw2 ICsxMDksNyBAQCBjb25maWcgQVJDSF9PTUFQMlBMVVMKPj4gICAJc2VsZWN0IFRJX1NZU0MKPj4g ICAJc2VsZWN0IE9NQVBfSVJRQ0hJUAo+PiAgIAlzZWxlY3QgQ0xLU1JDX1RJXzMySwo+PiArCXNl bGVjdCBBUkNIX0hBU19SRVNFVF9DT05UUk9MTEVSCj4+ICAgCWhlbHAKPj4gICAJICBTeXN0ZW1z IGJhc2VkIG9uIE9NQVAyLCBPTUFQMywgT01BUDQgb3IgT01BUDUKPj4gICAKPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvc29jL3RpL01ha2VmaWxlIGIvZHJpdmVycy9zb2MvdGkvTWFrZWZpbGUKPj4g aW5kZXggYjM4NjhkMzkyZDRmLi43ODhiNWNkMWUxODAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv c29jL3RpL01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMvc29jL3RpL01ha2VmaWxlCj4+IEBAIC02 LDYgKzYsNyBAQCBvYmotJChDT05GSUdfS0VZU1RPTkVfTkFWSUdBVE9SX1FNU1MpCSs9IGtuYXZf cW1zcy5vCj4+ICAga25hdl9xbXNzLXkgOj0ga25hdl9xbXNzX3F1ZXVlLm8ga25hdl9xbXNzX2Fj Yy5vCj4+ICAgb2JqLSQoQ09ORklHX0tFWVNUT05FX05BVklHQVRPUl9ETUEpCSs9IGtuYXZfZG1h Lm8KPj4gICBvYmotJChDT05GSUdfQU1YM19QTSkJCQkrPSBwbTMzeHgubwo+PiArb2JqLSQoQ09O RklHX0FSQ0hfT01BUDJQTFVTKQkJKz0gb21hcF9wcm0ubwo+PiAgIG9iai0kKENPTkZJR19XS1VQ X00zX0lQQykJCSs9IHdrdXBfbTNfaXBjLm8KPj4gICBvYmotJChDT05GSUdfVElfU0NJX1BNX0RP TUFJTlMpCQkrPSB0aV9zY2lfcG1fZG9tYWlucy5vCj4+ICAgb2JqLSQoQ09ORklHX1RJX1NDSV9J TlRBX01TSV9ET01BSU4pCSs9IHRpX3NjaV9pbnRhX21zaS5vCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3NvYy90aS9vbWFwX3BybS5jIGIvZHJpdmVycy9zb2MvdGkvb21hcF9wcm0uYwo+PiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmZkNWM0MzFmODczNgo+PiAt LS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvc29jL3RpL29tYXBfcHJtLmMKPj4gQEAgLTAs MCArMSwyMzUgQEAKPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+ICsv Kgo+PiArICogT01BUDIrIFBSTSBkcml2ZXIKPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTkgVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkIC0gaHR0cDovL3d3dy50aS5jb20vCj4+ ICsgKglUZXJvIEtyaXN0byA8dC1rcmlzdG9AdGkuY29tPgo+PiArICovCj4+ICsKPj4gKyNpbmNs dWRlIDxsaW51eC9rZXJuZWwuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiAKPiBX aHkgPGxpbnV4L21vZHVsZS5oPj8gVGhpcyBpcyBhIGJ1aWx0aW4gZHJpdmVyLgoKWWVhaCwgbm90 IGFueW1vcmUuIExldCBtZSBkaXRjaCB0aGlzLgoKPiAKPj4gKyNpbmNsdWRlIDxsaW51eC9kZXZp Y2UuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+ Cj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcGxh dGZvcm1fZGV2aWNlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcmVzZXQtY29udHJvbGxlci5oPgo+ PiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4+ICsKPj4gK3N0cnVjdCBvbWFwX3JzdF9tYXAg ewo+PiArCXM4IHJzdDsKPj4gKwlzOCBzdDsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBvbWFwX3By bV9kYXRhIHsKPj4gKwl1MzIgYmFzZTsKPj4gKwljb25zdCBjaGFyICpuYW1lOwo+PiArCXUxNiBy c3RjdHJsOwo+PiArCXUxNiByc3RzdDsKPj4gKwljb25zdCBzdHJ1Y3Qgb21hcF9yc3RfbWFwICpy c3RtYXA7Cj4+ICsJdTggZmxhZ3M7Cj4+ICt9Owo+IAo+IEkgd29uZGVyIGlmIHNwbGl0dGluZyBy c3RjdHJsL3JzdHN0L3JzdG1hcCBvdXQgaW50byBhIHNlcGFyYXRlIHN0cnVjdHVyZQo+IHdvdWxk IG1ha2Ugc2Vuc2UuIFRoYXQgY291bGQgYmUgbGlua2VkIGZyb20gb21hcF9yZXNldF9kYXRhIGRp cmVjdGx5Lgo+IFRoYXQgb25seSBtYWtlcyBzZW5zZSBpZiB0aGVyZSdkIGJlIGVub3VnaCBjYXNl cyB3aGVyZSBpdCBjYW4gYmUgcmV1c2VkCj4gZm9yIG11bHRpcGxlIFBSTXMgaW5zdGFuY2VzLgoK SG1tLCBzcGxpdHRpbmcgdGhlc2Ugb3V0IHdvdWxkIG1ha2UgaXQgcG9zc2libGUgdG8gc2hhcmUg dGhlIGJpdHMgZm9yIAppcHU6cyBhY3Jvc3MgZGV2aWNlcywgc2FtZSBmb3IgZHNwOnMgYW5kIGV2 ZTpzLgoKSG93ZXZlciwgYWRkaW5nIHRvbyBtYW55IGxldmVscyBvZiBhYnN0cmFjdGlvbiBtYWtl cyBpdCBraW5kIG9mIApkaWZmaWN1bHQgdG8gZm9sbG93IHdoYXQgaXMgaGFwcGVuaW5nIHdpdGgg dGhlIGNvZGUsIGFuZCBpdCB3b3VsZCBvbmx5IApzYXZlIG1heWJlIH4xMDAgYnl0ZXMgb2YgbWVt b3J5IGF0IHRoZSBtb21lbnQuCgo+IAo+PiArCj4+ICtzdHJ1Y3Qgb21hcF9wcm0gewo+PiArCWNv bnN0IHN0cnVjdCBvbWFwX3BybV9kYXRhICpkYXRhOwo+PiArCXZvaWQgX19pb21lbSAqYmFzZTsK Pj4gK307Cj4+ICsKPj4gK3N0cnVjdCBvbWFwX3Jlc2V0X2RhdGEgewo+PiArCXN0cnVjdCByZXNl dF9jb250cm9sbGVyX2RldiByY2RldjsKPj4gKwlzdHJ1Y3Qgb21hcF9wcm0gKnBybTsKPj4gK307 Cj4+ICsKPj4gKyNkZWZpbmUgdG9fb21hcF9yZXNldF9kYXRhKHApIGNvbnRhaW5lcl9vZigocCks IHN0cnVjdCBvbWFwX3Jlc2V0X2RhdGEsIHJjZGV2KQo+PiArCj4+ICsjZGVmaW5lIE9NQVBfTUFY X1JFU0VUUwkJOAo+PiArI2RlZmluZSBPTUFQX1JFU0VUX01BWF9XQUlUCTEwMDAwCj4+ICsKPj4g KyNkZWZpbmUgT01BUF9QUk1fSEFTX1JTVENUUkwJQklUKDApCj4+ICsjZGVmaW5lIE9NQVBfUFJN X0hBU19SU1RTVAlCSVQoMSkKPj4gKwo+PiArI2RlZmluZSBPTUFQX1BSTV9IQVNfUkVTRVRTCShP TUFQX1BSTV9IQVNfUlNUQ1RSTCB8IE9NQVBfUFJNX0hBU19SU1RTVCkKPj4gKwo+PiArc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb21hcF9wcm1faWRfdGFibGVbXSA9IHsKPj4gKwl7 IH0sCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgYm9vbCBfaXNfdmFsaWRfcmVzZXQoc3RydWN0IG9t YXBfcmVzZXRfZGF0YSAqcmVzZXQsIHVuc2lnbmVkIGxvbmcgaWQpCj4+ICt7Cj4+ICsJY29uc3Qg c3RydWN0IG9tYXBfcnN0X21hcCAqbWFwID0gcmVzZXQtPnBybS0+ZGF0YS0+cnN0bWFwOwo+PiAr Cj4+ICsJd2hpbGUgKG1hcCAmJiBtYXAtPnJzdCA+PSAwKSB7Cj4gCj4gSWYgcnN0bWFwIGlzIG5l dmVyIE5VTEwsCj4gCj4gCXdoaWxlIChtYXAtPnJzdCA+PSAwKSB7Cj4gCj4gc2hvdWxkIGJlIGVu b3VnaC4KCkknbGwgYWN0dWFsbHkgcmUtd3JpdGUgdGhpcyB0byB1c2UgdGhlIHJlc2V0IG1hc2su Cgo+IAo+PiArCQlpZiAobWFwLT5yc3QgPT0gaWQpCj4+ICsJCQlyZXR1cm4gdHJ1ZTsKPj4gKwkJ bWFwKys7Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIGZhbHNlOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgaW50IG9tYXBfcmVzZXRfc3RhdHVzKHN0cnVjdCByZXNldF9jb250cm9sbGVyX2RldiAqcmNk ZXYsCj4+ICsJCQkgICAgIHVuc2lnbmVkIGxvbmcgaWQpCj4+ICt7Cj4+ICsJc3RydWN0IG9tYXBf cmVzZXRfZGF0YSAqcmVzZXQgPSB0b19vbWFwX3Jlc2V0X2RhdGEocmNkZXYpOwo+PiArCXUzMiB2 Owo+PiArCj4+ICsJaWYgKCFfaXNfdmFsaWRfcmVzZXQocmVzZXQsIGlkKSkKPj4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gCj4gRG9uJ3QgY2hlY2sgdGhpcyBpbiB0aGUgc3RhdHVzLyhkZSlhc3NlcnQv cmVzZXQgY2FsbGJhY2tzLiBJbnN0ZWFkLAo+IGltcGxlbWVudCByY2Rldi5vZl94bGF0ZSBhbmQg cmV0dXJuIC1FSU5WQUwgdGhlcmUsIHNvIHRoYXQgaW52YWxpZCBpZHMKPiBjYW4gbmV2ZXIgYmUg cmVxdWVzdGVkLgoKWWVhaCwgbGV0IG1lIGRvIHRoYXQuCgo+IAo+PiArCXYgPSByZWFkbF9yZWxh eGVkKHJlc2V0LT5wcm0tPmJhc2UgKyByZXNldC0+cHJtLT5kYXRhLT5yc3RzdCk7Cj4+ICsJdiAm PSAxIDw8IGlkOwo+PiArCXYgPj49IGlkOwo+IAo+IG9tYXBfZ2V0X3N0X2JpdCBiZWxvdyBtYWtl cyBpdCBsb29rIGxpa2UgdGhlIHN0YXR1cyBiaXQgY2FuIGJlIGluIGEKPiBkaWZmZXJlbnQgcGxh Y2UgdGhhbiB0aGUgcmVzZXQgY29udHJvbCBiaXQsIHNob3VsZCB0aGF0IGJlIHVzZWQgaGVyZSBh cwo+IHdlbGw/CgpUcnVlLCB0aGlzIGlzIGEgYnVnLgoKPiAKPj4gKwo+PiArCXJldHVybiB2Owo+ PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IG9tYXBfcmVzZXRfYXNzZXJ0KHN0cnVjdCByZXNldF9j b250cm9sbGVyX2RldiAqcmNkZXYsCj4+ICsJCQkgICAgIHVuc2lnbmVkIGxvbmcgaWQpCj4+ICt7 Cj4+ICsJc3RydWN0IG9tYXBfcmVzZXRfZGF0YSAqcmVzZXQgPSB0b19vbWFwX3Jlc2V0X2RhdGEo cmNkZXYpOwo+PiArCXUzMiB2Owo+PiArCj4+ICsJaWYgKCFfaXNfdmFsaWRfcmVzZXQocmVzZXQs IGlkKSkKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gCj4gU2FtZSBhcyBhYm92ZS4KCldpbGwgZHJv cCB0aGlzIG9uZS4KCj4gCj4+ICsJLyogYXNzZXJ0IHRoZSByZXNldCBjb250cm9sIGxpbmUgKi8K Pj4gKwl2ID0gcmVhZGxfcmVsYXhlZChyZXNldC0+cHJtLT5iYXNlICsgcmVzZXQtPnBybS0+ZGF0 YS0+cnN0Y3RybCk7Cj4+ICsJdiB8PSAxIDw8IGlkOwo+PiArCXdyaXRlbF9yZWxheGVkKHYsIHJl c2V0LT5wcm0tPmJhc2UgKyByZXNldC0+cHJtLT5kYXRhLT5yc3RjdHJsKTsKPiAKPiBUaGlzIHJl YWQtbW9kaWZ5LXdyaXRlIHNob3VsZCBiZSBwcm90ZWN0ZWQgd2l0aCBhIGxvY2suCgpPaywgd2ls bCBhZGQgYSBzcGlubG9jay4gSSBkaWQgdGhpbmsgYWJvdXQgdGhpcyBiZWZvcmUgYnV0IGFsbCB0 aGUgY2FzZXMgCndoZXJlIHdlIGFyZSBzaGFyaW5nIGEgcmVzZXQgcmVnaXN0ZXIgYXJlIHRvIGJl IGNvbnRyb2xsZWQgZnJvbSB0aGUgc2FtZSAKcHJvY2VzcyAvIGRyaXZlciwgYW5kIHRoZSBldmVu dHMgYXJlIGVmZmVjdGl2ZWx5IHNlcmlhbGl6ZWQuIERvZXNuJ3QgCmh1cnQgYWRkaW5nIGl0IGZv ciBwb3NzaWJsZSBmdXR1cmUgbmVlZCB0aG91Z2guCgo+IAo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgb21hcF9yZXNldF9nZXRfc3RfYml0KHN0cnVjdCBvbWFw X3Jlc2V0X2RhdGEgKnJlc2V0LAo+PiArCQkJCSB1bnNpZ25lZCBsb25nIGlkKQo+PiArewo+PiAr CWNvbnN0IHN0cnVjdCBvbWFwX3JzdF9tYXAgKm1hcCA9IHJlc2V0LT5wcm0tPmRhdGEtPnJzdG1h cDsKPj4gKwo+PiArCXdoaWxlIChtYXAgJiYgbWFwLT5yc3QgPj0gMCkgewo+IAo+IFNhbWUgYXMg YWJvdmUuCgpZZWFoLCB1c2FnZSBvZiByc3RtYXAgaXMgbm93IGVuZm9yY2VkLCBzbyBubyBuZWVk IHRvIGNoZWNrIGl0IGhlcmUuCgo+IAo+PiArCQlpZiAobWFwLT5yc3QgPT0gaWQpCj4+ICsJCQly ZXR1cm4gbWFwLT5zdDsKPj4gKwo+PiArCQltYXArKzsKPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4g aWQ7Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBOb3RlIHRoYXQgc3RhdHVzIHdpbGwgbm90IGNo YW5nZSB1bnRpbCBjbG9ja3MgYXJlIG9uLCBhbmQgY2xvY2tzIGNhbm5vdCBiZQo+PiArICogZW5h YmxlZCB1bnRpbCByZXNldCBpcyBkZWFzc2VydGVkLiBDb25zdW1lciBkcml2ZXJzIG11c3QgY2hl Y2sgc3RhdHVzCj4+ICsgKiBzZXBhcmF0ZWx5IGFmdGVyIGVuYWJsaW5nIGNsb2Nrcy4KPj4gKyAq Lwo+PiArc3RhdGljIGludCBvbWFwX3Jlc2V0X2RlYXNzZXJ0KHN0cnVjdCByZXNldF9jb250cm9s bGVyX2RldiAqcmNkZXYsCj4+ICsJCQkgICAgICAgdW5zaWduZWQgbG9uZyBpZCkKPj4gK3sKPj4g KwlzdHJ1Y3Qgb21hcF9yZXNldF9kYXRhICpyZXNldCA9IHRvX29tYXBfcmVzZXRfZGF0YShyY2Rl dik7Cj4+ICsJdTMyIHY7Cj4+ICsJaW50IHN0X2JpdDsKPj4gKwlib29sIGhhc19yc3RzdDsKPj4g Kwo+PiArCWlmICghX2lzX3ZhbGlkX3Jlc2V0KHJlc2V0LCBpZCkpCj4+ICsJCXJldHVybiAtRUlO VkFMOwo+IAo+IFNhbWUgYXMgYWJvdmUuCgpXaWxsIGRyb3AuCgo+IAo+PiArCS8qIGNoZWNrIHRo ZSBjdXJyZW50IHN0YXR1cyB0byBhdm9pZCBkZS1hc3NlcnRpbmcgdGhlIGxpbmUgdHdpY2UgKi8K Pj4gKwl2ID0gcmVhZGxfcmVsYXhlZChyZXNldC0+cHJtLT5iYXNlICsgcmVzZXQtPnBybS0+ZGF0 YS0+cnN0Y3RybCk7Cj4+ICsJaWYgKCEodiAmIEJJVChpZCkpKQo+PiArCQlyZXR1cm4gLUVFWElT VDsKPiAKPiBXaGF0IGlzIHRoZSBwdXJwb3NlIG9mIHRoaXM/IEZvciBzaGFyZWQgY29uc3VtZXJz IHRoZSBjb3JlIGFscmVhZHkgZG9lcwo+IHJlZmNvdW50aW5nLCBhbmQgSSBleHBlY3QgZXhjbHVz aXZlIGNvbnN1bWVycyB3b24ndCBkZWFzc2VydCB0d2ljZS4KPiBTaW5jZSB0aGUgcmVzZXQgc2ln bmFsIGlzIGRlYXNzZXJ0ZWQgYWZ0ZXIgdGhpcyBjYWxsLCB0aGlzIHNob3VsZCBub3QKPiByZXR1 cm4gYW4gZXJyb3IuCgpUaGlzIGlzIGFjdHVhbGx5IGEgbGVmdG92ZXIgZnJvbSBsZWdhY3kgY29k ZTsgdGhpcyBkcml2ZXIgaXMgbW9zdGx5IGEgCm1vdmUgb2YgdGhlIHJlc2V0IGhhbmRsaW5nIGZy b20gcGxhdGZvcm0gY29kZWJhc2UgdG8gYmUgYW4gYWN0dWFsIGRyaXZlciAKb2YgaXRzIG93bi4g QnV0IHllcywgSSBiZWxpZXZlIHRoaXMgY2FuIGJlIGRyb3BwZWQuCgo+IAo+PiArCj4+ICsJaGFz X3JzdHN0ID0gcmVzZXQtPnBybS0+ZGF0YS0+cnN0c3QgfHwKPj4gKwkJKHJlc2V0LT5wcm0tPmRh dGEtPmZsYWdzICYgT01BUF9QUk1fSEFTX1JTVFNUKTsKPj4gKwo+PiArCWlmIChoYXNfcnN0c3Qp IHsKPj4gKwkJc3RfYml0ID0gb21hcF9yZXNldF9nZXRfc3RfYml0KHJlc2V0LCBpZCk7Cj4+ICsK Pj4gKwkJLyogQ2xlYXIgdGhlIHJlc2V0IHN0YXR1cyBieSB3cml0aW5nIDEgdG8gdGhlIHN0YXR1 cyBiaXQgKi8KPj4gKwkJdiA9IHJlYWRsX3JlbGF4ZWQocmVzZXQtPnBybS0+YmFzZSArIHJlc2V0 LT5wcm0tPmRhdGEtPnJzdHN0KTsKPj4gKwkJdiB8PSAxIDw8IHN0X2JpdDsKPj4gKwkJd3JpdGVs X3JlbGF4ZWQodiwgcmVzZXQtPnBybS0+YmFzZSArIHJlc2V0LT5wcm0tPmRhdGEtPnJzdHN0KTsK PiAKPiBXaGF0IGRvZXMgdGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcnN0c3QgcmVnaXN0ZXIgaW5k aWNhdGU/IElzIGl0IHRoZQo+IGN1cnJlbnQgc3RhdGUgb2YgdGhlIHJlc2V0IGxpbmU/IElzIGl0 IDAgdW50aWwgZGVhc3NlcnRpb24gaXMgY29tcGxldGVkLAo+IGFuZCB0aGVuIGl0IHR1cm5zIHRv IDE/CgpWYWx1ZSBvZiAxIGluZGljYXRlcyB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIElQIGhhcyBi ZWVuIHJlc2V0IApzdWNjZXNzZnVsbHkuIFdyaXRpbmcgYmFjayAxIHRvIHRoZSBzYW1lIGJpdCBj bGVhcnMgaXQgb3V0LCBzbyB0aGUgCnN0YXR1cyBjYW4gYmUgcG9sbGVkIGxhdGVyIG9uLgoKPiAK Pj4gKwl9Cj4+ICsKPj4gKwkvKiBkZS1hc3NlcnQgdGhlIHJlc2V0IGNvbnRyb2wgbGluZSAqLwo+ PiArCXYgPSByZWFkbF9yZWxheGVkKHJlc2V0LT5wcm0tPmJhc2UgKyByZXNldC0+cHJtLT5kYXRh LT5yc3RjdHJsKTsKPiAKPiBSZWFkaW5nIHRoZSByZWdpc3RlciBhZ2FpbiBzZWVtcyB1bm5lY2Vz c2FyeS4KCkkgZHJvcHBlZCB0aGUgZWFybGllciByZWFkIGZvciBub3csIHNvIHRoaXMgaXMgYWdh aW4gbmVlZGVkLgoKPiAKPj4gKwl2ICY9IH4oMSA8PCBpZCk7Cj4+ICsJd3JpdGVsX3JlbGF4ZWQo diwgcmVzZXQtPnBybS0+YmFzZSArIHJlc2V0LT5wcm0tPmRhdGEtPnJzdGN0cmwpOwo+IAo+IEFz IGFib3ZlLCB0aGUgcmVhZC1tb2RpZnktd3JpdGUgc2hvdWxkIGJlIGxvY2tlZC4KClllcCwgd2ls bCBwcm90ZWN0IHRoaXMuCgo+IAo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgcmVzZXRfY29udHJvbF9vcHMgb21hcF9yZXNldF9vcHMgPSB7Cj4+ ICsJLmFzc2VydAkJPSBvbWFwX3Jlc2V0X2Fzc2VydCwKPj4gKwkuZGVhc3NlcnQJPSBvbWFwX3Jl c2V0X2RlYXNzZXJ0LAo+PiArCS5zdGF0dXMJCT0gb21hcF9yZXNldF9zdGF0dXMsCj4+ICt9Owo+ PiArCj4+ICtzdGF0aWMgaW50IG9tYXBfcHJtX3Jlc2V0X2luaXQoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldiwKPj4gKwkJCSAgICAgICBzdHJ1Y3Qgb21hcF9wcm0gKnBybSkKPj4gK3sKPj4g KwlzdHJ1Y3Qgb21hcF9yZXNldF9kYXRhICpyZXNldDsKPj4gKwo+PiArCS8qCj4+ICsJICogQ2hl Y2sgaWYgd2UgaGF2ZSBjb250cm9sbGFibGUgcmVzZXRzLiBJZiBlaXRoZXIgcnN0Y3RybCBpcyBu b24temVybwo+PiArCSAqIG9yIE9NQVBfUFJNX0hBU19SU1RDVFJMIGZsYWcgaXMgc2V0LCB3ZSBo YXZlIHJlc2V0IGNvbnRyb2wgcmVnaXN0ZXIKPj4gKwkgKiBmb3IgdGhlIGRvbWFpbi4KPj4gKwkg Ki8KPj4gKwlpZiAoIXBybS0+ZGF0YS0+cnN0Y3RybCAmJiAhKHBybS0+ZGF0YS0+ZmxhZ3MgJiBP TUFQX1BSTV9IQVNfUlNUQ1RSTCkpCj4+ICsJCXJldHVybiAwOwo+PiArCj4+ICsJcmVzZXQgPSBk ZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpyZXNldCksIEdGUF9LRVJORUwpOwo+PiAr CWlmICghcmVzZXQpCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJcmVzZXQtPnJjZGV2 Lm93bmVyID0gVEhJU19NT0RVTEU7Cj4+ICsJcmVzZXQtPnJjZGV2Lm9wcyA9ICZvbWFwX3Jlc2V0 X29wczsKPj4gKwlyZXNldC0+cmNkZXYub2Zfbm9kZSA9IHBkZXYtPmRldi5vZl9ub2RlOwo+PiAr CXJlc2V0LT5yY2Rldi5ucl9yZXNldHMgPSBPTUFQX01BWF9SRVNFVFM7Cj4+ICsKPj4gKwlyZXNl dC0+cHJtID0gcHJtOwo+PiArCj4+ICsJcmV0dXJuIGRldm1fcmVzZXRfY29udHJvbGxlcl9yZWdp c3RlcigmcGRldi0+ZGV2LCAmcmVzZXQtPnJjZGV2KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlu dCBvbWFwX3BybV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiArewo+PiAr CXN0cnVjdCByZXNvdXJjZSAqcmVzOwo+PiArCWNvbnN0IHN0cnVjdCBvbWFwX3BybV9kYXRhICpk YXRhOwo+PiArCXN0cnVjdCBvbWFwX3BybSAqcHJtOwo+PiArCWNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgKm1hdGNoOwo+PiArCj4+ICsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYs IElPUkVTT1VSQ0VfTUVNLCAwKTsKPj4gKwlpZiAoIXJlcykKPj4gKwkJcmV0dXJuIC1FTk9ERVY7 Cj4gCj4gVGhpcyBjYW4gYmUgbWVyZ2VkIHdpdGjCoGRldm1faW9yZW1hcF9yZXNvdXJjZSBiZWxv dy4KCldlbGwsIEkgYWN0dWFsbHkgdXNlIHRoZSAicmVzIiBsYXRlciBvbiB0byBtYXAgdGhlIERU IG5vZGUgdG8gdGhlIApjb3JyZXNwb25kaW5nIHBybV9kYXRhIGJhc2VkIG9uIGFkZHJlc3MuCgo+ IAo+PiArCW1hdGNoID0gb2ZfbWF0Y2hfZGV2aWNlKG9tYXBfcHJtX2lkX3RhYmxlLCAmcGRldi0+ ZGV2KTsKPj4gKwlpZiAoIW1hdGNoKQo+PiArCQlyZXR1cm4gLUVOT1RTVVBQOwo+PiArCj4+ICsJ cHJtID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqcHJtKSwgR0ZQX0tFUk5FTCk7 Cj4+ICsJaWYgKCFwcm0pCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJZGF0YSA9IG1h dGNoLT5kYXRhOwo+PiArCj4+ICsJd2hpbGUgKGRhdGEtPmJhc2UgIT0gcmVzLT5zdGFydCkgewo+ PiArCQlpZiAoIWRhdGEtPmJhc2UpCj4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwkJZGF0YSsr Owo+PiArCX0KPiAKPiBJcyB0aGlzIG5vdCBzb21ldGhpbmcgdGhhdCB5b3Ugd2FudCB0byBoYXZl IGVuY29kZWQgaW4gdGhlIGNvbXBhdGlibGUKPiBzdHJpbmc/IFRoZXkgYWxsIGhhdmUgYSBkaWZm ZXJlbnQgcmVnaXN0ZXIgbGF5b3V0LgoKV2l0aCB0aGUgYWRkaXRpb24gb2YgYWxsIHRoZSBwcm0g aW5zdGFuY2VzIGxhdGVyIG9uLCB0aGlzIGNoYW5nZXMuIE1vc3QgCm9mIHRoZSBwcm0gaW5zdGFu Y2VzIHdpbGwgaGF2ZSBzYW1lIHJlZ2lzdGVyIGxheW91dCB0aGVuLiBTZWUgdjEgZGF0YSAKdGhh dCB3YXMgcG9zdGVkIGVhcmxpZXIgWzFdLCBidXQgd2hpY2ggSSBkcm9wcGVkIGZvciBub3cgdG8g a2VlcCB0aGlzIApzZXJpZXMgaXNvbGF0ZWQgZm9yIHJlc2V0IGhhbmRsaW5nIG9ubHkuIEluIHRo aXMgcGF0Y2gsIHlvdSBzZWUgdGhhdCBmb3IgCkRSQTcsIGFsbCB0aGUgcG93ZXIgZG9tYWluIGhh bmRsaW5nIHJlbGF0ZWQgUFJNIGluc3RhbmNlcyBoYXZlIGlkZW50aWNhbCAKcmVnaXN0ZXIgbGF5 b3V0LCB0aGV5IGp1c3QgZGlmZmVyIGJhc2VkIG9uIGJhc2UgYWRkcmVzcy4KClsxXSBodHRwczov L3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1vbWFwL21zZzE0OTg3Mi5odG1sCgpJdCB3b3Vs ZCBiZSBwb3NzaWJsZSB0byBlbmNvZGUgYWxsIG9mIHRoaXMgYmFzZWQgb24gZGlmZmVyZW50IApj b21wYXRpYmxlcywgYnV0IHRoZW4gdGhlIGFtb3VudCBvZiBkaWZmZXJlbnQgY29tcGF0aWJsZSBz dHJpbmdzIHdvdWxkIApleHBsb2RlLi4uIERSQTcgaXMganVzdCBvbmUgU29DLgoKPiAKPj4gKwo+ PiArCXBybS0+ZGF0YSA9IGRhdGE7Cj4+ICsKPj4gKwlwcm0tPmJhc2UgPSBkZXZtX2lvcmVtYXBf cmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsKPiAKPiAJcHJtLT5iYXNlID0gZGV2bV9wbGF0Zm9y bV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOwoKSSBzdGlsbCBuZWVkIHRoZSAicmVzIiBwb2lu dGVyIGFzIGluZGljYXRlZCBhYm92ZS4KCi1UZXJvCgo+IAo+PiArCWlmICghcHJtLT5iYXNlKQo+ PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArCXJldHVybiBvbWFwX3BybV9yZXNldF9pbml0 KHBkZXYsIHBybSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVy IG9tYXBfcHJtX2RyaXZlciA9IHsKPj4gKwkucHJvYmUgPSBvbWFwX3BybV9wcm9iZSwKPj4gKwku ZHJpdmVyID0gewo+PiArCQkubmFtZQkJPSBLQlVJTERfTU9ETkFNRSwKPj4gKwkJLm9mX21hdGNo X3RhYmxlCT0gb21hcF9wcm1faWRfdGFibGUsCj4+ICsJfSwKPj4gK307Cj4+ICtidWlsdGluX3Bs YXRmb3JtX2RyaXZlcihvbWFwX3BybV9kcml2ZXIpOwo+IAo+IHJlZ2FyZHMKPiBQaGlsaXBwCj4g CgotLQpUZXhhcyBJbnN0cnVtZW50cyBGaW5sYW5kIE95LCBQb3Jra2FsYW5rYXR1IDIyLCAwMDE4 MCBIZWxzaW5raS4gWS10dW5udXMvQnVzaW5lc3MgSUQ6IDA2MTU1MjEtNC4gS290aXBhaWtrYS9E b21pY2lsZTogSGVsc2lua2kKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK