From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: Re: [RFC PATCH v2 3/4] drm: rockchip: hdmi: add RK3229 HDMI support Date: Thu, 07 Jan 2016 11:04:12 +0100 Message-ID: <1452161052.4776.7.camel@pengutronix.de> References: <1452156811-18150-1-git-send-email-ykk@rock-chips.com> <1452157373-18783-1-git-send-email-ykk@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1452157373-18783-1-git-send-email-ykk@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Yakir Yang Cc: devicetree@vger.kernel.org, Kumar Gala , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, Rob Herring , Andy Yan , Russell King , Zheng Yang , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org QW0gRG9ubmVyc3RhZywgZGVuIDA3LjAxLjIwMTYsIDE3OjAyICswODAwIHNjaHJpZWIgWWFraXIg WWFuZzoKPiBSSzMyMjkgaW50ZWdyYXRlIGFuIERlc2lnbmVkV2FyZSBIRE1JMi4wIGNvbnRyb2xs ZXIgYW5kIGFuIElOTk8gSERNSTIuMCBwaHksCj4gdGhlIG1heCBvdXRwdXQgcmVzb2x1dGlvbiBp cyA0Sy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBZYWtpciBZYW5nIDx5a2tAcm9jay1jaGlwcy5jb20+ CgpJdCBzb3VuZHMgbGlrZSB0aGUgSU5OTyBIRE1JMi4wIHBoeSBpcyBub3QgbmVjZXNzYXJpbHkg c3BlY2lmaWMgdG8KUkszMjI5IGJ1dCBtaWdodCBhbHNvIGFwcGVhciBpbiBvdGhlciBTb0NzPyBJ ZiBzbywgSSB0aGluayB0aGlzIHNob3VsZApiZSBpbXBsZW1lbnRlZCBpbiBhIHNlcGFyYXRlIHBo eSBkcml2ZXIgYW5kIGJlIHVzZWQgYnkgZHdfaGRtaS1yb2NrY2hpcC4KCnJlZ2FyZHMKUGhpbGlw cAoKPiAtLS0KPiBDaGFuZ2VzIGluIHYyOgo+IC0gU3BsaXQgc29tZSBkdy1oZG1pIGRyaXZlciBj aGFuZ2VzIGludG8gc2VwYXJhdGUgcGF0Y2hlcyBbMDEvMDRdICYgWzAyLzA0XQo+IAo+ICBkcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL2R3LWhkbWkuYyAgICAgICAgICAgIHwgIDI3ICstCj4gIGRyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9kd19oZG1pLXJvY2tjaGlwLmMgfCAzNjcgKysrKysrKysrKysr KysrKysrKysrKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvZHdfaGRtaS1yb2Nr Y2hpcC5oIHwgMTM3ICsrKysrKysrKysrCj4gIGluY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmgg ICAgICAgICAgICAgICAgfCAgIDMgKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDUwNyBpbnNlcnRpb25z KCspLCAyNyBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9kd19oZG1pLXJvY2tjaGlwLmgKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9kdy1oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3LWhkbWku Ywo+IGluZGV4IDVhZDcyZWMuLjVlMDNkODMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9kdy1oZG1pLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3LWhkbWku Ywo+IEBAIC03MzUsMTAgKzczNSwxMiBAQCBzdGF0aWMgaW50IGhkbWlfcGh5X2NvbmZpZ3VyZShz dHJ1Y3QgZHdfaGRtaSAqaGRtaSwgdW5zaWduZWQgY2hhciBwcmVwLAo+ICB7Cj4gIAl1bnNpZ25l ZCByZXNfaWR4Owo+ICAJdTggdmFsLCBtc2VjOwo+ICsJaW50IHJldDsKPiAgCWNvbnN0IHN0cnVj dCBkd19oZG1pX3BsYXRfZGF0YSAqcGRhdGEgPSBoZG1pLT5wbGF0X2RhdGE7Cj4gIAljb25zdCBz dHJ1Y3QgZHdfaGRtaV9tcGxsX2NvbmZpZyAqbXBsbF9jb25maWcgPSBwZGF0YS0+bXBsbF9jZmc7 Cj4gIAljb25zdCBzdHJ1Y3QgZHdfaGRtaV9jdXJyX2N0cmwgKmN1cnJfY3RybCA9IHBkYXRhLT5j dXJfY3RyOwo+ICAJY29uc3Qgc3RydWN0IGR3X2hkbWlfcGh5X2NvbmZpZyAqcGh5X2NvbmZpZyA9 IHBkYXRhLT5waHlfY29uZmlnOwo+ICsJaW50IG1waXhlbGNsb2NrID0gaGRtaS0+aGRtaV9kYXRh LnZpZGVvX21vZGUubXBpeGVsY2xvY2s7Cj4gIAo+ICAJaWYgKHByZXApCj4gIAkJcmV0dXJuIC1F SU5WQUw7Cj4gQEAgLTc1OCwyNyArNzYwLDM4IEBAIHN0YXRpYyBpbnQgaGRtaV9waHlfY29uZmln dXJlKHN0cnVjdCBkd19oZG1pICpoZG1pLCB1bnNpZ25lZCBjaGFyIHByZXAsCj4gIAkJcmV0dXJu IC1FSU5WQUw7Cj4gIAl9Cj4gIAo+ICsJaWYgKGhkbWktPnBsYXRfZGF0YS0+ZXh0cGh5X2NvbmZp Zykgewo+ICsJCS8qIGdlbjIgdHggcG93ZXIgb2ZmICovCj4gKwkJZHdfaGRtaV9waHlfZ2VuMl90 eHB3cm9uKGhkbWksIDApOwo+ICsJCWR3X2hkbWlfcGh5X2dlbjJfcGRkcShoZG1pLCAxKTsKPiAr Cj4gKwkJcmV0ID0gaGRtaS0+cGxhdF9kYXRhLT5leHRwaHlfY29uZmlnKGhkbWktPnBsYXRfZGF0 YSwgcmVzX2lkeCwKPiArCQkJCQkJICAgICBtcGl4ZWxjbG9jayk7Cj4gKwkJLyogZ2VuMiB0eCBw b3dlciBvbiAqLwo+ICsJCWR3X2hkbWlfcGh5X2dlbjJfdHhwd3JvbihoZG1pLCAxKTsKPiArCQlk d19oZG1pX3BoeV9nZW4yX3BkZHEoaGRtaSwgMCk7Cj4gKwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9 Cj4gKwo+ICAJLyogUExML01QTEwgQ2ZnIC0gYWx3YXlzIG1hdGNoIG9uIGZpbmFsIGVudHJ5ICov Cj4gIAlmb3IgKDsgbXBsbF9jb25maWctPm1waXhlbGNsb2NrICE9IH4wVUw7IG1wbGxfY29uZmln KyspCj4gLQkJaWYgKGhkbWktPmhkbWlfZGF0YS52aWRlb19tb2RlLm1waXhlbGNsb2NrIDw9Cj4g LQkJICAgIG1wbGxfY29uZmlnLT5tcGl4ZWxjbG9jaykKPiArCQlpZiAobXBpeGVsY2xvY2sgPD0g bXBsbF9jb25maWctPm1waXhlbGNsb2NrKQo+ICAJCQlicmVhazsKPiAgCj4gIAlmb3IgKDsgY3Vy cl9jdHJsLT5tcGl4ZWxjbG9jayAhPSB+MFVMOyBjdXJyX2N0cmwrKykKPiAtCQlpZiAoaGRtaS0+ aGRtaV9kYXRhLnZpZGVvX21vZGUubXBpeGVsY2xvY2sgPD0KPiAtCQkgICAgY3Vycl9jdHJsLT5t cGl4ZWxjbG9jaykKPiArCQlpZiAobXBpeGVsY2xvY2sgPD0gY3Vycl9jdHJsLT5tcGl4ZWxjbG9j aykKPiAgCQkJYnJlYWs7Cj4gIAo+ICAJZm9yICg7IHBoeV9jb25maWctPm1waXhlbGNsb2NrICE9 IH4wVUw7IHBoeV9jb25maWcrKykKPiAtCQlpZiAoaGRtaS0+aGRtaV9kYXRhLnZpZGVvX21vZGUu bXBpeGVsY2xvY2sgPD0KPiAtCQkgICAgcGh5X2NvbmZpZy0+bXBpeGVsY2xvY2spCj4gKwkJaWYg KG1waXhlbGNsb2NrIDw9IHBoeV9jb25maWctPm1waXhlbGNsb2NrKQo+ICAJCQlicmVhazsKPiAg Cj4gIAlpZiAobXBsbF9jb25maWctPm1waXhlbGNsb2NrID09IH4wVUwgfHwKPiAgCSAgICBjdXJy X2N0cmwtPm1waXhlbGNsb2NrID09IH4wVUwgfHwKPiAgCSAgICBwaHlfY29uZmlnLT5tcGl4ZWxj bG9jayA9PSB+MFVMKSB7Cj4gIAkJZGV2X2VycihoZG1pLT5kZXYsICJQaXhlbCBjbG9jayAlZCAt IHVuc3VwcG9ydGVkIGJ5IEhETUlcbiIsCj4gLQkJCWhkbWktPmhkbWlfZGF0YS52aWRlb19tb2Rl Lm1waXhlbGNsb2NrKTsKPiArCQkJbXBpeGVsY2xvY2spOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3X2hkbWkt cm9ja2NoaXAuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9kd19oZG1pLXJvY2tjaGlwLmMK PiBpbmRleCA4MTY0ODIzLi4yNGZmZmFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9kd19oZG1pLXJvY2tjaGlwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvZHdfaGRtaS1yb2NrY2hpcC5jCj4gQEAgLTcsNiArNyw3IEBACj4gICAqIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gICAqLwo+ICAKPiArI2luY2x1ZGUgPGxpbnV4L2Ns ay5oPgo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KPiBAQCAtMjEs MTggKzIyLDEzNCBAQAo+ICAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2Rydi5oIgo+ICAjaW5jbHVk ZSAicm9ja2NoaXBfZHJtX3ZvcC5oIgo+ICAKPiAtI2RlZmluZSBHUkZfU09DX0NPTjYgICAgICAg ICAgICAgICAgICAgIDB4MDI1Ywo+IC0jZGVmaW5lIEhETUlfU0VMX1ZPUF9MSVQgICAgICAgICAg ICAgICAgKDEgPDwgNCkKPiArI2luY2x1ZGUgImR3X2hkbWktcm9ja2NoaXAuaCIKPiAgCj4gIHN0 cnVjdCByb2NrY2hpcF9oZG1pIHsKPiAgCXN0cnVjdCBkZXZpY2UgKmRldjsKPiAgCXN0cnVjdCBy ZWdtYXAgKnJlZ21hcDsKPiAgCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOwo+ICAJc3RydWN0 IGR3X2hkbWlfcGxhdF9kYXRhIHBsYXRfZGF0YTsKPiArCj4gKwl2b2lkIF9faW9tZW0gKmV4dHBo eV9yZWdiYXNlOwo+ICsJc3RydWN0IGNsayAqZXh0cGh5X3BjbGs7Cj4gIH07Cj4gIAo+ICAjZGVm aW5lIHRvX3JvY2tjaGlwX2hkbWkoeCkJY29udGFpbmVyX29mKHgsIHN0cnVjdCByb2NrY2hpcF9o ZG1pLCB4KQo+ICAKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBleHRwaHlfY29uZmlnX3RhYiByb2Nr Y2hpcF9leHRwaHlfY2ZnW10gPSB7Cj4gKwl7IC5tcGl4ZWxjbG9jayA9IDE2NTAwMDAwMCwKPiAr CSAgLnByZV9lbXBoYXNpcyA9IDAsIC5zbG9wZWJvb3N0ID0gMCwgLmNsa19sZXZlbCA9IDQsCj4g KwkgIC5kYXRhMF9sZXZlbCA9IDQsIDQsIDQsCj4gKwl9LAo+ICsKPiArCXsgLm1waXhlbGNsb2Nr ID0gMjI1MDAwMDAwLAo+ICsJICAucHJlX2VtcGhhc2lzID0gMCwgLnNsb3BlYm9vc3QgPSAwLCAu Y2xrX2xldmVsID0gNiwKPiArCSAgLmRhdGEwX2xldmVsID0gNiwgNiwgNiwKPiArCX0sCj4gKwo+ ICsJeyAubXBpeGVsY2xvY2sgPSAzNDAwMDAwMDAsCj4gKwkgIC5wcmVfZW1waGFzaXMgPSAxLCAu c2xvcGVib29zdCA9IDAsIC5jbGtfbGV2ZWwgPSA2LAo+ICsJICAuZGF0YTBfbGV2ZWwgPSAxMCwg MTAsIDEwLAo+ICsJfSwKPiArCj4gKwl7IC5tcGl4ZWxjbG9jayA9IDU5NDAwMDAwMCwKPiArCSAg LnByZV9lbXBoYXNpcyA9IDEsIC5zbG9wZWJvb3N0ID0gMCwgLmNsa19sZXZlbCA9IDcsCj4gKwkg IC5kYXRhMF9sZXZlbCA9IDEwLCAxMCwgMTAsCj4gKwl9LAo+ICsKPiArCXsgLm1waXhlbGNsb2Nr ID0gfjBVTH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGV4dHBoeV9wbGxfY29u ZmlnX3RhYiByb2NrY2hpcF9leHRwaHlfcGxsX2NmZ1tdID0gewo+ICsJewo+ICsJCS5tcGl4ZWxj bG9jayA9IDI3MDAwMDAwLCAucGFyYW0gPSB7Cj4gKwkJCXsgLnBsbF9uZCA9IDEsIC5wbGxfbmYg PSA0NSwKPiArCQkJICAudG1zZF9kaXZpZGVyX2EgPSAzLCAxLCAxLAo+ICsJCQkgIC5wY2xrX2Rp dmlkZXJfYSA9IDEsIDMsIDMsIDQsCj4gKwkJCSAgLnZjb19kaXZfNSA9IDAsCj4gKwkJCSAgLnBw bGxfbmQgPSAxLCAucHBsbF9uZiA9IDQwLCAucHBsbF9ubyA9IDgsCj4gKwkJCX0sCj4gKwkJCXsg LnBsbF9uZCA9IDEsIC5wbGxfbmYgPSA0NSwKPiArCQkJICAudG1zZF9kaXZpZGVyX2EgPSAwLCAz LCAzLAo+ICsJCQkgIC5wY2xrX2RpdmlkZXJfYSA9IDEsIDMsIDMsIDQsCj4gKwkJCSAgLnZjb19k aXZfNSA9IDAsCj4gKwkJCSAgLnBwbGxfbmQgPSAxLCAucHBsbF9uZiA9IDQwLCAucHBsbF9ubyA9 IDgsCj4gKwkJCX0sCj4gKwkJfSwKPiArCX0sIHsKPiArCQkubXBpeGVsY2xvY2sgPSA1OTQwMDAw MCwgLnBhcmFtID0gewo+ICsJCQl7IC5wbGxfbmQgPSAyLCAucGxsX25mID0gOTksCj4gKwkJCSAg LnRtc2RfZGl2aWRlcl9hID0gMywgMSwgMSwKPiArCQkJICAucGNsa19kaXZpZGVyX2EgPSAxLCAz LCAyLCAyLAo+ICsJCQkgIC52Y29fZGl2XzUgPSAwLAo+ICsJCQkgIC5wcGxsX25kID0gMSwgLnBw bGxfbmYgPSA0MCwgLnBwbGxfbm8gPSA4LAo+ICsJCQl9LAo+ICsJCQl7IC5wbGxfbmQgPSAyLCAu cGxsX25mID0gOTksCj4gKwkJCSAgLnRtc2RfZGl2aWRlcl9hID0gMSwgMSwgMSwKPiArCQkJICAu cGNsa19kaXZpZGVyX2EgPSAxLCAzLCAyLCAyLAo+ICsJCQkgIC52Y29fZGl2XzUgPSAwLAo+ICsJ CQkgIC5wcGxsX25kID0gMSwgLnBwbGxfbmYgPSA0MCwgLnBwbGxfbm8gPSA4LAo+ICsJCQl9LAo+ ICsJCX0sCj4gKwl9LCB7Cj4gKwkJLm1waXhlbGNsb2NrID0gNzQyNTAwMDAsIC5wYXJhbSA9IHsK PiArCQkJeyAucGxsX25kID0gMiwgLnBsbF9uZiA9IDk5LAo+ICsJCQkgIC50bXNkX2RpdmlkZXJf YSA9IDEsIDEsIDEsCj4gKwkJCSAgLnBjbGtfZGl2aWRlcl9hID0gMSwgMiwgMiwgMiwKPiArCQkJ ICAudmNvX2Rpdl81ID0gMCwKPiArCQkJICAucHBsbF9uZCA9IDEsIC5wcGxsX25mID0gNDAsIC5w cGxsX25vID0gOCwKPiArCQkJfSwKPiArCQkJeyAucGxsX25kID0gNCwgLnBsbF9uZiA9IDQ5NSwK PiArCQkJICAudG1zZF9kaXZpZGVyX2EgPSAxLCAyLCAyLAo+ICsJCQkgIC5wY2xrX2RpdmlkZXJf YSA9IDEsIDMsIDMsIDQsCj4gKwkJCSAgLnZjb19kaXZfNSA9IDAsCj4gKwkJCSAgLnBwbGxfbmQg PSAyLCAucHBsbF9uZiA9IDQwLCAucHBsbF9ubyA9IDQsCj4gKwkJCX0sCj4gKwkJfSwKPiArCX0s IHsKPiArCQkubXBpeGVsY2xvY2sgPSAxNDg1MDAwMDAsIC5wYXJhbSA9IHsKPiArCQkJeyAucGxs X25kID0gMiwgLnBsbF9uZiA9IDk5LAo+ICsJCQkgIC50bXNkX2RpdmlkZXJfYSA9IDEsIDAsIDAs Cj4gKwkJCSAgLnBjbGtfZGl2aWRlcl9hID0gMSwgMiwgMSwgMSwKPiArCQkJICAudmNvX2Rpdl81 ID0gMCwKPiArCQkJICAucHBsbF9uZCA9IDIsIC5wcGxsX25mID0gNDAsIC5wcGxsX25vID0gNCwK PiArCQkJfSwKPiArCQkJeyAucGxsX25kID0gNCwgLnBsbF9uZiA9IDQ5NSwKPiArCQkJICAudG1z ZF9kaXZpZGVyX2EgPSAwLCAyLCAyLAo+ICsJCQkgIC5wY2xrX2RpdmlkZXJfYSA9IDEsIDMsIDIs IDIsCj4gKwkJCSAgLnZjb19kaXZfNSA9IDAsCj4gKwkJCSAgLnBwbGxfbmQgPSA0LCAucHBsbF9u ZiA9IDQwLCAucHBsbF9ubyA9IDIsCj4gKwkJCX0sCj4gKwkJfSwKPiArCX0sIHsKPiArCQkubXBp eGVsY2xvY2sgPSAyOTcwMDAwMDAsIC5wYXJhbSA9IHsKPiArCQkJeyAucGxsX25kID0gMiwgLnBs bF9uZiA9IDk5LAo+ICsJCQkgIC50bXNkX2RpdmlkZXJfYSA9IDAsIDAsIDAsCj4gKwkJCSAgLnBj bGtfZGl2aWRlcl9hID0gMSwgMCwgMSwgMSwKPiArCQkJICAudmNvX2Rpdl81ID0gMCwKPiArCQkJ ICAucHBsbF9uZCA9IDQsIC5wcGxsX25mID0gNDAsIC5wcGxsX25vID0gMiwKPiArCQkJfSwKPiAr CQkJeyAucGxsX25kID0gNCwgLnBsbF9uZiA9IDQ5NSwKPiArCQkJICAudG1zZF9kaXZpZGVyX2Eg PSAxLCAyLCAwLAo+ICsJCQkgIC5wY2xrX2RpdmlkZXJfYSA9IDEsIDMsIDEsIDEsCj4gKwkJCSAg LnZjb19kaXZfNSA9IDAsCj4gKwkJCSAgLnBwbGxfbmQgPSA4LCAucHBsbF9uZiA9IDQwLCAucHBs bF9ubyA9IDEsCj4gKwkJCX0sCj4gKwkJfSwKPiArCX0sIHsKPiArCQkubXBpeGVsY2xvY2sgPSA1 OTQwMDAwMDAsIC5wYXJhbSA9IHsKPiArCQkJeyAucGxsX25kID0gMSwgLnBsbF9uZiA9IDk5LAo+ ICsJCQkgIC50bXNkX2RpdmlkZXJfYSA9IDAsIDIsIDAsCj4gKwkJCSAgLnBjbGtfZGl2aWRlcl9h ID0gMSwgMCwgMSwgMSwKPiArCQkJICAudmNvX2Rpdl81ID0gMCwKPiArCQkJICAucHBsbF9uZCA9 IDgsIC5wcGxsX25mID0gNDAsIC5wcGxsX25vID0gMSwKPiArCQkJfSwKPiArCQl9Cj4gKwl9LCB7 Cj4gKwkJLm1waXhlbGNsb2NrID0gfjBVTCwKPiArCX0KPiArfTsKPiArCj4gIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHdfaGRtaV9tcGxsX2NvbmZpZyByb2NrY2hpcF9tcGxsX2NmZ1tdID0gewo+ICAJ ewo+ICAJCTI3MDAwMDAwLCB7Cj4gQEAgLTE0Miw5ICsyNTksMTY0IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHdfaGRtaV9waHlfY29uZmlnIHJvY2tjaGlwX3BoeV9jb25maWdbXSA9IHsKPiAgCXsg fjBVTCwJICAgICAweDAwMDAsIDB4MDAwMCwgMHgwMDAwfQo+ICB9Owo+ICAKPiArc3RhdGljIGlu bGluZSB2b2lkIGhkbWlfZXh0cGh5X3dyaXRlKHN0cnVjdCByb2NrY2hpcF9oZG1pICpoZG1pLAo+ ICsJCQkJICAgICB1bnNpZ25lZCBzaG9ydCBkYXRhLCB1bnNpZ25lZCBjaGFyIGFkZHIpCj4gK3sK PiArCXdyaXRlbF9yZWxheGVkKGRhdGEsIGhkbWktPmV4dHBoeV9yZWdiYXNlICsgKGFkZHIpICog MHgwNCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGhkbWlfZXh0cGh5 X3JlYWQoc3RydWN0IHJvY2tjaGlwX2hkbWkgKmhkbWksCj4gKwkJCQkJICAgIHVuc2lnbmVkIGNo YXIgYWRkcikKPiArewo+ICsJcmV0dXJuIHJlYWRsX3JlbGF4ZWQoaGRtaS0+ZXh0cGh5X3JlZ2Jh c2UgKyAoYWRkcikgKiAweDA0KTsKPiArfQo+ICsKPiArc3RhdGljIGludCByb2NrY2hpcF9leHRw aHlfY29uZmlnKGNvbnN0IHN0cnVjdCBkd19oZG1pX3BsYXRfZGF0YSAqcGxhdF9kYXRhLAo+ICsJ CQkJICBpbnQgcmVzLCBpbnQgcGl4ZWxjbG9jaykKPiArewo+ICsJc3RydWN0IHJvY2tjaGlwX2hk bWkgKmhkbWkgPSB0b19yb2NrY2hpcF9oZG1pKHBsYXRfZGF0YSk7Cj4gKwljb25zdCBzdHJ1Y3Qg ZXh0cGh5X3BsbF9jb25maWdfdGFiICptcGxsID0gcm9ja2NoaXBfZXh0cGh5X3BsbF9jZmc7Cj4g Kwljb25zdCBzdHJ1Y3QgZXh0cGh5X2NvbmZpZ190YWIgKmN0cmwgPSByb2NrY2hpcF9leHRwaHlf Y2ZnOwo+ICsJY29uc3Qgc3RydWN0IGV4dHBoeV9wbGxfY29uZmlnX3BhcmFtICpwYXJhbTsKPiAr CXVuc2lnbmVkIGxvbmcgdGltZW91dDsKPiArCWludCBpLCBzdGF0Owo+ICsKPiArCWlmIChyZXMg Pj0gRFdfSERNSV9SRVNfTUFYKSB7Cj4gKwkJZGV2X2VycihoZG1pLT5kZXYsICJFeHRwaHkgY2Fu J3Qgc3VwcG9ydCByZXMgJWRcbiIsIHJlcyk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4g Kwo+ICsJLyogRmluZCBvdXQgdGhlIGV4dHBoeSBNUExMIGNvbmZpZ3VyZSBwYXJhbWV0ZXJzICov Cj4gKwlmb3IgKGkgPSAwOyBtcGxsW2ldLm1waXhlbGNsb2NrICE9IH4wVUw7IGkrKykKPiArCQlp ZiAocGl4ZWxjbG9jayA9PSBtcGxsW2ldLm1waXhlbGNsb2NrKQo+ICsJCQlicmVhazsKPiArCWlm IChtcGxsW2ldLm1waXhlbGNsb2NrID09IH4wVUwpIHsKPiArCQlkZXZfZXJyKGhkbWktPmRldiwg IkV4dHBoeSBjYW4ndCBzdXBwb3J0ICVkSHpcbiIsIHBpeGVsY2xvY2spOwo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsJfQo+ICsJcGFyYW0gPSAmbXBsbFtpXS5wYXJhbVtyZXNdOwo+ICsKPiArCXJl Z21hcF93cml0ZShoZG1pLT5yZWdtYXAsIFJLMzIyOV9HUkZfU09DX0NPTjIsCj4gKwkJICAgICBS SzMyMjlfUExMX1BPV0VSX0RPV04gfCBSSzMyMjlfUExMX1BEQVRBX0RFTik7Cj4gKwo+ICsJLyoK PiArCSAqIENvbmZpZ3VyZSBleHRlcm5hbCBIRE1JIFBIWSBQTEwgcmVnaXN0ZXJzLgo+ICsJICov Cj4gKwlzdGF0ID0gKChwYXJhbS0+cGxsX25mID4+IDEpICYgRVhUX1BIWV9QTExfRkJfQklUOF9N QVNLKSB8Cj4gKwkgICAgICAgKChwYXJhbS0+dmNvX2Rpdl81ICYgMSkgPDwgNSkgfAo+ICsJICAg ICAgIChwYXJhbS0+cGxsX25kICYgRVhUX1BIWV9QTExfUFJFX0RJVklERVJfTUFTSyk7Cj4gKwlo ZG1pX2V4dHBoeV93cml0ZShoZG1pLCBzdGF0LCBFWFRfUEhZX1BMTF9QUkVfRElWSURFUik7Cj4g Kwo+ICsJaGRtaV9leHRwaHlfd3JpdGUoaGRtaSwgcGFyYW0tPnBsbF9uZiwgRVhUX1BIWV9QTExf RkJfRElWSURFUik7Cj4gKwo+ICsJc3RhdCA9IChwYXJhbS0+cGNsa19kaXZpZGVyX2EgJiBFWFRf UEhZX1BDTEtfRElWSURFUkFfTUFTSykgfAo+ICsJICAgICAgICgocGFyYW0tPnBjbGtfZGl2aWRl cl9iICYgMykgPDwgNSk7Cj4gKwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCBzdGF0LCBFWFRfUEhZ X1BDTEtfRElWSURFUjEpOwo+ICsKPiArCXN0YXQgPSAocGFyYW0tPnBjbGtfZGl2aWRlcl9kICYg RVhUX1BIWV9QQ0xLX0RJVklERVJEX01BU0spIHwKPiArCSAgICAgICAoKHBhcmFtLT5wY2xrX2Rp dmlkZXJfYyAmIDMpIDw8IDUpOwo+ICsJaGRtaV9leHRwaHlfd3JpdGUoaGRtaSwgc3RhdCwgRVhU X1BIWV9QQ0xLX0RJVklERVIyKTsKPiArCj4gKwlzdGF0ID0gKChwYXJhbS0+dG1zZF9kaXZpZGVy X2MgJiAzKSA8PCA0KSB8Cj4gKwkgICAgICAgKChwYXJhbS0+dG1zZF9kaXZpZGVyX2EgJiAzKSA8 PCAyKSB8Cj4gKwkgICAgICAgKHBhcmFtLT50bXNkX2RpdmlkZXJfYiAmIDMpOwo+ICsJaGRtaV9l eHRwaHlfd3JpdGUoaGRtaSwgc3RhdCwgRVhUX1BIWV9UTURTQ0xLX0RJVklERVIpOwo+ICsKPiAr CWhkbWlfZXh0cGh5X3dyaXRlKGhkbWksIHBhcmFtLT5wcGxsX25mLCBFWFRfUEhZX1BQTExfRkJf RElWSURFUik7Cj4gKwo+ICsJaWYgKHBhcmFtLT5wcGxsX25vID09IDEpIHsKPiArCQloZG1pX2V4 dHBoeV93cml0ZShoZG1pLCAwLCBFWFRfUEhZX1BQTExfUE9TVF9ESVZJREVSKTsKPiArCj4gKwkJ c3RhdCA9IDB4MjAgfCBwYXJhbS0+cHBsbF9uZDsKPiArCQloZG1pX2V4dHBoeV93cml0ZShoZG1p LCBzdGF0LCBFWFRfUEhZX1BQTExfUFJFX0RJVklERVIpOwo+ICsJfSBlbHNlIHsKPiArCQlzdGF0 ID0gKChwYXJhbS0+cHBsbF9ubyAvIDIpIC0gMSkgPDwgNDsKPiArCQloZG1pX2V4dHBoeV93cml0 ZShoZG1pLCBzdGF0LCBFWFRfUEhZX1BQTExfUE9TVF9ESVZJREVSKTsKPiArCj4gKwkJc3RhdCA9 IDB4ZTAgfCBwYXJhbS0+cHBsbF9uZDsKPiArCQloZG1pX2V4dHBoeV93cml0ZShoZG1pLCBzdGF0 LCBFWFRfUEhZX1BQTExfUFJFX0RJVklERVIpOwo+ICsJfQo+ICsKPiArCj4gKwkvKiBGaW5kIG91 dCB0aGUgZXh0ZXJuYWwgSERNSSBQSFkgZHJpdmVyIGNvbmZpZ3VyZSBwYXJhbWV0ZXJzICovCj4g Kwlmb3IgKGkgPSAwOyBjdHJsW2ldLm1waXhlbGNsb2NrICE9IH4wVUw7IGkrKykKPiArCQlpZiAo cGl4ZWxjbG9jayA8PSBjdHJsW2ldLm1waXhlbGNsb2NrKQo+ICsJCQlicmVhazsKPiArCWlmIChj dHJsW2ldLm1waXhlbGNsb2NrID09IH4wVUwpIHsKPiArCQlkZXZfZXJyKGhkbWktPmRldiwgIkV4 dHBoeSBjYW4ndCBzdXBwb3J0ICVkSHpcbiIsIHBpeGVsY2xvY2spOwo+ICsJCXJldHVybiAtRUlO VkFMOwo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBDb25maWd1cmUgdGhlIGV4dGVybmFsIEhETUkg UEhZIGRyaXZlciByZWdpc3RlcnMuCj4gKwkgKi8KPiArCWlmIChjdHJsW2ldLnNsb3BlYm9vc3Qp IHsKPiArCQloZG1pX2V4dHBoeV93cml0ZShoZG1pLCAweGZmLCBFWFRfUEhZX1NJR05BTF9DVFJM KTsKPiArCj4gKwkJc3RhdCA9IChjdHJsW2ldLnNsb3BlYm9vc3QgLSAxKSAmIDM7Cj4gKwkJc3Rh dCA9IChzdGF0IDw8IDYpIHwgKHN0YXQgPDwgNCkgfCAoc3RhdCA8PCAyKSB8IHN0YXQ7Cj4gKwkJ aGRtaV9leHRwaHlfd3JpdGUoaGRtaSwgc3RhdCwgRVhUX1BIWV9TTE9QRUJPT1NUKTsKPiArCX0g ZWxzZQo+ICsJCWhkbWlfZXh0cGh5X3dyaXRlKGhkbWksIDB4MGYsIEVYVF9QSFlfU0lHTkFMX0NU UkwpOwo+ICsKPiArCXN0YXQgPSBjdHJsW2ldLnByZV9lbXBoYXNpcyAmIDM7Cj4gKwlzdGF0ID0g KHN0YXQgPDwgNCkgfCAoc3RhdCA8PCAyKSB8IHN0YXQ7Cj4gKwloZG1pX2V4dHBoeV93cml0ZSho ZG1pLCBzdGF0LCBFWFRfUEhZX1BSRUVNUEhBU0lTKTsKPiArCj4gKwlzdGF0ID0gKChjdHJsW2ld LmNsa19sZXZlbCAmIDB4ZikgPDwgNCkgfCAoY3RybFtpXS5kYXRhMl9sZXZlbCAmIDB4Zik7Cj4g KwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCBzdGF0LCBFWFRfUEhZX0xFVkVMMSk7Cj4gKwo+ICsJ c3RhdCA9ICgoY3RybFtpXS5kYXRhMV9sZXZlbCAmIDB4ZikgPDwgNCkgfCAoY3RybFtpXS5kYXRh MF9sZXZlbCAmIDB4Zik7Cj4gKwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCBzdGF0LCBFWFRfUEhZ X0xFVkVMMik7Cj4gKwo+ICsJaGRtaV9leHRwaHlfd3JpdGUoaGRtaSwgMHgyMiwgMHhmMyk7Cj4g Kwo+ICsJc3RhdCA9IGNsa19nZXRfcmF0ZShoZG1pLT5leHRwaHlfcGNsaykgLyAxMDAwMDA7Cj4g KwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCAoKHN0YXQgPj4gOCkgJiAweGZmKSB8IDB4ODAsIEVY VF9QSFlfVEVSTV9DQUwpOwo+ICsJaGRtaV9leHRwaHlfd3JpdGUoaGRtaSwgIHN0YXQgJiAweGZm LCBFWFRfUEhZX1RFUk1fQ0FMX0RJVl9MKTsKPiArCj4gKwlpZiAocGl4ZWxjbG9jayA+IDM0MDAw MDAwMCkKPiArCQlzdGF0ID0gRVhUX1BIWV9BVVRPX1IxMDBfT0hNUzsKPiArCWVsc2UgaWYgKHBp eGVsY2xvY2sgPiAyMDAwMDAwMDApCj4gKwkJc3RhdCA9IEVYVF9QSFlfQVVUT19SNTBfT0hNUzsK PiArCWVsc2UKPiArCQlzdGF0ID0gRVhUX1BIWV9BVVRPX1JPUEVOX0NJUkNVSVQ7Cj4gKwloZG1p X2V4dHBoeV93cml0ZShoZG1pLCBzdGF0IHwgMHgyMCwgRVhUX1BIWV9URVJNX1JFU0lTX0FVVE8p Owo+ICsJaGRtaV9leHRwaHlfd3JpdGUoaGRtaSwgKHN0YXQgPj4gOCkgJiAweGZmLCBFWFRfUEhZ X1RFUk1fQ0FMKTsKPiArCj4gKwlzdGF0ID0gKHBpeGVsY2xvY2sgPiAyMDAwMDAwMDApID8gMCA6 IDB4MTE7Cj4gKwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCBzdGF0LCBFWFRfUEhZX1BMTF9CVyk7 Cj4gKwloZG1pX2V4dHBoeV93cml0ZShoZG1pLCAweDI3LCBFWFRfUEhZX1BQTExfQlcpOwo+ICsK PiArCXJlZ21hcF93cml0ZShoZG1pLT5yZWdtYXAsIFJLMzIyOV9HUkZfU09DX0NPTjIsIFJLMzIy OV9QTExfUE9XRVJfVVApOwo+ICsKPiArCS8qIERldGVjdCB3aGV0aGVyIFBMTCBpcyBsb2NrIG9y IG5vdCAqLwo+ICsJdGltZW91dCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKDEwMCk7Cj4g Kwl3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHsKPiArCQl1c2xlZXBfcmFu Z2UoMTAwMCwgMjAwMCk7Cj4gKwkJc3RhdCA9IGhkbWlfZXh0cGh5X3JlYWQoaGRtaSwgRVhUX1BI WV9QUExMX1BPU1RfRElWSURFUik7Cj4gKwkJaWYgKHN0YXQgJiBFWFRfUEhZX1BQTExfTE9DS19T VEFUVVNfTUFTSykKPiArCQkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJcmVnbWFwX3dyaXRlKGhkbWkt PnJlZ21hcCwgUkszMjI5X0dSRl9TT0NfQ09OMiwgUkszMjI5X1BMTF9QREFUQV9FTik7Cj4gKwo+ ICsJaWYgKChzdGF0ICYgRVhUX1BIWV9QUExMX0xPQ0tfU1RBVFVTX01BU0spID09IDApIHsKPiAr CQlkZXZfZXJyKGhkbWktPmRldiwgIkVYVCBQSFkgUExMIG5vdCBsb2NrZWRcbiIpOwo+ICsJCXJl dHVybiAtRUJVU1k7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBp bnQgcm9ja2NoaXBfaGRtaV9wYXJzZV9kdChzdHJ1Y3Qgcm9ja2NoaXBfaGRtaSAqaGRtaSkKPiAg ewo+ICAJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGhkbWktPmRldi0+b2Zfbm9kZTsKPiArCXN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKmlvcmVzOwo+ ICsJaW50IHJldDsKPiArCj4gKwlwZGV2ID0gY29udGFpbmVyX29mKGhkbWktPmRldiwgc3RydWN0 IHBsYXRmb3JtX2RldmljZSwgZGV2KTsKPiAgCj4gIAloZG1pLT5yZWdtYXAgPSBzeXNjb25fcmVn bWFwX2xvb2t1cF9ieV9waGFuZGxlKG5wLCAicm9ja2NoaXAsZ3JmIik7Cj4gIAlpZiAoSVNfRVJS KGhkbWktPnJlZ21hcCkpIHsKPiBAQCAtMTUyLDYgKzQyNCwzNyBAQCBzdGF0aWMgaW50IHJvY2tj aGlwX2hkbWlfcGFyc2VfZHQoc3RydWN0IHJvY2tjaGlwX2hkbWkgKmhkbWkpCj4gIAkJcmV0dXJu IFBUUl9FUlIoaGRtaS0+cmVnbWFwKTsKPiAgCX0KPiAgCj4gKwlpZiAoaGRtaS0+cGxhdF9kYXRh LmRldl90eXBlID09IFJLMzIyOV9IRE1JKSB7Cj4gKwkJaW9yZXMgPSBwbGF0Zm9ybV9nZXRfcmVz b3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDEpOwo+ICsJCWlmICghaW9yZXMpCj4gKwkJCXJl dHVybiAtRU5YSU87Cj4gKwo+ICsJCWhkbWktPmV4dHBoeV9yZWdiYXNlID0gZGV2bV9pb3JlbWFw X3Jlc291cmNlKGhkbWktPmRldiwgaW9yZXMpOwo+ICsJCWlmIChJU19FUlIoaGRtaS0+ZXh0cGh5 X3JlZ2Jhc2UpKSB7Cj4gKwkJCWRldl9lcnIoaGRtaS0+ZGV2LCAiZmFpbGVkIHRvIG1hcCBleHRw aHkgcmVnYmFzZVxuIik7Cj4gKwkJCXJldHVybiBQVFJfRVJSKGhkbWktPmV4dHBoeV9yZWdiYXNl KTsKPiArCQl9Cj4gKwo+ICsJCWhkbWktPmV4dHBoeV9wY2xrID0gZGV2bV9jbGtfZ2V0KGhkbWkt PmRldiwgImV4dHBoeSIpOwo+ICsJCWlmIChJU19FUlIoaGRtaS0+ZXh0cGh5X3BjbGspKSB7Cj4g KwkJCWRldl9lcnIoaGRtaS0+ZGV2LCAiZmFpbGVkIHRvIGdldCBleHRwaHkgY2xvY2tcbiIpOwo+ ICsJCQlyZXR1cm4gUFRSX0VSUihoZG1pLT5leHRwaHlfcGNsayk7Cj4gKwkJfQo+ICsKPiArCQly ZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoaGRtaS0+ZXh0cGh5X3BjbGspOwo+ICsJCWlmIChyZXQp IHsKPiArCQkJZGV2X2VycihoZG1pLT5kZXYsICJmYWlsZWQgdG8gZW5hYmxlIGV4dHBoeSBjbGs6 ICVkXG4iLAo+ICsJCQkJcmV0KTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwo+ICsJCXJl Z21hcF93cml0ZShoZG1pLT5yZWdtYXAsIFJLMzIyOV9HUkZfU09DX0NPTjYsCj4gKwkJCSAgICAg UkszMjI5X0lPXzNWX0RPTUFJTik7Cj4gKwo+ICsJCXJlZ21hcF93cml0ZShoZG1pLT5yZWdtYXAs IFJLMzIyOV9HUkZfU09DX0NPTjIsCj4gKwkJCSAgICAgUkszMjI5X0REQ19NQVNLX0VOKTsKPiAr CX0KPiArCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtMTU5LDE3ICs0NjIsMjMgQEAgc3Rh dGljIGVudW0gZHJtX21vZGVfc3RhdHVzCj4gIGR3X2hkbWlfcm9ja2NoaXBfbW9kZV92YWxpZChj b25zdCBzdHJ1Y3QgZHdfaGRtaV9wbGF0X2RhdGEgKnBsYXRfZGF0YSwKPiAgCQkJICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgZHdfaGRtaV9t cGxsX2NvbmZpZyAqbXBsbF9jZmcgPSByb2NrY2hpcF9tcGxsX2NmZzsKPiAgCWludCBwY2xrID0g bW9kZS0+Y2xvY2sgKiAxMDAwOwo+ICAJYm9vbCB2YWxpZCA9IGZhbHNlOwo+ICAJaW50IGk7Cj4g IAo+IC0JZm9yIChpID0gMDsgbXBsbF9jZmdbaV0ubXBpeGVsY2xvY2sgIT0gKH4wVUwpOyBpKysp IHsKPiAtCQlpZiAocGNsayA9PSBtcGxsX2NmZ1tpXS5tcGl4ZWxjbG9jaykgewo+IC0JCQl2YWxp ZCA9IHRydWU7Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAtCX0KPiArCWlmIChwbGF0X2RhdGEtPmRl dl90eXBlID09IFJLMzI4OF9IRE1JKQo+ICsJCWZvciAoaSA9IDA7IHJvY2tjaGlwX21wbGxfY2Zn W2ldLm1waXhlbGNsb2NrICE9IH4wVUw7IGkrKykKPiArCQkJaWYgKHBjbGsgPT0gcm9ja2NoaXBf bXBsbF9jZmdbaV0ubXBpeGVsY2xvY2spIHsKPiArCQkJCXZhbGlkID0gdHJ1ZTsKPiArCQkJCWJy ZWFrOwo+ICsJCQl9Cj4gKwo+ICsJaWYgKHBsYXRfZGF0YS0+ZGV2X3R5cGUgPT0gUkszMjI5X0hE TUkpCj4gKwkJZm9yIChpID0gMDsgcm9ja2NoaXBfZXh0cGh5X3BsbF9jZmdbaV0ubXBpeGVsY2xv Y2sgIT0gfjBVTDsgaSsrKQo+ICsJCQlpZiAocGNsayA9PSByb2NrY2hpcF9leHRwaHlfcGxsX2Nm Z1tpXS5tcGl4ZWxjbG9jaykgewo+ICsJCQkJdmFsaWQgPSB0cnVlOwo+ICsJCQkJYnJlYWs7Cj4g KwkJCX0KPiAgCj4gIAlyZXR1cm4gKHZhbGlkKSA/IE1PREVfT0sgOiBNT0RFX0JBRDsKPiAgfQo+ IEBAIC0xOTksMjEgKzUwOCwzMCBAQCBzdGF0aWMgdm9pZCBkd19oZG1pX3JvY2tjaGlwX2VuY29k ZXJfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ICBzdGF0aWMgdm9pZCBk d19oZG1pX3JvY2tjaGlwX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cikKPiAgewo+ICAJc3RydWN0IHJvY2tjaGlwX2hkbWkgKmhkbWkgPSB0b19yb2NrY2hpcF9oZG1p KGVuY29kZXIpOwo+ICsJaW50IG91dF9tb2RlID0gUk9DS0NISVBfT1VUX01PREVfQUFBQTsKPiAg CXUzMiB2YWw7Cj4gIAlpbnQgbXV4Owo+ICAKPiArCWlmIChoZG1pLT5wbGF0X2RhdGEuZGV2X3R5 cGUgPT0gUkszMjI5X0hETUkpCj4gKwkJb3V0X21vZGUgPSBST0NLQ0hJUF9PVVRfTU9ERV9QODg4 Owo+ICsKPiAgCXJvY2tjaGlwX2RybV9jcnRjX21vZGVfY29uZmlnKGVuY29kZXItPmNydGMsIERS TV9NT0RFX0NPTk5FQ1RPUl9IRE1JQSwKPiAtCQkJCSAgICAgIFJPQ0tDSElQX09VVF9NT0RFX0FB QUEpOwo+ICsJCQkJICAgICAgb3V0X21vZGUpOwo+ICAKPiAtCW11eCA9IHJvY2tjaGlwX2RybV9l bmNvZGVyX2dldF9tdXhfaWQoaGRtaS0+ZGV2LT5vZl9ub2RlLCBlbmNvZGVyKTsKPiAtCWlmICht dXgpCj4gLQkJdmFsID0gSERNSV9TRUxfVk9QX0xJVCB8IChIRE1JX1NFTF9WT1BfTElUIDw8IDE2 KTsKPiAtCWVsc2UKPiAtCQl2YWwgPSBIRE1JX1NFTF9WT1BfTElUIDw8IDE2Owo+ICsJaWYgKGhk bWktPnBsYXRfZGF0YS5kZXZfdHlwZSA9PSBSSzMyODhfSERNSSkgewo+ICsJCW11eCA9IHJvY2tj aGlwX2RybV9lbmNvZGVyX2dldF9tdXhfaWQoaGRtaS0+ZGV2LT5vZl9ub2RlLAo+ICsJCQkJCQkg ICAgICBlbmNvZGVyKTsKPiArCQlpZiAobXV4KQo+ICsJCQl2YWwgPSBSSzMyODhfSERNSV9TRUxf Vk9QX0xJVCB8Cj4gKwkJCSAgICAgIChSSzMyODhfSERNSV9TRUxfVk9QX0xJVCA8PCAxNik7Cj4g KwkJZWxzZQo+ICsJCQl2YWwgPSBSSzMyODhfSERNSV9TRUxfVk9QX0xJVCA8PCAxNjsKPiAgCj4g LQlyZWdtYXBfd3JpdGUoaGRtaS0+cmVnbWFwLCBHUkZfU09DX0NPTjYsIHZhbCk7Cj4gLQlkZXZf ZGJnKGhkbWktPmRldiwgInZvcCAlcyBvdXRwdXQgdG8gaGRtaVxuIiwKPiAtCQkobXV4KSA/ICJM SVQiIDogIkJJRyIpOwo+ICsJCXJlZ21hcF93cml0ZShoZG1pLT5yZWdtYXAsIFJLMzI4OF9HUkZf U09DX0NPTjYsIHZhbCk7Cj4gKwo+ICsJCWRldl9kYmcoaGRtaS0+ZGV2LCAidm9wICVzIG91dHB1 dCB0byBoZG1pXG4iLAo+ICsJCQkobXV4KSA/ICJMSVQiIDogIkJJRyIpOwo+ICsJfQo+ICB9Cj4g IAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBkd19oZG1p X3JvY2tjaGlwX2VuY29kZXJfaGVscGVyX2Z1bmNzID0gewo+IEBAIC0yMjMsNyArNTQxLDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgZHdfaGRtaV9yb2Nr Y2hpcF9lbmNvZGVyX2hlbHBlcl9mdW4KPiAgCS5kaXNhYmxlICAgID0gZHdfaGRtaV9yb2NrY2hp cF9lbmNvZGVyX2Rpc2FibGUsCj4gIH07Cj4gIAo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGR3X2hk bWlfcGxhdF9kYXRhIHJvY2tjaGlwX2hkbWlfZHJ2X2RhdGEgPSB7Cj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHdfaGRtaV9wbGF0X2RhdGEgcmszMjg4X2hkbWlfZHJ2X2RhdGEgPSB7Cj4gIAkubW9k ZV92YWxpZCA9IGR3X2hkbWlfcm9ja2NoaXBfbW9kZV92YWxpZCwKPiAgCS5tcGxsX2NmZyAgID0g cm9ja2NoaXBfbXBsbF9jZmcsCj4gIAkuY3VyX2N0ciAgICA9IHJvY2tjaGlwX2N1cl9jdHIsCj4g QEAgLTIzMSw5ICs1NDksMTggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkd19oZG1pX3BsYXRfZGF0 YSByb2NrY2hpcF9oZG1pX2Rydl9kYXRhID0gewo+ICAJLmRldl90eXBlICAgPSBSSzMyODhfSERN SSwKPiAgfTsKPiAgCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHdfaGRtaV9wbGF0X2RhdGEgcmsz MjI5X2hkbWlfZHJ2X2RhdGEgPSB7Cj4gKwkubW9kZV92YWxpZCA9IGR3X2hkbWlfcm9ja2NoaXBf bW9kZV92YWxpZCwKPiArCS5leHRwaHlfY29uZmlnID0gcm9ja2NoaXBfZXh0cGh5X2NvbmZpZywK PiArCS5kZXZfdHlwZSAgID0gUkszMjI5X0hETUksCj4gK307Cj4gKwo+ICBzdGF0aWMgY29uc3Qg c3RydWN0IG9mX2RldmljZV9pZCBkd19oZG1pX3JvY2tjaGlwX2R0X2lkc1tdID0gewo+ICAJeyAu Y29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMyODgtZHctaGRtaSIsCj4gLQkgIC5kYXRhID0gJnJv Y2tjaGlwX2hkbWlfZHJ2X2RhdGEKPiArCSAgLmRhdGEgPSAmcmszMjg4X2hkbWlfZHJ2X2RhdGEK PiArCX0sCj4gKwl7IC5jb21wYXRpYmxlID0gInJvY2tjaGlwLHJrMzIyOS1kdy1oZG1pIiwKPiAr CSAgLmRhdGEgPSAmcmszMjI5X2hkbWlfZHJ2X2RhdGEKPiAgCX0sCj4gIAl7fSwKPiAgfTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3X2hkbWktcm9ja2NoaXAuaCBi L2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9kd19oZG1pLXJvY2tjaGlwLmgKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmY3ZWM3MzMKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3X2hkbWktcm9ja2NoaXAuaAo+IEBAIC0wLDAg KzEsMTM3IEBACj4gKyNpZm5kZWYgX19EV19IRE1JX1JPQ0tDSElQX18KPiArI2RlZmluZSBfX0RX X0hETUlfUk9DS0NISVBfXwo+ICsKPiArc3RydWN0IGV4dHBoeV9jb25maWdfdGFiIHsKPiArCXUz MiBtcGl4ZWxjbG9jazsKPiArCWludCBwcmVfZW1waGFzaXM7Cj4gKwlpbnQgc2xvcGVib29zdDsK PiArCWludCBjbGtfbGV2ZWw7Cj4gKwlpbnQgZGF0YTBfbGV2ZWw7Cj4gKwlpbnQgZGF0YTFfbGV2 ZWw7Cj4gKwlpbnQgZGF0YTJfbGV2ZWw7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgZXh0cGh5X3BsbF9j b25maWdfdGFiIHsKPiArCXVuc2lnbmVkIGxvbmcgbXBpeGVsY2xvY2s7Cj4gKwlzdHJ1Y3QgZXh0 cGh5X3BsbF9jb25maWdfcGFyYW0gewo+ICsJCXU4CXBsbF9uZDsKPiArCQl1MTYJcGxsX25mOwo+ ICsJCXU4CXRtc2RfZGl2aWRlcl9hOwo+ICsJCXU4CXRtc2RfZGl2aWRlcl9iOwo+ICsJCXU4CXRt c2RfZGl2aWRlcl9jOwo+ICsJCXU4CXBjbGtfZGl2aWRlcl9hOwo+ICsJCXU4CXBjbGtfZGl2aWRl cl9iOwo+ICsJCXU4CXBjbGtfZGl2aWRlcl9jOwo+ICsJCXU4CXBjbGtfZGl2aWRlcl9kOwo+ICsJ CXU4CXZjb19kaXZfNTsKPiArCQl1OAlwcGxsX25kOwo+ICsJCXU4CXBwbGxfbmY7Cj4gKwkJdTgJ cHBsbF9ubzsKPiArCX0gcGFyYW1bRFdfSERNSV9SRVNfTUFYXTsKPiArfTsKPiArCj4gKyNkZWZp bmUgUkszMjg4X0dSRl9TT0NfQ09ONgkJCTB4MDI1Ywo+ICsjZGVmaW5lIFJLMzI4OF9IRE1JX1NF TF9WT1BfTElUCQkJKDEgPDwgNCkKPiArCj4gKyNkZWZpbmUgUkszMjI5X0dSRl9TT0NfQ09ONgkJ CTB4MDQxOAo+ICsjZGVmaW5lIFJLMzIyOV9JT18zVl9ET01BSU4JCQkoKDcgPDwgNCkgfCAoNyA8 PCAoNCArIDE2KSkpCj4gKwo+ICsjZGVmaW5lIFJLMzIyOV9HUkZfU09DX0NPTjIJCQkweDA0MDgK PiArI2RlZmluZSBSSzMyMjlfRERDX01BU0tfRU4JCQkoKDMgPDwgMTMpIHwgKDMgPDwgKDEzICsg MTYpKSkKPiArCj4gKyNkZWZpbmUgUkszMjI5X1BMTF9QT1dFUl9ET1dOCQkJKEJJVCgxMikgfCBC SVQoMTIgKyAxNikpCj4gKyNkZWZpbmUgUkszMjI5X1BMTF9QT1dFUl9VUAkJCUJJVCgxMiArIDE2 KQo+ICsjZGVmaW5lIFJLMzIyOV9QTExfUERBVEFfREVOCQkJQklUKDExICsgMTYpCj4gKyNkZWZp bmUgUkszMjI5X1BMTF9QREFUQV9FTgkJCShCSVQoMTEpIHwgQklUKDExICsgMTYpKQo+ICsKPiAr LyogUEhZIERlZmluZWQgZm9yIFJLMzIyWCAqLwo+ICsjZGVmaW5lIEVYVF9QSFlfQ09OVFJPTAkJ CQkwCj4gKyNkZWZpbmUgRVhUX1BIWV9BTkFMT0dfUkVTRVRfTUFTSwkJMHg4MAo+ICsjZGVmaW5l IEVYVF9QSFlfRElHSVRBTF9SRVNFVF9NQVNLCQkweDQwCj4gKyNkZWZpbmUgRVhUX1BIWV9QQ0xL X0lOVkVSVF9NQVNLCQkweDA4Cj4gKyNkZWZpbmUgRVhUX1BIWV9QUkVQQ0xLX0lOVkVSVF9NQVNL CQkweDA0Cj4gKyNkZWZpbmUgRVhUX1BIWV9UTURTQ0xLX0lOVkVSVF9NQVNLCQkweDAyCj4gKyNk ZWZpbmUgRVhUX1BIWV9TUkNfU0VMRUNUX01BU0sJCQkweDAxCj4gKwo+ICsjZGVmaW5lIEVYVF9Q SFlfVEVSTV9DQUwJCQkweDAzCj4gKyNkZWZpbmUgRVhUX1BIWV9URVJNX0NBTF9FTl9NQVNLCQkw eDgwCj4gKyNkZWZpbmUgRVhUX1BIWV9URVJNX0NBTF9ESVZfSF9NQVNLCQkweDdmCj4gKwo+ICsj ZGVmaW5lIEVYVF9QSFlfVEVSTV9DQUxfRElWX0wJCQkweDA0Cj4gKwo+ICsjZGVmaW5lIEVYVF9Q SFlfUExMX1BSRV9ESVZJREVSCQkJMHhlMgo+ICsjZGVmaW5lIEVYVF9QSFlfUExMX0ZCX0JJVDhf TUFTSwkJMHg4MAo+ICsjZGVmaW5lIEVYVF9QSFlfUExMX1BDTEtfRElWNV9FTl9NQVNLCQkweDIw Cj4gKyNkZWZpbmUgRVhUX1BIWV9QTExfUFJFX0RJVklERVJfTUFTSwkJMHgxZgo+ICsKPiArI2Rl ZmluZSBFWFRfUEhZX1BMTF9GQl9ESVZJREVSCQkJMHhlMwo+ICsKPiArI2RlZmluZSBFWFRfUEhZ X1BDTEtfRElWSURFUjEJCQkweGU0Cj4gKyNkZWZpbmUgRVhUX1BIWV9QQ0xLX0RJVklERVJCX01B U0sJCTB4NjAKPiArI2RlZmluZSBFWFRfUEhZX1BDTEtfRElWSURFUkFfTUFTSwkJMHgxZgo+ICsK PiArI2RlZmluZSBFWFRfUEhZX1BDTEtfRElWSURFUjIJCQkweGU1Cj4gKyNkZWZpbmUgRVhUX1BI WV9QQ0xLX0RJVklERVJDX01BU0sJCTB4NjAKPiArI2RlZmluZSBFWFRfUEhZX1BDTEtfRElWSURF UkRfTUFTSwkJMHgxZgo+ICsKPiArI2RlZmluZSBFWFRfUEhZX1RNRFNDTEtfRElWSURFUgkJCTB4 ZTYKPiArI2RlZmluZSBFWFRfUEhZX1RNRFNDTEtfRElWSURFUkNfTUFTSwkJMHgzMAo+ICsjZGVm aW5lIEVYVF9QSFlfVE1EU0NMS19ESVZJREVSQV9NQVNLCQkweDBjCj4gKyNkZWZpbmUgRVhUX1BI WV9UTURTQ0xLX0RJVklERVJCX01BU0sJCTB4MDMKPiArCj4gKyNkZWZpbmUgRVhUX1BIWV9QTExf QlcJCQkJMHhlNwo+ICsKPiArI2RlZmluZSBFWFRfUEhZX1BQTExfUFJFX0RJVklERVIJCTB4ZTkK PiArI2RlZmluZSBFWFRfUEhZX1BQTExfRU5BQkxFX01BU0sJCTB4YzAKPiArI2RlZmluZSBFWFRf UEhZX1BQTExfUFJFX0RJVklERVJfTUFTSwkJMHgxZgo+ICsKPiArI2RlZmluZSBFWFRfUEhZX1BQ TExfRkJfRElWSURFUgkJCTB4ZWEKPiArCj4gKyNkZWZpbmUgRVhUX1BIWV9QUExMX1BPU1RfRElW SURFUgkJMHhlYgo+ICsjZGVmaW5lIEVYVF9QSFlfUFBMTF9GQl9ESVZJREVSX0JJVDhfTUFTSwkw eDgwCj4gKyNkZWZpbmUgRVhUX1BIWV9QUExMX1BPU1RfRElWSURFUl9NQVNLCQkweDMwCj4gKyNk ZWZpbmUgRVhUX1BIWV9QUExMX0xPQ0tfU1RBVFVTX01BU0sJCTB4MDEKPiArCj4gKyNkZWZpbmUg RVhUX1BIWV9QUExMX0JXCQkJCTB4ZWMKPiArCj4gKyNkZWZpbmUgRVhUX1BIWV9TSUdOQUxfQ1RS TAkJCTB4ZWUKPiArI2RlZmluZSBFWFRfUEhZX1RSQU5TSVRJT05fQ0xLX0VOX01BU0sJCTB4ODAK PiArI2RlZmluZSBFWFRfUEhZX1RSQU5TSVRJT05fRDBfRU5fTUFTSwkJMHg0MAo+ICsjZGVmaW5l IEVYVF9QSFlfVFJBTlNJVElPTl9EMV9FTl9NQVNLCQkweDIwCj4gKyNkZWZpbmUgRVhUX1BIWV9U UkFOU0lUSU9OX0QyX0VOX01BU0sJCTB4MTAKPiArI2RlZmluZSBFWFRfUEhZX0xFVkVMX0NMS19F Tl9NQVNLCQkweDA4Cj4gKyNkZWZpbmUgRVhUX1BIWV9MRVZFTF9EMF9FTl9NQVNLCQkweDA0Cj4g KyNkZWZpbmUgRVhUX1BIWV9MRVZFTF9EMV9FTl9NQVNLCQkweDAyCj4gKyNkZWZpbmUgRVhUX1BI WV9MRVZFTF9EMl9FTl9NQVNLCQkweDAxCj4gKwo+ICsjZGVmaW5lIEVYVF9QSFlfU0xPUEVCT09T VAkJCTB4ZWYKPiArI2RlZmluZSBFWFRfUEhZX1NMT1BFQk9PU1RfQ0xLX01BU0sJCTB4MDMKPiAr I2RlZmluZSBFWFRfUEhZX1NMT1BFQk9PU1RfRDBfTUFTSwkJMHgwYwo+ICsjZGVmaW5lIEVYVF9Q SFlfU0xPUEVCT09TVF9EMV9NQVNLCQkweDMwCj4gKyNkZWZpbmUgRVhUX1BIWV9TTE9QRUJPT1NU X0QyX01BU0sJCTB4YzAKPiArCj4gKyNkZWZpbmUgRVhUX1BIWV9QUkVFTVBIQVNJUwkJCTB4ZjAK PiArI2RlZmluZSBFWFRfUEhZX1BSRUVNUEhBU0lTX0QwX01BU0sJCTB4MDMKPiArI2RlZmluZSBF WFRfUEhZX1BSRUVNUEhBU0lTX0QxX01BU0sJCTB4MGMKPiArI2RlZmluZSBFWFRfUEhZX1BSRUVN UEhBU0lTX0QyX01BU0sJCTB4MzAKPiArCj4gKyNkZWZpbmUgRVhUX1BIWV9MRVZFTDEJCQkJMHhm MQo+ICsjZGVmaW5lIEVYVF9QSFlfTEVWRUxfQ0xLX01BU0sJCQkweGYwCj4gKyNkZWZpbmUgRVhU X1BIWV9MRVZFTF9EMl9NQVNLCQkJMHgwZgo+ICsKPiArI2RlZmluZSBFWFRfUEhZX0xFVkVMMgkJ CQkweGYyCj4gKyNkZWZpbmUgRVhUX1BIWV9MRVZFTF9EMV9NQVNLCQkJMHhmMAo+ICsjZGVmaW5l IEVYVF9QSFlfTEVWRUxfRDBfTUFTSwkJCTB4MGYKPiArCj4gKyNkZWZpbmUgRVhUX1BIWV9URVJN X1JFU0lTX0FVVE8JCQkweGY0Cj4gKyNkZWZpbmUgRVhUX1BIWV9BVVRPX1I1MF9PSE1TCQkJMAo+ ICsjZGVmaW5lIEVYVF9QSFlfQVVUT19SNzVfT0hNUwkJCSgxIDw8IDIpCj4gKyNkZWZpbmUgRVhU X1BIWV9BVVRPX1IxMDBfT0hNUwkJCSgyIDw8IDIpCj4gKyNkZWZpbmUgRVhUX1BIWV9BVVRPX1JP UEVOX0NJUkNVSVQJCSgzIDw8IDIpCj4gKwo+ICsjZGVmaW5lIEVYVF9QSFlfVEVSTV9SRVNJU19N QU5VQUxfQ0xLCQkweGZiCj4gKyNkZWZpbmUgRVhUX1BIWV9URVJNX1JFU0lTX01BTlVBTF9EMgkJ MHhmYwo+ICsjZGVmaW5lIEVYVF9QSFlfVEVSTV9SRVNJU19NQU5VQUxfRDEJCTB4ZmQKPiArI2Rl ZmluZSBFWFRfUEhZX1RFUk1fUkVTSVNfTUFOVUFMX0QwCQkweGZlCj4gKwo+ICsjZW5kaWYgLyog X19EV19IRE1JX1JPQ0tDSElQX18gKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vYnJpZGdl L2R3X2hkbWkuaCBiL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmgKPiBpbmRleCBmOGRlYzY0 Li40ZTYzMTU4IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2JyaWRnZS9kd19oZG1pLmgKPiAr KysgYi9pbmNsdWRlL2RybS9icmlkZ2UvZHdfaGRtaS5oCj4gQEAgLTI0LDYgKzI0LDcgQEAgZW51 bSB7Cj4gIGVudW0gZHdfaGRtaV9kZXZ0eXBlIHsKPiAgCUlNWDZRX0hETUksCj4gIAlJTVg2RExf SERNSSwKPiArCVJLMzIyOV9IRE1JLAo+ICAJUkszMjg4X0hETUksCj4gIH07Cj4gIAo+IEBAIC01 NCw2ICs1NSw4IEBAIHN0cnVjdCBkd19oZG1pX3BsYXRfZGF0YSB7Cj4gIAljb25zdCBzdHJ1Y3Qg ZHdfaGRtaV9waHlfY29uZmlnICpwaHlfY29uZmlnOwo+ICAJZW51bSBkcm1fbW9kZV9zdGF0dXMg KCptb2RlX3ZhbGlkKShjb25zdCBzdHJ1Y3QgZHdfaGRtaV9wbGF0X2RhdGEgKnBkLAo+ICAJCQkJ CSAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsKPiArCWludCAoKmV4dHBoeV9jb25m aWcpKGNvbnN0IHN0cnVjdCBkd19oZG1pX3BsYXRfZGF0YSAqcGxhdF9kYXRhLAo+ICsJCQkgICAg IGludCByZXNfaWR4LCBpbnQgcGl4ZWxjbG9jayk7Cj4gIH07Cj4gIAo+ICB2b2lkIGR3X2hkbWlf dW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpk YXRhKTsKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=