From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [PATCH v5 2/7] drm/panel: simple: Add ability to override typical timing Date: Sun, 30 Jun 2019 22:22:46 +0200 Message-ID: <20190630202246.GB15102@ravnborg.org> References: <20190401171724.215780-1-dianders@chromium.org> <20190401171724.215780-3-dianders@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190401171724.215780-3-dianders@chromium.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Douglas Anderson Cc: devicetree@vger.kernel.org, David Airlie , Jeffy Chen , linux-kernel@vger.kernel.org, Rob Herring , linux-rockchip@lists.infradead.org, Thierry Reding , Sean Paul , dri-devel@lists.freedesktop.org, Boris Brezillon , Enric =?iso-8859-1?Q?Balletb=F2?= , =?iso-8859-1?Q?St=E9phane?= Marchesin , Ezequiel Garcia , mka@chromium.org, Laurent Pinchart List-Id: devicetree@vger.kernel.org SGkgRG91Z2xhcy4KCkFnYWluLCBsb25nIG92ZXJkdWUuIFRoZSByZXZpZXcgdHJpZ2dlcmVkIHNl dmVyYWwgcXVlc3Rpb25zIHRoYXQgeW91CnNob3VsZCBoYXZlIGhhZCBhIGxvbmcgdGltZSBhZ28u CkhvcGVmdWxseSB0aGV5IG1ha2VzIHNlbnNlIHRvIHlvdS4KCglTYW0KCk9uIE1vbiwgQXByIDAx LCAyMDE5IGF0IDEwOjE3OjE5QU0gLTA3MDAsIERvdWdsYXMgQW5kZXJzb24gd3JvdGU6Cj4gRnJv bTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gCj4gVGhpcyBwYXRjaCBhZGRz IHRoZSBhYmlsaXR5IHRvIG92ZXJyaWRlIHRoZSB0eXBpY2FsIGRpc3BsYXkgdGltaW5nIGZvciBh Cj4gZ2l2ZW4gcGFuZWwuIFRoaXMgaXMgdXNlZnVsIGZvciBkZXZpY2VzIHdoaWNoIGhhdmUgdGlt aW5nIGNvbnN0cmFpbnRzCj4gdGhhdCBkbyBub3QgYXBwbHkgYWNyb3NzIHRoZSBlbnRpcmUgZGlz cGxheSBkcml2ZXIgKGVnOiB0byBhdm9pZAo+IGNyb3NzdGFsayBiZXR3ZWVuIHBhbmVsIGFuZCBk aWdpdGl6ZXIgb24gY2VydGFpbiBsYXB0b3BzKS4gVGhlIHJ1bGVzIGFyZQo+IGFzIGZvbGxvd3M6 Cj4gCj4gLSBwYW5lbCBtdXN0IG5vdCBzcGVjaWZ5IGZpeGVkIG1vZGUgKHNpbmNlIHRoZSBvdmVy cmlkZSBtb2RlIHdpbGwKPiAgIGVpdGhlciBiZSB0aGUgc2FtZSBhcyB0aGUgZml4ZWQgbW9kZSwg b3Igd2UnbGwgYmUgdW5hYmxlIHRvCj4gICBjaGVjayB0aGUgYm91bmRzIG9mIHRoZSBvdmVycmll ZCkKPiAtIHBhbmVsIG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgZGlzcGxheV90aW1pbmcgcmFu Z2Ugd2hpY2ggd2lsbCBiZQo+ICAgdXNlZCB0byBlbnN1cmUgdGhlIG92ZXJyaWRlIG1vZGUgZml0 cyB3aXRoaW4gaXRzIGJvdW5kcwo+IAo+IENoYW5nZXMgaW4gdjI6Cj4gIC0gUGFyc2UgdGhlIGZ1 bGwgZGlzcGxheS10aW1pbmdzIG5vZGUgKHVzaW5nIHRoZSBuYXRpdmUtbW9kZSkgKFJvYikKPiBD aGFuZ2VzIGluIHYzOgo+ICAtIE5vIGxvbmdlciBwYXJzZSBkaXNwbGF5LXRpbWluZ3Mgc3Vibm9k ZSwgdXNlIHBhbmVsLXRpbWluZyAoUm9iKQo+IENoYW5nZXMgaW4gdjQ6Cj4gIC0gRG9uJ3QgYWRk IG1vZGUgZnJvbSB0aW1pbmcgaWYgb3ZlcnJpZGUgd2FzIHNwZWNpZmllZCAoVGhpZXJyeSkKPiAg LSBBZGQgd2FybmluZyBpZiB0aW1pbmcgYW5kIGZpeGVkIG1vZGUgd2FzIHNwZWNpZmllZCAoVGhp ZXJyeSkKPiAgLSBEb24ndCBhZGQgZml4ZWQgbW9kZSBpZiB0aW1pbmcgd2FzIHNwZWNpZmllZCAo VGhpZXJyeSkKPiAgLSBSZWZhY3Rvci9yZW5hbWUgYSBiaXQgdG8gYXZvaWQgZXh0cmEgaW5kZW50 YXRpb24gZnJvbSAiaWYiIHRlc3RzCj4gIC0gaSBzaG91bGQgYmUgdW5zaWduZWQgKFRoaWVycnkp Cj4gIC0gQWRkIGFubm95aW5nIFdBUk5fT05zIGZvciBzb21lIGNhc2VzIChUaGllcnJ5KQo+ICAt IFNpbXBsaWZ5ICdObyBkaXNwbGF5X3RpbWluZyBmb3VuZCcgaGFuZGxpbmcgKFRoaWVycnkpCj4g IC0gUmVuYW1lIHRvIHBhbmVsX3NpbXBsZV9wYXJzZV9vdmVycmlkZV9tb2RlKCkgKFRoaWVycnkp Cj4gQ2hhbmdlcyBpbiB2NToKPiAgLSBBZGRlZCBIZWlrbydzIFRlc3RlZC1ieQo+IAo+IENjOiBE b3VnIEFuZGVyc29uIDxkaWFuZGVyc0BjaHJvbWl1bS5vcmc+Cj4gQ2M6IEVyaWMgQW5ob2x0IDxl cmljQGFuaG9sdC5uZXQ+Cj4gQ2M6IEhlaWtvIFN0dWVibmVyIDxoZWlrb0BzbnRlY2guZGU+Cj4g Q2M6IEplZmZ5IENoZW4gPGplZmZ5LmNoZW5Acm9jay1jaGlwcy5jb20+Cj4gQ2M6IFJvYiBIZXJy aW5nIDxyb2JoK2R0QGtlcm5lbC5vcmc+Cj4gQ2M6IFN0w6lwaGFuZSBNYXJjaGVzaW4gPG1hcmNo ZXVAY2hyb21pdW0ub3JnPgo+IENjOiBUaGllcnJ5IFJlZGluZyA8dGhpZXJyeS5yZWRpbmdAZ21h aWwuY29tPgo+IENjOiBkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZwo+IENjOiBkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gU2lnbmVkLW9mZi1ieTogU2VhbiBQYXVsIDxzZWFucGF1 bEBjaHJvbWl1bS5vcmc+Cj4gVGVzdGVkLWJ5OiBFbnJpYyBCYWxsZXRibyBpIFNlcnJhIDxlbnJp Yy5iYWxsZXRib0Bjb2xsYWJvcmEuY29tPgo+IFNpZ25lZC1vZmYtYnk6IERvdWdsYXMgQW5kZXJz b24gPGRpYW5kZXJzQGNocm9taXVtLm9yZz4KPiBUZXN0ZWQtYnk6IEhlaWtvIFN0dWVibmVyIDxo ZWlrb0BzbnRlY2guZGU+Cj4gLS0tCj4gCj4gIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1z aW1wbGUuYyB8IDEwOSArKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAgMSBmaWxlIGNoYW5n ZWQsIDEwNCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2ltcGxlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvcGFuZWwtc2ltcGxlLmMKPiBpbmRleCA5ZTgyMThmNmEzZjIuLmFkNGY0YWFjMmQ0NCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2ltcGxlLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2ltcGxlLmMKPiBAQCAtMzQsNiArMzQsNyBAQAo+ ICAjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgo+ICAKPiAgI2luY2x1ZGUgPHZpZGVvL2Rpc3Bs YXlfdGltaW5nLmg+Cj4gKyNpbmNsdWRlIDx2aWRlby9vZl9kaXNwbGF5X3RpbWluZy5oPgo+ICAj aW5jbHVkZSA8dmlkZW8vdmlkZW9tb2RlLmg+Cj4gIAo+ICBzdHJ1Y3QgcGFuZWxfZGVzYyB7Cj4g QEAgLTkxLDYgKzkyLDggQEAgc3RydWN0IHBhbmVsX3NpbXBsZSB7Cj4gIAlzdHJ1Y3QgaTJjX2Fk YXB0ZXIgKmRkYzsKPiAgCj4gIAlzdHJ1Y3QgZ3Bpb19kZXNjICplbmFibGVfZ3BpbzsKPiArCj4g KwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBvdmVycmlkZV9tb2RlOwpJIGZhaWwgdG8gc2VlIHdo ZXJlIHRoaXMgcG9pdGVyIGlzIGFzc2lnbmVkLgoKCj4gIH07Cj4gIAo+ICBzdGF0aWMgaW5saW5l IHN0cnVjdCBwYW5lbF9zaW1wbGUgKnRvX3BhbmVsX3NpbXBsZShzdHJ1Y3QgZHJtX3BhbmVsICpw YW5lbCkKPiBAQCAtOTgsMTYgKzEwMSwxMyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBwYW5lbF9z aW1wbGUgKnRvX3BhbmVsX3NpbXBsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiAgCXJldHVy biBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBwYW5lbF9zaW1wbGUsIGJhc2UpOwo+ICB9Cj4g IAo+IC1zdGF0aWMgaW50IHBhbmVsX3NpbXBsZV9nZXRfZml4ZWRfbW9kZXMoc3RydWN0IHBhbmVs X3NpbXBsZSAqcGFuZWwpCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgcGFuZWxfc2ltcGxlX2dldF90 aW1pbmdzX21vZGVzKHN0cnVjdCBwYW5lbF9zaW1wbGUgKnBhbmVsKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmJhc2UuY29ubmVjdG9yOwo+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRybSA9IHBhbmVsLT5iYXNlLmRybTsKPiAgCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlOwo+ICAJdW5zaWduZWQgaW50IGksIG51bSA9IDA7Cj4gIAo+IC0JaWYg KCFwYW5lbC0+ZGVzYykKPiAtCQlyZXR1cm4gMDsKPiAtCj4gIAlmb3IgKGkgPSAwOyBpIDwgcGFu ZWwtPmRlc2MtPm51bV90aW1pbmdzOyBpKyspIHsKPiAgCQljb25zdCBzdHJ1Y3QgZGlzcGxheV90 aW1pbmcgKmR0ID0gJnBhbmVsLT5kZXNjLT50aW1pbmdzW2ldOwo+ICAJCXN0cnVjdCB2aWRlb21v ZGUgdm07Cj4gQEAgLTEzMSw2ICsxMzEsMTYgQEAgc3RhdGljIGludCBwYW5lbF9zaW1wbGVfZ2V0 X2ZpeGVkX21vZGVzKHN0cnVjdCBwYW5lbF9zaW1wbGUgKnBhbmVsKQo+ICAJCW51bSsrOwo+ICAJ fQo+ICAKPiArCXJldHVybiBudW07Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgcGFu ZWxfc2ltcGxlX2dldF9maXhlZF9tb2RlcyhzdHJ1Y3QgcGFuZWxfc2ltcGxlICpwYW5lbCkKPiAr ewo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHBhbmVsLT5iYXNlLmNvbm5l Y3RvcjsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBwYW5lbC0+YmFzZS5kcm07Cj4gKwlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKPiArCXVuc2lnbmVkIGludCBpLCBudW0gPSAw Owo+ICsKPiAgCWZvciAoaSA9IDA7IGkgPCBwYW5lbC0+ZGVzYy0+bnVtX21vZGVzOyBpKyspIHsK PiAgCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbSA9ICZwYW5lbC0+ZGVzYy0+bW9k ZXNbaV07Cj4gIAo+IEBAIC0xNTIsNiArMTYyLDQ0IEBAIHN0YXRpYyBpbnQgcGFuZWxfc2ltcGxl X2dldF9maXhlZF9tb2RlcyhzdHJ1Y3QgcGFuZWxfc2ltcGxlICpwYW5lbCkKPiAgCQludW0rKzsK PiAgCX0KPiAgCj4gKwlyZXR1cm4gbnVtOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHBhbmVsX3Np bXBsZV9nZXRfbm9uX2VkaWRfbW9kZXMoc3RydWN0IHBhbmVsX3NpbXBsZSAqcGFuZWwpCj4gK3sK PiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBwYW5lbC0+YmFzZS5jb25uZWN0 b3I7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gcGFuZWwtPmJhc2UuZHJtOwo+ICsJc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gKwlib29sIGhhc19vdmVycmlkZSA9IHBhbmVs LT5vdmVycmlkZV9tb2RlLnR5cGU7ClRoaXMgbG9va3Mgc3VzcGljaW91cy4KcGFuZWwtPm92ZXJy aWRlX21vZGUudHlwZSBpcyBhbiB1bnNpZ25lZCBpbnQgdGhhdCBtYXkgaGF2ZSBhIG51bWJlciBv ZgpiaXRzIHNldC4KU28gdGhlIGFib3ZlIGNvZGUgaW1wbGljaXRseSBjb252ZXJ0IGEgLnR5cGUg IT0gMCB0byBhIHRydWUuClRoaXMgY2FuIGJlIGV4cHJlc3NlZCBpbiBhIG11Y2ggbW9yZSByZWFk ZXIgZnJpZW5kbHkgd2F5LgoKQW5kIG9uIHRvcCBvZiB0aGlzLCBJIGNhbm5vdCBzZWUgdGhhdCBw YW5lbC0+b3ZlcnJpZGVfbW9kZSBwb2ludHMgdG8gYQp2YWxpZCBpbnN0YW5jZSBvZiBkaXNwbGF5 X21vZGUsIGF0IGxlYXN0IG5vdCBhbHdheXMuCj4gKwl1bnNpZ25lZCBpbnQgbnVtID0gMDsKPiAr Cj4gKwlpZiAoIXBhbmVsLT5kZXNjKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmIChoYXNfb3Zl cnJpZGUpIHsKPiArCQltb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRybSwgJnBhbmVsLT5vdmVy cmlkZV9tb2RlKTsKPiArCQlpZiAobW9kZSkgewo+ICsJCQlkcm1fbW9kZV9wcm9iZWRfYWRkKGNv bm5lY3RvciwgbW9kZSk7Cj4gKwkJCW51bSA9IDE7Cj4gKwkJfSBlbHNlIHsKPiArCQkJZGV2X2Vy cihkcm0tPmRldiwgImZhaWxlZCB0byBhZGQgb3ZlcnJpZGUgbW9kZVxuIik7Cj4gKwkJfQo+ICsJ fQo+ICsKPiArCS8qIE9ubHkgYWRkIHRpbWluZ3MgaWYgb3ZlcnJpZGUgd2FzIG5vdCB0aGVyZSBv ciBmYWlsZWQgdG8gdmFsaWRhdGUgKi8KPiArCWlmIChudW0gPT0gMCAmJiBwYW5lbC0+ZGVzYy0+ bnVtX3RpbWluZ3MpCj4gKwkJbnVtID0gcGFuZWxfc2ltcGxlX2dldF90aW1pbmdzX21vZGVzKHBh bmVsKTsKPiArCj4gKwkvKgo+ICsJICogT25seSBhZGQgZml4ZWQgbW9kZXMgaWYgdGltaW5ncy9v dmVycmlkZSBhZGRlZCBubyBtb2RlLgoKVGhpcyBwYXJ0IEkgZmFpbCB0byB1bmRlcnN0YW5kLgpJ ZiB3ZSBoYXZlIGEgcGFuZWwgd2hlcmUgd2UgaW4gcGFuZWwtc2ltcGxlIGhhdmUgc3BlY2lmaWVk IHRoZSB0aW1pbmdzLAphbmQgZG9uZSBzbyB1c2luZyBkaXNwbGF5X3RpbWluZyBzbyB3aXRoIHBy b3BlciB7bWluLCB0eXAsIG1heH0gdGhlbiBpdApzaG91bGQgYmUgcGVyZmVjdGx5IGxlZ2FsIHRv IHNwZWNpZnkgYSBtb3JlIHByZWNpc2UgdmFyaWFudCBpbiB0aGUgRFQKZmlsZS4KT3Igd2hhdCBk aWQgSSBtaXNzIGhlcmU/Cgo+ICsJICoKPiArCSAqIFdlIHNob3VsZCBvbmx5IGV2ZXIgaGF2ZSBl aXRoZXIgdGhlIGRpc3BsYXkgdGltaW5ncyBzcGVjaWZpZWQKPiArCSAqIG9yIGEgZml4ZWQgbW9k ZS4gQW55dGhpbmcgZWxzZSBpcyByYXRoZXIgYm9ndXMuCj4gKwkgKi8KPiArCVdBUk5fT04ocGFu ZWwtPmRlc2MtPm51bV90aW1pbmdzICYmIHBhbmVsLT5kZXNjLT5udW1fbW9kZXMpOwo+ICsJaWYg KG51bSA9PSAwKQo+ICsJCW51bSA9IHBhbmVsX3NpbXBsZV9nZXRfZml4ZWRfbW9kZXMocGFuZWwp Owo+ICsKPiAgCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmJwYyA9IHBhbmVsLT5kZXNjLT5icGM7 Cj4gIAljb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IHBhbmVsLT5kZXNjLT5zaXpl LndpZHRoOwo+ICAJY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGVpZ2h0X21tID0gcGFuZWwtPmRl c2MtPnNpemUuaGVpZ2h0Owo+IEBAIC0yNjgsNyArMzE2LDcgQEAgc3RhdGljIGludCBwYW5lbF9z aW1wbGVfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQo+ICAJfQo+ICAKPiAgCS8q IGFkZCBoYXJkLWNvZGVkIHBhbmVsIG1vZGVzICovCj4gLQludW0gKz0gcGFuZWxfc2ltcGxlX2dl dF9maXhlZF9tb2RlcyhwKTsKPiArCW51bSArPSBwYW5lbF9zaW1wbGVfZ2V0X25vbl9lZGlkX21v ZGVzKHApOwo+ICAKPiAgCXJldHVybiBudW07Cj4gIH0KPiBAQCAtMjk5LDEwICszNDcsNTggQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgcGFuZWxfc2ltcGxlX2Z1bmNzID0g ewo+ICAJLmdldF90aW1pbmdzID0gcGFuZWxfc2ltcGxlX2dldF90aW1pbmdzLAo+ICB9Owo+ICAK PiArI2RlZmluZSBQQU5FTF9TSU1QTEVfQk9VTkRTX0NIRUNLKHRvX2NoZWNrLCBib3VuZHMsIGZp ZWxkKSBcCj4gKwkodG9fY2hlY2stPmZpZWxkLnR5cCA+PSBib3VuZHMtPmZpZWxkLm1pbiAmJiBc Cj4gKwkgdG9fY2hlY2stPmZpZWxkLnR5cCA8PSBib3VuZHMtPmZpZWxkLm1heCkKPiArc3RhdGlj IHZvaWQgcGFuZWxfc2ltcGxlX3BhcnNlX292ZXJyaWRlX21vZGUoc3RydWN0IGRldmljZSAqZGV2 LAo+ICsJCQkJCSAgICAgc3RydWN0IHBhbmVsX3NpbXBsZSAqcGFuZWwsCj4gKwkJCQkJICAgICBj b25zdCBzdHJ1Y3QgZGlzcGxheV90aW1pbmcgKm90KQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgcGFu ZWxfZGVzYyAqZGVzYyA9IHBhbmVsLT5kZXNjOwo+ICsJc3RydWN0IHZpZGVvbW9kZSB2bTsKPiAr CXVuc2lnbmVkIGludCBpOwo+ICsKPiArCWlmIChXQVJOX09OKGRlc2MtPm51bV9tb2RlcykpIHsK PiArCQlkZXZfZXJyKGRldiwgIlJlamVjdCBvdmVycmlkZSBtb2RlOiBwYW5lbCBoYXMgYSBmaXhl ZCBtb2RlXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwlpZiAoV0FSTl9PTighZGVzYy0+bnVt X3RpbWluZ3MpKSB7Cj4gKwkJZGV2X2VycihkZXYsICJSZWplY3Qgb3ZlcnJpZGUgbW9kZTogbm8g dGltaW5ncyBzcGVjaWZpZWRcbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlmb3IgKGkg PSAwOyBpIDwgcGFuZWwtPmRlc2MtPm51bV90aW1pbmdzOyBpKyspIHsKPiArCQljb25zdCBzdHJ1 Y3QgZGlzcGxheV90aW1pbmcgKmR0ID0gJnBhbmVsLT5kZXNjLT50aW1pbmdzW2ldOwo+ICsKPiAr CQlpZiAoIVBBTkVMX1NJTVBMRV9CT1VORFNfQ0hFQ0sob3QsIGR0LCBoYWN0aXZlKSB8fAo+ICsJ CSAgICAhUEFORUxfU0lNUExFX0JPVU5EU19DSEVDSyhvdCwgZHQsIGhmcm9udF9wb3JjaCkgfHwK PiArCQkgICAgIVBBTkVMX1NJTVBMRV9CT1VORFNfQ0hFQ0sob3QsIGR0LCBoYmFja19wb3JjaCkg fHwKPiArCQkgICAgIVBBTkVMX1NJTVBMRV9CT1VORFNfQ0hFQ0sob3QsIGR0LCBoc3luY19sZW4p IHx8Cj4gKwkJICAgICFQQU5FTF9TSU1QTEVfQk9VTkRTX0NIRUNLKG90LCBkdCwgdmFjdGl2ZSkg fHwKPiArCQkgICAgIVBBTkVMX1NJTVBMRV9CT1VORFNfQ0hFQ0sob3QsIGR0LCB2ZnJvbnRfcG9y Y2gpIHx8Cj4gKwkJICAgICFQQU5FTF9TSU1QTEVfQk9VTkRTX0NIRUNLKG90LCBkdCwgdmJhY2tf cG9yY2gpIHx8Cj4gKwkJICAgICFQQU5FTF9TSU1QTEVfQk9VTkRTX0NIRUNLKG90LCBkdCwgdnN5 bmNfbGVuKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlmIChvdC0+ZmxhZ3MgIT0gZHQtPmZs YWdzKQo+ICsJCQljb250aW51ZTsKVGhlIGJpbmRpbmcgZG8gbm90IHNheSBhbnl0aGluZyBhYm91 dCBmbGFncy4gSXMgdGhpcyBjaGVjayByZWFsbHkKbmVlZGVkPwoKPiArCj4gKwkJdmlkZW9tb2Rl X2Zyb21fdGltaW5nKG90LCAmdm0pOwo+ICsJCWRybV9kaXNwbGF5X21vZGVfZnJvbV92aWRlb21v ZGUoJnZtLCAmcGFuZWwtPm92ZXJyaWRlX21vZGUpOwoKPiArCQlwYW5lbC0+b3ZlcnJpZGVfbW9k ZS50eXBlIHw9IERSTV9NT0RFX1RZUEVfRFJJVkVSIHwKPiArCQkJCQkgICAgIERSTV9NT0RFX1RZ UEVfUFJFRkVSUkVEOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCWlmIChXQVJOX09OKCFwYW5l bC0+b3ZlcnJpZGVfbW9kZS50eXBlKSkKPiArCQlkZXZfZXJyKGRldiwgIlJlamVjdCBvdmVycmlk ZSBtb2RlOiBObyBkaXNwbGF5X3RpbWluZyBmb3VuZFxuIik7Cj4gK30KPiArCj4gIHN0YXRpYyBp bnQgcGFuZWxfc2ltcGxlX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHBh bmVsX2Rlc2MgKmRlc2MpCj4gIHsKPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqYmFja2xpZ2h0LCAq ZGRjOwo+ICAJc3RydWN0IHBhbmVsX3NpbXBsZSAqcGFuZWw7Cj4gKwlzdHJ1Y3QgZGlzcGxheV90 aW1pbmcgZHQ7Cj4gIAlpbnQgZXJyOwo+ICAKPiAgCXBhbmVsID0gZGV2bV9remFsbG9jKGRldiwg c2l6ZW9mKCpwYW5lbCksIEdGUF9LRVJORUwpOwo+IEBAIC0zNDgsNiArNDQ0LDkgQEAgc3RhdGlj IGludCBwYW5lbF9zaW1wbGVfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3Qg cGFuZWxfZGVzYyAqZGVzYykKPiAgCQl9Cj4gIAl9Cj4gIAo+ICsJaWYgKCFvZl9nZXRfZGlzcGxh eV90aW1pbmcoZGV2LT5vZl9ub2RlLCAicGFuZWwtdGltaW5nIiwgJmR0KSkKPiArCQlwYW5lbF9z aW1wbGVfcGFyc2Vfb3ZlcnJpZGVfbW9kZShkZXYsIHBhbmVsLCAmZHQpOwo+ICsKTmFtaW5nIGJp a2Utc2hlZGRpbmcuCldpdGggdGhlIG5ldyBub2RlIG5hbWUsIHRoZSBmdW5jdGlvbiBuYW1lCnBh bmVsX3NpbXBsZV9wYXJzZV9vdmVycmlkZV9tb2RlKCkgY291bGQgdXNlIGFuIHVwZGF0ZS4KTWF5 YmU6IHBhbmVsX3NpbXBsZV9wYXJzZV9wYW5lbF90aW1pbmdfbm9kZSgpCgoKPiAgCWRybV9wYW5l bF9pbml0KCZwYW5lbC0+YmFzZSk7Cj4gIAlwYW5lbC0+YmFzZS5kZXYgPSBkZXY7Cj4gIAlwYW5l bC0+YmFzZS5mdW5jcyA9ICZwYW5lbF9zaW1wbGVfZnVuY3M7Cj4gLS0gCj4gMi4yMS4wLjM5Mi5n ZjhmNjc4NzE1OWUtZ29vZwo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWw=