From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= Subject: Re: [RFC 1/5] drm: Add DRM support for tiny LCD displays Date: Fri, 25 Mar 2016 11:41:44 +0100 Message-ID: <56F515E8.3040408@tronnes.org> References: <1458135259-31050-1-git-send-email-noralf@tronnes.org> <1458135259-31050-2-git-send-email-noralf@tronnes.org> <20160316151123.GP14170@phenom.ffwll.local> <56EB26FB.3030402@tronnes.org> <20160318174733.GI14170@phenom.ffwll.local> <56F2CD6C.9080002@tronnes.org> <20160323172825.GD2510@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from smtp.domeneshop.no (smtp.domeneshop.no [IPv6:2a01:5b40:0:3005::1]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2E6166E1E9 for ; Fri, 25 Mar 2016 10:42:08 +0000 (UTC) In-Reply-To: <20160323172825.GD2510@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: thomas.petazzoni@free-electrons.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org CkRlbiAyMy4wMy4yMDE2IDE4OjI4LCBza3JldiBEYW5pZWwgVmV0dGVyOgo+IE9uIFdlZCwgTWFy IDIzLCAyMDE2IGF0IDA2OjA3OjU2UE0gKzAxMDAsIE5vcmFsZiBUcsO4bm5lcyB3cm90ZToKPj4g RGVuIDE4LjAzLjIwMTYgMTg6NDcsIHNrcmV2IERhbmllbCBWZXR0ZXI6Cj4+PiBPbiBUaHUsIE1h ciAxNywgMjAxNiBhdCAxMDo1MTo1NVBNICswMTAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4+ Pj4gRGVuIDE2LjAzLjIwMTYgMTY6MTEsIHNrcmV2IERhbmllbCBWZXR0ZXI6Cj4+Pj4+IE9uIFdl ZCwgTWFyIDE2LCAyMDE2IGF0IDAyOjM0OjE1UE0gKzAxMDAsIE5vcmFsZiBUcsO4bm5lcyB3cm90 ZToKPj4+Pj4+IHRpbnlkcm0gcHJvdmlkZXMgYSB2ZXJ5IHNpbXBsaWZpZWQgdmlldyBvZiBEUk0g Zm9yIGRpc3BsYXlzIHRoYXQgaGFzCj4+Pj4+PiBvbmJvYXJkIHZpZGVvIG1lbW9yeSBhbmQgaXMg Y29ubmVjdGVkIHRocm91Z2ggYSBzbG93IGJ1cyBsaWtlIFNQSS9JMkMuCj4+Pj4+Pgo+Pj4+Pj4g U2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Cj4+Pj4+ IFlheSwgaXQgZmluYWxseSBoYXBwZW5zISBJIGFscmVhZHkgbWFkZSBhIGNvbW1lbnQgb24gdGhl IGNvdmVyIGxldHRlcgo+Pj4+PiBhYm91dCB0aGUgZmJkZXYgc3R1ZmYsIEkgdGhpbmsgdGhhdCdz IHRoZSBiaWdnZXN0IHBhcnQgdG8gc3BsaXQgb3V0IGZyb20KPj4+Pj4gdGlueWRybSBoZXJlLiBJ J20gbm90IGVudGlyZWx5IHN1cmUgYSBkZXRhaWxlZCBjb2RlIHJldmlldyBtYWtlcyBzZW5zZQo+ Pj4+PiBiZWZvcmUgdGhhdCBwYXJ0IGlzIGRvbmUgKGFuZCBoZXkgd2UgY2FuIHN0YXJ0IG1lcmdp bmcgYWxyZWFkeSksIHNvIGp1c3QgYQo+Pj4+PiBoaWdoIGxldmVsIHJldmlldyBmb3Igbm93Ogo+ PiBbLi4uXQo+Pj4KPj4+Pj4gSW4gdGhlIGNhc2Ugb2YgdGlueWRybSBJIHRoaW5rIHRoYXQgbWVh bnMgd2Ugc2hvdWxkIGhhdmUgYSBidW5jaCBvZiBuZXcKPj4+Pj4gZHJtIGhlbHBlcnMsIG9yIGV4 dGVuc2lvbnMgZm9yIGV4aXN0aW5nIG9uZXM6Cj4+Pj4+IC0gZmJkZXYgZGVmZXJyZWQgaW8gc3Vw cG9ydCB1c2luZyAtPmRpcnR5ZmIgaW4gZHJtX2ZiX2hlbHBlci5jLgo+Pj4+IEFyZSB5b3UgdGhp bmtpbmcgc29tZXRoaW5nIGxpa2UgdGhpcz8KPj4+Pgo+Pj4+IHN0cnVjdCBkcm1fZmJfaGVscGVy X2Z1bmNzIHsKPj4+PiAgICAgIGludCAoKmRpcnR5ZmIpKHN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIsCj4+Pj4gICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlw KTsKPj4+IFdlIGFscmVhZHkgaGF2ZSBhIGRpcnR5X2ZiIGZ1bmN0aW9uIGluCj4+PiBkZXYtPm1v ZGVfY29uZmlnLT5mdW5jcy0+ZGlydHlfZmIoKS4gVGhpcyBpcyB0aGUgb2ZmaWNpYWwgaW50ZXJm YWNlIG5hdGl2ZQo+Pj4gZHJtL2ttcyB1c2Vyc3BhY2UgaXMgc3VwcG9zZWQgdG8gdXNlIHRvIGZs dXNoIGZyb250YnVmZmVyIHJlbmRlcmluZy4gVGhlCj4+PiB4ZnJlZTg2LXZpZGVvLW1vZGVzZXR0 aW5nIGRyaXZlciB1c2VzIGl0Lgo+PiBJIGNvdWxkbid0IGZpbmQgdGhpcyBkaXJ0eV9mYigpIGZ1 bmN0aW9uLCBidXQgSSBhc3N1bWUgeW91IG1lYW4KPj4gZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzLmRp cnR5KCkuCj4gWXVwLgo+Cj4+Pj4gfTsKPj4+Pgo+Pj4+IHN0cnVjdCBkcm1fZmJfaGVscGVyIHsK Pj4+PiAgICAgIHNwaW5sb2NrX3QgZGlydHlfbG9jazsKPj4+PiAgICAgIHN0cnVjdCBkcm1fY2xp cF9yZWN0ICpkaXJ0eV9jbGlwOwo+Pj4+IH07Cj4+PiBZZWFoLCB0aGlzIHBhcnQgaXMgbmVlZGVk IGZvciB0aGUgZGVsYXllZCB3b3JrIGZvciB0aGUgZmJkZXYgaGVscGVyLgo+Pj4gc3RydWN0IHdv cmsgZGlydHlfZmJfd29yazsgaXMgbWlzc2luZy4KPj4gVGhpcyBjb25mdXNlcyBtZS4KPj4gSWYg d2UgaGF2ZSB0aGlzIHRoZW4gdGhlcmUncyBubyBuZWVkIGZvciBhIGZiLT5mdW5jcy0+ZGlydHko KSBjYWxsLAo+PiB0aGUgZHJpdmVyIGNhbiBqdXN0IGFkZCBhIHdvcmsgZnVuY3Rpb24gaGVyZSBp bnN0ZWFkLgo+Pgo+PiBQb3NzaWJsZSBmYiBkaXJ0eSgpIGNhbGwgY2hhaW46Cj4+IENhbGxzIHRv IGRybV9mYl9oZWxwZXJfc3lzXyogb3IgbW1hcCBwYWdlIHdyaXRlcyB3aWxsIHNjaGVkdWxlCj4+ IGZiX2luZm8tPmRlZmVycmVkX3dvcmsuIFRoZSB3b3JrZXIgZnVuYyBmYl9kZWZlcnJlZF9pb193 b3JrKCkgY2FsbHMKPj4gZmJfaW5mby0+ZmJkZWZpby0+ZGVmZXJyZWRfaW8oKS4KPj4gVGhlbiBk ZWZlcnJlZF9pbygpIGNhbiBjYWxsIGZiX2hlbHBlci0+ZmItPmZ1bmNzLT5kaXJ0eSgpLgo+Pgo+ PiBJbiBteSB1c2UtY2FzZSB0aGlzIGRpcnR5KCkgZnVuY3Rpb24gd291bGQgc2NoZWR1bGUgYSBk ZWxheWVkX3dvcmsgdG8gcnVuCj4+IGltbWVkaWF0ZWx5IHNpbmNlIGl0IGhhcyBhbHJlYWR5IGJl ZW4gZGVmZXJyZWQgY29sbGVjdGluZyBjaGFuZ2VzLgo+PiBUaGUgcmVndWxhciBkcm0gc2lkZSBm cmFtZWJ1ZmZlciBkaXJ0eSgpIGNvbGxlY3RzIGRhbWFnZSBhbmQgc2NoZWR1bGVzCj4+IHRoZSBz YW1lIHdvcmtlciB0byBydW4gZGVmZXJyZWQuCj4+Cj4+IEkgZG9uJ3Qgc2VlIGFuIGVhc3kgd2F5 IGZvciBhIGRyaXZlciB0byBzZXQgdGhlIGRpcnR5KCkgZnVuY3Rpb24gaW4KPj4gZHJtX2ZiX2Nt YV9oZWxwZXIgYXBhcnQgZnJvbSBkb2luZyB0aGlzOgo+Pgo+PiAgIHN0cnVjdCBkcm1fZmJkZXZf Y21hIHsKPj4gICAgICAgICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyICAgIGZiX2hlbHBlcjsKPj4g ICAgICAgICAgIHN0cnVjdCBkcm1fZmJfY21hICAgICAgICpmYjsKPj4gKyAgICAgICAgaW50ICgq ZGlydHkpKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAo+PiArICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsIHVuc2lnbmVkIGZsYWdzLAo+ PiArICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29sb3IsIHN0cnVjdCBkcm1fY2xpcF9y ZWN0ICpjbGlwcywKPj4gKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bV9jbGlwcyk7 Cj4+ICAgfTsKPiBXZWxsIG15IHBvaW50IGlzIHRoYXQgZHJtIGNvcmUgYWxyZWFkeSBoYXMgYSBj YW5vbmljYWwgaW50ZXJmYWNlCj4gKGRybV9mcmFtZWJ1ZmZlcl9mdW5jcy5kaXJ0eSkgdG8gZmx1 c2ggb3V0IHJlbmRlcmluZy4gQW5kIGl0J3Mgc3VwcG9zZWQgdG8KPiBiZSBjYWxsZWQgZnJvbSBw cm9jZXNzIGNvbnRleHQsIGFuZCB1c2Vyc3BhY2UgaXMgc3VwcG9zZWQgdG8gYmF0Y2ggdXAKPiBk aXJ0eSB1cGRhdGVzLgoKQmF0Y2hlZCB1cCBpbnRvIG9uZSBpb2N0bCBjYWxsPwpJZiB0aGF0J3Mg dGhlIGNhc2UsIHRoZW4gSSBkb24ndCBoYXZlIHRvIHVzZSBkZWxheWVkX3dvcmsgbGlrZSBJIGRv IG5vdy4KSSBjYW4ganVzdCBxdWV1ZSBhIHdvcmtfc3RydWN0IHRvIHJ1biBpbW1lZGlhdGVseS4K ClRoaXMgY29tbWVudCBpbiBpbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmggbWFkZSBtZSB0aGlu ayB0aGF0IEkgbWlnaHQKcmVjZWl2ZSBtdWx0aXBsZSBjYWxsczoKCiAgKiBUaGUga2VybmVsIG9y IGhhcmR3YXJlIGlzIGZyZWUgdG8gdXBkYXRlIG1vcmUgdGhlbiBqdXN0IHRoZQogICogcmVnaW9u IHNwZWNpZmllZCBieSB0aGUgY2xpcCByZWN0cy4gVGhlIGtlcm5lbCBvciBoYXJkd2FyZQogICog bWF5IGFsc28gZGVsYXkgYW5kL29yIGNvYWxlc2NlIHNldmVyYWwgY2FsbHMgdG8gZGlydHkgaW50 byBhCiAgKiBzaW5nbGUgdXBkYXRlLgoKSSBoYXZlIGFzc3VtZWQgdGhhdCBJIGNhbid0IHJ1biB0 aGUgd2hvbGUgZGlzcGxheSB1cGRhdGUgZnJvbSB0aGUgaW9jdGwKY2FsbCBzaW5jZSBvbmUgZnVs bCBkaXNwbGF5IHVwZGF0ZSBvbiB0aGUgIndvcnN0IiBkaXNwbGF5IHRha2VzIH4yMDBtcy4KQnV0 IG1heWJlIGl0J3MgZmluZSB0byBydW4gYWxsIHRoaXMgaW4gdGhlIGlvY3RsIGNhbGw/Cgo+IFdo YXQgSSdkIGxpa2UgaXMgdGhhdCB0aGUgZmJkZXYgZW11bGF0aW9uIHVzZXMgZXhhY3RseSB0aGF0 IGludGVyZmFjZSwKPiB3aXRob3V0IHJlcXVpcmluZyBkcml2ZXJzIHRvIHdyaXRlIGFueSBhZGRp dGlvbmFsIGZiZGV2IGNvZGUgKGxpa2UgcXhsIGFuZAo+IHVkbCBjdXJyZW50bHkgaGF2ZSkuIFNp bmNlIHRoZSBkcm1fZnJhbWVidWZmZXJfZnVuY3MuZGlydHkgaXMgYWxyZWFkeQo+IGV4cGVjdGVk IHRvIHJ1biBpbiBwcm9jZXNzIGNvbnRleHQgSSB0aGluayB0aGUgb25seSBiaXQgd2UgbmVlZCBp cyB0aGUKPiBkZWZlcnJlZF93b3JrIHlvdSBhbHJlYWR5IGFkZGVkIGluIGZiZGV2LCBzbyB0aGF0 IHdlIGNhbiBzY2hlZHVsZSB0aGUKPiBkcml2ZXIncyAtPmRpcnR5KCkgZnVuY3Rpb24uCj4KPiBU aGVyZSBzaG91bGRuJ3QgYmUgYW55IG5lZWQgdG8gaGF2ZSBhbm90aGVyIC0+ZGlydHkoKSBmdW5j dGlvbiBhbnl3aGVyZQo+IGVsc2UuCgpJJ2xsIHRyeSBhbmQgc2VlIGlmIEkgY2FuIGV4cGxhaW4g YmV0dGVyIHdpdGggc29tZSBjb2RlLgpGaXJzdCB0aGUgZHJtX2ZiX2hlbHBlciBwYXJ0OgoKdm9p ZCBkcm1fZmJfaGVscGVyX2RlZmVycmVkX2lvKHN0cnVjdCBmYl9pbmZvICppbmZvLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VsaXN0KQp7CiAg ICAgICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIgPSBpbmZvLT5wYXI7CiAgICAgICAg IHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZCwgbWluLCBtYXg7CiAgICAgICAgIHN0cnVjdCBkcm1f Y2xpcF9yZWN0IGNsaXA7CiAgICAgICAgIHN0cnVjdCBwYWdlICpwYWdlOwoKICAgICAgICAgaWYg KCFoZWxwZXItPmZiLT5mdW5jcy0+ZGlydHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwoKICAg ICAgICAgc3Bpbl9sb2NrKCZoZWxwZXItPmRpcnR5X2xvY2spOwogICAgICAgICBjbGlwID0gKmhl bHBlci0+ZGlydHlfY2xpcDsKICAgICAgICAgLyogcmVzZXQgZGlydHlfY2xpcCAqLwogICAgICAg ICBzcGluX3VubG9jaygmaGVscGVyLT5kaXJ0eV9sb2NrKTsKCiAgICAgICAgIG1pbiA9IFVMT05H X01BWDsKICAgICAgICAgbWF4ID0gMDsKICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShwYWdl LCBwYWdlbGlzdCwgbHJ1KSB7CiAgICAgICAgICAgICAgICAgc3RhcnQgPSBwYWdlLT5pbmRleCA8 PCBQQUdFX1NISUZUOwogICAgICAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgUEFHRV9TSVpFIC0g MTsKICAgICAgICAgICAgICAgICBtaW4gPSBtaW4obWluLCBzdGFydCk7CiAgICAgICAgICAgICAg ICAgbWF4ID0gbWF4KG1heCwgZW5kKTsKICAgICAgICAgfQoKICAgICAgICAgaWYgKG1pbiA8IG1h eCkgewogICAgICAgICAgICAgICAgIC8qIFRPRE8gbWVyZ2Ugd2l0aCBjbGlwICovCiAgICAgICAg IH0KCiAgICAgICAgIGhlbHBlci0+ZmItPmZ1bmNzLT5kaXJ0eShoZWxwZXItPmZiLCBOVUxMLCAw LCAwLCAmY2xpcCwgMSk7Cn0KRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2RlZmVycmVkX2lv KTsKCi8qIENhbGxlZCBieSB0aGUgZHJtX2ZiX2hlbHBlcl9zeXNfKigpIGZ1bmN0aW9ucyAqLwpz dGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX3N5c19kZWZlcnJlZChzdHJ1Y3QgZmJfaW5mbyAqaW5m bywgdTMyIHgsIHUzMiB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dTMyIHdpZHRoLCB1MzIgaGVpZ2h0KQp7CiAgICAgICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyICpo ZWxwZXIgPSBpbmZvLT5wYXI7CiAgICAgICAgIHN0cnVjdCBkcm1fY2xpcF9yZWN0IGNsaXA7Cgog ICAgICAgICBpZiAoIWluZm8tPmZiZGVmaW8pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwoKICAg ICAgICAgY2xpcC54MSA9IHg7CiAgICAgICAgIGNsaXAueDIgPSB4ICsgd2lkdGggLTE7CiAgICAg ICAgIGNsaXkueTEgPSB5OwogICAgICAgICBjbGlwLnkyID0geSArIGhlaWdodCAtIDE7CgogICAg ICAgICBzcGluX2xvY2soJmhlbHBlci0+ZGlydHlfbG9jayk7CiAgICAgICAgIC8qIFRPRE8gbWVy Z2UgY2xpcCB3aXRoIGhlbHBlci0+ZGlydHlfY2xpcCAqLwogICAgICAgICBzcGluX3VubG9jaygm aGVscGVyLT5kaXJ0eV9sb2NrKTsKCiAgICAgICAgIHNjaGVkdWxlX2RlbGF5ZWRfd29yaygmaW5m by0+ZGVmZXJyZWRfd29yaywgaW5mby0+ZmJkZWZpby0+ZGVsYXkpOwp9CgoKU28gdGhlIHF1ZXN0 aW9uIEkgaGF2ZSBhc2tlZCBpcyB0aGlzOiBIb3cgY2FuIHRoZSBkcml2ZXIgc2V0IHRoZQpkaXJ0 eSgpIGZ1bmN0aW9uIHdpdGhpbiBkcm1fZmJfY21hX2hlbHBlcj8KCkhhdmluZyBsb29rZWQgYXQg dGhlIGNvZGUgb3ZlciBhbmQgb3ZlciBhZ2FpbiwgSSBoYXZlIGEgc3VnZ2VzdGlvbiwKYnV0IGl0 IGFzc3VtZXMgdGhhdCBpdCdzIGFsbG93ZWQgdG8gY2hhbmdlIGZiLT5mdW5jcy4KCkZpcnN0IHRo ZSBuZWNlc3NhcnkgZHJtX2ZiX2NtYV9oZWxwZXIgY2hhbmdlczoKCkVYUE9SVF9TWU1CT0woZHJt X2ZiX2NtYV9kZXN0cm95KTsKRVhQT1JUX1NZTUJPTChkcm1fZmJfY21hX2NyZWF0ZV9oYW5kbGUp OwpFWFBPUlRfU1lNQk9MKGRybV9mYmRldl9jbWFfY3JlYXRlKTsKCi8qIFRoaXMgaXMgdGhlIGRy bV9mYmRldl9jbWFfaW5pdCgpIGNvZGUgd2l0aCBvbmUgY2hhbmdlICovCnN0cnVjdCBkcm1fZmJk ZXZfY21hICpkcm1fZmJkZXZfY21hX2luaXRfd2l0aF9mdW5jcyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogICAgICAgICB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2JwcCwgdW5zaWduZWQgaW50IG51 bV9jcnRjLAogICAgICAgICB1bnNpZ25lZCBpbnQgbWF4X2Nvbm5fY291bnQsIHN0cnVjdCBkcm1f ZnJhbWVidWZmZXJfZnVuY3MgKmZ1bmNzKQp7ClsuLi5dCiAgICAgICAgIGRybV9mYl9oZWxwZXJf cHJlcGFyZShkZXYsIGhlbHBlciwgZnVuY3MpOwpbLi4uXQp9CgpzdHJ1Y3QgZHJtX2ZiZGV2X2Nt YSAqZHJtX2ZiZGV2X2NtYV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAgICAgICAgIHVu c2lnbmVkIGludCBwcmVmZXJyZWRfYnBwLCB1bnNpZ25lZCBpbnQgbnVtX2NydGMsCiAgICAgICAg IHVuc2lnbmVkIGludCBtYXhfY29ubl9jb3VudCkKewogICAgICAgICByZXR1cm4gZHJtX2ZiZGV2 X2NtYV9pbml0X3dpdGhfZnVuY3MoZGV2LCBwcmVmZXJyZWRfYnBwLCBudW1fY3J0YywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9jb25uX2NvdW50LAom ZHJtX2ZiX2NtYV9oZWxwZXJfZnVuY3MpOwp9CgoKTm93IHRpbnlkcm0gc2hvdWxkIGJlIGFibGUg dG8gZG8gdGhpczoKCnN0YXRpYyBpbnQgdGlueWRybV9mYmRldl9kaXJ0eShzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBmbGFncywgdW5zaWduZWQgY29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIG51bV9jbGlwcykKewogICAgICAgICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq aGVscGVyID0gaW5mby0+cGFyOwogICAgICAgICBzdHJ1Y3QgdGlueWRybV9kZXZpY2UgKnRkZXYg PSBoZWxwZXItPmRldi0+ZGV2X3ByaXZhdGU7CiAgICAgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gaGVscGVyLT5mYjsKICAgICAgICAgc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAq Y21hX29iajsKCiAgICAgICAgIGlmICh0ZGV2LT5wbGFuZS5mYiAhPSBmYikKICAgICAgICAgICAg ICAgICByZXR1cm4gMDsKCiAgICAgICAgIGNtYV9vYmogPSBkcm1fZmJfY21hX2dldF9nZW1fb2Jq KGZiLCAwKTsKICAgICAgICAgaWYgKCFjbWFfb2JqKSB7CiAgICAgICAgICAgICAgICAgZGV2X2Vy cl9vbmNlKGluZm8tPmRldiwgIkNhbid0IGdldCBjbWFfb2JqXG4iKTsKICAgICAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKICAgICAgICAgfQoKICAgICAgICAgcmV0dXJuIHRkZXYtPmRpcnR5 ZmIoZmIsIGNtYV9vYmotPnZhZGRyLCBmbGFncywgY29sb3IsIGNsaXBzLCAKbnVtX2NsaXBzKTsK fQoKc3RhdGljIHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgdGlueWRybV9mYl9jbWFfZnVu Y3MgPSB7CiAgICAgICAgIC5kZXN0cm95ICAgICAgICA9IGRybV9mYl9jbWFfZGVzdHJveSwKICAg ICAgICAgLmNyZWF0ZV9oYW5kbGUgID0gZHJtX2ZiX2NtYV9jcmVhdGVfaGFuZGxlLAogICAgICAg ICAuZGlydHkgICAgICAgICAgPSB0aW55ZHJtX2ZiZGV2X2RpcnR5LAp9OwoKc3RhdGljIGludCB0 aW55ZHJtX2ZiZGV2X2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3Np emUgKnNpemVzKQp7CiAgICAgICAgIHN0cnVjdCB0aW55ZHJtX2RldmljZSAqdGRldiA9IGhlbHBl ci0+ZGV2LT5kZXZfcHJpdmF0ZTsKICAgICAgICAgc3RydWN0IGZiX2RlZmVycmVkX2lvICpmYmRl ZmlvOwogICAgICAgICBzdHJ1Y3QgZmJfb3BzICpmYm9wczsKICAgICAgICAgc3RydWN0IGZiX2lu Zm8gKmluZm87CgogICAgICAgICAvKgogICAgICAgICAgKiBBIHBlciBkZXZpY2Ugc3RydWN0dXJl IGlzIG5lZWRlZCBmb3I6CiAgICAgICAgICAqIC0gZmJvcHMgYmVjYXVzZSBmYl9kZWZlcnJlZF9p b19jbGVhbnVwKCkgY2xlYXJzIGZib3BzLmZiX21tYXAKICAgICAgICAgICogLSBmYmRlZmlvIHRv IGdldCBwZXIgZGV2aWNlIGRlbGF5CiAgICAgICAgICAqLwogICAgICAgICBmYm9wcyA9IGRldm1f a3phbGxvYyhoZWxwZXItPmRldi0+ZGV2LCBzaXplb2YoKmZib3BzKSwgR0ZQX0tFUk5FTCk7CiAg ICAgICAgIGZiZGVmaW8gPSBkZXZtX2t6YWxsb2MoaGVscGVyLT5kZXYtPmRldiwgc2l6ZW9mKCpm YmRlZmlvKSwgCkdGUF9LRVJORUwpOwogICAgICAgICBpZiAoIWZib3BzIHx8ICFmYmRlZmlvKQog ICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwoKICAgICAgICAgcmV0ID0gZHJtX2ZiZGV2 X2NtYV9jcmVhdGUoaGVscGVyLCBzaXplcyk7CiAgICAgICAgIGlmIChyZXQpCiAgICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKCiAgICAgICAgIGhlbHBlci0+ZmItPmZ1bmNzID0gJnRpbnlkcm1f ZmJfY21hX2Z1bmNzOwoKICAgICAgICAgaW5mbyA9IGZiX2hlbHBlci0+ZmJkZXY7CiAgICAgICAg IC8qCiAgICAgICAgICAqIGZiX2RlZmVycmVkX2lvIHJlcXVpcmVzIGEgdm1hbGxvYyBhZGRyZXNz IG9yIGEgcGh5c2ljYWwgYWRkcmVzcy4KICAgICAgICAgICogZHJtX2ZiZGV2X2NtYV9jcmVhdGUo KSBzZXRzIHNtZW1fc3RhcnQgdG8gdGhlIGRtYSBhZGRyZXNzIAp3aGljaCBpcwogICAgICAgICAg KiBhIGRldmljZSBhZGRyZXNzLiBUaGlzIGlzbid0IGFsd2F5cyBhIHBoeXNpY2FsIGFkZHJlc3Mu CiAgICAgICAgICAqLwogICAgICAgICBpbmZvLT5zbWVtX3N0YXJ0ID0gcGFnZV90b19waHlzKHZp cnRfdG9fcGFnZShpbmZvLT5zY3JlZW5fYnVmZmVyKSk7CgogICAgICAgICAqZmJvcHMgPSAqaW5m by0+ZmJvcHM7CiAgICAgICAgIGluZm8tPmZib3BzID0gZmJvcHM7CgogICAgICAgICBpbmZvLT5m YmRlZmlvID0gZmJkZWZpbzsKICAgICAgICAgZmJkZWZpby0+ZGVmZXJyZWRfaW8gPSBkcm1fZmJf aGVscGVyX2RlZmVycmVkX2lvOwogICAgICAgICBmYmRlZmlvLT5kZWxheSA9IG1zZWNzX3RvX2pp ZmZpZXModGRldi0+ZGVmZXJyZWQtPmRlZmVyX21zKTsKICAgICAgICAgLyogZGVsYXk9MCBpcyB0 dXJuZWQgaW50byBkZWxheT1IWiwgc28gdXNlIDEgYXMgYSBtaW5pbXVtICovCiAgICAgICAgIGlm ICghZmJkZWZpby0+ZGVsYXkpCiAgICAgICAgICAgICAgICAgZmJkZWZpby0+ZGVsYXkgPSAxOwog ICAgICAgICBmYl9kZWZlcnJlZF9pb19pbml0KGluZm8pOwoKICAgICAgICAgcmV0dXJuIDA7Cn0K CnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9mdW5jcyB0aW55ZHJtX2ZiX2hlbHBl cl9mdW5jcyA9IHsKICAgICAgICAgLmZiX3Byb2JlID0gdGlueWRybV9mYmRldl9jcmVhdGUsCn07 CgppbnQgdGlueWRybV9mYmRldl9pbml0KHN0cnVjdCB0aW55ZHJtX2RldmljZSAqdGRldikKewog ICAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdGRldi0+YmFzZTsKICAgICAgICAgc3Ry dWN0IGRybV9mYmRldl9jbWEgKmNtYTsKCiAgICAgICAgIGNtYSA9IGRybV9mYmRldl9jbWFfaW5p dF93aXRoX2Z1bmNzKGRldiwgMTYsCmRldi0+bW9kZV9jb25maWcubnVtX2NydGMsCmRldi0+bW9k ZV9jb25maWcubnVtX2Nvbm5lY3RvciwKJnRpbnlkcm1fZmJfaGVscGVyX2Z1bmNzKTsKICAgICAg ICAgaWYgKElTX0VSUihjbWEpKQogICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGNtYSk7 CgogICAgICAgICB0ZGV2LT5mYmRldl9jbWEgPSBjbWE7CgogICAgICAgICByZXR1cm4gMDsKfQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==