From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [PATCH 2/2] drm/panel: Add Novatek NT39016 panel support Date: Sun, 2 Jun 2019 20:44:53 +0200 Message-ID: <20190602184453.GB10060@ravnborg.org> References: <20190602164844.15659-1-paul@crapouillou.net> <20190602164844.15659-2-paul@crapouillou.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190602164844.15659-2-paul@crapouillou.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Paul Cercueil Cc: Mark Rutland , devicetree@vger.kernel.org, od@zcrc.me, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rob Herring , Thierry Reding List-Id: devicetree@vger.kernel.org SGkgUGF1bC4KCk5pY2UgZHJpdmVyLgpGZWVkYmFjaywgbW9zdGx5IGEgcmVwZWF0IGZyb20gaXJj LCBidXQgeW91IGdldCBpdCBoZXJlIHRvbyBzbyBvdGhlcnMKY2FuIGZvbGxvdy4KClRoZSBiYWNr bGlnaHQgaGFuZGxpbmcgY2FuIGJlIHNpbXBsaWZpZWQuClBsZWFzZSBzZWUgcGFuZWwtaW5ub2x1 eC1wMDc5emNhLmMgYXMgb25lIChzZW1pIHJhbmRvbSkgZXhhbXBsZS4KCglTYW0KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBQYXVsIENlcmN1ZWlsIDxwYXVsQGNyYXBvdWlsbG91Lm5ldD4KClRoaXMgZHJp dmVyIGlzIGF1dGhvcmVkIGJ5IE1hYXJ0ZW4gdGVyIEh1dXJuZSA8bWFhcnRlbkB0cmVld2Fsa2Vy Lm9yZz4KYXMgd2VsbCBhcyB5b3UuCkNvdWxkIHlvdSBnZXQgYSBzLW8tYiBvciBhdCBsZWFzdCBz b21lIG90aGVyIGZvcm1hbAphdHRyaWJ1dGlvbiBvZiBNYWFydGVuIGluIHRoZSBjaGFuZ2Vsb2cu CgoKPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X3BhbmVsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2RlbGF5Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2dwaW8vY29uc3VtZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5j bHVkZSA8bGludXgvb2YuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgo+ICsjaW5j bHVkZSA8bGludXgvcmVnbWFwLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3Vt ZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4KPiArI2luY2x1ZGUgPHVhcGkvbGlu dXgvbWVkaWEtYnVzLWZvcm1hdC5oPgoKUmVjZW50bHkgKGFmdGVyIEkgd2FzIHRoZXJlKSBwYW5l bHMgc29ydCB0aGUgaW5jbHVkZSBpbiBibG9ja3MgbGlrZQp0aGlzOgoKI2luY2x1ZGUgPGxpbnV4 Lyo+CgojaW5jbHVkZSA8b3RoZXIgZ2VuZXJhbCBmaWxlcyBmcm9tIGluY2x1ZGUvKj4KCiNpbmNs dWRlIDxkcm0vKj4KCldpdGhpbiBlYWNoIGJsb2NrIHRoZSBoZWFkZXIgZmlsZXMgYXJlIHNvcnRl ZC4KCkZvciBtZWRpYS1idXMtZm9ybWF0LmggLSB5b3UgY291bGQgdXNlOgojaW5jbHVkZSA8bGlu dXgvbWVkaWEtYnVzLWZvcm1hdC5oPgoKPiArCj4gK3N0YXRpYyBpbnQgbnQzOTAxNl9wcmVwYXJl KHN0cnVjdCBkcm1fcGFuZWwgKmRybV9wYW5lbCkKPiArewo+ICsJc3RydWN0IG50MzkwMTYgKnBh bmVsID0gdG9fbnQzOTAxNihkcm1fcGFuZWwpOwo+ICsJaW50IGVycjsKPiArCj4gKwllcnIgPSBy ZWd1bGF0b3JfZW5hYmxlKHBhbmVsLT5zdXBwbHkpOwo+ICsJaWYgKGVycikgewo+ICsJCWRldl9l cnIocGFuZWwtPmRldiwgIkZhaWxlZCB0byBlbmFibGUgcG93ZXIgc3VwcGx5OiAlaSIsIGVycik7 Cj4gKwkJcmV0dXJuIGVycjsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogUmVzZXQgdGhlIE5UMzkw MTYuCj4gKwkgKiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIHRoZSByZXNldCBwdWxzZSBzaG91bGQg YmUgYXQgbGVhc3QgNDAgdXMgdG8KPiArCSAqIHBhc3MgdGhlIGdsaXRjaCBmaWx0ZXIsIGJ1dCB3 aGVuIHRlc3RpbmcgSSBzZWUgc29tZSByZXNldHMgZmFpbCBhbmQKPiArCSAqIHNvbWUgc3VjY2Vl ZCB3aGVuIHVzaW5nIGEgNzAgdXMgZGVsYXksIHNvIHdlIHVzZSAxMDAgdXMgaW5zdGVhZC4KPiAr CSAqLwo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHBhbmVsLT5yZXNldF9ncGlvLCAxKTsK PiArCXVzbGVlcF9yYW5nZSgxMDAsIDEwMDApOwo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVw KHBhbmVsLT5yZXNldF9ncGlvLCAwKTsKPiArCXVkZWxheSgyKTsKPiArCj4gKwkvKiBJbml0IGFs bCByZWdpc3RlcnMuICovCj4gKwllcnIgPSByZWdtYXBfbXVsdGlfcmVnX3dyaXRlKHBhbmVsLT5t YXAsIG50MzkwMTZfcGFuZWxfcmVncywKPiArCQkJCSAgICAgQVJSQVlfU0laRShudDM5MDE2X3Bh bmVsX3JlZ3MpKTsKCk5pY2UhCgo+ICsJaWYgKGVycikgewo+ICsJCWRldl9lcnIocGFuZWwtPmRl diwgIkZhaWxlZCB0byBpbml0IHJlZ2lzdGVyczogJWkiLCBlcnIpOwoKTWF5YmUgaXQgaXMganVz dCBtZSwgYnV0IEkgd29uZGVyIHdoeSAlaSBhbmQgbm90ICVkPwpZb3UgYXJlIGNvbnNpc3RlbnQg d2hpY2ggaXMgZ29vZC4KQnV0IEkgc2F3IG5vIG90aGVyIHBhbmxlIGRyaXZlcnMgdXNlICVpLCBz byBjb25zaWRlciB0byBkbyBsaWtlIHRoZQpyZXN0LgoKCj4gKwkJZ290byBlcnJfZGlzYWJsZV9y ZWd1bGF0b3I7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtlcnJfZGlzYWJsZV9yZWd1 bGF0b3I6Cj4gKwlyZWd1bGF0b3JfZGlzYWJsZShwYW5lbC0+c3VwcGx5KTsKPiArCXJldHVybiBl cnI7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbnQzOTAxNl91bnByZXBhcmUoc3RydWN0IGRybV9w YW5lbCAqZHJtX3BhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgbnQzOTAxNiAqcGFuZWwgPSB0b19udDM5 MDE2KGRybV9wYW5lbCk7Cj4gKwo+ICsJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHBhbmVsLT5y ZXNldF9ncGlvLCAxKTsKPiArCj4gKwlyZWd1bGF0b3JfZGlzYWJsZShwYW5lbC0+c3VwcGx5KTsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBudDM5MDE2X2VuYWJsZShz dHJ1Y3QgZHJtX3BhbmVsICpkcm1fcGFuZWwpCj4gK3sKPiArCXN0cnVjdCBudDM5MDE2ICpwYW5l bCA9IHRvX250MzkwMTYoZHJtX3BhbmVsKTsKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gcmVn bWFwX3dyaXRlKHBhbmVsLT5tYXAsIE5UMzkwMTZfUkVHX1NZU1RFTSwgMHgwNyk7Cj4gKwlpZiAo ZXJyKSB7Cj4gKwkJZGV2X2VycihwYW5lbC0+ZGV2LCAiVW5hYmxlIHRvIGVuYWJsZSBwYW5lbDog JWkiLCBlcnIpOwo+ICsJCXJldHVybiBlcnI7Cj4gKwl9Cj4gKwo+ICsJLyogV2FpdCBmb3IgdGhl IHBpY3R1cmUgdG8gYmUgcmVhZHkgYmVmb3JlIGVuYWJsaW5nIGJhY2tsaWdodCAqLwo+ICsJbXNs ZWVwKDE1MCk7Cj4gKwo+ICsJaWYgKHBhbmVsLT5iYWNrbGlnaHQpIHsKPiArCQlwYW5lbC0+YmFj a2xpZ2h0LT5wcm9wcy5zdGF0ZSAmPSB+QkxfQ09SRV9GQkJMQU5LOwo+ICsJCXBhbmVsLT5iYWNr bGlnaHQtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfVU5CTEFOSzsKPiArCQliYWNrbGlnaHRfdXBk YXRlX3N0YXR1cyhwYW5lbC0+YmFja2xpZ2h0KTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiAr fQo+ICsKPiArc3RhdGljIGludCBudDM5MDE2X2Rpc2FibGUoc3RydWN0IGRybV9wYW5lbCAqZHJt X3BhbmVsKQo+ICt7Cj4gKwlzdHJ1Y3QgbnQzOTAxNiAqcGFuZWwgPSB0b19udDM5MDE2KGRybV9w YW5lbCk7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWlmIChwYW5lbC0+YmFja2xpZ2h0KSB7Cj4gKwkJ cGFuZWwtPmJhY2tsaWdodC0+cHJvcHMucG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047Cj4gKwkJ cGFuZWwtPmJhY2tsaWdodC0+cHJvcHMuc3RhdGUgfD0gQkxfQ09SRV9GQkJMQU5LOwo+ICsJCWJh Y2tsaWdodF91cGRhdGVfc3RhdHVzKHBhbmVsLT5iYWNrbGlnaHQpOwo+ICsJfQo+ICsKPiArCWVy ciA9IHJlZ21hcF93cml0ZShwYW5lbC0+bWFwLCBOVDM5MDE2X1JFR19TWVNURU0sIDB4MDUpOwo+ ICsJaWYgKGVycikgewo+ICsJCWRldl9lcnIocGFuZWwtPmRldiwgIlVuYWJsZSB0byBkaXNhYmxl IHBhbmVsOiAlaSIsIGVycik7Cj4gKwkJcmV0dXJuIGVycjsKPiArCX0KPiArCj4gKwlyZXR1cm4g MDsKPiArfQpDYW4gd2UgZ2V0IHNvbWUgbmljZSBjb25zdGFudHMgZm9yIDB4MDQsIDB4MDUgYW5k IDB4MDc/CihBbGwgdmFsdWVzIHdyaXR0ZW4gdG8gTlQzOTAxNl9SRUdfU1lTVEVNKS4KCj4gKwo+ ICtzdGF0aWMgaW50IG50MzkwMTZfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKmRybV9wYW5l bCkKPiArewo+ICsJc3RydWN0IG50MzkwMTYgKnBhbmVsID0gdG9fbnQzOTAxNihkcm1fcGFuZWwp Owo+ICsJY29uc3Qgc3RydWN0IG50MzkwMTZfcGFuZWxfaW5mbyAqcGFuZWxfaW5mbyA9IHBhbmVs LT5wYW5lbF9pbmZvOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGRybV9w YW5lbC0+Y29ubmVjdG9yOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gKwo+ ICsJbW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShkcm1fcGFuZWwtPmRybSwgJnBhbmVsX2luZm8t PmRpc3BsYXlfbW9kZSk7Cj4gKwlpZiAoIW1vZGUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ ICsJZHJtX21vZGVfc2V0X25hbWUobW9kZSk7Cj4gKwo+ICsJbW9kZS0+dHlwZSA9IERSTV9NT0RF X1RZUEVfRFJJVkVSIHwgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQ7Cj4gKwlkcm1fbW9kZV9wcm9i ZWRfYWRkKGNvbm5lY3RvciwgbW9kZSk7Cj4gKwo+ICsJY29ubmVjdG9yLT5kaXNwbGF5X2luZm8u YnBjID0gODsKPiArCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0gcGFuZWxfaW5m by0+d2lkdGhfbW07Cj4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSBwYW5l bF9pbmZvLT5oZWlnaHRfbW07Cj4gKwo+ICsJZHJtX2Rpc3BsYXlfaW5mb19zZXRfYnVzX2Zvcm1h dHMoJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLAo+ICsJCQkJCSAmcGFuZWxfaW5mby0+YnVzX2Zv cm1hdCwgMSk7Cj4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5idXNfZmxhZ3MgPSBwYW5lbF9p bmZvLT5idXNfZmxhZ3M7Cj4gKwo+ICsJcmV0dXJuIDE7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX3BhbmVsX2Z1bmNzIG50MzkwMTZfZnVuY3MgPSB7Cj4gKwkucHJlcGFyZQk9 IG50MzkwMTZfcHJlcGFyZSwKPiArCS51bnByZXBhcmUJPSBudDM5MDE2X3VucHJlcGFyZSwKPiAr CS5lbmFibGUJCT0gbnQzOTAxNl9lbmFibGUsCj4gKwkuZGlzYWJsZQk9IG50MzkwMTZfZGlzYWJs ZSwKPiArCS5nZXRfbW9kZXMJPSBudDM5MDE2X2dldF9tb2RlcywKPiArfTsKPiArCj4gK3N0YXRp YyBpbnQgbnQzOTAxNl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQo+ICt7Cj4gKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSAmc3BpLT5kZXY7Cj4gKwlzdHJ1Y3QgbnQzOTAxNiAqcGFuZWw7Cj4g KwlpbnQgZXJyOwo+ICsKPiArCXBhbmVsID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwYW5l bCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFwYW5lbCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAr Cj4gKwlwYW5lbC0+ZGV2ID0gZGV2Owo+ICsJc3BpX3NldF9kcnZkYXRhKHNwaSwgcGFuZWwpOwo+ ICsKPiArCXBhbmVsLT5wYW5lbF9pbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7 Cj4gKwlpZiAoIXBhbmVsLT5wYW5lbF9pbmZvKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiAr CXBhbmVsLT5zdXBwbHkgPSBkZXZtX3JlZ3VsYXRvcl9nZXQoZGV2LCAicG93ZXIiKTsKPiArCWlm IChJU19FUlIocGFuZWwtPnN1cHBseSkpIHsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBn ZXQgcG93ZXIgc3VwcGx5Iik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIocGFuZWwtPnN1cHBseSk7Cj4g Kwl9Cj4gKwo+ICsJcGFuZWwtPnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldChkZXYsICJyZXNl dCIsIEdQSU9EX09VVF9ISUdIKTsKPiArCWlmIChJU19FUlIocGFuZWwtPnJlc2V0X2dwaW8pKSB7 Cj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IHJlc2V0IEdQSU8iKTsKPiArCQlyZXR1 cm4gUFRSX0VSUihwYW5lbC0+cmVzZXRfZ3Bpbyk7Cj4gKwl9Cj4gKwo+ICsJc3BpLT5iaXRzX3Bl cl93b3JkID0gODsKPiArCXNwaS0+bW9kZSA9IFNQSV9NT0RFXzMgfCBTUElfM1dJUkU7Cj4gKwll cnIgPSBzcGlfc2V0dXAoc3BpKTsKPiArCWlmIChlcnIpIHsKPiArCQlkZXZfZXJyKGRldiwgIkZh aWxlZCB0byBzZXR1cCBTUEkiKTsKPiArCQlyZXR1cm4gZXJyOwo+ICsJfQo+ICsKPiArCXBhbmVs LT5tYXAgPSBkZXZtX3JlZ21hcF9pbml0X3NwaShzcGksICZudDM5MDE2X3JlZ21hcF9jb25maWcp Owo+ICsJaWYgKElTX0VSUihwYW5lbC0+bWFwKSkgewo+ICsJCWRldl9lcnIoZGV2LCAiRmFpbGVk IHRvIGluaXQgcmVnbWFwIik7Cj4gKwkJcmV0dXJuIFBUUl9FUlIocGFuZWwtPm1hcCk7Cj4gKwl9 Cj4gKwo+ICsJcGFuZWwtPmJhY2tsaWdodCA9IGRldm1fb2ZfZmluZF9iYWNrbGlnaHQoZGV2KTsK PiArCWlmIChJU19FUlIocGFuZWwtPmJhY2tsaWdodCkpIHsKPiArCQllcnIgPSBQVFJfRVJSKHBh bmVsLT5iYWNrbGlnaHQpOwo+ICsJCWlmIChlcnIgIT0gLUVQUk9CRV9ERUZFUikKPiArCQkJZGV2 X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGJhY2tsaWdodCBoYW5kbGUiKTsKPiArCQlyZXR1cm4g ZXJyOwo+ICsJfQo+ICsKPiArCWRybV9wYW5lbF9pbml0KCZwYW5lbC0+ZHJtX3BhbmVsKTsKPiAr CXBhbmVsLT5kcm1fcGFuZWwuZGV2ID0gZGV2Owo+ICsJcGFuZWwtPmRybV9wYW5lbC5mdW5jcyA9 ICZudDM5MDE2X2Z1bmNzOwo+ICsKPiArCWVyciA9IGRybV9wYW5lbF9hZGQoJnBhbmVsLT5kcm1f cGFuZWwpOwo+ICsJaWYgKGVyciA8IDApIHsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBy ZWdpc3RlciBwYW5lbCIpOwo+ICsJCWdvdG8gZXJyX2ZyZWVfYmFja2xpZ2h0Owo+ICsJfQo+ICsK PiArCXJldHVybiAwOwo+ICsKPiArZXJyX2ZyZWVfYmFja2xpZ2h0Ogo+ICsJaWYgKHBhbmVsLT5i YWNrbGlnaHQpCj4gKwkJcHV0X2RldmljZSgmcGFuZWwtPmJhY2tsaWdodC0+ZGV2KTsKV2hlbiBk ZXZtX3h4eCBpcyB1c2VkIGZvciBiYWNrbGlnaHQsIHRoZSBhYm92ZSBpcyBub3QgbmVlZGVkLgoK Q29uc2lkZXIgdG8gd3JpdGUgZXJyb3IgY29kZXMgZm9yIGFsbCB3aGF0IGNhbiBmYWlsIGluIHBy b2JlKCkuCkl0IG1heSBoZWxwIHlvdSBsYXRlciB3aGVuIGRpdmluZyBpbnRvIGxvZ3MuCgo+ICsK PiArc3RhdGljIGludCBudDM5MDE2X3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQo+ICt7 Cj4gKwlzdHJ1Y3QgbnQzOTAxNiAqcGFuZWwgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsKPiArCj4g Kwlkcm1fcGFuZWxfcmVtb3ZlKCZwYW5lbC0+ZHJtX3BhbmVsKTsKPiArCj4gKwludDM5MDE2X2Rp c2FibGUoJnBhbmVsLT5kcm1fcGFuZWwpOwo+ICsJbnQzOTAxNl91bnByZXBhcmUoJnBhbmVsLT5k cm1fcGFuZWwpOwo+ICsKPiArCWlmIChwYW5lbC0+YmFja2xpZ2h0KQo+ICsJCXB1dF9kZXZpY2Uo JnBhbmVsLT5iYWNrbGlnaHQtPmRldik7Ck5vdCBuZWVkZWQuCj4gKwo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbnQzOTAxNl9wYW5lbF9pbmZvIGtkMDM1ZzZf aW5mbyA9IHsKPiArCS5kaXNwbGF5X21vZGUgPSB7Cj4gKwkJLmNsb2NrID0gNjAwMCwKPiArCQku aGRpc3BsYXkgPSAzMjAsCj4gKwkJLmhzeW5jX3N0YXJ0ID0gMzIwICsgMTAsCj4gKwkJLmhzeW5j X2VuZCA9IDMyMCArIDEwICsgNTAsCj4gKwkJLmh0b3RhbCA9IDMyMCArIDEwICsgNTAgKyAyMCwK PiArCQkudmRpc3BsYXkgPSAyNDAsCj4gKwkJLnZzeW5jX3N0YXJ0ID0gMjQwICsgNSwKPiArCQku dnN5bmNfZW5kID0gMjQwICsgNSArIDEsCj4gKwkJLnZ0b3RhbCA9IDI0MCArIDUgKyAxICsgNCwK PiArCQkudnJlZnJlc2ggPSA2MCwKPiArCQkuZmxhZ3MgPSBEUk1fTU9ERV9GTEFHX05IU1lOQyB8 IERSTV9NT0RFX0ZMQUdfTlZTWU5DLAo+ICsJfSwKPiArCS53aWR0aF9tbSA9IDcxLAo+ICsJLmhl aWdodF9tbSA9IDUzLAo+ICsJLmJ1c19mb3JtYXQgPSBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0 LAo+ICsJLmJ1c19mbGFncyA9IERSTV9CVVNfRkxBR19QSVhEQVRBX05FR0VER0UsCj4gK307CkV2 ZXJ5dGhpbmcgc3BlY2lmaWVkIC0gZ29vZCEKCj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCBudDM5MDE2X29mX21hdGNoW10gPSB7Cj4gKwl7IC5jb21wYXRpYmxlID0gImtp bmdkaXNwbGF5LGtkMDM1ZzYtNTRudCIsIC5kYXRhID0gJmtkMDM1ZzZfaW5mbyB9LAo+ICsJe30s Ck1heWJlIHdyaXRlIHsgLyogc2VudGluZWwgKi8gfSBsaWtlIG1hbnkgb3RoZXIgZHJpdmVycy4K PiArfTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbnQzOTAxNl9vZl9tYXRjaCk7Cj4gKwo+ ICtzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgbnQzOTAxNl9kcml2ZXIgPSB7Cj4gKwkuZHJpdmVy ID0gewo+ICsJCS5uYW1lID0gIm50MzkwMTYiLAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IG50Mzkw MTZfb2ZfbWF0Y2gsCj4gKwl9LAo+ICsJLnByb2JlID0gbnQzOTAxNl9wcm9iZSwKPiArCS5yZW1v dmUgPSBudDM5MDE2X3JlbW92ZSwKPiArfTsKPiArCj4gK21vZHVsZV9zcGlfZHJpdmVyKG50Mzkw MTZfZHJpdmVyKTsKPiArCj4gK01PRFVMRV9BVVRIT1IoIk1hYXJ0ZW4gdGVyIEh1dXJuZSA8bWFh cnRlbkB0cmVld2Fsa2VyLm9yZz4iKTsKPiArTU9EVUxFX0FVVEhPUigiUGF1bCBDZXJjdWVpbCA8 cGF1bEBjcmFwb3VpbGxvdS5uZXQ+Iik7Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs