From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v2 7/9] drm: rcar-du: lvds: Add dual-LVDS panels support Date: Thu, 15 Aug 2019 16:08:34 +0300 Message-ID: <20190815130834.GM5011@pendragon.ideasonboard.com> References: <1565867073-24746-1-git-send-email-fabrizio.castro@bp.renesas.com> <1565867073-24746-8-git-send-email-fabrizio.castro@bp.renesas.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7B4616E991 for ; Thu, 15 Aug 2019 13:08:40 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1565867073-24746-8-git-send-email-fabrizio.castro@bp.renesas.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Fabrizio Castro Cc: Chris Paterson , Geert Uytterhoeven , Simon Horman , David Airlie , dri-devel@lists.freedesktop.org, Biju Das , linux-renesas-soc@vger.kernel.org, Kieran Bingham , Jacopo Mondi List-Id: dri-devel@lists.freedesktop.org SGkgRmFicml6aW8sCgpUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KCk9uIFRodSwgQXVnIDE1LCAy MDE5IGF0IDEyOjA0OjMxUE0gKzAxMDAsIEZhYnJpemlvIENhc3RybyB3cm90ZToKPiBUaGlzIHBh dGNoIGFkZHMgc3VwcG9ydCBmb3IgZHVhbC1MVkRTIHBhbmVscy4KPiAKPiBJdCdzIHZlcnkgaW1w b3J0YW50IHRoYXQgd2UgY29vcmRpbmF0ZSB0aGUgZWZmb3J0cyBvZiBib3RoIHRoZQo+IHByaW1h cnkgZW5jb2RlciBhbmQgdGhlIGNvbXBhbmlvbiBlbmNvZGVyIHRvIGdldCB0aGUgcmlnaHQKPiBw aWN0dXJlIG9uIHRoZSBwYW5lbCwgdGhlcmVmb3JlIHRoaXMgcGF0Y2ggYWRkcyBzb21lIGNvZGUK PiB0byB3b3JrIG91dCBpZiBldmVuIGFuZCBvZGQgcGl4ZWxzIG5lZWQgc3dhcHBpbmcuCj4gV2hl biB0aGUgZW5jb2RlcnMgYXJlIGNvbm5lY3RlZCB0byBhIExWRFMgcGFuZWwsIHRoZSBhc3N1bXB0 aW9uCj4gaXMgdGhhdCBieSBkZWZhdWx0IHRoZSBwYW5lbCBleHBlY3RzIGV2ZW4gcGl4ZWxzICgw LCAyLCA0LCBldGMuKQo+IG9uIHRoZSBmaXJzdCBpbnB1dCBwb3J0LCBhbmQgb2RkIHBpeGVscyAo MSwgMywgNSwgZXRjLikgb24gdGhlCj4gc2Vjb25kcyBwb3J0LiBXaGVuIERSTV9MSU5LX0RVQUxf TFZEU19PRERfRVZFTiBpcyBmb3VuZCBhbW9uZyB0aGUKPiBsaW5rIGZsYWdzLCB0aGUgZGlzcGxh eSBleHBlY3RzIG9kZCBwaXhlbHMgb24gdGhlIGZpcnN0IGlucHV0Cj4gcG9ydCwgYW5kIGV2ZW4g cGl4ZWxzIG9uIHRoZSBzZWNvbmQgcG9ydC4gQXMgYSByZXN1bHQsIHRoZSB3YXkKPiB0aGUgZW5j b2RlcnMgYXJlIGNvbm5lY3RlZCB0byB0aGUgcGFuZWwgbWF5IHRyaWdnZXIgcGl4ZWwgKGRhdGEp Cj4gc3dhcHBpbmcuCj4gCj4gU2lnbmVkLW9mZi1ieTogRmFicml6aW8gQ2FzdHJvIDxmYWJyaXpp by5jYXN0cm9AYnAucmVuZXNhcy5jb20+Cj4gCj4gLS0tCj4gdjEtPnYyOgo+ICogbmV3IHBhdGNo LCByZXN1bHRpbmcgZnJvbSBMYXVyZW50J3MgZmVlZGJhY2sKPiAKPiAgZHJpdmVycy9ncHUvZHJt L3JjYXItZHUvcmNhcl9sdmRzLmMgfCAxMjEgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9sdmRzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2x2ZHMuYwo+IGluZGV4IDQxZDI4ZjQuLjVj MjQ4ODQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9sdmRzLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2x2ZHMuYwo+IEBAIC0yMiw2ICsy Miw4IEBACj4gICNpbmNsdWRlIDxkcm0vZHJtX2JyaWRnZS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9wYW5lbC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9wcm9iZV9oZWxwZXIuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fdGltaW5ncy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9vZi5oPgoKUGxlYXNl IGtlZXAgdGhlIGhlYWRlcnMgYWxwaGFiZXRpY2FsbHkgc29ydGVkLgoKPiAgCj4gICNpbmNsdWRl ICJyY2FyX2x2ZHMuaCIKPiAgI2luY2x1ZGUgInJjYXJfbHZkc19yZWdzLmgiCj4gQEAgLTY5LDYg KzcxLDcgQEAgc3RydWN0IHJjYXJfbHZkcyB7Cj4gIAo+ICAJc3RydWN0IGRybV9icmlkZ2UgKmNv bXBhbmlvbjsKPiAgCWJvb2wgZHVhbF9saW5rOwo+ICsJYm9vbCBzdHJpcGVfc3dhcF9kYXRhOwo+ ICB9Owo+ICAKPiAgI2RlZmluZSBicmlkZ2VfdG9fcmNhcl9sdmRzKGIpIFwKPiBAQCAtNDM5LDEy ICs0NDIsMjAgQEAgc3RhdGljIHZvaWQgcmNhcl9sdmRzX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlKQo+ICAJcmNhcl9sdmRzX3dyaXRlKGx2ZHMsIExWRENIQ1IsIGx2ZGhjcik7Cj4g IAo+ICAJaWYgKGx2ZHMtPmluZm8tPnF1aXJrcyAmIFJDQVJfTFZEU19RVUlSS19EVUFMX0xJTksp IHsKPiAtCQkvKgo+IC0JCSAqIENvbmZpZ3VyZSB2ZXJ0aWNhbCBzdHJpcGUgYmFzZWQgb24gdGhl IG1vZGUgb2Ygb3BlcmF0aW9uIG9mCj4gLQkJICogdGhlIGNvbm5lY3RlZCBkZXZpY2UuCj4gLQkJ ICovCj4gLQkJcmNhcl9sdmRzX3dyaXRlKGx2ZHMsIExWRFNUUklQRSwKPiAtCQkJCWx2ZHMtPmR1 YWxfbGluayA/IExWRFNUUklQRV9TVF9PTiA6IDApOwo+ICsJCXUzMiBsdmRzdHJpcGUgPSAwOwo+ ICsKPiArCQlpZiAobHZkcy0+ZHVhbF9saW5rKQo+ICsJCQkvKgo+ICsJCQkgKiBDb25maWd1cmUg dmVydGljYWwgc3RyaXBlIGJhc2VkIG9uIHRoZSBtb2RlIG9mCj4gKwkJCSAqIG9wZXJhdGlvbiBv ZiB0aGUgY29ubmVjdGVkIGRldmljZS4KPiArCQkJICoKPiArCQkJICogU1RfU1dBUCBmcm9tIExW RDFTVFJJUEUgaXMgcmVzZXJ2ZWQsIGRvIG5vdCBzZXQKPiArCQkJICogaW4gdGhlIGNvbXBhbmlv biBMVkRTCj4gKwkJCSAqLwo+ICsJCQlsdmRzdHJpcGUgPSBMVkRTVFJJUEVfU1RfT04gfAo+ICsJ CQkJKGx2ZHMtPmNvbXBhbmlvbiAmJiBsdmRzLT5zdHJpcGVfc3dhcF9kYXRhID8KPiArCQkJCSBM VkRTVFJJUEVfU1RfU1dBUCA6IDApOwoKTGV0J3Mgc29ydCBvdXQgdGhlIGFsaWdubWVudC4KCgkJ CWx2ZHN0cmlwZSA9IExWRFNUUklQRV9TVF9PTgoJCQkJICB8IChsdmRzLT5jb21wYW5pb24gJiYg bHZkcy0+c3RyaXBlX3N3YXBfZGF0YSA/CgkJCQkgICAgIExWRFNUUklQRV9TVF9TV0FQIDogMCk7 Cgo+ICsJCXJjYXJfbHZkc193cml0ZShsdmRzLCBMVkRTVFJJUEUsIGx2ZHN0cmlwZSk7Cj4gIAl9 Cj4gIAo+ICAJLyoKPiBAQCAtNzA2LDEzICs3MTcsMzEgQEAgc3RhdGljIGludCByY2FyX2x2ZHNf cGFyc2VfZHRfY29tcGFuaW9uKHN0cnVjdCByY2FyX2x2ZHMgKmx2ZHMpCj4gIAlyZXR1cm4gcmV0 Owo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IHJjYXJfbHZkc19nZXRfcmVtb3RlX3BvcnRfcmVnKHN0 cnVjdCBkZXZpY2Vfbm9kZSAqbnApCj4gK3sKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZW5kcG9p bnRfbm9kZSwgKnJlbW90ZV9lbmRwb2ludDsKPiArCXN0cnVjdCBvZl9lbmRwb2ludCBlbmRwb2lu dDsKPiArCj4gKwllbmRwb2ludF9ub2RlID0gb2ZfZ3JhcGhfZ2V0X2VuZHBvaW50X2J5X3JlZ3Mo bnAsIDEsIDApOwo+ICsJaWYgKCFlbmRwb2ludF9ub2RlKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ ICsJcmVtb3RlX2VuZHBvaW50ID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9lbmRwb2ludChlbmRwb2lu dF9ub2RlKTsKPiArCWlmICghcmVtb3RlX2VuZHBvaW50KSB7Cj4gKwkJb2Zfbm9kZV9wdXQoZW5k cG9pbnRfbm9kZSk7Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwl9Cj4gKwlvZl9ncmFwaF9wYXJz ZV9lbmRwb2ludChyZW1vdGVfZW5kcG9pbnQsICZlbmRwb2ludCk7Cj4gKwlvZl9ub2RlX3B1dChl bmRwb2ludF9ub2RlKTsKPiArCW9mX25vZGVfcHV0KHJlbW90ZV9lbmRwb2ludCk7Cj4gKwo+ICsJ cmV0dXJuIGVuZHBvaW50LnBvcnQ7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgcmNhcl9sdmRzX3Bh cnNlX2R0KHN0cnVjdCByY2FyX2x2ZHMgKmx2ZHMpCj4gIHsKPiAgCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqbG9jYWxfb3V0cHV0ID0gTlVMTDsKPiAtCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcmVtb3RlX2lu cHV0ID0gTlVMTDsKPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcmVtb3RlID0gTlVMTDsKPiAtCXN0 cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsKPiAtCWJvb2wgaXNfYnJpZGdlID0gZmFsc2U7Cj4gKwlj b25zdCBzdHJ1Y3QgZHJtX3RpbWluZ3MgKnRpbWluZ3MgPSBOVUxMOwo+ICAJaW50IHJldCA9IDA7 Cj4gIAo+ICAJbG9jYWxfb3V0cHV0ID0gb2ZfZ3JhcGhfZ2V0X2VuZHBvaW50X2J5X3JlZ3MobHZk cy0+ZGV2LT5vZl9ub2RlLCAxLCAwKTsKPiBAQCAtNzQwLDQ1ICs3NjksNTcgQEAgc3RhdGljIGlu dCByY2FyX2x2ZHNfcGFyc2VfZHQoc3RydWN0IHJjYXJfbHZkcyAqbHZkcykKPiAgCQlnb3RvIGRv bmU7Cj4gIAl9Cj4gIAo+IC0JcmVtb3RlX2lucHV0ID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9lbmRw b2ludChsb2NhbF9vdXRwdXQpOwo+ICsJcmV0ID0gZHJtX29mX2ZpbmRfcGFuZWxfb3JfYnJpZGdl KGx2ZHMtPmRldi0+b2Zfbm9kZSwgMSwgMCwKPiArCQkJCQkgICZsdmRzLT5wYW5lbCwgJmx2ZHMt Pm5leHRfYnJpZGdlKTsKPiArCWlmIChyZXQpIHsKPiArCQlyZXQgPSAtRVBST0JFX0RFRkVSOwo+ ICsJCWdvdG8gZG9uZTsKPiArCX0KPiArCWlmIChsdmRzLT5pbmZvLT5xdWlya3MgJiBSQ0FSX0xW RFNfUVVJUktfRFVBTF9MSU5LKSB7Cj4gKwkJaWYgKGx2ZHMtPm5leHRfYnJpZGdlKQo+ICsJCQl0 aW1pbmdzID0gbHZkcy0+bmV4dF9icmlkZ2UtPnRpbWluZ3M7Cj4gKwkJZWxzZQo+ICsJCQl0aW1p bmdzID0gbHZkcy0+cGFuZWwtPnRpbWluZ3M7CgpJIHdvbmRlciBpZiB3ZSBzaG91bGQgdXNlIGRl dm1fZHJtX3BhbmVsX2JyaWRnZV9hZGQoKSAob3IKZHJtX3BhbmVsX2JyaWRnZV9hZGQoKSkgYW5k IHVzZSB0aGUgYnJpZGdlIEFQSSBvbmx5LiBJdCB3b3VsZCByZXF1aXJlIGEKc21hbGwgY2hhbmdl IGluIHRoZSBkcm1fcGFuZWxfYnJpZGdlIHRvIGNvcHkgdGhlIHRpbWluZ3MgcG9pbnRlciwgYnV0 CmFwYXJ0IGZyb20gdGhhdCBJIHRoaW5rIGl0IHNob3VsZCBiZSBmaW5lLiBJZiBpdCBjcmVhdGVz IHRvbyBtdWNoIGNodXJuCmR1ZSB0byBjb25uZWN0b3IgaGFuZGxpbmcgdGhlbiB3ZSBjYW4gc2tp cCBpdCBmb3Igbm93IGFuZCBJJ2xsIGhhbmRsZSBpdApsYXRlciAoYnV0IEknZCBhcHByZWNpYXRl IGlmIHlvdSBjb3VsZCBjb3B5IHRoZSB0aW1pbmdzIHBvaW50ZXIgaW4KZHJtX3BhbmVsX2JyaWRn ZSBhbHJlYWR5KS4KCj4gKwkJaWYgKHRpbWluZ3MpCj4gKwkJCWx2ZHMtPmR1YWxfbGluayA9IHRp bWluZ3MtPmR1YWxfbGluazsKPiArCX0KPiAgCj4gLQlmb3JfZWFjaF9lbmRwb2ludF9vZl9ub2Rl KHJlbW90ZSwgbm9kZSkgewo+IC0JCWlmIChub2RlICE9IHJlbW90ZV9pbnB1dCkgewo+ICsJaWYg KGx2ZHMtPmR1YWxfbGluaykgewo+ICsJCXJldCA9IHJjYXJfbHZkc19wYXJzZV9kdF9jb21wYW5p b24obHZkcyk7Cj4gKwkJaWYgKGx2ZHMtPmNvbXBhbmlvbiAmJiB0aW1pbmdzKSB7Cj4gKwkJCWlu dCBvdXJfcG9ydCwgY29tcF9wb3J0Owo+ICsJCQlib29sIG9kZF9ldmVuX2ZsYWcgPSB0aW1pbmdz LT5saW5rX2ZsYWdzICYKPiArCQkJCQkJRFJNX0xJTktfRFVBTF9MVkRTX09ERF9FVkVOOwo+ICsJ CQlvdXJfcG9ydCA9IHJjYXJfbHZkc19nZXRfcmVtb3RlX3BvcnRfcmVnKAo+ICsJCQkJCQlsdmRz LT5kZXYtPm9mX25vZGUpOwo+ICsJCQlpZiAob3VyX3BvcnQgPCAwKSB7Cj4gKwkJCQlyZXQgPSBv dXJfcG9ydDsKPiArCQkJCWdvdG8gZG9uZTsKPiArCQkJfQo+ICsJCQljb21wX3BvcnQgPSByY2Fy X2x2ZHNfZ2V0X3JlbW90ZV9wb3J0X3JlZygKPiArCQkJCQkJbHZkcy0+Y29tcGFuaW9uLT5vZl9u b2RlKTsKPiArCQkJaWYgKGNvbXBfcG9ydCA8IDApIHsKPiArCQkJCXJldCA9IGNvbXBfcG9ydDsK PiArCQkJCWdvdG8gZG9uZTsKPiArCQkJfQo+ICAJCQkvKgo+IC0JCQkgKiBXZSd2ZSBmb3VuZCBv bmUgZW5kcG9pbnQgb3RoZXIgdGhhbiB0aGUgaW5wdXQsIHRoaXMKPiAtCQkJICogbXVzdCBiZSBh IGJyaWRnZS4KPiArCQkJICogV2UgbmVlZCB0byBtYXRjaCB0aGUgcG9ydCB3aGVyZSB3ZSBnZW5l cmF0ZSBldmVuCj4gKwkJCSAqIHBpeGVscyAoMCwgMiwgNCwgZXRjLikgdG8gdGhlIHBvcnQgd2hl cmUgdGhlIHNpbmsKPiArCQkJICogZXhwZWN0cyB0byByZWNlaXZlIGV2ZW4gcGl4ZWxzLCBzYW1l IHRoaW5nIGZvciB0aGUKPiArCQkJICogb2RkIHBpeGVscy4gU3dhcCB0aGUgZ2VuZXJhdGlvbiBv ZiBldmVuIGFuZCBvZGQKPiArCQkJICogcGl4ZWxzIGlmIHRoZSBjb25uZWN0aW9uIHJlcXVpcmVz IGl0Lgo+ICsJCQkgKiBCeSBkZWZhdWx0ICh3aGVuIERSTV9MSU5LX0RVQUxfTFZEU19PRERfRVZF TiBpcyBub3QKPiArCQkJICogc3BlY2lmaWVkKSB0aGUgc2luayBleHBlY3RzIGV2ZW4gcGl4ZWxz IG9uIHRoZQo+ICsJCQkgKiBmaXJzdCBpbnB1dCBwb3J0LCBhbmQgb2RkIHBpeGVscyBvbiB0aGUg c2Vjb25kIHBvcnQuCgpJIHNlZSB3aGF0IHlvdSdyZSB0cnlpbmcgdG8gZG8sIGJ1dCBJJ20gbm90 IHN1cmUgSSBsaWtlIGl0IG11Y2ggOi1TCgpQZWVraW5nIGludG8gdGhlIHJlbW92ZSBEVCBub2Rl IGxpa2UgdGhhdCBjcmVhdGVzIGEgZGVwZW5kZW5jeSBiZXR3ZWVuCnRoaXMgZHJpdmVyIGFuZCB0 aGUgRFQgYmluZGluZ3Mgb2YgYWxsIHBvc3NpYmxlIHJlbW90ZSBub2Rlcy4gRm9yIHRoaXMKdG8g d29yaywgeW91IHdvdWxkIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIG9kZC9ldmVuIG1hcHBpbmcg dG8gcG9ydHMgaXMKY29tbW9uIHRvIGFsbCBkdWFsLWxpbmsgZGV2aWNlcywgYW5kIHRodXMgZG9j dW1lbnQgdGhhdCBnbG9iYWxseSBpbiB0aGUKRFQgYmluZGluZ3MuIEknbSBub3Qgc3VyZSBpZiB0 aGVyZSdzIGEgd2F5IGFyb3VuZCBpdCBhcyBoYXJkd2FyZQpjb25uZWN0aW9ucyBjb3VsZCBpbmRl ZWQgc3dpdGNoIHRoZSB0d28gbGFuZXMsIHNvIHdlIG5lZWQgdG8gbW9kZWwgdGhhdApzb21laG93 LiBJdCBjb3VsZCBiZSBtb2RlbGxlZCB3aXRoIGEgc3dhcCBwcm9wZXJ0eSBpbiBEVCwgYnV0IHRo YXQgd291bGQKc3RpbGwgcmVxdWlyZSBhIHN0YW5kYXJkIG1hcHBpbmcgb2Ygb2RkLWV2ZW4gcGl4 ZWxzIHRvIHBvcnRzLCBzbyBtYXliZQp0aGUgZWFzaWVzdCBvcHRpb24gaXMgdG8gZG9jdW1lbnQg Z2xvYmFsbHkgdGhhdCBwb3J0IDAgb24gdGhlIHNpbmsgaXMKZm9yIGV2ZW4gcGl4ZWxzLCBhbmQg cG9ydCAxIGZvciBvZGQgcGl4ZWxzLCBhbmQgcmVtb3ZlIHRoZQpEUk1fTElOS19EVUFMX0xWRFNf T0REX0VWRU4gZmxhZyBjb21wbGV0ZWx5LiBCdXQgd2hhdCB3aWxsIHRoZW4gaGFwcGVuCmlmIHlv dSBwYW5lbCBoYXMgbW9yZSB0aGFuIHR3byBwb3J0cyAoZm9yIGF1ZGlvIGZvciBpbnN0YW5jZSwg b3IgZm9yCm90aGVyIHR5cGVzIG9mIHZpZGVvIGxpbmtzKSA/IEl0IG1heSBub3QgYmUgcG9zc2li bGUgdG8gYWx3YXlzIHVzZSBwb3J0CjAgYW5kIDEgZm9yIHRoZSBMVkRTIGV2ZW4gYW5kIG9kZCBw aXhlbHMgaW4gRFQgYmluZGluZ3Mgb2YgYSBwYXJ0aWN1bGFyCnBhbmVsIG9yIGJyaWRnZS4KCkEg Y3JlYXRpdmUgc29sdXRpb24gaXMgbmVlZGVkIGhlcmUuCgo+ICAJCQkgKi8KPiAtCQkJaXNfYnJp ZGdlID0gdHJ1ZTsKPiAtCQkJb2Zfbm9kZV9wdXQobm9kZSk7Cj4gLQkJCWJyZWFrOwo+ICsJCQlp ZiAoKChjb21wX3BvcnQgLSBvdXJfcG9ydCA+IDApICYmICBvZGRfZXZlbl9mbGFnKSB8fAo+ICsJ CQkgICAgKChjb21wX3BvcnQgLSBvdXJfcG9ydCA8IDApICYmICFvZGRfZXZlbl9mbGFnKSkKPiAr CQkJCWx2ZHMtPnN0cmlwZV9zd2FwX2RhdGEgPSB0cnVlOwo+ICAJCX0KPiAgCX0KPiAgCj4gLQlp ZiAoaXNfYnJpZGdlKSB7Cj4gLQkJbHZkcy0+bmV4dF9icmlkZ2UgPSBvZl9kcm1fZmluZF9icmlk Z2UocmVtb3RlKTsKPiAtCQlpZiAoIWx2ZHMtPm5leHRfYnJpZGdlKSB7Cj4gLQkJCXJldCA9IC1F UFJPQkVfREVGRVI7Cj4gLQkJCWdvdG8gZG9uZTsKPiAtCQl9Cj4gLQo+IC0JCWlmIChsdmRzLT5p bmZvLT5xdWlya3MgJiBSQ0FSX0xWRFNfUVVJUktfRFVBTF9MSU5LKQo+IC0JCQlsdmRzLT5kdWFs X2xpbmsgPSBsdmRzLT5uZXh0X2JyaWRnZS0+dGltaW5ncwo+IC0JCQkJCT8gbHZkcy0+bmV4dF9i cmlkZ2UtPnRpbWluZ3MtPmR1YWxfbGluawo+IC0JCQkJCTogZmFsc2U7Cj4gLQl9IGVsc2Ugewo+ IC0JCWx2ZHMtPnBhbmVsID0gb2ZfZHJtX2ZpbmRfcGFuZWwocmVtb3RlKTsKPiAtCQlpZiAoSVNf RVJSKGx2ZHMtPnBhbmVsKSkgewo+IC0JCQlyZXQgPSBQVFJfRVJSKGx2ZHMtPnBhbmVsKTsKPiAt CQkJZ290byBkb25lOwo+IC0JCX0KPiAtCX0KPiAtCj4gLQlpZiAobHZkcy0+ZHVhbF9saW5rKQo+ IC0JCXJldCA9IHJjYXJfbHZkc19wYXJzZV9kdF9jb21wYW5pb24obHZkcyk7Cj4gLQo+ICBkb25l Ogo+ICAJb2Zfbm9kZV9wdXQobG9jYWxfb3V0cHV0KTsKPiAtCW9mX25vZGVfcHV0KHJlbW90ZV9p bnB1dCk7Cj4gIAlvZl9ub2RlX3B1dChyZW1vdGUpOwo+ICAKPiAgCS8qCgotLSAKUmVnYXJkcywK CkxhdXJlbnQgUGluY2hhcnQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVs