From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shawn Guo Subject: [PATCH v2 4/4] drm: zte: add VGA driver support Date: Thu, 6 Apr 2017 23:01:10 +0800 Message-ID: <1491490870-6330-5-git-send-email-shawnguo@kernel.org> References: <1491490870-6330-1-git-send-email-shawnguo@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1491490870-6330-1-git-send-email-shawnguo@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: devicetree@vger.kernel.org, Xin Zhou , Daniel Vetter , Baoyou Xie , Rob Herring , Jun Nie List-Id: devicetree@vger.kernel.org RnJvbTogU2hhd24gR3VvIDxzaGF3bi5ndW9AbGluYXJvLm9yZz4KCkl0IGFkZHMgVkdBIGRyaXZl ciBzdXBwb3J0LCB3aGljaCBuZWVkcyB0byBjb25maWd1cmUgY29ycmVzcG9uZGluZyBWT1UKaW50 ZXJmYWNlIGluIFJHQl84ODggZm9ybWF0LCBhbmQgdGh1cyB0aGUgZm9sbG93aW5nIGNoYW5nZXMg YXJlIG5lZWRlZApvbiB6eF92b3UuCgotIFJlbmFtZSB0aGUgQ1NDIGJsb2NrIG9mIEdyYXBoaWMg TGF5ZXIgYSBiaXQgdG8gbWFrZSBpdCBtb3JlIHNwZWNpZmljLAogIGFuZCBhZGQgQ1NDIG9mIENo YW5uZWwgdG8gc3VwcG9ydCBSR0Igb3V0cHV0LgotIEJ5cGFzcyBEaXRoZXIgYmxvY2sgZm9yIFJH QiBvdXRwdXQuCgpTaWduZWQtb2ZmLWJ5OiBTaGF3biBHdW8gPHNoYXduLmd1b0BsaW5hcm8ub3Jn PgpBY2tlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KLS0tCiBk cml2ZXJzL2dwdS9kcm0venRlL01ha2VmaWxlICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L3p0ZS96eF9kcm1fZHJ2LmMgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS96dGUvenhfZHJtX2Ry di5oICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZnYS5jICAgICAgfCA1MzAgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS96dGUv enhfdmdhX3JlZ3MuaCB8ICAzNiArKysKIGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMgICAg ICB8ICAzMyArKy0KIGRyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91X3JlZ3MuaCB8ICAxMiArLQog NyBmaWxlcyBjaGFuZ2VkLCA2MTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0venRlL3p4X3ZnYS5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92Z2FfcmVncy5oCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3p0ZS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS96dGUvTWFrZWZpbGUK aW5kZXggMDEzNTJiNTZjNDE4Li45ZGY3NzY2YTdmOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS96dGUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS9NYWtlZmlsZQpAQCAt Myw2ICszLDcgQEAgenhkcm0teSA6PSBcCiAJenhfaGRtaS5vIFwKIAl6eF9wbGFuZS5vIFwKIAl6 eF90dmVuYy5vIFwKKwl6eF92Z2EubyBcCiAJenhfdm91Lm8KIAogb2JqLSQoQ09ORklHX0RSTV9a VEUpICs9IHp4ZHJtLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfZHJtX2Ry di5jIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9kcm1fZHJ2LmMKaW5kZXggNWM2OTQ0YTFlNzJj Li44YTY4OTJlZWI0NGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfZHJtX2Ry di5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfZHJtX2Rydi5jCkBAIC0yNDgsNiArMjQ4 LDcgQEAgc3RhdGljIGludCB6eF9kcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCiAJJnp4X2NydGNfZHJpdmVyLAogCSZ6eF9oZG1pX2RyaXZlciwKIAkmenhfdHZlbmNfZHJp dmVyLAorCSZ6eF92Z2FfZHJpdmVyLAogCSZ6eF9kcm1fcGxhdGZvcm1fZHJpdmVyLAogfTsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9kcm1fZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0venRlL3p4X2RybV9kcnYuaAppbmRleCA1Y2EwMzViMDc5YzcuLjJhOGNkYzVmOGJlNCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF9kcm1fZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3p0ZS96eF9kcm1fZHJ2LmgKQEAgLTE0LDYgKzE0LDcgQEAKIGV4dGVybiBzdHJ1 Y3QgcGxhdGZvcm1fZHJpdmVyIHp4X2NydGNfZHJpdmVyOwogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9y bV9kcml2ZXIgenhfaGRtaV9kcml2ZXI7CiBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciB6 eF90dmVuY19kcml2ZXI7CitleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciB6eF92Z2FfZHJp dmVyOwogCiBzdGF0aWMgaW5saW5lIHUzMiB6eF9yZWFkbCh2b2lkIF9faW9tZW0gKnJlZykKIHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdmdhLmMgYi9kcml2ZXJzL2dwdS9k cm0venRlL3p4X3ZnYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u MGQ4NTBkOWVhNzAwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92 Z2EuYwpAQCAtMCwwICsxLDUzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBTYW5lY2hp cHMgVGVjaG5vbG9neSBDby4sIEx0ZC4KKyAqIENvcHlyaWdodCAyMDE3IExpbmFybyBMdGQuCisg KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5j bHVkZSA8bGludXgvY29tcG9uZW50Lmg+CisjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgor I2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVs cGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9k cm1QLmg+CisKKyNpbmNsdWRlICJ6eF9kcm1fZHJ2LmgiCisjaW5jbHVkZSAienhfdmdhX3JlZ3Mu aCIKKyNpbmNsdWRlICJ6eF92b3UuaCIKKworc3RydWN0IHp4X3ZnYV9wd3JjdHJsIHsKKwlzdHJ1 Y3QgcmVnbWFwICpyZWdtYXA7CisJdTMyIHJlZzsKKwl1MzIgbWFzazsKK307CisKK3N0cnVjdCB6 eF92Z2FfaTJjIHsKKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIgYWRhcDsKKwlzdHJ1Y3QgbXV0ZXggbG9j azsKK307CisKK3N0cnVjdCB6eF92Z2EgeworCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3Rv cjsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKKwlzdHJ1Y3QgenhfdmdhX2kyYyAqZGRj OworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwl2b2lkIF9faW9tZW0gKm1taW87CisJc3RydWN0IGNs ayAqaTJjX3djbGs7CisJc3RydWN0IHp4X3ZnYV9wd3JjdHJsIHB3cmN0cmw7CisJc3BpbmxvY2tf dCBsb2NrOworCXN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRlOworCWJvb2wgY29ubmVjdGVkOwor fTsKKworI2RlZmluZSB0b196eF92Z2EoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCB6eF92Z2Es IHgpCisKK3N0YXRpYyB2b2lkIHp4X3ZnYV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCit7CisJc3RydWN0IHp4X3ZnYSAqdmdhID0gdG9fenhfdmdhKGVuY29kZXIp OworCXN0cnVjdCB6eF92Z2FfcHdyY3RybCAqcHdyY3RybCA9ICZ2Z2EtPnB3cmN0cmw7CisKKwkv KiBTZXQgYml0IHRvIHBvd2VyIHVwIFZHQSBEQUNzICovCisJcmVnbWFwX3VwZGF0ZV9iaXRzKHB3 cmN0cmwtPnJlZ21hcCwgcHdyY3RybC0+cmVnLCBwd3JjdHJsLT5tYXNrLAorCQkJICAgcHdyY3Ry bC0+bWFzayk7CisKKwl2b3VfaW5mX2VuYWJsZShWT1VfVkdBLCBlbmNvZGVyLT5jcnRjKTsKK30K Kworc3RhdGljIHZvaWQgenhfdmdhX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIpCit7CisJc3RydWN0IHp4X3ZnYSAqdmdhID0gdG9fenhfdmdhKGVuY29kZXIpOwor CXN0cnVjdCB6eF92Z2FfcHdyY3RybCAqcHdyY3RybCA9ICZ2Z2EtPnB3cmN0cmw7CisKKwl2b3Vf aW5mX2Rpc2FibGUoVk9VX1ZHQSwgZW5jb2Rlci0+Y3J0Yyk7CisKKwkvKiBDbGVhciBiaXQgdG8g cG93ZXIgZG93biBWR0EgREFDcyAqLworCXJlZ21hcF91cGRhdGVfYml0cyhwd3JjdHJsLT5yZWdt YXAsIHB3cmN0cmwtPnJlZywgcHdyY3RybC0+bWFzaywgMCk7Cit9CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIHp4X3ZnYV9lbmNvZGVyX2hlbHBlcl9mdW5j cyA9IHsKKwkuZW5hYmxlCT0genhfdmdhX2VuY29kZXJfZW5hYmxlLAorCS5kaXNhYmxlID0genhf dmdhX2VuY29kZXJfZGlzYWJsZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29k ZXJfZnVuY3MgenhfdmdhX2VuY29kZXJfZnVuY3MgPSB7CisJLmRlc3Ryb3kgPSBkcm1fZW5jb2Rl cl9jbGVhbnVwLAorfTsKKworc3RhdGljIGludCB6eF92Z2FfY29ubmVjdG9yX2dldF9tb2Rlcyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCB6eF92Z2EgKnZnYSA9 IHRvX3p4X3ZnYShjb25uZWN0b3IpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGVk aWQgKmVkaWQ7CisJaW50IHJldDsKKworCS8qCisJICogQ2xlYXIgYm90aCBkZXRlY3Rpb24gYml0 cyB0byBzd2l0Y2ggSTJDIGJ1cyBmcm9tIGRldmljZQorCSAqIGRldGVjdGluZyB0byBFRElEIHJl YWRpbmcuCisJICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJnZnYS0+bG9jaywgZmxhZ3MpOworCXp4 X3dyaXRlbCh2Z2EtPm1taW8gKyBWR0FfQVVUT19ERVRFQ1RfU0VMLCAwKTsKKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZ2Z2EtPmxvY2ssIGZsYWdzKTsKKworCWVkaWQgPSBkcm1fZ2V0X2VkaWQo Y29ubmVjdG9yLCAmdmdhLT5kZGMtPmFkYXApOworCWlmICghZWRpZCkKKwkJcmV0dXJuIDA7CisK KwkvKgorCSAqIEFzIGVkaWQgcmVhZGluZyBzdWNjZWVkcywgZGV2aWNlIG11c3QgYmUgY29ubmVj dGVkLCBzbyB3ZSBzZXQKKwkgKiB1cCBkZXRlY3Rpb24gYml0IGZvciB1bnBsdWcgaW50ZXJydXB0 IGhlcmUuCisJICovCisJc3Bpbl9sb2NrX2lycXNhdmUoJnZnYS0+bG9jaywgZmxhZ3MpOworCXp4 X3dyaXRlbCh2Z2EtPm1taW8gKyBWR0FfQVVUT19ERVRFQ1RfU0VMLCBWR0FfREVURUNUX1NFTF9I QVNfREVWSUNFKTsKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2Z2EtPmxvY2ssIGZsYWdzKTsK KworCWRybV9tb2RlX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIGVk aWQpOworCXJldCA9IGRybV9hZGRfZWRpZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQpOworCWtmcmVl KGVkaWQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVz Cit6eF92Z2FfY29ubmVjdG9yX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKKwkJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlyZXR1cm4g TU9ERV9PSzsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyB6 eF92Z2FfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKKwkuZ2V0X21vZGVzID0genhfdmdhX2Nv bm5lY3Rvcl9nZXRfbW9kZXMsCisJLm1vZGVfdmFsaWQgPSB6eF92Z2FfY29ubmVjdG9yX21vZGVf dmFsaWQsCit9OworCitzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cworenhfdmdhX2Nv bm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3Jj ZSkKK3sKKwlzdHJ1Y3QgenhfdmdhICp2Z2EgPSB0b196eF92Z2EoY29ubmVjdG9yKTsKKworCXJl dHVybiB2Z2EtPmNvbm5lY3RlZCA/IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkIDoKKwkJCQlj b25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fY29ubmVjdG9yX2Z1bmNzIHp4X3ZnYV9jb25uZWN0b3JfZnVuY3MgPSB7CisJLmRwbXMgPSBk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHBtcywKKwkuZmlsbF9tb2RlcyA9IGRybV9oZWxw ZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKKwkuZGV0ZWN0ID0genhfdmdhX2Nvbm5l Y3Rvcl9kZXRlY3QsCisJLmRlc3Ryb3kgPSBkcm1fY29ubmVjdG9yX2NsZWFudXAsCisJLnJlc2V0 ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAorCS5hdG9taWNfZHVwbGljYXRl X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKKwku YXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJv eV9zdGF0ZSwKK307CisKK3N0YXRpYyBpbnQgenhfdmdhX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkcm0sIHN0cnVjdCB6eF92Z2EgKnZnYSkKK3sKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIgPSAmdmdhLT5lbmNvZGVyOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ig PSAmdmdhLT5jb25uZWN0b3I7CisJc3RydWN0IGRldmljZSAqZGV2ID0gdmdhLT5kZXY7CisJaW50 IHJldDsKKworCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gVk9VX0NSVENfTUFTSzsKKworCXJl dCA9IGRybV9lbmNvZGVyX2luaXQoZHJtLCBlbmNvZGVyLCAmenhfdmdhX2VuY29kZXJfZnVuY3Ms CisJCQkgICAgICAgRFJNX01PREVfRU5DT0RFUl9EQUMsIE5VTEwpOworCWlmIChyZXQpIHsKKwkJ RFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gaW5pdCBlbmNvZGVyOiAlZFxuIiwgcmV0KTsK KwkJcmV0dXJuIHJldDsKKwl9OworCisJZHJtX2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAm enhfdmdhX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsKKworCXZnYS0+Y29ubmVjdG9yLnBvbGxlZCA9 IERSTV9DT05ORUNUT1JfUE9MTF9IUEQ7CisKKwlyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZHJt LCBjb25uZWN0b3IsICZ6eF92Z2FfY29ubmVjdG9yX2Z1bmNzLAorCQkJCSBEUk1fTU9ERV9DT05O RUNUT1JfVkdBKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERVZfRVJST1IoZGV2LCAiZmFpbGVkIHRv IGluaXQgY29ubmVjdG9yOiAlZFxuIiwgcmV0KTsKKwkJZ290byBjbGVhbl9lbmNvZGVyOworCX07 CisKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmenhfdmdhX2Nvbm5lY3Rv cl9oZWxwZXJfZnVuY3MpOworCisJcmV0ID0gZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNv ZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7CisJaWYgKHJldCkgeworCQlEUk1fREVWX0VSUk9SKGRl diwgImZhaWxlZCB0byBhdHRhY2ggZW5jb2RlcjogJWRcbiIsIHJldCk7CisJCWdvdG8gY2xlYW5f Y29ubmVjdG9yOworCX07CisKKwlyZXR1cm4gMDsKKworY2xlYW5fY29ubmVjdG9yOgorCWRybV9j b25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOworY2xlYW5fZW5jb2RlcjoKKwlkcm1fZW5jb2Rl cl9jbGVhbnVwKGVuY29kZXIpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgenhfdmdh X3B3cmN0cmxfaW5pdChzdHJ1Y3QgenhfdmdhICp2Z2EpCit7CisJc3RydWN0IHp4X3ZnYV9wd3Jj dHJsICpwd3JjdHJsID0gJnZnYS0+cHdyY3RybDsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB2Z2Et PmRldjsKKwlzdHJ1Y3Qgb2ZfcGhhbmRsZV9hcmdzIG91dF9hcmdzOworCXN0cnVjdCByZWdtYXAg KnJlZ21hcDsKKwlpbnQgcmV0OworCisJcmV0ID0gb2ZfcGFyc2VfcGhhbmRsZV93aXRoX2ZpeGVk X2FyZ3MoZGV2LT5vZl9ub2RlLAorCQkJCSJ6dGUsdmdhLXBvd2VyLWNvbnRyb2wiLCAyLCAwLCAm b3V0X2FyZ3MpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZWdtYXAgPSBzeXNjb25f bm9kZV90b19yZWdtYXAob3V0X2FyZ3MubnApOworCWlmIChJU19FUlIocmVnbWFwKSkgeworCQly ZXQgPSBQVFJfRVJSKHJlZ21hcCk7CisJCWdvdG8gb3V0OworCX0KKworCXB3cmN0cmwtPnJlZ21h cCA9IHJlZ21hcDsKKwlwd3JjdHJsLT5yZWcgPSBvdXRfYXJncy5hcmdzWzBdOworCXB3cmN0cmwt Pm1hc2sgPSBvdXRfYXJncy5hcmdzWzFdOworCitvdXQ6CisJb2Zfbm9kZV9wdXQob3V0X2FyZ3Mu bnApOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgenhfdmdhX2kyY19yZWFkKHN0cnVj dCB6eF92Z2EgKnZnYSwgc3RydWN0IGkyY19tc2cgKm1zZykKK3sKKwlpbnQgbGVuID0gbXNnLT5s ZW47CisJdTggKmJ1ZiA9IG1zZy0+YnVmOworCXUzMiBvZmZzZXQgPSAwOworCWludCBpOworCisJ cmVpbml0X2NvbXBsZXRpb24oJnZnYS0+Y29tcGxldGUpOworCisJLyogU2VsZWN0IGNvbWJvIHdy aXRlICovCisJenhfd3JpdGVsX21hc2sodmdhLT5tbWlvICsgVkdBX0NNRF9DRkcsIFZHQV9DTURf Q09NQk8sIFZHQV9DTURfQ09NQk8pOworCXp4X3dyaXRlbF9tYXNrKHZnYS0+bW1pbyArIFZHQV9D TURfQ0ZHLCBWR0FfQ01EX1JXLCAwKTsKKworCXdoaWxlIChsZW4gPiAwKSB7CisJCXUzMiBjbnQ7 CisKKwkJLyogQ2xlYXIgUlggRklGTyAqLworCQl6eF93cml0ZWxfbWFzayh2Z2EtPm1taW8gKyBW R0FfUlhGX0NUUkwsIFZHQV9SWF9GSUZPX0NMRUFSLAorCQkJICAgICAgIFZHQV9SWF9GSUZPX0NM RUFSKTsKKworCQkvKiBEYXRhIG9mZnNldCB0byByZWFkIGZyb20gKi8KKwkJenhfd3JpdGVsKHZn YS0+bW1pbyArIFZHQV9TVUJfQUREUiwgb2Zmc2V0KTsKKworCQkvKiBLaWNrIG9mZiB0aGUgdHJh bnNmZXIgKi8KKwkJenhfd3JpdGVsX21hc2sodmdhLT5tbWlvICsgVkdBX0NNRF9DRkcsIFZHQV9D TURfVFJBTlMsCisJCQkgICAgICAgVkdBX0NNRF9UUkFOUyk7CisKKwkJaWYgKCF3YWl0X2Zvcl9j b21wbGV0aW9uX3RpbWVvdXQoJnZnYS0+Y29tcGxldGUsCisJCQkJCQkgbXNlY3NfdG9famlmZmll cygxMDAwKSkpIHsKKwkJCURSTV9ERVZfRVJST1IodmdhLT5kZXYsICJ0cmFuc2ZlciB0aW1lb3V0 XG4iKTsKKwkJCXJldHVybiAtRVRJTUVET1VUOworCQl9CisKKwkJY250ID0genhfcmVhZGwodmdh LT5tbWlvICsgVkdBX1JYRl9TVEFUVVMpOworCQljbnQgPSAoY250ICYgVkdBX1JYRl9DT1VOVF9N QVNLKSA+PiBWR0FfUlhGX0NPVU5UX1NISUZUOworCQkvKiBGSUZPIHN0YXR1cyBtYXkgcmVwb3J0 IG1vcmUgZGF0YSB0aGFuIHdlIG5lZWQgdG8gcmVhZCAqLworCQljbnQgPSBtaW5fdCh1MzIsIGxl biwgY250KTsKKworCQlmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspCisJCQkqYnVmKysgPSB6eF9y ZWFkbCh2Z2EtPm1taW8gKyBWR0FfREFUQSk7CisKKwkJbGVuIC09IGNudDsKKwkJb2Zmc2V0ICs9 IGNudDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB6eF92Z2FfaTJjX3dyaXRl KHN0cnVjdCB6eF92Z2EgKnZnYSwgc3RydWN0IGkyY19tc2cgKm1zZykKK3sKKwkvKgorCSAqIFRo ZSBEREMgSTJDIGFkYXB0ZXIgaXMgb25seSBmb3IgcmVhZGluZyBFRElEIGRhdGEsIHNvIHdlIGFz c3VtZQorCSAqIHRoYXQgdGhlIHdyaXRlIHRvIHRoaXMgYWRhcHRlciBtdXN0IGJlIHRoZSBFRElE IGRhdGEgb2Zmc2V0LgorCSAqLworCWlmICgobXNnLT5sZW4gIT0gMSkgfHwgKChtc2ctPmFkZHIg IT0gRERDX0FERFIpKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBIYXJkd2FyZSB3aWxsIHRh a2UgY2FyZSBvZiB0aGUgc2xhdmUgYWRkcmVzcyBzaGlmdGluZyAqLworCXp4X3dyaXRlbCh2Z2Et Pm1taW8gKyBWR0FfREVWSUNFX0FERFIsIG1zZy0+YWRkcik7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCB6eF92Z2FfaTJjX3hmZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwLCBzdHJ1 Y3QgaTJjX21zZyAqbXNncywKKwkJCSAgIGludCBudW0pCit7CisJc3RydWN0IHp4X3ZnYSAqdmdh ID0gaTJjX2dldF9hZGFwZGF0YShhZGFwKTsKKwlzdHJ1Y3QgenhfdmdhX2kyYyAqZGRjID0gdmdh LT5kZGM7CisJaW50IHJldCA9IDA7CisJaW50IGk7CisKKwltdXRleF9sb2NrKCZkZGMtPmxvY2sp OworCisJZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKSB7CisJCWlmIChtc2dzW2ldLmZsYWdzICYg STJDX01fUkQpCisJCQlyZXQgPSB6eF92Z2FfaTJjX3JlYWQodmdhLCAmbXNnc1tpXSk7CisJCWVs c2UKKwkJCXJldCA9IHp4X3ZnYV9pMmNfd3JpdGUodmdhLCAmbXNnc1tpXSk7CisKKwkJaWYgKHJl dCA8IDApCisJCQlicmVhazsKKwl9CisKKwlpZiAoIXJldCkKKwkJcmV0ID0gbnVtOworCisJbXV0 ZXhfdW5sb2NrKCZkZGMtPmxvY2spOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHUzMiB6 eF92Z2FfaTJjX2Z1bmMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQoreworCXJldHVybiBJ MkNfRlVOQ19JMkMgfCBJMkNfRlVOQ19TTUJVU19FTVVMOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGkyY19hbGdvcml0aG0genhfdmdhX2FsZ29yaXRobSA9IHsKKwkubWFzdGVyX3hmZXIJPSB6 eF92Z2FfaTJjX3hmZXIsCisJLmZ1bmN0aW9uYWxpdHkJPSB6eF92Z2FfaTJjX2Z1bmMsCit9Owor CitzdGF0aWMgaW50IHp4X3ZnYV9kZGNfcmVnaXN0ZXIoc3RydWN0IHp4X3ZnYSAqdmdhKQorewor CXN0cnVjdCBkZXZpY2UgKmRldiA9IHZnYS0+ZGV2OworCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRh cDsKKwlzdHJ1Y3QgenhfdmdhX2kyYyAqZGRjOworCWludCByZXQ7CisKKwlkZGMgPSBkZXZtX2t6 YWxsb2MoZGV2LCBzaXplb2YoKmRkYyksIEdGUF9LRVJORUwpOworCWlmICghZGRjKQorCQlyZXR1 cm4gLUVOT01FTTsKKworCXZnYS0+ZGRjID0gZGRjOworCW11dGV4X2luaXQoJmRkYy0+bG9jayk7 CisKKwlhZGFwID0gJmRkYy0+YWRhcDsKKwlhZGFwLT5vd25lciA9IFRISVNfTU9EVUxFOworCWFk YXAtPmNsYXNzID0gSTJDX0NMQVNTX0REQzsKKwlhZGFwLT5kZXYucGFyZW50ID0gZGV2OworCWFk YXAtPmFsZ28gPSAmenhfdmdhX2FsZ29yaXRobTsKKwlzbnByaW50ZihhZGFwLT5uYW1lLCBzaXpl b2YoYWRhcC0+bmFtZSksICJ6eCB2Z2EgaTJjIik7CisKKwlyZXQgPSBpMmNfYWRkX2FkYXB0ZXIo YWRhcCk7CisJaWYgKHJldCkgeworCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byBhZGQg STJDIGFkYXB0ZXI6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWkyY19zZXRf YWRhcGRhdGEoYWRhcCwgdmdhKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaXJxcmV0dXJu X3QgenhfdmdhX2lycV90aHJlYWQoaW50IGlycSwgdm9pZCAqZGV2X2lkKQoreworCXN0cnVjdCB6 eF92Z2EgKnZnYSA9IGRldl9pZDsKKworCWRybV9oZWxwZXJfaHBkX2lycV9ldmVudCh2Z2EtPmNv bm5lY3Rvci5kZXYpOworCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgaXJxcmV0 dXJuX3QgenhfdmdhX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKK3sKKwlzdHJ1 Y3QgenhfdmdhICp2Z2EgPSBkZXZfaWQ7CisJdTMyIHN0YXR1czsKKworCXN0YXR1cyA9IHp4X3Jl YWRsKHZnYS0+bW1pbyArIFZHQV9JMkNfU1RBVFVTKTsKKworCS8qIENsZWFyIGludGVycnVwdCBz dGF0dXMgKi8KKwl6eF93cml0ZWxfbWFzayh2Z2EtPm1taW8gKyBWR0FfSTJDX1NUQVRVUywgVkdB X0NMRUFSX0lSUSwKKwkJICAgICAgIFZHQV9DTEVBUl9JUlEpOworCisJaWYgKHN0YXR1cyAmIFZH QV9ERVZJQ0VfQ09OTkVDVEVEKSB7CisJCS8qCisJCSAqIFNpbmNlIFZHQV9ERVRFQ1RfU0VMIGJp dHMgbmVlZCB0byBiZSByZXNldCBmb3Igc3dpdGNoaW5nIEREQworCQkgKiBidXMgZnJvbSBkZXZp Y2UgZGV0ZWN0aW9uIHRvIEVESUQgcmVhZCwgcmF0aGVyIHRoYW4gc2V0dGluZworCQkgKiB1cCBI QVNfREVWSUNFIGJpdCBoZXJlLCB3ZSBuZWVkIHRvIGRvIHRoYXQgaW4gLmdldF9tb2RlcworCQkg KiBob29rIGZvciB1bnBsdWcgZGV0ZWN0aW5nIGFmdGVyIEVESUQgcmVhZCBzdWNjZWVkcy4KKwkJ ICovCisJCXZnYS0+Y29ubmVjdGVkID0gdHJ1ZTsKKwkJcmV0dXJuIElSUV9XQUtFX1RIUkVBRDsK Kwl9CisKKwlpZiAoc3RhdHVzICYgVkdBX0RFVklDRV9ESVNDT05ORUNURUQpIHsKKwkJc3Bpbl9s b2NrKCZ2Z2EtPmxvY2spOworCQl6eF93cml0ZWwodmdhLT5tbWlvICsgVkdBX0FVVE9fREVURUNU X1NFTCwKKwkJCSAgVkdBX0RFVEVDVF9TRUxfTk9fREVWSUNFKTsKKwkJc3Bpbl91bmxvY2soJnZn YS0+bG9jayk7CisJCXZnYS0+Y29ubmVjdGVkID0gZmFsc2U7CisJCXJldHVybiBJUlFfV0FLRV9U SFJFQUQ7CisJfQorCisJaWYgKHN0YXR1cyAmIFZHQV9UUkFOU19ET05FKSB7CisJCWNvbXBsZXRl KCZ2Z2EtPmNvbXBsZXRlKTsKKwkJcmV0dXJuIElSUV9IQU5ETEVEOworCX0KKworCXJldHVybiBJ UlFfTk9ORTsKK30KKworc3RhdGljIHZvaWQgenhfdmdhX2h3X2luaXQoc3RydWN0IHp4X3ZnYSAq dmdhKQoreworCXVuc2lnbmVkIGxvbmcgcmVmID0gY2xrX2dldF9yYXRlKHZnYS0+aTJjX3djbGsp OworCWludCBkaXY7CisKKwkvKgorCSAqIFNldCB1cCBJMkMgZmFzdCBzcGVlZCBkaXZpZGVyIHBl ciBmb3JtdWxhIGJlbG93IHRvIGdldCA0MDBrSHouCisJICogICBzY2wgPSByZWYgLyAoKGRpdiAr IDEpICogNCkKKwkgKi8KKwlkaXYgPSBESVZfUk9VTkRfVVAocmVmIC8gMTAwMCwgNDAwICogNCkg LSAxOworCXp4X3dyaXRlbCh2Z2EtPm1taW8gKyBWR0FfQ0xLX0RJVl9GUywgZGl2KTsKKworCS8q IFNldCB1cCBkZXZpY2UgZGV0ZWN0aW9uICovCisJenhfd3JpdGVsKHZnYS0+bW1pbyArIFZHQV9B VVRPX0RFVEVDVF9QQVJBLCAweDgwKTsKKwl6eF93cml0ZWwodmdhLT5tbWlvICsgVkdBX0FVVE9f REVURUNUX1NFTCwgVkdBX0RFVEVDVF9TRUxfTk9fREVWSUNFKTsKKworCS8qCisJICogV2UgbmVl ZCB0byBwb2tlIG1vbml0b3IgdmlhIEREQyBidXMgdG8gZ2V0IGNvbm5lY3Rpb24gaXJxCisJICog c3RhcnQgd29ya2luZy4KKwkgKi8KKwl6eF93cml0ZWwodmdhLT5tbWlvICsgVkdBX0RFVklDRV9B RERSLCBERENfQUREUik7CisJenhfd3JpdGVsX21hc2sodmdhLT5tbWlvICsgVkdBX0NNRF9DRkcs IFZHQV9DTURfVFJBTlMsIFZHQV9DTURfVFJBTlMpOworfQorCitzdGF0aWMgaW50IHp4X3ZnYV9i aW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRh KQoreworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2Uo ZGV2KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZGF0YTsKKwlzdHJ1Y3QgcmVzb3VyY2Ug KnJlczsKKwlzdHJ1Y3QgenhfdmdhICp2Z2E7CisJaW50IGlycTsKKwlpbnQgcmV0OworCisJdmdh ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCp2Z2EpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXZn YSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwl2Z2EtPmRldiA9IGRldjsKKwlkZXZfc2V0X2RydmRh dGEoZGV2LCB2Z2EpOworCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVT T1VSQ0VfTUVNLCAwKTsKKwl2Z2EtPm1taW8gPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCBy ZXMpOworCWlmIChJU19FUlIodmdhLT5tbWlvKSkKKwkJcmV0dXJuIFBUUl9FUlIodmdhLT5tbWlv KTsKKworCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CisJaWYgKGlycSA8IDApCisJ CXJldHVybiBpcnE7CisKKwl2Z2EtPmkyY193Y2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImkyY193 Y2xrIik7CisJaWYgKElTX0VSUih2Z2EtPmkyY193Y2xrKSkgeworCQlyZXQgPSBQVFJfRVJSKHZn YS0+aTJjX3djbGspOworCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byBnZXQgaTJjX3dj bGs6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IHp4X3ZnYV9wd3Jj dHJsX2luaXQodmdhKTsKKwlpZiAocmV0KSB7CisJCURSTV9ERVZfRVJST1IoZGV2LCAiZmFpbGVk IHRvIGluaXQgcG93ZXIgY29udHJvbDogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQor CisJcmV0ID0genhfdmdhX2RkY19yZWdpc3Rlcih2Z2EpOworCWlmIChyZXQpIHsKKwkJRFJNX0RF Vl9FUlJPUihkZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgZGRjOiAlZFxuIiwgcmV0KTsKKwkJcmV0 dXJuIHJldDsKKwl9CisKKwlyZXQgPSB6eF92Z2FfcmVnaXN0ZXIoZHJtLCB2Z2EpOworCWlmIChy ZXQpIHsKKwkJRFJNX0RFVl9FUlJPUihkZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgdmdhOiAlZFxu IiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlpbml0X2NvbXBsZXRpb24oJnZnYS0+Y29t cGxldGUpOworCXNwaW5fbG9ja19pbml0KCZ2Z2EtPmxvY2spOworCisJcmV0ID0gZGV2bV9yZXF1 ZXN0X3RocmVhZGVkX2lycShkZXYsIGlycSwgenhfdmdhX2lycV9oYW5kbGVyLAorCQkJCQl6eF92 Z2FfaXJxX3RocmVhZCwgSVJRRl9TSEFSRUQsCisJCQkJCWRldl9uYW1lKGRldiksIHZnYSk7CisJ aWYgKHJldCkgeworCQlEUk1fREVWX0VSUk9SKGRldiwgImZhaWxlZCB0byByZXF1ZXN0IHRocmVh ZGVkIGlycTogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gY2xrX3By ZXBhcmVfZW5hYmxlKHZnYS0+aTJjX3djbGspOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK Kwl6eF92Z2FfaHdfaW5pdCh2Z2EpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHp4 X3ZnYV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCisJ CQkgIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHp4X3ZnYSAqdmdhID0gZGV2X2dldF9kcnZkYXRh KGRldik7CisKKwljbGtfZGlzYWJsZV91bnByZXBhcmUodmdhLT5pMmNfd2Nsayk7Cit9CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyB6eF92Z2FfY29tcG9uZW50X29wcyA9IHsK KwkuYmluZCA9IHp4X3ZnYV9iaW5kLAorCS51bmJpbmQgPSB6eF92Z2FfdW5iaW5kLAorfTsKKwor c3RhdGljIGludCB6eF92Z2FfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sK KwlyZXR1cm4gY29tcG9uZW50X2FkZCgmcGRldi0+ZGV2LCAmenhfdmdhX2NvbXBvbmVudF9vcHMp OworfQorCitzdGF0aWMgaW50IHp4X3ZnYV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKK3sKKwljb21wb25lbnRfZGVsKCZwZGV2LT5kZXYsICZ6eF92Z2FfY29tcG9uZW50X29w cyk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHp4 X3ZnYV9vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAienRlLHp4Mjk2NzE4LXZnYSIs IH0sCisJeyAvKiBlbmQgKi8gfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB6eF92Z2Ff b2ZfbWF0Y2gpOworCitzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHp4X3ZnYV9kcml2ZXIgPSB7CisJ LnByb2JlID0genhfdmdhX3Byb2JlLAorCS5yZW1vdmUgPSB6eF92Z2FfcmVtb3ZlLAorCS5kcml2 ZXIJPSB7CisJCS5uYW1lID0gInp4LXZnYSIsCisJCS5vZl9tYXRjaF90YWJsZQk9IHp4X3ZnYV9v Zl9tYXRjaCwKKwl9LAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdmdh X3JlZ3MuaCBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdmdhX3JlZ3MuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZlYWEzNDVmZTZhNgotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdmdhX3JlZ3MuaApAQCAtMCwwICsxLDM2IEBACisv KgorICogQ29weXJpZ2h0IChDKSAyMDE3IFNhbmVjaGlwcyBUZWNobm9sb2d5IENvLiwgTHRkLgor ICogQ29weXJpZ2h0IDIwMTcgTGluYXJvIEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9u IDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICov CisKKyNpZm5kZWYgX19aWF9WR0FfUkVHU19IX18KKyNkZWZpbmUgX19aWF9WR0FfUkVHU19IX18K KworI2RlZmluZSBWR0FfQ01EX0NGRwkJCTB4MDQKKyNkZWZpbmUgVkdBX0NNRF9UUkFOUwkJCUJJ VCg2KQorI2RlZmluZSBWR0FfQ01EX0NPTUJPCQkJQklUKDUpCisjZGVmaW5lIFZHQV9DTURfUlcJ CQlCSVQoNCkKKyNkZWZpbmUgVkdBX1NVQl9BRERSCQkJMHgwYworI2RlZmluZSBWR0FfREVWSUNF X0FERFIJCQkweDEwCisjZGVmaW5lIFZHQV9DTEtfRElWX0ZTCQkJMHgxNAorI2RlZmluZSBWR0Ff UlhGX0NUUkwJCQkweDIwCisjZGVmaW5lIFZHQV9SWF9GSUZPX0NMRUFSCQlCSVQoNykKKyNkZWZp bmUgVkdBX0RBVEEJCQkweDI0CisjZGVmaW5lIFZHQV9JMkNfU1RBVFVTCQkJMHgyOAorI2RlZmlu ZSBWR0FfREVWSUNFX0RJU0NPTk5FQ1RFRAkJQklUKDcpCisjZGVmaW5lIFZHQV9ERVZJQ0VfQ09O TkVDVEVECQlCSVQoNikKKyNkZWZpbmUgVkdBX0NMRUFSX0lSUQkJCUJJVCg0KQorI2RlZmluZSBW R0FfVFJBTlNfRE9ORQkJCUJJVCgwKQorI2RlZmluZSBWR0FfUlhGX1NUQVRVUwkJCTB4MzAKKyNk ZWZpbmUgVkdBX1JYRl9DT1VOVF9TSElGVAkJMgorI2RlZmluZSBWR0FfUlhGX0NPVU5UX01BU0sJ CUdFTk1BU0soNywgMikKKyNkZWZpbmUgVkdBX0FVVE9fREVURUNUX1BBUkEJCTB4MzQKKyNkZWZp bmUgVkdBX0FVVE9fREVURUNUX1NFTAkJMHgzOAorI2RlZmluZSBWR0FfREVURUNUX1NFTF9IQVNf REVWSUNFCUJJVCgxKQorI2RlZmluZSBWR0FfREVURUNUX1NFTF9OT19ERVZJQ0UJQklUKDApCisK KyNlbmRpZiAvKiBfX1pYX1ZHQV9SRUdTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3p0ZS96eF92b3UuYyBiL2RyaXZlcnMvZ3B1L2RybS96dGUvenhfdm91LmMKaW5kZXggMmEy ZDkwYmQ5NDI1Li5jYzViZGZjNTNlOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS96dGUv enhfdm91LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3UuYwpAQCAtMjMsNiArMjMs NyBAQAogI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2Ry bVAuaD4KIAorI2luY2x1ZGUgInp4X2NvbW1vbl9yZWdzLmgiCiAjaW5jbHVkZSAienhfZHJtX2Ry di5oIgogI2luY2x1ZGUgInp4X3BsYW5lLmgiCiAjaW5jbHVkZSAienhfdm91LmgiCkBAIC0xMjIs NiArMTIzLDggQEAgc3RydWN0IHp4X2NydGMgewogCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnk7 CiAJc3RydWN0IHp4X3ZvdV9odyAqdm91OwogCXZvaWQgX19pb21lbSAqY2hucmVnOworCXZvaWQg X19pb21lbSAqY2huY3NjOworCXZvaWQgX19pb21lbSAqZGl0aGVyOwogCWNvbnN0IHN0cnVjdCB6 eF9jcnRjX3JlZ3MgKnJlZ3M7CiAJY29uc3Qgc3RydWN0IHp4X2NydGNfYml0cyAqYml0czsKIAll bnVtIHZvdV9jaG5fdHlwZSBjaG5fdHlwZTsKQEAgLTIwNCw2ICsyMDcsMTEgQEAgc3RydWN0IHZv dV9pbmYgewogCQkuY2xvY2tzX2VuX2JpdHMgPSBCSVQoMTUpLAogCQkuY2xvY2tzX3NlbF9iaXRz ID0gQklUKDExKSB8IEJJVCgwKSwKIAl9LAorCVtWT1VfVkdBXSA9IHsKKwkJLmRhdGFfc2VsID0g Vk9VX1JHQl84ODgsCisJCS5jbG9ja3NfZW5fYml0cyA9IEJJVCgxKSwKKwkJLmNsb2Nrc19zZWxf Yml0cyA9IEJJVCgxMCksCisJfSwKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHp4X3ZvdV9o dyAqY3J0Y190b192b3Uoc3RydWN0IGRybV9jcnRjICpjcnRjKQpAQCAtMjI3LDkgKzIzNSwyNiBA QCB2b2lkIHZvdV9pbmZfZW5hYmxlKGVudW0gdm91X2luZl9pZCBpZCwgc3RydWN0IGRybV9jcnRj ICpjcnRjKQogCXN0cnVjdCB6eF9jcnRjICp6Y3J0YyA9IHRvX3p4X2NydGMoY3J0Yyk7CiAJc3Ry dWN0IHp4X3ZvdV9odyAqdm91ID0gemNydGMtPnZvdTsKIAlzdHJ1Y3Qgdm91X2luZiAqaW5mID0g JnZvdV9pbmZzW2lkXTsKKwl2b2lkIF9faW9tZW0gKmRpdGhlciA9IHpjcnRjLT5kaXRoZXI7CisJ dm9pZCBfX2lvbWVtICpjc2MgPSB6Y3J0Yy0+Y2huY3NjOwogCWJvb2wgaXNfbWFpbiA9IHpjcnRj LT5jaG5fdHlwZSA9PSBWT1VfQ0hOX01BSU47CiAJdTMyIGRhdGFfc2VsX3NoaWZ0ID0gaWQgPDwg MTsKIAorCWlmIChpbmYtPmRhdGFfc2VsICE9IFZPVV9ZVVY0NDQpIHsKKwkJLyogRW5hYmxlIGNo YW5uZWwgQ1NDIGZvciBSR0Igb3V0cHV0ICovCisJCXp4X3dyaXRlbF9tYXNrKGNzYyArIENTQ19D VFJMMCwgQ1NDX0NPVl9NT0RFX01BU0ssCisJCQkgICAgICAgQ1NDX0JUNzA5X0lNQUdFX1lDQkNS MlJHQiA8PCBDU0NfQ09WX01PREVfU0hJRlQpOworCQl6eF93cml0ZWxfbWFzayhjc2MgKyBDU0Nf Q1RSTDAsIENTQ19XT1JLX0VOQUJMRSwKKwkJCSAgICAgICBDU0NfV09SS19FTkFCTEUpOworCisJ CS8qIEJ5cGFzcyBEaXRoZXIgYmxvY2sgZm9yIFJHQiBvdXRwdXQgKi8KKwkJenhfd3JpdGVsX21h c2soZGl0aGVyICsgT1NEX0RJVEhFUl9DVFJMMCwgRElUSEVSX0JZU1BBU1MsCisJCQkgICAgICAg RElUSEVSX0JZU1BBU1MpOworCX0gZWxzZSB7CisJCXp4X3dyaXRlbF9tYXNrKGNzYyArIENTQ19D VFJMMCwgQ1NDX1dPUktfRU5BQkxFLCAwKTsKKwkJenhfd3JpdGVsX21hc2soZGl0aGVyICsgT1NE X0RJVEhFUl9DVFJMMCwgRElUSEVSX0JZU1BBU1MsIDApOworCX0KKwogCS8qIFNlbGVjdCBkYXRh IGZvcm1hdCAqLwogCXp4X3dyaXRlbF9tYXNrKHZvdS0+dm91Y3RsICsgVk9VX0lORl9EQVRBX1NF TCwgMHgzIDw8IGRhdGFfc2VsX3NoaWZ0LAogCQkgICAgICAgaW5mLT5kYXRhX3NlbCA8PCBkYXRh X3NlbF9zaGlmdCk7CkBAIC01MDIsMjAgKzUyNywyNCBAQCBzdGF0aWMgaW50IHp4X2NydGNfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3Qgenhfdm91X2h3ICp2b3UsCiAKIAlpZiAo Y2huX3R5cGUgPT0gVk9VX0NITl9NQUlOKSB7CiAJCXpwbGFuZS0+bGF5ZXIgPSB2b3UtPm9zZCAr IE1BSU5fR0xfT0ZGU0VUOwotCQl6cGxhbmUtPmNzYyA9IHZvdS0+b3NkICsgTUFJTl9DU0NfT0ZG U0VUOworCQl6cGxhbmUtPmNzYyA9IHZvdS0+b3NkICsgTUFJTl9HTF9DU0NfT0ZGU0VUOwogCQl6 cGxhbmUtPmhic2MgPSB2b3UtPm9zZCArIE1BSU5fSEJTQ19PRkZTRVQ7CiAJCXpwbGFuZS0+cnN6 ID0gdm91LT5vdGZwcHUgKyBNQUlOX1JTWl9PRkZTRVQ7CiAJCXpwbGFuZS0+Yml0cyA9ICZ6eF9n bF9iaXRzWzBdOwogCQl6Y3J0Yy0+Y2hucmVnID0gdm91LT5vc2QgKyBPU0RfTUFJTl9DSE47CisJ CXpjcnRjLT5jaG5jc2MgPSB2b3UtPm9zZCArIE1BSU5fQ0hOX0NTQ19PRkZTRVQ7CisJCXpjcnRj LT5kaXRoZXIgPSB2b3UtPm9zZCArIE1BSU5fRElUSEVSX09GRlNFVDsKIAkJemNydGMtPnJlZ3Mg PSAmbWFpbl9jcnRjX3JlZ3M7CiAJCXpjcnRjLT5iaXRzID0gJm1haW5fY3J0Y19iaXRzOwogCX0g ZWxzZSB7CiAJCXpwbGFuZS0+bGF5ZXIgPSB2b3UtPm9zZCArIEFVWF9HTF9PRkZTRVQ7Ci0JCXpw bGFuZS0+Y3NjID0gdm91LT5vc2QgKyBBVVhfQ1NDX09GRlNFVDsKKwkJenBsYW5lLT5jc2MgPSB2 b3UtPm9zZCArIEFVWF9HTF9DU0NfT0ZGU0VUOwogCQl6cGxhbmUtPmhic2MgPSB2b3UtPm9zZCAr IEFVWF9IQlNDX09GRlNFVDsKIAkJenBsYW5lLT5yc3ogPSB2b3UtPm90ZnBwdSArIEFVWF9SU1pf T0ZGU0VUOwogCQl6cGxhbmUtPmJpdHMgPSAmenhfZ2xfYml0c1sxXTsKIAkJemNydGMtPmNobnJl ZyA9IHZvdS0+b3NkICsgT1NEX0FVWF9DSE47CisJCXpjcnRjLT5jaG5jc2MgPSB2b3UtPm9zZCAr IEFVWF9DSE5fQ1NDX09GRlNFVDsKKwkJemNydGMtPmRpdGhlciA9IHZvdS0+b3NkICsgQVVYX0RJ VEhFUl9PRkZTRVQ7CiAJCXpjcnRjLT5yZWdzID0gJmF1eF9jcnRjX3JlZ3M7CiAJCXpjcnRjLT5i aXRzID0gJmF1eF9jcnRjX2JpdHM7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3p0 ZS96eF92b3VfcmVncy5oIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3VfcmVncy5oCmluZGV4 IGMwNjZlZjEyMzQzNC4uNWEyMTgzNTFiNDk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v enRlL3p4X3ZvdV9yZWdzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3p0ZS96eF92b3VfcmVncy5o CkBAIC0xMywxMyArMTMsMTcgQEAKIAogLyogU3ViLW1vZHVsZSBvZmZzZXQgKi8KICNkZWZpbmUg TUFJTl9HTF9PRkZTRVQJCQkweDEzMAotI2RlZmluZSBNQUlOX0NTQ19PRkZTRVQJCQkweDU4MAor I2RlZmluZSBNQUlOX0dMX0NTQ19PRkZTRVQJCTB4NTgwCisjZGVmaW5lIE1BSU5fQ0hOX0NTQ19P RkZTRVQJCTB4NmMwCiAjZGVmaW5lIE1BSU5fSEJTQ19PRkZTRVQJCTB4ODIwCisjZGVmaW5lIE1B SU5fRElUSEVSX09GRlNFVAkJMHg5NjAKICNkZWZpbmUgTUFJTl9SU1pfT0ZGU0VUCQkJMHg2MDAg LyogT1RGUFBVIHN1Yi1tb2R1bGUgKi8KIAogI2RlZmluZSBBVVhfR0xfT0ZGU0VUCQkJMHgyMDAK LSNkZWZpbmUgQVVYX0NTQ19PRkZTRVQJCQkweDVkMAorI2RlZmluZSBBVVhfR0xfQ1NDX09GRlNF VAkJMHg1ZDAKKyNkZWZpbmUgQVVYX0NITl9DU0NfT0ZGU0VUCQkweDcxMAogI2RlZmluZSBBVVhf SEJTQ19PRkZTRVQJCQkweDg2MAorI2RlZmluZSBBVVhfRElUSEVSX09GRlNFVAkJMHg5NzAKICNk ZWZpbmUgQVVYX1JTWl9PRkZTRVQJCQkweDgwMAogCiAjZGVmaW5lIE9TRF9WTDBfT0ZGU0VUCQkJ MHgwNDAKQEAgLTc4LDYgKzgyLDEwIEBACiAjZGVmaW5lIENITl9JTlRFUkxBQ0VfQlVGX0NUUkwJ CTB4MjQKICNkZWZpbmUgQ0hOX0lOVEVSTEFDRV9FTgkJQklUKDIpCiAKKy8qIERpdGhlciByZWdp c3RlcnMgKi8KKyNkZWZpbmUgT1NEX0RJVEhFUl9DVFJMMAkJMHgwMAorI2RlZmluZSBESVRIRVJf QllTUEFTUwkJCUJJVCgzMSkKKwogLyogVElNSU5HX0NUUkwgcmVnaXN0ZXJzICovCiAjZGVmaW5l IFRJTUlOR19UQ19FTkFCTEUJCTB4MDQKICNkZWZpbmUgQVVYX1RDX0VOCQkJQklUKDEpCi0tIAox LjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==