From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Hean-Loong, Ong" Subject: [PATCH10 3/3] ARM:drm ivip Intel FPGA Video and Image Processing Suite Date: Tue, 14 Aug 2018 16:57:09 +0800 Message-ID: <1534237029-2648-4-git-send-email-hean.loong.ong@intel.com> References: <1534237029-2648-1-git-send-email-hean.loong.ong@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1534237029-2648-1-git-send-email-hean.loong.ong@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring , Dinh Nguyen , David Airlie Cc: devicetree@vger.kernel.org, yves.vandervennet@intel.com, hean.loong.ong@intel.com, chin.liang.see@intel.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org RnJvbTogT25nIEhlYW4gTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KCkRyaXZlciBm b3IgSW50ZWwgRlBHQSBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBGcmFtZSBCdWZm ZXIgSUkuClRoZSBkcml2ZXIgb25seSBzdXBwb3J0cyB0aGUgSW50ZWwgQXJyaWExMCBkZXZraXQg YW5kIGl0cyB2YXJpYW50cy4KVGhpcyBkcml2ZXIgY2FuIGJlIGVpdGhlciBsb2FkZWQgc3RhdGlj bGx5IG9yIGluIG1vZHVsZXMuClRoZSBPRiBkZXZpY2UgdHJlZSBiaW5kaW5nIGlzIGxvY2F0ZWQg YXQ6CkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2FsdHIsdmlwLWZi Mi50eHQKClNpZ25lZC1vZmYtYnk6IE9uZyBIZWFuIExvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRl bC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgICB8ICAgIDIg KwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgIDEgKwogZHJpdmVy cy9ncHUvZHJtL2l2aXAvS2NvbmZpZyAgICAgICAgICB8ICAgMTQgKysrCiBkcml2ZXJzL2dwdS9k cm0vaXZpcC9NYWtlZmlsZSAgICAgICAgIHwgICAgOSArKwogZHJpdmVycy9ncHUvZHJtL2l2aXAv aW50ZWxfdmlwX2Nvbm4uYyB8ICAgOTUgKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJt L2l2aXAvaW50ZWxfdmlwX2NvcmUuYyB8ICAxNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfZHJ2LmggIHwgICA1MiArKysrKysrKysK IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9vZi5jICAgfCAgMTkzICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA1MjcgaW5zZXJ0aW9ucygr KSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZp cC9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFrZWZp bGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29u bi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Nv cmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9k cnYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9v Zi5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9k cm0vS2NvbmZpZwppbmRleCBjYjg4NTI4Li42YjI4NDViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwpAQCAtMjE1LDYgKzIx NSw4IEBAIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZyIKIAogc291cmNl ICJkcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnIgogCitzb3VyY2UgImRyaXZlcnMvZ3B1L2Ry bS9pdmlwL0tjb25maWciCisKIGNvbmZpZyBEUk1fVkdFTQogCXRyaXN0YXRlICJWaXJ0dWFsIEdF TSBwcm92aWRlciIKIAlkZXBlbmRzIG9uIERSTQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IGE2NzcxY2UuLjU3MjA1 ZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dw dS9kcm0vTWFrZWZpbGUKQEAgLTYxLDYgKzYxLDcgQEAgb2JqLSQoQ09ORklHX0RSTV9BTURHUFUp Kz0gYW1kL2FtZGdwdS8KIG9iai0kKENPTkZJR19EUk1fTUdBKQkrPSBtZ2EvCiBvYmotJChDT05G SUdfRFJNX0k4MTApCSs9IGk4MTAvCiBvYmotJChDT05GSUdfRFJNX0k5MTUpCSs9IGk5MTUvCitv YmotJChDT05GSUdfRFJNX0lWSVApCSs9IGl2aXAvCiBvYmotJChDT05GSUdfRFJNX01HQUcyMDAp ICs9IG1nYWcyMDAvCiBvYmotJChDT05GSUdfRFJNX1YzRCkgICs9IHYzZC8KIG9iai0kKENPTkZJ R19EUk1fVkM0KSAgKz0gdmM0LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2aXAvS2Nv bmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMWQwOGI5MAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pdmlwL0tjb25maWcKQEAgLTAsMCArMSwxNCBAQAorY29uZmlnIERSTV9JVklQCisgICAgICAg IHRyaXN0YXRlICJJbnRlbCBGR1BBIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nIgorICAgICAg ICBkZXBlbmRzIG9uIERSTSAmJiBPRgorICAgICAgICBzZWxlY3QgRFJNX0dFTV9DTUFfSEVMUEVS CisgICAgICAgIHNlbGVjdCBEUk1fS01TX0hFTFBFUgorICAgICAgICBzZWxlY3QgRFJNX0tNU19G Ql9IRUxQRVIKKyAgICAgICAgc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBFUgorICAgICAgICBoZWxw CisJCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGFuIEludGVsIEZQR0EgQXJyaWEg MTAgc3lzdGVtCisJCSAgYW5kIGFib3ZlIHdpdGggYW4gSW50ZWwgRGlzcGxheSBQb3J0IElQLiBU aGlzIGRvZXMgbm90IHN1cHBvcnQKKwkJICBsZWdhY3kgSW50ZWwgRlBHQSBDeWNsb25lIFYgZGlz cGxheSBwb3J0LiBDdXJyZW50bHkgb25seSBzaW5nbGUKKwkJICBmcmFtZSBidWZmZXIgaXMgc3Vw cG9ydGVkLiBOb3RlIHRoYXQgQUNQSSBhbmQgWF84NiBhcmNoaXRlY3R1cmUKKwkJICBpcyBub3Qg c3VwcG9ydGVkIGZvciBBcnJpYTEwLiBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBi ZQorCQkgIGNhbGxlZCBpdmlwLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5jYzU1YjA0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2l2aXAvTWFrZWZpbGUKQEAgLTAsMCArMSw5IEBACisjCisjIE1ha2VmaWxlIGZvciB0aGUg ZHJtIGRldmljZSBkcml2ZXIuICBUaGlzIGRyaXZlciBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUK KyMgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQuMS4w IGFuZCBoaWdoZXIuCisKK2NjZmxhZ3MteSA6PSAtSWluY2x1ZGUvZHJtCisKK29iai0kKENPTkZJ R19EUk1fSVZJUCkgKz0gaXZpcC5vCitpdmlwLW9ianMgOj0gaW50ZWxfdmlwX29mLm8gaW50ZWxf dmlwX2NvcmUubyBcCisJaW50ZWxfdmlwX2Nvbm4ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2l2aXAvaW50ZWxfdmlwX2Nvbm4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3Zp cF9jb25uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZiYjA0YwotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb25uLmMKQEAg LTAsMCArMSw5NSBAQAorLyoKKyAqIGludGVsX3ZpcF9jb25uLmMgLS0gSW50ZWwgVmlkZW8gYW5k IEltYWdlIFByb2Nlc3NpbmcoVklQKQorICogRnJhbWUgQnVmZmVyIElJIGRyaXZlcgorICoKKyAq IFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBJbnRlbCBWSVAgRnJhbWUgUmVhZGVyIGNvbXBvbmVu dC4KKyAqIE1vcmUgaW5mbyBvbiB0aGUgaGFyZHdhcmUgY2FuIGJlIGZvdW5kIGluIHRoZSBJbnRl bCBWaWRlbworICogYW5kIEltYWdlIFByb2Nlc3NpbmcgU3VpdGUgVXNlciBHdWlkZSBhdCB0aGlz IGFkZHJlc3MKKyAqIGh0dHA6Ly93d3cuYWx0ZXJhLmNvbS9saXRlcmF0dXJlL3VnL3VnX3ZpcC5w ZGYuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0 aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisgKiB2ZXJzaW9uIDIsIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBk ZXRhaWxzLgorICoKKyAqIEF1dGhvcnM6CisgKiBPbmcsIEhlYW4tTG9vbmcgPGhlYW4ubG9vbmcu b25nQGludGVsLmNvbT4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNs dWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9lbmNv ZGVyX3NsYXZlLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KKworc3RhdGlj IGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKK2ludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9kZXRl Y3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKK3sKKwlyZXR1 cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cit9CisKK3N0YXRpYyB2b2lkIGludGVsdmlw ZmJfZHJtX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ip Cit7CisJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7CisJZHJtX2Nvbm5lY3Rv cl9jbGVhbnVwKGNvbm5lY3Rvcik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9mdW5jcyBpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfZnVuY3MgPSB7CisJLnJlc2V0ID0g ZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAorCS5kZXRlY3QgPSBpbnRlbHZpcGZi X2RybV9jb25uZWN0b3JfZGV0ZWN0LAorCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9z aW5nbGVfY29ubmVjdG9yX21vZGVzLAorCS5kZXN0cm95ID0gaW50ZWx2aXBmYl9kcm1fY29ubmVj dG9yX2Rlc3Ryb3ksCisJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsCit9OworCitzdGF0aWMgaW50IGludGVsdmlwZmJfZHJt X2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gY29ubmVjdG9yLT5kZXY7CisJaW50IGNvdW50Owor CisJY291bnQgPSBkcm1fYWRkX21vZGVzX25vZWRpZChjb25uZWN0b3IsIGRybS0+bW9kZV9jb25m aWcubWF4X3dpZHRoLAorCQkJCSAgICAgZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0KTsKKwlk cm1fc2V0X3ByZWZlcnJlZF9tb2RlKGNvbm5lY3RvciwgZHJtLT5tb2RlX2NvbmZpZy5tYXhfd2lk dGgsCisJCQkgICAgICAgZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0KTsKKwlyZXR1cm4gY291 bnQ7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MK K2ludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CisJLmdldF9tb2RlcyA9 IGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCit9OworCitzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqCitpbnRlbHZpcGZiX2Nvbm5fc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRybSkK K3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsKKwlpbnQgcmV0OworCisJY29ubiA9IGRl dm1fa3phbGxvYyhkcm0tPmRldiwgc2l6ZW9mKCpjb25uKSwgR0ZQX0tFUk5FTCk7CisJaWYgKElT X0VSUihjb25uKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQo ZHJtLCBjb25uLCAmaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Z1bmNzLAorCQkJCSBEUk1fTU9E RV9DT05ORUNUT1JfRGlzcGxheVBvcnQpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZHJt LT5kZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBkcm0gY29ubmVjdG9yXG4iKTsKKwkJcmV0ID0g LUVOT01FTTsKKwkJZ290byBlcnJvcl9jb25uZWN0b3JfY2xlYW51cDsKKwl9CisKKwljb25uLT5w b2xsZWQgPSAwOworCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uLCAmaW50ZWx2aXBmYl9k cm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7CisKKwlyZXR1cm4gY29ubjsKKworZXJyb3JfY29u bmVjdG9yX2NsZWFudXA6CisJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm4pOworCisJcmV0dXJu IE5VTEw7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29y ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2NvcmUuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjAxYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2NvcmUuYwpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAq IGludGVsX3ZpcF9jb3JlLmMgLS0gSW50ZWwgVmlkZW8gYW5kIEltYWdlIFByb2Nlc3NpbmcoVklQ KQorICogRnJhbWUgQnVmZmVyIElJIGRyaXZlcgorICoKKyAqIFRoaXMgZHJpdmVyIHN1cHBvcnRz IHRoZSBJbnRlbCBWSVAgRnJhbWUgUmVhZGVyIGNvbXBvbmVudC4KKyAqIE1vcmUgaW5mbyBvbiB0 aGUgaGFyZHdhcmUgY2FuIGJlIGZvdW5kIGluIHRoZSBJbnRlbCBWaWRlbworICogYW5kIEltYWdl IFByb2Nlc3NpbmcgU3VpdGUgVXNlciBHdWlkZSBhdCB0aGlzIGFkZHJlc3MKKyAqIGh0dHA6Ly93 d3cuYWx0ZXJhLmNvbS9saXRlcmF0dXJlL3VnL3VnX3ZpcC5wZGYuCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UsCisgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElU WSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIEF1dGhv cnM6CisgKiBPbmcsIEhlYW4tTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KKyAqCisg Ki8KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2Ny dGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVy Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X3NpbXBsZV9rbXNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJf aGVscGVyLmg+CisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgva2Vy bmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisKKyNpbmNsdWRlICJpbnRlbF92aXBf ZHJ2LmgiCisKK3N0YXRpYyB2b2lkIGludGVsdmlwZmJfZW5hYmxlKHN0cnVjdCBkcm1fc2ltcGxl X2Rpc3BsYXlfcGlwZSAqcGlwZSwKKwkJCSAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCit7CisJLyoKKwkg KiBUaGUgZnJhbWVpbmZvIHZhcmlhYmxlIGhhcyB0byBjb3JyZXNwb25kIHRvIHRoZSBzaXplIG9m IHRoZSBWSVAgU3VpdGUKKwkgKiBGcmFtZSBSZWFkZXIgcmVnaXN0ZXIgNyB3aGljaCB3aWxsIGRl dGVybWluZSB0aGUgbWF4aW11bSBzaXplIHVzZWQKKwkgKiBpbiB0aGlzIGZyYW1laW5mbworCSAq LworCisJdTMyIGZyYW1laW5mbzsKKwlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpwcml2ID0gcGlw ZS0+cGxhbmUuZGV2LT5kZXZfcHJpdmF0ZTsKKwl2b2lkIF9faW9tZW0gKmJhc2UgPSBwcml2LT5i YXNlOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlID0gcGlwZS0+cGxhbmUuc3RhdGU7 CisJZG1hX2FkZHJfdCBhZGRyOworCisJYWRkciA9IGRybV9mYl9jbWFfZ2V0X2dlbV9hZGRyKHN0 YXRlLT5mYiwgc3RhdGUsIDApOworCisJZnJhbWVpbmZvID0KKwkJcmVhZGwoYmFzZSArIElOVEVM VklQRkJfRlJBTUVfUkVBREVSKSAmIDB4MDBmZmZmZmY7CisJd3JpdGVsKGZyYW1laW5mbywgYmFz ZSArIElOVEVMVklQRkJfRlJBTUVfSU5GTyk7CisJd3JpdGVsKGFkZHIsIGJhc2UgKyBJTlRFTFZJ UEZCX0ZSQU1FX1NUQVJUKTsKKwkvKiBGaW5hbGx5IHNldCB0aGUgY29udHJvbCByZWdpc3RlciB0 byAxIHRvIHN0YXJ0IHN0cmVhbWluZyAqLworCXdyaXRlbCgxLCBiYXNlICsgSU5URUxWSVBGQl9D T05UUk9MKTsKK30KKworc3RhdGljIHZvaWQgaW50ZWx2aXBmYl9kaXNhYmxlKHN0cnVjdCBkcm1f c2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSkKK3sKKwlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpw cml2ID0gcGlwZS0+cGxhbmUuZGV2LT5kZXZfcHJpdmF0ZTsKKwl2b2lkIF9faW9tZW0gKmJhc2Ug PSBwcml2LT5iYXNlOworCS8qIHNldCB0aGUgY29udHJvbCByZWdpc3RlciB0byAwIHRvIHN0b3Ag c3RyZWFtaW5nICovCisJd3JpdGVsKDAsIGJhc2UgKyBJTlRFTFZJUEZCX0NPTlRST0wpOworfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBpbnRlbHZpcGZiX21v ZGVfY29uZmlnX2Z1bmNzID0geworCS5mYl9jcmVhdGUgPSBkcm1fZ2VtX2ZiX2NyZWF0ZSwKKwku YXRvbWljX2NoZWNrID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2ssCisJLmF0b21pY19jb21taXQg PSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQsCit9OworCitzdGF0aWMgdm9pZCBpbnRlbHZpcGZi X3NldHVwX21vZGVfY29uZmlnKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCit7CisJZHJtX21vZGVf Y29uZmlnX2luaXQoZHJtKTsKKwlkcm0tPm1vZGVfY29uZmlnLmZ1bmNzID0gJmludGVsdmlwZmJf bW9kZV9jb25maWdfZnVuY3M7Cit9CisKK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9waXBlX3ByZXBh cmVfZmIoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAorCQkJCSAgICAgIHN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQoreworCXJldHVybiBkcm1fZ2VtX2Zi X3ByZXBhcmVfZmIoJnBpcGUtPnBsYW5lLCBwbGFuZV9zdGF0ZSk7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfZnVuY3MgZmJwcml2X2Z1bmNzID0geworCS5wcmVw YXJlX2ZiID0gaW50ZWx2aXBmYl9waXBlX3ByZXBhcmVfZmIsCisJLmVuYWJsZSA9IGludGVsdmlw ZmJfZW5hYmxlLAorCS5kaXNhYmxlID0gaW50ZWx2aXBmYl9kaXNhYmxlCit9OworCitpbnQgaW50 ZWx2aXBmYl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJaW50IHJldHZhbDsKKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtOworCXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKmZicHJpdiA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJ dTMyIGZvcm1hdHNbXSA9IHtEUk1fRk9STUFUX1hSR0I4ODg4fTsKKworCWRybSA9IGZicHJpdi0+ ZHJtOworCisJZHJtLT5kZXZfcHJpdmF0ZSA9IGZicHJpdjsKKworCWludGVsdmlwZmJfc2V0dXBf bW9kZV9jb25maWcoZHJtKTsKKworCWNvbm5lY3RvciA9IGludGVsdmlwZmJfY29ubl9zZXR1cChk cm0pOworCWlmICghY29ubmVjdG9yKSB7CisJCWRldl9lcnIoZHJtLT5kZXYsICJDb25uZWN0b3Ig c2V0dXAgZmFpbGVkXG4iKTsKKwkJZ290byBlcnJfbW9kZV9jb25maWc7CisJfQorCisJcmV0dmFs ID0gZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfaW5pdChkcm0sICZmYnByaXYtPnBpcGUsCisJCQkJ CSAgICAgICZmYnByaXZfZnVuY3MsIGZvcm1hdHMsCisJCQlBUlJBWV9TSVpFKGZvcm1hdHMpLCBO VUxMLCBjb25uZWN0b3IpOworCWlmIChyZXR2YWwgPCAwKSB7CisJCWRldl9lcnIoZHJtLT5kZXYs ICJDYW5ub3Qgc2V0dXAgc2ltcGxlIGRpc3BsYXkgcGlwZVxuIik7CisJCWdvdG8gZXJyX21vZGVf Y29uZmlnOworCX0KKworCWZicHJpdi0+ZmJjbWEgPSBkcm1fZmJkZXZfY21hX2luaXQoZHJtLAor CQkJZHJtLT5tb2RlX2NvbmZpZy5wcmVmZXJyZWRfZGVwdGgsCisJCQlkcm0tPm1vZGVfY29uZmln Lm51bV9jb25uZWN0b3IpOworCisJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7CisKKwlkcm1f ZGV2X3JlZ2lzdGVyKGRybSwgMCk7CisKKwlyZXR1cm4gcmV0dmFsOworCitlcnJfbW9kZV9jb25m aWc6CisKKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOworCXJldHVybiAtRU5PREVWOwor fQorCitpbnQgaW50ZWx2aXBmYl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVj dCBpbnRlbHZpcGZiX3ByaXYgKmZicHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVj dCBkcm1fZGV2aWNlICpkcm0gPSAgZmJwcml2LT5kcm07CisKKwlkcm1fZGV2X3VucmVnaXN0ZXIo ZHJtKTsKKworCWlmIChmYnByaXYtPmZiY21hKQorCQlkcm1fZmJkZXZfY21hX2ZpbmkoZmJwcml2 LT5mYmNtYSk7CisKKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOworCWRybV9kZXZfdW5y ZWYoZHJtKTsKKworCXJldHVybiAwOworfQorCitNT0RVTEVfQVVUSE9SKCJPbmcsIEhlYW4tTG9v bmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiSW50 ZWwgVklQIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIi KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4wYTM1NTVkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2l2aXAvaW50ZWxfdmlwX2Rydi5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg KEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24uCisgKgorICogSW50ZWwgVmlkZW8gYW5kIEltYWdl IFByb2Nlc3NpbmcoVklQKSBGcmFtZSBCdWZmZXIgSUkgZHJpdmVyLgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogQXV0aG9yczoKKyAqIE9uZywgSGVhbi1Mb29u ZyA8aGVhbi5sb29uZy5vbmdAaW50ZWwuY29tPgorICoKKyAqLworI2lmbmRlZiBfSU5URUxfVklQ X0RSVl9ICisjZGVmaW5lIF9JTlRFTF9WSVBfRFJWX0gKKworI2RlZmluZSBEUklWRVJfTkFNRSAg ICAiaW50ZWx2aXBmYiIKKyNkZWZpbmUgQllURVNfUEVSX1BJWEVMCSA0CisjZGVmaW5lIENSVENf TlVNCSAgICAgICAgMQorI2RlZmluZSBDT05OX05VTQkgICAgICAgIDEKKworLyogY29udHJvbCBy ZWdpc3RlcnMgKi8KKyNkZWZpbmUgSU5URUxWSVBGQl9DT05UUk9MCSAgICAgIDAKKyNkZWZpbmUg SU5URUxWSVBGQl9TVEFUVVMJICAgICAgIDB4NAorI2RlZmluZSBJTlRFTFZJUEZCX0lOVEVSUlVQ VAkgICAgMHg4CisjZGVmaW5lIElOVEVMVklQRkJfRlJBTUVfQ09VTlRFUgkweEMKKyNkZWZpbmUg SU5URUxWSVBGQl9GUkFNRV9EUk9QCSAgIDB4MTAKKyNkZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9J TkZPCSAgIDB4MTQKKyNkZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9TVEFSVAkgIDB4MTgKKyNkZWZp bmUgSU5URUxWSVBGQl9GUkFNRV9SRUFERVIJICAgICAgICAgMHgxQworCitpbnQgaW50ZWx2aXBm Yl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpOworaW50IGludGVsdmlwZmJfcmVtb3ZlKHN0cnVj dCBkZXZpY2UgKmRldik7CitpbnQgaW50ZWx2aXBmYl9zZXR1cF9jcnRjKHN0cnVjdCBkcm1fZGV2 aWNlICpkcm0pOworc3RydWN0IGRybV9jb25uZWN0b3IgKmludGVsdmlwZmJfY29ubl9zZXR1cChz dHJ1Y3QgZHJtX2RldmljZSAqZHJtKTsKKworc3RydWN0IGludGVsdmlwZmJfcHJpdiB7CisJc3Ry dWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlIHBpcGU7CisJc3RydWN0IGRybV9mYmRldl9jbWEg KmZiY21hOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CisJdm9pZCAgICBfX2lvbWVtICpiYXNl OworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92 aXBfb2YuYyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9vZi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MzAyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfb2YuYwpAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAq IGludGVsX3ZpcF9vZi5jIC0tIEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nKFZJUCkK KyAqIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIKKyAqCisgKiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0 aGUgSW50ZWwgVklQIEZyYW1lIFJlYWRlciBjb21wb25lbnQuCisgKiBNb3JlIGluZm8gb24gdGhl IGhhcmR3YXJlIGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8KKyAqIGFuZCBJbWFnZSBQ cm9jZXNzaW5nIFN1aXRlIFVzZXIgR3VpZGUgYXQgdGhpcyBhZGRyZXNzCisgKiBodHRwOi8vd3d3 LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmLgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkg b3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBBdXRob3Jz OgorICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+CisgKgorICov CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2Nt YV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+CisjaW5jbHVk ZSA8ZHJtL2RybV9vZi5oPgorI2luY2x1ZGUgPGRybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaD4K KworI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4K KyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNp bmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKworI2luY2x1ZGUgImludGVsX3ZpcF9k cnYuaCIKKworREVGSU5FX0RSTV9HRU1fQ01BX0ZPUFMoZHJtX2ZvcHMpOworCitzdGF0aWMgdm9p ZCBpbnRlbHZpcGZiX2xhc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQoreworCXN0cnVj dCBpbnRlbHZpcGZiX3ByaXYgKnByaXYgPSBkcm0tPmRldl9wcml2YXRlOworCisJZHJtX2ZiZGV2 X2NtYV9yZXN0b3JlX21vZGUocHJpdi0+ZmJjbWEpOworfQorCitzdGF0aWMgc3RydWN0IGRybV9k cml2ZXIgaW50ZWx2aXBmYl9kcm0gPSB7CisJLmRyaXZlcl9mZWF0dXJlcyA9CisJCQlEUklWRVJf TU9ERVNFVCB8IERSSVZFUl9HRU0gfAorCQkJRFJJVkVSX1BSSU1FIHwgRFJJVkVSX0FUT01JQywK KwkuZ2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkID0gZHJtX2dlbV9jbWFfZnJlZV9vYmplY3QsCisJ LmdlbV92bV9vcHMgPSAmZHJtX2dlbV9jbWFfdm1fb3BzLAorCS5kdW1iX2NyZWF0ZSA9IGRybV9n ZW1fY21hX2R1bWJfY3JlYXRlLAorCS5kdW1iX2Rlc3Ryb3kgPSBkcm1fZ2VtX2R1bWJfZGVzdHJv eSwKKwkucHJpbWVfaGFuZGxlX3RvX2ZkID0gZHJtX2dlbV9wcmltZV9oYW5kbGVfdG9fZmQsCisJ LnByaW1lX2ZkX3RvX2hhbmRsZSA9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLAorCS5nZW1f cHJpbWVfZXhwb3J0ID0gZHJtX2dlbV9wcmltZV9leHBvcnQsCisJLmdlbV9wcmltZV9pbXBvcnQg PSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZSA9IGRybV9n ZW1fY21hX3ByaW1lX2dldF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9 IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX3ZtYXAgPSBk cm1fZ2VtX2NtYV9wcmltZV92bWFwLAorCS5nZW1fcHJpbWVfdnVubWFwID0gZHJtX2dlbV9jbWFf cHJpbWVfdnVubWFwLAorCS5nZW1fcHJpbWVfbW1hcCA9IGRybV9nZW1fY21hX3ByaW1lX21tYXAs CisJLmxhc3RjbG9zZSA9IGludGVsdmlwZmJfbGFzdGNsb3NlLAorCS5uYW1lID0gRFJJVkVSX05B TUUsCisJLmRhdGUgPSAiMjAxNzA3MjkiLAorCS5kZXNjID0gIkludGVsIEZQR0EgVklQIFNVSVRF IiwKKwkubWFqb3IgPSAxLAorCS5taW5vciA9IDAsCisJLmlvY3RscyA9IE5VTEwsCisJLnBhdGNo bGV2ZWwgPSAwLAorCS5mb3BzID0gJmRybV9mb3BzLAorfTsKKworLyoKKyAqIFNldHRpbmcgdXAg aW5mb3JtYXRpb24gZGVyaXZlZCBmcm9tIE9GIERldmljZSBUcmVlIE5vZGVzCisgKiBtYXgtd2lk dGgsIG1heC1oZWlnaHQsIGJpdHMgcGVyIHBpeGVsLCBtZW1vcnkgcG9ydCB3aWR0aAorICovCisK K3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9kcm1fc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LAorCQkJ CXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKmZicHJpdikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZHJtID0gZmJwcml2LT5kcm07CisJc3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9k ZTsKKwlpbnQgbWVtX3dvcmRfd2lkdGg7CisJaW50IG1heF9oLCBtYXhfdzsKKwlpbnQgcmV0Owor CisJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJhbHRyLG1heC13aWR0aCIsICZtYXhf dyk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwKKwkJCSJNaXNzaW5nIHJlcXVpcmVkIHBh cmFtZXRlciAnYWx0cixtYXgtd2lkdGgnIik7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0g b2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJhbHRyLG1heC1oZWlnaHQiLCAmbWF4X2gpOworCWlm IChyZXQpIHsKKwkJZGV2X2VycihkZXYsCisJCQkiTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXIg J2FsdHIsbWF4LWhlaWdodCciKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBvZl9wcm9w ZXJ0eV9yZWFkX3UzMihucCwgImFsdHIsbWVtLXBvcnQtd2lkdGgiLCAmbWVtX3dvcmRfd2lkdGgp OworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRl ciAnYWx0cixtZW0tcG9ydC13aWR0aCAnIik7CisJCXJldHVybiByZXQ7CisJfQorCisJaWYgKCEo bWVtX3dvcmRfd2lkdGggPj0gMzIgJiYgbWVtX3dvcmRfd2lkdGggJSAzMiA9PSAwKSkgeworCQlk ZXZfZXJyKGRldiwKKwkJCSJtZW0td29yZC13aWR0aCBpcyBzZXQgdG8gJWkuIG11c3QgYmUgPj0g MzIgYW5kIG11bHRpcGxlIG9mIDMyLiIsCisJCQkgbWVtX3dvcmRfd2lkdGgpOworCQlyZXR1cm4g LUVOT0RFVjsKKwl9CisKKwlkcm0tPm1vZGVfY29uZmlnLm1pbl93aWR0aCA9IDY0MDsKKwlkcm0t Pm1vZGVfY29uZmlnLm1pbl9oZWlnaHQgPSA0ODA7CisJZHJtLT5tb2RlX2NvbmZpZy5tYXhfd2lk dGggPSBtYXhfdzsKKwlkcm0tPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSBtYXhfaDsKKwlkcm0t Pm1vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0aCA9IDMyOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgaW50ZWx2aXBmYl9vZl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQoreworCWludCByZXR2YWw7CisJc3RydWN0IHJlc291cmNlICpyZWdfcmVzOworCXN0cnVjdCBp bnRlbHZpcGZiX3ByaXYgKmZicHJpdjsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2 OworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CisKKwlmYnByaXYgPSBkZXZtX2t6YWxsb2MoZGV2 LCBzaXplb2YoKmZicHJpdiksIEdGUF9LRVJORUwpOworCWlmICghZmJwcml2KQorCQlyZXR1cm4g LUVOT01FTTsKKworCS8qc2V0dXAgRFJNICovCisJZHJtID0gZHJtX2Rldl9hbGxvYygmaW50ZWx2 aXBmYl9kcm0sIGRldik7CisJaWYgKElTX0VSUihkcm0pKQorCQlyZXR1cm4gUFRSX0VSUihkcm0p OworCisJcmV0dmFsID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChkcm0tPmRldiwgRE1BX0JJ VF9NQVNLKDMyKSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlmYnByaXYt PmRybSA9IGRybTsKKworCXJlZ19yZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9S RVNPVVJDRV9NRU0sIDApOworCWlmICghcmVnX3JlcykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlm YnByaXYtPmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZWdfcmVzKTsKKworCWlm IChJU19FUlIoZmJwcml2LT5iYXNlKSkgeworCQlkZXZfZXJyKGRldiwgImRldm1faW9yZW1hcF9y ZXNvdXJjZSBmYWlsZWRcbiIpOworCQlyZXR2YWwgPSBQVFJfRVJSKGZicHJpdi0+YmFzZSk7CisJ CXJldHVybiAtRU5PTUVNOworCX0KKworCWludGVsdmlwZmJfZHJtX3NldHVwKGRldiwgZmJwcml2 KTsKKworCWRldl9zZXRfZHJ2ZGF0YShkZXYsIGZicHJpdik7CisKKwlyZXR1cm4gaW50ZWx2aXBm Yl9wcm9iZShkZXYpOworfQorCitzdGF0aWMgaW50IGludGVsdmlwZmJfb2ZfcmVtb3ZlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJcmV0dXJuIGludGVsdmlwZmJfcmVtb3ZlKCZw ZGV2LT5kZXYpOworfQorCisvKgorICogVGhlIG5hbWUgdmlwLWZyYW1lLWJ1ZmZlci0yLjAgaXMg ZGVyaXZlZCBmcm9tCisgKiBodHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192 aXAucGRmCisgKiBmcmFtZSBidWZmZXIgSVAgY29yZXMgc2VjdGlvbiAxNAorICovCisKK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGludGVsdmlwZmJfb2ZfbWF0Y2hbXSA9IHsKKwl7 IC5jb21wYXRpYmxlID0gImFsdHIsdmlwLWZyYW1lLWJ1ZmZlci0yLjAiIH0sCisJe30sCit9Owor CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbnRlbHZpcGZiX29mX21hdGNoKTsKKworc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW50ZWx2aXBmYl9kcml2ZXIgPSB7CisJLnByb2JlID0g aW50ZWx2aXBmYl9vZl9wcm9iZSwKKwkucmVtb3ZlID0gaW50ZWx2aXBmYl9vZl9yZW1vdmUsCisJ LmRyaXZlciA9IHsKKwkJLm5hbWUgPSBEUklWRVJfTkFNRSwKKwkJLm9mX21hdGNoX3RhYmxlID0g aW50ZWx2aXBmYl9vZl9tYXRjaCwKKwl9LAorfTsKKworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihp bnRlbHZpcGZiX2RyaXZlcik7Ci0tIAoxLjcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==