From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Ujfalusi Subject: Re: [RESEND PATCH v5 2/4] dmaengine: Add STM32 DMAMUX driver Date: Tue, 26 Sep 2017 11:03:08 +0300 Message-ID: <32e4d8e5-e95c-9048-26b0-4ffe2c36ff02@ti.com> References: <1506065492-31478-1-git-send-email-pierre-yves.mordret@st.com> <1506065492-31478-3-git-send-email-pierre-yves.mordret@st.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1506065492-31478-3-git-send-email-pierre-yves.mordret@st.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Pierre-Yves MORDRET , Vinod Koul , Rob Herring , Mark Rutland , Maxime Coquelin , Alexandre Torgue , Russell King , Dan Williams , M'boumba Cedric Madianga , Fabrice GASNIER , Herbert Xu , Fabien DESSENNE , Amelie Delaunay , dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org List-Id: devicetree@vger.kernel.org 77u/CgoKVGV4YXMgSW5zdHJ1bWVudHMgRmlubGFuZCBPeSwgUG9ya2thbGFua2F0dSAyMiwgMDAx ODAgSGVsc2lua2kuIFktdHVubnVzL0J1c2luZXNzIElEOiAwNjE1NTIxLTQuIEtvdGlwYWlra2Ev RG9taWNpbGU6IEhlbHNpbmtpCgpPbiAyMDE3LTA5LTIyIDEwOjMxLCBQaWVycmUtWXZlcyBNT1JE UkVUIHdyb3RlOgo+IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgU1RNMzIgRE1BTVVYIGRyaXZl ci4KPiAKPiBUaGUgRE1BTVVYIHJlcXVlc3QgbXVsdGlwbGV4ZXIgYWxsb3dzIHJvdXRpbmcgYSBE TUEgcmVxdWVzdCBsaW5lIGJldHdlZW4KPiB0aGUgcGVyaXBoZXJhbHMgYW5kIHRoZSBETUEgY29u dHJvbGxlcnMgb2YgdGhlIHByb2R1Y3QuIFRoZSByb3V0aW5nCj4gZnVuY3Rpb24gaXMgZW5zdXJl ZCBieSBhIHByb2dyYW1tYWJsZSBtdWx0aS1jaGFubmVsIERNQSByZXF1ZXN0IGxpbmUKPiBtdWx0 aXBsZXhlci4gRWFjaCBjaGFubmVsIHNlbGVjdHMgYSB1bmlxdWUgRE1BIHJlcXVlc3QgbGluZSwK PiB1bmNvbmRpdGlvbmFsbHkgb3Igc3luY2hyb25vdXNseSB3aXRoIGV2ZW50cyBmcm9tIGl0cyBE TUFNVVgKPiBzeW5jaHJvbml6YXRpb24gaW5wdXRzLiBUaGUgRE1BTVVYIG1heSBhbHNvIGJlIHVz ZWQgYXMgYSBETUEgcmVxdWVzdAo+IGdlbmVyYXRvciBmcm9tIHByb2dyYW1tYWJsZSBldmVudHMg b24gaXRzIGlucHV0IHRyaWdnZXIgc2lnbmFscwo+IAo+IFNpZ25lZC1vZmYtYnk6IE0nYm91bWJh IENlZHJpYyBNYWRpYW5nYSA8Y2VkcmljLm1hZGlhbmdhQGdtYWlsLmNvbT4KPiBTaWduZWQtb2Zm LWJ5OiBQaWVycmUtWXZlcyBNT1JEUkVUIDxwaWVycmUteXZlcy5tb3JkcmV0QHN0LmNvbT4KClJl dmlld2VkLWJ5OiBQZXRlciBVamZhbHVzaSA8cGV0ZXIudWpmYWx1c2lAdGkuY29tPgoKPiAtLS0K PiAgVmVyc2lvbiBoaXN0b3J5Ogo+ICAgICB2NToKPiAgICAgICAgICogU2V0IHNlbGVjdGVkIGNo YW5uZWwgSUQgd2l0aGluIGEgbG9jayB0byBhdm9pZCByYWNlIGNvbmRpdGlvbi4KPiAgICAgICAg ICAgUmVsZWFzZSBpZiBhbnkgZXJyb3Igb2NjdXJzCj4gICAgIHY0Ogo+ICAgICAgICAgKiBHZXQg cmlkIG9mIHN0LGRtYW11eCBwcm9wZXJ0eSBhbmQgY3VzdG9tIEFQSSBiZXR3ZWVuIFNUTTMyCj4g ICAgICAgICAgIERNQU1VWCBhbmQgRE1BLgo+ICAgICAgICAgICBETUFNVVggd2lsbCByZWFkIERN QSBtYXN0ZXJzIGZyb20gRGV2aWNlIFRyZWUgZnJvbSBub3cgb24uCj4gICAgICAgICAgIE1lcmVs eSBvbmUgRE1BTVVYIG5vZGUgaXMgbmVlZGVkIG5vdy4KPiAgICAgICAgICogT25seSBTVE0zMiBE TUEgYXJlIGFsbG93ZWQgdG8gYmUgY29ubmVjdGVkIG9udG8gRE1BTVVYCj4gICAgICAgICAqIGNo YW5uZWxJRCBpcyBjb21wdXRlZCBsb2NhbGx5IHdpdGhpbiB0aGUgZHJpdmVyIGFuZCBjcmFmdGVk IGluCj4gICAgICAgICAgIGRtYV9wc2VjIHRvIGJlIHBhc3NlZCB0b3dhcmQgRE1BIG1hc3Rlci4K PiAgICAgICAgICAgRE1BTVVYIHJvdXRlciBzb3J0cyBvdXQgd2hpY2ggRE1BIG1hc3RlciB3aWxs IHNlcnZlIHRoZQo+ICAgICAgICAgICByZXF1ZXN0IGF1dG9tYXRpY2FsbHkuCj4gICAgICAgICAq IFRoaXMgdmVyc2lvbiBmb3JiaWRzIHRoZSB1c2Ugb2YgRE1BIGluIHN0YW5kYWxvbmUgYW5kIERN QU1VWCBhdAo+ICAgICAgICAgICB0aGUgc2FtZSB0aW1lIDogYWxsIGNsaWVudHMgbmVlZCB0byBi ZSBjb25uZWN0ZWQgZWl0aGVyIG9uIERNQQo+ICAgICAgICAgICBvciBETUFNVVggOyBubyBtaXgg dXAKPiAgICAgdjM6Cj4gICAgICAgICAqIGNoYW5nZSBjb21wYXRpYmxlIHRvIHN0LHN0bTMyaDct ZG1hbXV4IHRvIGJlIG1vZGUgU29DIHNwZWNpZmljCj4gICAgIHYyOgo+ICAgICAgICAgKiBEeW5h bWljIGNoYW5uZWxJRCBhbGxvY2F0aW9uLgo+ICAgICAgICAgKiBDaGFuZ2Ugb2ZfcHJvcGVydHlf Li4uIGJ5IGRldmljZV9wcm9wZXJ0eS4KPiAgICAgICAgICogTmV3IGNsb2NrIG1hbmFnZW1lbnQu Cj4gICAgICAgICAqIERNQU1VWCBDb25maWd1cmF0aW9uIEFQSS4KPiAtLS0KPiAtLS0KPiAgZHJp dmVycy9kbWEvS2NvbmZpZyAgICAgICAgfCAgIDkgKysKPiAgZHJpdmVycy9kbWEvTWFrZWZpbGUg ICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2RtYS9zdG0zMi1kbWFtdXguYyB8IDMyNyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2Vk LCAzMzcgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9kbWEvc3Rt MzItZG1hbXV4LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvS2NvbmZpZyBiL2RyaXZl cnMvZG1hL0tjb25maWcKPiBpbmRleCBmYWRjNGQ4Li4wNGUzODFiIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZG1hL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2RtYS9LY29uZmlnCj4gQEAgLTQ4Myw2 ICs0ODMsMTUgQEAgY29uZmlnIFNUTTMyX0RNQQo+ICAJICBJZiB5b3UgaGF2ZSBhIGJvYXJkIGJh c2VkIG9uIHN1Y2ggYSBNQ1UgYW5kIHdpc2ggdG8gdXNlIERNQSBzYXkgWQo+ICAJICBoZXJlLgo+ ICAKPiArY29uZmlnIFNUTTMyX0RNQU1VWAo+ICsJYm9vbCAiU1RNaWNyb2VsZWN0cm9uaWNzIFNU TTMyIGRtYSBtdWx0aXBsZXhlciBzdXBwb3J0Igo+ICsJZGVwZW5kcyBvbiBTVE0zMl9ETUEgfHwg Q09NUElMRV9URVNUCj4gKwloZWxwCj4gKwkgIEVuYWJsZSBzdXBwb3J0IGZvciB0aGUgb24tY2hp cCBETUEgbXVsdGlwbGV4ZXIgb24gU1RNaWNyb2VsZWN0cm9uaWNzCj4gKwkgIFNUTTMyIE1DVXMu Cj4gKwkgIElmIHlvdSBoYXZlIGEgYm9hcmQgYmFzZWQgb24gc3VjaCBhIE1DVSBhbmQgd2lzaCB0 byB1c2UgRE1BTVVYIHNheSBZCj4gKwkgIGhlcmUuCj4gKwo+ICBjb25maWcgUzNDMjRYWF9ETUFD Cj4gIAlib29sICJTYW1zdW5nIFMzQzI0WFggRE1BIHN1cHBvcnQiCj4gIAlkZXBlbmRzIG9uIEFS Q0hfUzNDMjRYWCB8fCBDT01QSUxFX1RFU1QKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvTWFr ZWZpbGUgYi9kcml2ZXJzL2RtYS9NYWtlZmlsZQo+IGluZGV4IGYwOGY4ZGUuLmExNDVhZDEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9kbWEvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2RtYS9NYWtl ZmlsZQo+IEBAIC01OSw2ICs1OSw3IEBAIG9iai0kKENPTkZJR19SRU5FU0FTX0RNQSkgKz0gc2gv Cj4gIG9iai0kKENPTkZJR19TSVJGX0RNQSkgKz0gc2lyZi1kbWEubwo+ICBvYmotJChDT05GSUdf U1RFX0RNQTQwKSArPSBzdGVfZG1hNDAubyBzdGVfZG1hNDBfbGwubwo+ICBvYmotJChDT05GSUdf U1RNMzJfRE1BKSArPSBzdG0zMi1kbWEubwo+ICtvYmotJChDT05GSUdfU1RNMzJfRE1BTVVYKSAr PSBzdG0zMi1kbWFtdXgubwo+ICBvYmotJChDT05GSUdfUzNDMjRYWF9ETUFDKSArPSBzM2MyNHh4 LWRtYS5vCj4gIG9iai0kKENPTkZJR19UWFg5X0RNQUMpICs9IHR4eDlkbWFjLm8KPiAgb2JqLSQo Q09ORklHX1RFR1JBMjBfQVBCX0RNQSkgKz0gdGVncmEyMC1hcGItZG1hLm8KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9kbWEvc3RtMzItZG1hbXV4LmMgYi9kcml2ZXJzL2RtYS9zdG0zMi1kbWFtdXgu Ywo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMjI4MTJlNwo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2RtYS9zdG0zMi1kbWFtdXguYwo+IEBAIC0wLDAgKzEs MzI3IEBACj4gKy8qCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgU1RNaWNyb2VsZWN0cm9uaWNz IFNBIDIwMTcKPiArICogQXV0aG9yKHMpOiBNJ2JvdW1iYSBDZWRyaWMgTWFkaWFuZ2EgPGNlZHJp Yy5tYWRpYW5nYUBnbWFpbC5jb20+Cj4gKyAqICAgICAgICAgICAgUGllcnJlLVl2ZXMgTW9yZHJl dCA8cGllcnJlLXl2ZXMubW9yZHJldEBzdC5jb20+Cj4gKyAqCj4gKyAqIExpY2Vuc2UgdGVybXM6 IEdQTCBWMi4wLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAo+ICsgKiB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNo ZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsIGJ1dAo+ICsgKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgo+ICsgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZQo+ICsgKiBkZXRhaWxzLgo+ICsgKgo+ICsgKiBETUEgUm91dGVyIGRyaXZlciBmb3IgU1RN MzIgRE1BIE1VWAo+ICsgKgo+ICsgKiBCYXNlZCBvbiBUSSBETUEgQ3Jvc3NiYXIgZHJpdmVyCj4g KyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvZGVsYXkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+ICsjaW5jbHVkZSA8bGludXgv aW5pdC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9v Zl9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2RtYS5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvcmVzZXQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L3NwaW5sb2NrLmg+Cj4gKwo+ICsjZGVmaW5lIFNUTTMyX0RNQU1VWF9DQ1IoeCkJCSgweDQgKiAo eCkpCj4gKyNkZWZpbmUgU1RNMzJfRE1BTVVYX01BWF9ETUFfUkVRVUVTVFMJMzIKPiArI2RlZmlu ZSBTVE0zMl9ETUFNVVhfTUFYX1JFUVVFU1RTCTI1NQo+ICsKPiArc3RydWN0IHN0bTMyX2RtYW11 eCB7Cj4gKwl1MzIgbWFzdGVyOwo+ICsJdTMyIHJlcXVlc3Q7Cj4gKwl1MzIgY2hhbl9pZDsKPiAr fTsKPiArCj4gK3N0cnVjdCBzdG0zMl9kbWFtdXhfZGF0YSB7Cj4gKwlzdHJ1Y3QgZG1hX3JvdXRl ciBkbWFyb3V0ZXI7Cj4gKwlzdHJ1Y3QgY2xrICpjbGs7Cj4gKwlzdHJ1Y3QgcmVzZXRfY29udHJv bCAqcnN0Owo+ICsJdm9pZCBfX2lvbWVtICppb21lbTsKPiArCXUzMiBkbWFfcmVxdWVzdHM7IC8q IE51bWJlciBvZiBETUEgcmVxdWVzdHMgY29ubmVjdGVkIHRvIERNQU1VWCAqLwo+ICsJdTMyIGRt YW11eF9yZXF1ZXN0czsgLyogTnVtYmVyIG9mIERNQSByZXF1ZXN0cyByb3V0ZWQgdG93YXJkIERN QXMgKi8KPiArCXNwaW5sb2NrX3QgbG9jazsgLyogUHJvdGVjdHMgcmVnaXN0ZXIgYWNjZXNzICov Cj4gKwl1bnNpZ25lZCBsb25nICpkbWFfaW51c2U7IC8qIFVzZWQgRE1BIGNoYW5uZWwgKi8KPiAr CXUzMiBkbWFfcmVxc1tdOyAvKiBOdW1iZXIgb2YgRE1BIFJlcXVlc3QgcGVyIERNQSBtYXN0ZXJz Lgo+ICsJCQkgKiAgWzBdIGhvbGRzIG51bWJlciBvZiBETUEgTWFzdGVycy4KPiArCQkJICogIFRv IGJlIGtlcHQgYXQgdmVyeSBlbmQgZW5kIG9mIHRoaXMgc3RydWN0dXJlCj4gKwkJCSAqLwo+ICt9 Owo+ICsKPiArc3RhdGljIGlubGluZSB1MzIgc3RtMzJfZG1hbXV4X3JlYWQodm9pZCBfX2lvbWVt ICppb21lbSwgdTMyIHJlZykKPiArewo+ICsJcmV0dXJuIHJlYWRsX3JlbGF4ZWQoaW9tZW0gKyBy ZWcpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgc3RtMzJfZG1hbXV4X3dyaXRlKHZv aWQgX19pb21lbSAqaW9tZW0sIHUzMiByZWcsIHUzMiB2YWwpCj4gK3sKPiArCXdyaXRlbF9yZWxh eGVkKHZhbCwgaW9tZW0gKyByZWcpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzdG0zMl9kbWFt dXhfZnJlZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJvdXRlX2RhdGEpCj4gK3sKPiArCXN0 cnVjdCBzdG0zMl9kbWFtdXhfZGF0YSAqZG1hbXV4ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4g KwlzdHJ1Y3Qgc3RtMzJfZG1hbXV4ICptdXggPSByb3V0ZV9kYXRhOwo+ICsJdW5zaWduZWQgbG9u ZyBmbGFnczsKPiArCj4gKwkvKiBDbGVhciBkbWEgcmVxdWVzdCAqLwo+ICsJc3Bpbl9sb2NrX2ly cXNhdmUoJmRtYW11eC0+bG9jaywgZmxhZ3MpOwo+ICsKPiArCXN0bTMyX2RtYW11eF93cml0ZShk bWFtdXgtPmlvbWVtLCBTVE0zMl9ETUFNVVhfQ0NSKG11eC0+Y2hhbl9pZCksIDApOwo+ICsJY2xl YXJfYml0KG11eC0+Y2hhbl9pZCwgZG1hbXV4LT5kbWFfaW51c2UpOwo+ICsKPiArCWlmICghSVNf RVJSKGRtYW11eC0+Y2xrKSkKPiArCQljbGtfZGlzYWJsZShkbWFtdXgtPmNsayk7Cj4gKwo+ICsJ c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZG1hbXV4LT5sb2NrLCBmbGFncyk7Cj4gKwo+ICsJZGV2 X2RiZyhkZXYsICJVbm1hcHBpbmcgRE1BTVVYKCV1KSB0byBETUEldSgldSlcbiIsCj4gKwkJbXV4 LT5yZXF1ZXN0LCBtdXgtPm1hc3RlciwgbXV4LT5jaGFuX2lkKTsKPiArCj4gKwlrZnJlZShtdXgp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCAqc3RtMzJfZG1hbXV4X3JvdXRlX2FsbG9jYXRlKHN0 cnVjdCBvZl9waGFuZGxlX2FyZ3MgKmRtYV9zcGVjLAo+ICsJCQkJCSBzdHJ1Y3Qgb2ZfZG1hICpv ZmRtYSkKPiArewo+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IG9mX2ZpbmRfZGV2 aWNlX2J5X25vZGUob2ZkbWEtPm9mX25vZGUpOwo+ICsJc3RydWN0IHN0bTMyX2RtYW11eF9kYXRh ICpkbWFtdXggPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiArCXN0cnVjdCBzdG0zMl9k bWFtdXggKm11eDsKPiArCXUzMiBpLCBtaW4sIG1heDsKPiArCWludCByZXQ7Cj4gKwl1bnNpZ25l ZCBsb25nIGZsYWdzOwo+ICsKPiArCWlmIChkbWFfc3BlYy0+YXJnc19jb3VudCAhPSAzKSB7Cj4g KwkJZGV2X2VycigmcGRldi0+ZGV2LCAiaW52YWxpZCBudW1iZXIgb2YgZG1hIG11eCBhcmdzXG4i KTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiArCX0KPiArCj4gKwlpZiAoZG1hX3Nw ZWMtPmFyZ3NbMF0gPiBkbWFtdXgtPmRtYW11eF9yZXF1ZXN0cykgewo+ICsJCWRldl9lcnIoJnBk ZXYtPmRldiwgImludmFsaWQgbXV4IHJlcXVlc3QgbnVtYmVyOiAlZFxuIiwKPiArCQkJZG1hX3Nw ZWMtPmFyZ3NbMF0pOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICsJfQo+ICsKPiAr CW11eCA9IGt6YWxsb2Moc2l6ZW9mKCptdXgpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghbXV4KQo+ ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZk bWFtdXgtPmxvY2ssIGZsYWdzKTsKPiArCW11eC0+Y2hhbl9pZCA9IGZpbmRfZmlyc3RfemVyb19i aXQoZG1hbXV4LT5kbWFfaW51c2UsCj4gKwkJCQkJICAgZG1hbXV4LT5kbWFfcmVxdWVzdHMpOwo+ ICsJc2V0X2JpdChtdXgtPmNoYW5faWQsIGRtYW11eC0+ZG1hX2ludXNlKTsKPiArCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmRtYW11eC0+bG9jaywgZmxhZ3MpOwo+ICsKPiArCWlmIChtdXgtPmNo YW5faWQgPT0gZG1hbXV4LT5kbWFfcmVxdWVzdHMpIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJSdW4gb3V0IG9mIGZyZWUgRE1BIHJlcXVlc3RzXG4iKTsKPiArCQlyZXQgPSAtRU5PTUVNOwo+ ICsJCWdvdG8gZXJyb3I7Cj4gKwl9Cj4gKwo+ICsJLyogTG9vayBmb3IgRE1BIE1hc3RlciAqLwo+ ICsJZm9yIChpID0gMSwgbWluID0gMCwgbWF4ID0gZG1hbXV4LT5kbWFfcmVxc1tpXTsKPiArCSAg ICAgaSA8PSBkbWFtdXgtPmRtYV9yZXFzWzBdOwo+ICsJICAgICBtaW4gKz0gZG1hbXV4LT5kbWFf cmVxc1tpXSwgbWF4ICs9IGRtYW11eC0+ZG1hX3JlcXNbKytpXSkKPiArCQlpZiAobXV4LT5jaGFu X2lkIDwgbWF4KQo+ICsJCQlicmVhazsKPiArCW11eC0+bWFzdGVyID0gaSAtIDE7Cj4gKwo+ICsJ LyogVGhlIG9mX25vZGVfcHV0KCkgd2lsbCBiZSBkb25lIGluIG9mX2RtYV9yb3V0ZXJfeGxhdGUg ZnVuY3Rpb24gKi8KPiArCWRtYV9zcGVjLT5ucCA9IG9mX3BhcnNlX3BoYW5kbGUob2ZkbWEtPm9m X25vZGUsICJkbWEtbWFzdGVycyIsIGkgLSAxKTsKPiArCWlmICghZG1hX3NwZWMtPm5wKSB7Cj4g KwkJZGV2X2VycigmcGRldi0+ZGV2LCAiY2FuJ3QgZ2V0IGRtYSBtYXN0ZXJcbiIpOwo+ICsJCXJl dCA9IC1FSU5WQUw7Cj4gKwkJZ290byBlcnJvcjsKPiArCX0KPiArCj4gKwkvKiBTZXQgZG1hIHJl cXVlc3QgKi8KPiArCXNwaW5fbG9ja19pcnFzYXZlKCZkbWFtdXgtPmxvY2ssIGZsYWdzKTsKPiAr CWlmICghSVNfRVJSKGRtYW11eC0+Y2xrKSkgewo+ICsJCXJldCA9IGNsa19lbmFibGUoZG1hbXV4 LT5jbGspOwo+ICsJCWlmIChyZXQgPCAwKSB7Cj4gKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmRtYW11eC0+bG9jaywgZmxhZ3MpOwo+ICsJCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJjbGtfcHJl cF9lbmFibGUgaXNzdWU6ICVkXG4iLCByZXQpOwo+ICsJCQlnb3RvIGVycm9yOwo+ICsJCX0KPiAr CX0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRtYW11eC0+bG9jaywgZmxhZ3MpOwo+ICsK PiArCW11eC0+cmVxdWVzdCA9IGRtYV9zcGVjLT5hcmdzWzBdOwo+ICsKPiArCS8qICBjcmFmdCBE TUEgc3BlYyAqLwo+ICsJZG1hX3NwZWMtPmFyZ3NbM10gPSBkbWFfc3BlYy0+YXJnc1syXTsKPiAr CWRtYV9zcGVjLT5hcmdzWzJdID0gZG1hX3NwZWMtPmFyZ3NbMV07Cj4gKwlkbWFfc3BlYy0+YXJn c1sxXSA9IDA7Cj4gKwlkbWFfc3BlYy0+YXJnc1swXSA9IG11eC0+Y2hhbl9pZCAtIG1pbjsKPiAr CWRtYV9zcGVjLT5hcmdzX2NvdW50ID0gNDsKPiArCj4gKwlzdG0zMl9kbWFtdXhfd3JpdGUoZG1h bXV4LT5pb21lbSwgU1RNMzJfRE1BTVVYX0NDUihtdXgtPmNoYW5faWQpLAo+ICsJCQkgICBtdXgt PnJlcXVlc3QpOwo+ICsJZGV2X2RiZygmcGRldi0+ZGV2LCAiTWFwcGluZyBETUFNVVgoJXUpIHRv IERNQSV1KCV1KVxuIiwKPiArCQltdXgtPnJlcXVlc3QsIG11eC0+bWFzdGVyLCBtdXgtPmNoYW5f aWQpOwo+ICsKPiArCXJldHVybiBtdXg7Cj4gKwo+ICtlcnJvcjoKPiArCWNsZWFyX2JpdChtdXgt PmNoYW5faWQsIGRtYW11eC0+ZG1hX2ludXNlKTsKPiArCWtmcmVlKG11eCk7Cj4gKwlyZXR1cm4g RVJSX1BUUihyZXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9p ZCBzdG0zMl9zdG0zMmRtYV9tYXN0ZXJfbWF0Y2hbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAi c3Qsc3RtMzItZG1hIiwgfSwKPiArCXt9LAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBzdG0zMl9k bWFtdXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0 IGRldmljZV9ub2RlICpub2RlID0gcGRldi0+ZGV2Lm9mX25vZGU7Cj4gKwljb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkICptYXRjaDsKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZG1hX25vZGU7Cj4g KwlzdHJ1Y3Qgc3RtMzJfZG1hbXV4X2RhdGEgKnN0bTMyX2RtYW11eDsKPiArCXN0cnVjdCByZXNv dXJjZSAqcmVzOwo+ICsJdm9pZCBfX2lvbWVtICppb21lbTsKPiArCWludCBpLCBjb3VudCwgcmV0 Owo+ICsJdTMyIGRtYV9yZXE7Cj4gKwo+ICsJaWYgKCFub2RlKQo+ICsJCXJldHVybiAtRU5PREVW Owo+ICsKPiArCWNvdW50ID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyX2FycmF5KCZwZGV2LT5k ZXYsICJkbWEtbWFzdGVycyIsCj4gKwkJCQkJICAgICAgIE5VTEwsIDApOwo+ICsJaWYgKGNvdW50 IDwgMCkgewo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIkNhbid0IGdldCBETUEgbWFzdGVyKHMp IG5vZGVcbiIpOwo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsJfQo+ICsKPiArCXN0bTMyX2RtYW11 eCA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnN0bTMyX2RtYW11eCkgKwo+ICsJ CQkJICAgIHNpemVvZih1MzIpICogKGNvdW50ICsgMSksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFz dG0zMl9kbWFtdXgpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZG1hX3JlcSA9IDA7Cj4g Kwlmb3IgKGkgPSAxOyBpIDw9IGNvdW50OyBpKyspIHsKPiArCQlkbWFfbm9kZSA9IG9mX3BhcnNl X3BoYW5kbGUobm9kZSwgImRtYS1tYXN0ZXJzIiwgaSAtIDEpOwo+ICsKPiArCQltYXRjaCA9IG9m X21hdGNoX25vZGUoc3RtMzJfc3RtMzJkbWFfbWFzdGVyX21hdGNoLCBkbWFfbm9kZSk7Cj4gKwkJ aWYgKCFtYXRjaCkgewo+ICsJCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJETUEgbWFzdGVyIGlzIG5v dCBzdXBwb3J0ZWRcbiIpOwo+ICsJCQlvZl9ub2RlX3B1dChkbWFfbm9kZSk7Cj4gKwkJCXJldHVy biAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRtYV9u b2RlLCAiZG1hLXJlcXVlc3RzIiwKPiArCQkJCQkgJnN0bTMyX2RtYW11eC0+ZG1hX3JlcXNbaV0p KSB7Cj4gKwkJCWRldl9pbmZvKCZwZGV2LT5kZXYsCj4gKwkJCQkgIk1pc3NpbmcgTVVYIG91dHB1 dCBpbmZvcm1hdGlvbiwgdXNpbmcgJXUuXG4iLAo+ICsJCQkJIFNUTTMyX0RNQU1VWF9NQVhfRE1B X1JFUVVFU1RTKTsKPiArCQkJc3RtMzJfZG1hbXV4LT5kbWFfcmVxc1tpXSA9Cj4gKwkJCQlTVE0z Ml9ETUFNVVhfTUFYX0RNQV9SRVFVRVNUUzsKPiArCQl9Cj4gKwkJZG1hX3JlcSArPSBzdG0zMl9k bWFtdXgtPmRtYV9yZXFzW2ldOwo+ICsJCW9mX25vZGVfcHV0KGRtYV9ub2RlKTsKPiArCX0KPiAr Cj4gKwlpZiAoZG1hX3JlcSA+IFNUTTMyX0RNQU1VWF9NQVhfRE1BX1JFUVVFU1RTKSB7Cj4gKwkJ ZGV2X2VycigmcGRldi0+ZGV2LCAiVG9vIG1hbnkgRE1BIE1hc3RlciBSZXF1ZXN0cyB0byBtYW5h Z2VcbiIpOwo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsJfQo+ICsKPiArCXN0bTMyX2RtYW11eC0+ ZG1hX3JlcXVlc3RzID0gZG1hX3JlcTsKPiArCXN0bTMyX2RtYW11eC0+ZG1hX3JlcXNbMF0gPSBj b3VudDsKPiArCXN0bTMyX2RtYW11eC0+ZG1hX2ludXNlID0gZGV2bV9rY2FsbG9jKCZwZGV2LT5k ZXYsCj4gKwkJCQkJICAgICAgIEJJVFNfVE9fTE9OR1MoZG1hX3JlcSksCj4gKwkJCQkJICAgICAg IHNpemVvZih1bnNpZ25lZCBsb25nKSwKPiArCQkJCQkgICAgICAgR0ZQX0tFUk5FTCk7Cj4gKwlp ZiAoIXN0bTMyX2RtYW11eC0+ZG1hX2ludXNlKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiAr CWlmIChkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoJnBkZXYtPmRldiwgImRtYS1yZXF1ZXN0cyIs Cj4gKwkJCQkgICAgICZzdG0zMl9kbWFtdXgtPmRtYW11eF9yZXF1ZXN0cykpIHsKPiArCQlzdG0z Ml9kbWFtdXgtPmRtYW11eF9yZXF1ZXN0cyA9IFNUTTMyX0RNQU1VWF9NQVhfUkVRVUVTVFM7Cj4g KwkJZGV2X3dhcm4oJnBkZXYtPmRldiwgIkRNQU1VWCBkZWZhdWx0aW5nIG9uICV1IHJlcXVlc3Rz XG4iLAo+ICsJCQkgc3RtMzJfZG1hbXV4LT5kbWFtdXhfcmVxdWVzdHMpOwo+ICsJfQo+ICsKPiAr CXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4g KwlpZiAoIXJlcykKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlpb21lbSA9IGRldm1faW9y ZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOwo+ICsJaWYgKCFpb21lbSkKPiArCQlyZXR1 cm4gLUVOT01FTTsKPiArCj4gKwlzcGluX2xvY2tfaW5pdCgmc3RtMzJfZG1hbXV4LT5sb2NrKTsK PiArCj4gKwlzdG0zMl9kbWFtdXgtPmNsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCBOVUxM KTsKPiArCWlmIChJU19FUlIoc3RtMzJfZG1hbXV4LT5jbGspKSB7Cj4gKwkJcmV0ID0gUFRSX0VS UihzdG0zMl9kbWFtdXgtPmNsayk7Cj4gKwkJaWYgKHJldCA9PSAtRVBST0JFX0RFRkVSKQo+ICsJ CQlkZXZfaW5mbygmcGRldi0+ZGV2LCAiTWlzc2luZyBjb250cm9sbGVyIGNsb2NrXG4iKTsKPiAr CQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXN0bTMyX2RtYW11eC0+cnN0ID0gZGV2bV9yZXNl dF9jb250cm9sX2dldCgmcGRldi0+ZGV2LCBOVUxMKTsKPiArCWlmICghSVNfRVJSKHN0bTMyX2Rt YW11eC0+cnN0KSkgewo+ICsJCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KHN0bTMyX2RtYW11eC0+cnN0 KTsKPiArCQl1ZGVsYXkoMik7Cj4gKwkJcmVzZXRfY29udHJvbF9kZWFzc2VydChzdG0zMl9kbWFt dXgtPnJzdCk7Cj4gKwl9Cj4gKwo+ICsJc3RtMzJfZG1hbXV4LT5pb21lbSA9IGlvbWVtOwo+ICsJ c3RtMzJfZG1hbXV4LT5kbWFyb3V0ZXIuZGV2ID0gJnBkZXYtPmRldjsKPiArCXN0bTMyX2RtYW11 eC0+ZG1hcm91dGVyLnJvdXRlX2ZyZWUgPSBzdG0zMl9kbWFtdXhfZnJlZTsKPiArCj4gKwlwbGF0 Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBzdG0zMl9kbWFtdXgpOwo+ICsKPiArCWlmICghSVNfRVJS KHN0bTMyX2RtYW11eC0+Y2xrKSkgewo+ICsJCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShzdG0z Ml9kbWFtdXgtPmNsayk7Cj4gKwkJaWYgKHJldCA8IDApIHsKPiArCQkJZGV2X2VycigmcGRldi0+ ZGV2LCAiY2xrX3ByZXBfZW5hYmxlIGVycm9yOiAlZFxuIiwgcmV0KTsKPiArCQkJcmV0dXJuIHJl dDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJLyogUmVzZXQgdGhlIGRtYW11eCAqLwo+ICsJZm9yIChp ID0gMDsgaSA8IHN0bTMyX2RtYW11eC0+ZG1hX3JlcXVlc3RzOyBpKyspCj4gKwkJc3RtMzJfZG1h bXV4X3dyaXRlKHN0bTMyX2RtYW11eC0+aW9tZW0sIFNUTTMyX0RNQU1VWF9DQ1IoaSksIDApOwo+ ICsKPiArCWlmICghSVNfRVJSKHN0bTMyX2RtYW11eC0+Y2xrKSkKPiArCQljbGtfZGlzYWJsZShz dG0zMl9kbWFtdXgtPmNsayk7Cj4gKwo+ICsJcmV0dXJuIG9mX2RtYV9yb3V0ZXJfcmVnaXN0ZXIo bm9kZSwgc3RtMzJfZG1hbXV4X3JvdXRlX2FsbG9jYXRlLAo+ICsJCQkJICAgICAmc3RtMzJfZG1h bXV4LT5kbWFyb3V0ZXIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCBzdG0zMl9kbWFtdXhfbWF0Y2hbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAic3Qsc3Rt MzJoNy1kbWFtdXgiIH0sCj4gKwl7fSwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZv cm1fZHJpdmVyIHN0bTMyX2RtYW11eF9kcml2ZXIgPSB7Cj4gKwkucHJvYmUJPSBzdG0zMl9kbWFt dXhfcHJvYmUsCj4gKwkuZHJpdmVyID0gewo+ICsJCS5uYW1lID0gInN0bTMyLWRtYW11eCIsCj4g KwkJLm9mX21hdGNoX3RhYmxlID0gc3RtMzJfZG1hbXV4X21hdGNoLAo+ICsJfSwKPiArfTsKPiAr Cj4gK3N0YXRpYyBpbnQgX19pbml0IHN0bTMyX2RtYW11eF9pbml0KHZvaWQpCj4gK3sKPiArCXJl dHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnN0bTMyX2RtYW11eF9kcml2ZXIpOwo+ICt9 Cj4gK2FyY2hfaW5pdGNhbGwoc3RtMzJfZG1hbXV4X2luaXQpOwo+ICsKPiArTU9EVUxFX0RFU0NS SVBUSU9OKCJETUEgUm91dGVyIGRyaXZlciBmb3IgU1RNMzIgRE1BIE1VWCIpOwo+ICtNT0RVTEVf QVVUSE9SKCJNJ2JvdW1iYSBDZWRyaWMgTWFkaWFuZ2EgPGNlZHJpYy5tYWRpYW5nYUBnbWFpbC5j b20+Iik7Cj4gK01PRFVMRV9BVVRIT1IoIlBpZXJyZS1ZdmVzIE1vcmRyZXQgPHBpZXJyZS15dmVz Lm1vcmRyZXRAc3QuY29tPiIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=