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=