From mboxrd@z Thu Jan 1 00:00:00 1970 From: CK Hu Subject: [PATCH 2/2] drm/bridge: Add IT6151 bridge driver Date: Wed, 11 Mar 2015 14:18:53 +0800 Message-ID: <1426054733-54378-2-git-send-email-ck.hu@mediatek.com> References: <1426054733-54378-1-git-send-email-ck.hu@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1426054733-54378-1-git-send-email-ck.hu@mediatek.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 , Mark Rutland , David Airlie Cc: devicetree@vger.kernel.org, Jitao Shi , Sascha Hauer , srv_heupstream@mediatek.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIGEgZHJtX2JyaWRnZSBkcml2ZXIgZm9yIHRoZSBJVDYxNTEgTUlQSSB0 byBlRFAKYnJpZGdlIGNoaXAuCgpTaWduZWQtb2ZmLWJ5OiBDSyBIdSA8Y2suaHVAbWVkaWF0ZWsu Y29tPgpTaWduZWQtb2ZmLWJ5OiBKaXRhbyBTaGkgPGppdGFvLnNoaUBtZWRpYXRlay5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnICB8ICAxMCArCiBkcml2ZXJzL2dwdS9k cm0vYnJpZGdlL01ha2VmaWxlIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaXQ2MTUx LmMgfCA2MDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVk ZS9kcm0vYnJpZGdlL2l0NjE1MS5oICAgICB8ICAzNCArKysKIDQgZmlsZXMgY2hhbmdlZCwgNjQ2 IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdl L2l0NjE1MS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vYnJpZGdlL2l0NjE1MS5o CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnIGIvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9LY29uZmlnCmluZGV4IGYzOGJiY2QuLjJiM2E3OGUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL0tjb25maWcKQEAgLTExLDMgKzExLDEzIEBAIGNvbmZpZyBEUk1fUFROMzQ2MAogCXNlbGVj dCBEUk1fUEFORUwKIAktLS1oZWxwLS0tCiAJICBwdG4zNDYwIGVEUC1MVkRTIGJyaWRnZSBjaGlw IGRyaXZlci4KKworY29uZmlnIERSTV9JVDYxNTEKKwlib29sICJFbmFibGUgSVQ2MTUxRk4gOiBN SVBJIHRvIGVEUCBDb252ZXJ0ZXIiCisJZGVwZW5kcyBvbiBEUk0KKwlzZWxlY3QgRFJNX0tNU19I RUxQRVIKKwloZWxwCisJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgSVQ2MTUxIGZv ciBkaXNwbGF5CisJICBUaGUgSVQ2MTUxIGlzIGEgaGlnaC1wZXJmb3JtYW5jZSBhbmQgbG93LXBv d2VyCisJICBNSVBJIHRvIGVEUCBjb252ZXJ0ZXIKKwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKaW5k ZXggZDhhOGNmZC4uOThlZGI3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9N YWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCkBAIC0yLDMgKzIs NCBAQCBjY2ZsYWdzLXkgOj0gLUlpbmNsdWRlL2RybQogCiBvYmotJChDT05GSUdfRFJNX1BUTjM0 NjApICs9IHB0bjM0NjAubwogb2JqLSQoQ09ORklHX0RSTV9EV19IRE1JKSArPSBkd19oZG1pLm8K K29iai0kKENPTkZJR19EUk1fSVQ2MTUxKSArPSBpdDYxNTEubwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9pdDYxNTEuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaXQ2MTUx LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM5ZmU0YgotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaXQ2MTUxLmMKQEAgLTAsMCArMSw2MDEg QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgTWVkaWFUZWsgSW5jLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisjaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvb2YuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9n cGlvLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgor I2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1 bWVyLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19o ZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX21p cGlfZHNpLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgorCisKKworI2RlZmluZSBNSVBJ X1JYX1NXX1JTVCAgICAgICAgICAgIDB4MDUKKyNkZWZpbmUgTUlQSV9SWF9JTlRfTUFTSyAgICAg ICAgICAweDA5CisjZGVmaW5lIE1JUElfUlhfU1lTX0NGRyAgICAgICAgICAgMHgwYworI2RlZmlu ZSBNSVBJX1JYX01DTEsgICAgICAgICAgICAgIDB4MTEKKyNkZWZpbmUgTUlQSV9SWF9QSFlfSUZf MSAgICAgICAgICAweDE5CisjZGVmaW5lIE1JUElfUlhfUEtUX0RFQyAgICAgICAgICAgMHgyNwor I2RlZmluZSBNSVBJX1JYX1VGT19CTEtfSElHSCAgICAgIDB4MjgKKyNkZWZpbmUgTUlQSV9SWF9V Rk9fQkxLX0xPVyAgICAgICAweDI5CisjZGVmaW5lIE1JUElfUlhfVUZPX0hERV9ERUxBWSAgICAg MHgyZQorI2RlZmluZSBNSVBJX1JYX1VGT19SRVNZTkMgICAgICAgIDB4MmYKKyNkZWZpbmUgTUlQ SV9SWF9SRVNZTkNfUE9MICAgICAgICAweDRlCisjZGVmaW5lIE1JUElfUlhfUENMS19IU0NMSyAg ICAgICAgMHg4MAorI2RlZmluZSBNSVBJX1JYX0FNUF9URVJNICAgICAgICAgIDB4ODQKKyNkZWZp bmUgTUlQSV9SWF9USU1FUl9JTlRfQ05UICAgICAweDkyCisKKyNkZWZpbmUgRFBfVFhfVkVOX0lE X0xPVyAgICAgICAgMHgwMAorI2RlZmluZSBEUF9UWF9WRU5fSURfSElHSCAgICAgICAweDAxCisj ZGVmaW5lIERQX1RYX0RFVl9JRF9MT1cgICAgICAgIDB4MDIKKyNkZWZpbmUgRFBfVFhfREVWX0lE X0hJR0ggICAgICAgMHgwMworI2RlZmluZSBEUF9UWF9SRVZfSUQgICAgICAgICAgICAweDA0Cisj ZGVmaW5lIERQX1RYX1NXX1JTVCAgICAgICAgICAgIDB4MDUKKyNkZWZpbmUgRFBfVFhfSU5UX1NU QV8wICAgICAgICAgMHgwNgorI2RlZmluZSBEUF9UWF9JTlRfU1RBXzEgICAgICAgICAweDA3Cisj ZGVmaW5lIERQX1RYX0lOVF9TVEFfMiAgICAgICAgIDB4MDgKKyNkZWZpbmUgRFBfVFhfSU5UX01B U0tfMCAgICAgICAgMHgwOQorI2RlZmluZSBEUF9UWF9JTlRfTUFTS18xICAgICAgICAweDBhCisj ZGVmaW5lIERQX1RYX0lOVF9NQVNLXzIgICAgICAgIDB4MGIKKyNkZWZpbmUgRFBfVFhfU1lTX0NG RyAgICAgICAgICAgMHgwYworI2RlZmluZSBEUF9UWF9TWVNfREJHICAgICAgICAgICAweDBmCisj ZGVmaW5lIERQX1RYX0xBTkUgICAgICAgICAgICAgIDB4MTYKKyNkZWZpbmUgRFBfVFhfVFJBSU4g ICAgICAgICAgICAgMHgxNworI2RlZmluZSBEUF9UWF9BVVhfQ0hfRklGTyAgICAgICAweDIxCisj ZGVmaW5lIERQX1RYX0FVWF9DTEsgICAgICAgICAgIDB4MjIKKyNkZWZpbmUgRFBfVFhfUENfUkVR X0ZJRk8gICAgICAgMHgyMworI2RlZmluZSBEUF9UWF9QQ19SRVFfT0ZTVF8wICAgICAweDI0Cisj ZGVmaW5lIERQX1RYX1BDX1JFUV9PRlNUXzEgICAgIDB4MjUKKyNkZWZpbmUgRFBfVFhfUENfUkVR X09GU1RfMiAgICAgMHgyNgorI2RlZmluZSBEUF9UWF9QQ19SRVFfV0RfMCAgICAgICAweDI3Cisj ZGVmaW5lIERQX1RYX1BDX1JFUV9TRUwgICAgICAgIDB4MmIKKyNkZWZpbmUgRFBfVFhfSERQICAg ICAgICAgICAgICAgMHgzYQorI2RlZmluZSBEUF9UWF9MTlBXREIgICAgICAgICAgICAweDVjCisj ZGVmaW5lIERQX1RYX0VRICAgICAgICAgICAgICAgIDB4NWYKKyNkZWZpbmUgRFBfVFhfQ09MX0NP TlZfMTkgICAgICAgMHg3NgorI2RlZmluZSBEUF9UWF9DT0xfQ09OVl8yMCAgICAgICAweDc3Cisj ZGVmaW5lIERQX1RYX1BHX0hfREVfRU5EX0wgICAgIDB4N2UKKyNkZWZpbmUgRFBfVFhfUEdfSF9E RV9FTkRfSCAgICAgMHg3ZgorI2RlZmluZSBEUF9UWF9QR19IX1NZTkNfU1RBUlRfTCAweDgwCisj ZGVmaW5lIERQX1RYX1BHX0hfU1lOQ19TVEFSVF9IIDB4ODEKKyNkZWZpbmUgRFBfVFhfUEdfSF9T WU5DX0VORF9MICAgMHg4MgorI2RlZmluZSBEUF9UWF9QR19IX1NZTkNfRU5EX0ggICAweDgzCisj ZGVmaW5lIERQX1RYX1BHX1ZfREVfRU5EX0wgICAgIDB4ODgKKyNkZWZpbmUgRFBfVFhfUEdfVl9E RV9FTkRfSCAgICAgMHg4OQorI2RlZmluZSBEUF9UWF9QR19WX0RFX1NUQVJUX0wgICAweDhhCisj ZGVmaW5lIERQX1RYX0lOX1ZET19UTV8xNSAgICAgIDB4YjUKKyNkZWZpbmUgRFBfVFhfSU5fVkRP X1RNXzE3ICAgICAgMHhiNworI2RlZmluZSBEUF9UWF9QU1JfQ1RSTF8wICAgICAgICAweGM0Cisj ZGVmaW5lIERQX1RYX1BTUl9DVFJMXzEgICAgICAgIDB4YzUKKyNkZWZpbmUgRFBfVFhfSERQX0lS UV9UTSAgICAgICAgMHhjOQorI2RlZmluZSBEUF9UWF9BVVhfREJHICAgICAgICAgICAweGNhCisj ZGVmaW5lIERQX1RYX0FVWF9NQVNURVIgICAgICAgIDB4Y2IKKyNkZWZpbmUgRFBfVFhfUEtUX09Q VCAgICAgICAgICAgMHhjZQorI2RlZmluZSBEUF9UWF9WRE9fRklGTyAgICAgICAgICAweGQzCisj ZGVmaW5lIERQX1RYX1ZET19TVE1QICAgICAgICAgIDB4ZDQKKyNkZWZpbmUgRFBfVFhfUEtUICAg ICAgICAgICAgICAgMHhlOAorI2RlZmluZSBEUF9UWF9QS1RfQVZJX1ZJQyAgICAgICAweGVjCisj ZGVmaW5lIERQX1RYX01JUElfUE9SVCAgICAgICAgIDB4ZmQKKworZW51bSB7CisJTUlQSV8xX0xB TkUgPSAwLAorCU1JUElfMl9MQU5FID0gMSwKKwlNSVBJXzNfTEFORSA9IDIsCisJTUlQSV80X0xB TkUgPSAzLAorfTsKKworZW51bSB7CisJUkdCXzI0YiAgICAgPSAweDNFLAorCVJHQl8zMGIgICAg ID0gMHgwRCwKKwlSR0JfMzZiICAgICA9IDB4MUQsCisJUkdCXzE4Yl9QICAgPSAweDFFLAorCVJH Ql8xOGJfTCAgID0gMHgyRSwKKwlZQ2JDcl8xNmIgICA9IDB4MkMsCisJWUNiQ3JfMjBiICAgPSAw eDBDLAorCVlDYkNyXzI0YiAgID0gMHgxQywKK307CisKK2VudW0geworCUJfSEJSICAgPSAwLAor CUJfTEJSICAgPSAxLAorfTsKKworZW51bSB7CisJQl8xX0xBTkUgICAgPSAwLAorCUJfMl9MQU5F ICAgID0gMSwKKwlCXzRfTEFORSAgICA9IDMsCit9OworCitlbnVtIHsKKwlCX1NTQ19ESVNBQkxF ICAgPSAwLAorCUJfU1NDX0VOQUJMRSAgICA9IDEsCit9OworCitzdHJ1Y3QgaXQ2MTUxX2RyaXZl cl9kYXRhIHsKKwl1OCB0cmFpbmluZ19iaXRyYXRlOworCXU4IGRwdHhfc3NjX3NldHRpbmc7CisJ dTggbXBfbWNsa19pbnY7CisJdTggbXBfY29udGludW91c19jbGs7CisJdTggbXBfbGFuZV9kZXNr ZXc7CisJdTggbXBfcGNsa19kaXY7CisJdTggbXBfbGFuZV9zd2FwOworCXU4IG1wX3BuX3N3YXA7 CisKKwl1OCBkcF9wbl9zd2FwOworCXU4IGRwX2F1eF9wbl9zd2FwOworCXU4IGRwX2xhbmVfc3dh cDsKKwl1OCBpbnRfbWFzazsKKwl1OCBtaXBpX2ludF9tYXNrOworCXU4IHRpbWVyX2NudDsKKwor CXUxNiBwYW5lbF93aWR0aDsKKwl1OCB2aWM7CisJdTggbXBfaHBvbDsKKwl1OCBtcF92cG9sOwor CXU4IG1pcGlfbGFuZV9jb3VudDsKKwl1OCBkcHR4X2xhbmVfY291bnQ7CisJdTggZW5fdWZvOwor CXU4IG1pcGlfcGFja2VkX2ZtdDsKKwl1OCBtcF9oX3Jlc3luYzsKKwl1OCBtcF92X3Jlc3luYzsK K307CisKK3N0cnVjdCBpdDYxNTFfYnJpZGdlIHsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25u ZWN0b3I7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXI7CisJc3RydWN0IGl0NjE1MV9kcml2ZXJfZGF0YSAqZHJpdmVyX2RhdGE7CisJaW50 IGdwaW9fcnN0X247CisJdTE2IHJ4X3JlZzsKKwl1MTYgdHhfcmVnOworCWJvb2wgZW5hYmxlZDsK K307CisKK3N0YXRpYyBpbnQgaXQ2MTUxX3JlZ3Ioc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwg dTE2IGkyY19hZGRyLAorCXU4IHJlZywgdTggKnZhbHVlKQoreworCWludCByOworCXU4IHR4X2Rh dGFbXSA9IHsKKwkJcmVnLAorCX07CisJdTggcnhfZGF0YVsxXTsKKwlzdHJ1Y3QgaTJjX21zZyBt c2dzW10gPSB7CisJCXsKKwkJCS5hZGRyID0gaTJjX2FkZHIsCisJCQkuZmxhZ3MgPSAwLAorCQkJ LmJ1ZiA9IHR4X2RhdGEsCisJCQkubGVuID0gQVJSQVlfU0laRSh0eF9kYXRhKSwKKwkJfSwKKwkJ eworCQkJLmFkZHIgPSBpMmNfYWRkciwKKwkJCS5mbGFncyA9IEkyQ19NX1JELAorCQkJLmJ1ZiA9 IHJ4X2RhdGEsCisJCQkubGVuID0gQVJSQVlfU0laRShyeF9kYXRhKSwKKwkJIH0sCisJfTsKKwor CXIgPSBpMmNfdHJhbnNmZXIoY2xpZW50LT5hZGFwdGVyLCBtc2dzLCBBUlJBWV9TSVpFKG1zZ3Mp KTsKKwlpZiAociA8IDApIHsKKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICIlczogcmVnIDB4JTAy eCBlcnJvciAlZFxuIiwgX19mdW5jX18sCisJCQlyZWcsIHIpOworCQlyZXR1cm4gcjsKKwl9CisK KwlpZiAociA8IEFSUkFZX1NJWkUobXNncykpIHsKKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICIl czogcmVnIDB4JTAyeCBtc2dzICVkXG4iLCBfX2Z1bmNfXywKKwkJCXJlZywgcik7CisJCXJldHVy biAtRUFHQUlOOworCX0KKworCSp2YWx1ZSA9IHJ4X2RhdGFbMF07CisKKwlkZXZfZGJnKCZjbGll bnQtPmRldiwgIiVzOiByZWcgMHglMDJ4IHZhbHVlIDB4JTAyeFxuIiwgX19mdW5jX18sCisJCXJl ZywgKnZhbHVlKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGl0NjE1MV9yZWd3KHN0 cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHUxNiBpMmNfYWRkciwKKwl1OCByZWcsIHU4IHZhbHVl KQoreworCWludCByOworCXU4IHR4X2RhdGFbXSA9IHsKKwkJcmVnLAorCQl2YWx1ZSwKKwl9Owor CXN0cnVjdCBpMmNfbXNnIG1zZ3NbXSA9IHsKKwkJeworCQkJLmFkZHIgPSBpMmNfYWRkciwKKwkJ CS5mbGFncyA9IDAsCisJCQkuYnVmID0gdHhfZGF0YSwKKwkJCS5sZW4gPSBBUlJBWV9TSVpFKHR4 X2RhdGEpLAorCQl9LAorCX07CisKKwlyID0gaTJjX3RyYW5zZmVyKGNsaWVudC0+YWRhcHRlciwg bXNncywgQVJSQVlfU0laRShtc2dzKSk7CisJaWYgKHIgPCAwKSB7CisJCWRldl9lcnIoJmNsaWVu dC0+ZGV2LCAiJXM6IHJlZyAweCUwMnggdmFsIDB4JTAyeCBlcnJvciAlZFxuIiwKKwkJCV9fZnVu Y19fLCByZWcsIHZhbHVlLCByKTsKKwkJcmV0dXJuIHI7CisJfQorCisJZGV2X2RiZygmY2xpZW50 LT5kZXYsICIlczogcmVnIDB4JTAyeCB2YWwgMHglMDJ4XG4iLAorCQkJX19mdW5jX18sIHJlZywg dmFsdWUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSBpdDYxNTFfZHJtX2RlZmF1bHRfbW9kZXNbXSA9IHsKKwkvKiAxMzY4eDc2OEA2MEh6 ICovCisJeyBEUk1fTU9ERSgiMTM2OHg3NjgiLCBEUk1fTU9ERV9UWVBFX0RSSVZFUiwgNzIwNzAs CisJCTEzNjgsIDEzNjggKyA1OCwgMTM2OCArIDU4ICsgNTgsIDEzNjggKyA1OCArIDU4ICsgNTgs IDAsCisJCTc2OCwgNzY4ICsgNCwgNzY4ICsgNCArIDQsIDc2OCArIDQgKyA0ICsgNCwgMCwgMCkg fSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgaXQ2MTUxX2RyaXZlcl9kYXRhIGl0NjE1MV9kcml2ZXJf ZGF0YV8xMzY4eDc2OCA9IHsKKwkudHJhaW5pbmdfYml0cmF0ZSA9IEJfSEJSLAorCS5kcHR4X3Nz Y19zZXR0aW5nID0gQl9TU0NfRU5BQkxFLAorCS5tcF9tY2xrX2ludiA9IDEsCisJLm1wX2NvbnRp bnVvdXNfY2xrID0gMSwKKwkubXBfbGFuZV9kZXNrZXcgPSAxLAorCS5tcF9wY2xrX2RpdiA9IDIs CisJLm1wX2xhbmVfc3dhcCA9IDAsCisJLm1wX3BuX3N3YXAgPSAwLAorCisJLmRwX3BuX3N3YXAg PSAwLAorCS5kcF9hdXhfcG5fc3dhcCA9IDAsCisJLmRwX2xhbmVfc3dhcCA9IDAsCisJLmludF9t YXNrID0gMywKKwkubWlwaV9pbnRfbWFzayA9IDAsCisJLnRpbWVyX2NudCA9IDB4YSwKKworCS5w YW5lbF93aWR0aCA9IDEzNjgsCisJLnZpYyA9IDAsCisJLm1wX2hwb2wgPSAwLAorCS5tcF92cG9s ID0gMSwKKwkubWlwaV9sYW5lX2NvdW50ID0gTUlQSV80X0xBTkUsCisJLmRwdHhfbGFuZV9jb3Vu dCA9IEJfMV9MQU5FLAorCS5lbl91Zm8gPSAwLAorCS5taXBpX3BhY2tlZF9mbXQgPSBSR0JfMjRi LAorCS5tcF9oX3Jlc3luYyA9IDEsCisJLm1wX3ZfcmVzeW5jID0gMCwKK307CisKK3N0YXRpYyBz dHJ1Y3QgaXQ2MTUxX2RyaXZlcl9kYXRhICppdDYxNTFfZ2V0X2RyaXZlcl9kYXRhKHZvaWQpCit7 CisJcmV0dXJuICZpdDYxNTFfZHJpdmVyX2RhdGFfMTM2OHg3Njg7Cit9CisKK3N0YXRpYyBpbnQg aXQ2MTUxX2NoZWNrX3ZhbGlkX2lkKHN0cnVjdCBpdDYxNTFfYnJpZGdlICppdGVfYnJpZGdlKQor eworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBpdGVfYnJpZGdlLT5jbGllbnQ7CisJdTE2 IHR4X3JlZyA9IGl0ZV9icmlkZ2UtPnR4X3JlZzsKKwl1OCB2ZW5faWRfbG93LCB2ZW5faWRfaGln aCwgZGV2X2lkX2xvdywgZGV2X2lkX2hpZ2g7CisJaW50IHJldHJ5X2NudCA9IDA7CisKKwlkbyB7 CisJCWl0NjE1MV9yZWdyKGNsaWVudCwgdHhfcmVnLCBEUF9UWF9WRU5fSURfTE9XLCAmdmVuX2lk X2xvdyk7CisJCWlmICh2ZW5faWRfbG93ICE9IDB4NTQpCisJCQlEUk1fRVJST1IoInZlbl9pZF9s b3cgPSAweCV4XG4iLCB2ZW5faWRfbG93KTsKKwl9IHdoaWxlICgocmV0cnlfY250KysgPCAxMCkg JiYgKHZlbl9pZF9sb3cgIT0gMHg1NCkpOworCisJaXQ2MTUxX3JlZ3IoY2xpZW50LCB0eF9yZWcs IERQX1RYX1ZFTl9JRF9ISUdILCAmdmVuX2lkX2hpZ2gpOworCWl0NjE1MV9yZWdyKGNsaWVudCwg dHhfcmVnLCBEUF9UWF9ERVZfSURfTE9XLCAmZGV2X2lkX2xvdyk7CisJaXQ2MTUxX3JlZ3IoY2xp ZW50LCB0eF9yZWcsIERQX1RYX0RFVl9JRF9ISUdILCAmZGV2X2lkX2hpZ2gpOworCisJaWYgKCh2 ZW5faWRfbG93ID09IDB4NTQpICYmICh2ZW5faWRfaGlnaCA9PSAweDQ5KSAmJgorCQkoZGV2X2lk X2xvdyA9PSAweDUxKSAmJiAoZGV2X2lkX2hpZ2ggPT0gMHg2MSkpCisJCXJldHVybiAxOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGl0NjE1MV9taXBpcnhfaW5pdChzdHJ1Y3QgaXQ2 MTUxX2JyaWRnZSAqaXRlX2JyaWRnZSkKK3sKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0g aXRlX2JyaWRnZS0+Y2xpZW50OworCXN0cnVjdCBpdDYxNTFfZHJpdmVyX2RhdGEgKmRydl9kYXRh ID0gaXRlX2JyaWRnZS0+ZHJpdmVyX2RhdGE7CisJdTE2IHJ4X3JlZyA9IGl0ZV9icmlkZ2UtPnJ4 X3JlZzsKKwl1MTYgdHhfcmVnID0gaXRlX2JyaWRnZS0+dHhfcmVnOworCXVuc2lnbmVkIGNoYXIg cmV2X2lkOworCisJaXQ2MTUxX3JlZ3IoY2xpZW50LCB0eF9yZWcsIERQX1RYX1JFVl9JRCwgJnJl dl9pZCk7CisKKwlpdDYxNTFfcmVndyhjbGllbnQsIHJ4X3JlZywgTUlQSV9SWF9TV19SU1QsIDB4 MDApOworCWl0NjE1MV9yZWd3KGNsaWVudCwgcnhfcmVnLCBNSVBJX1JYX1NZU19DRkcsCisJCShk cnZfZGF0YS0+bXBfbGFuZV9zd2FwIDw8IDcpIHwgKGRydl9kYXRhLT5tcF9wbl9zd2FwIDw8IDYp IHwKKwkJKGRydl9kYXRhLT5taXBpX2xhbmVfY291bnQgPDwgNCkgfCBkcnZfZGF0YS0+ZW5fdWZv KTsKKwlpdDYxNTFfcmVndyhjbGllbnQsIHJ4X3JlZywgTUlQSV9SWF9NQ0xLLCBkcnZfZGF0YS0+ bXBfbWNsa19pbnYpOworCisJaWYgKHJldl9pZCA9PSAweEExKQorCQlpdDYxNTFfcmVndyhjbGll bnQsIHJ4X3JlZywKKwkJCU1JUElfUlhfUEhZX0lGXzEsIGRydl9kYXRhLT5tcF9sYW5lX2Rlc2tl dyk7CisJZWxzZQorCQlpdDYxNTFfcmVndyhjbGllbnQsIHJ4X3JlZywKKwkJCU1JUElfUlhfUEhZ X0lGXzEsCisJCQkoZHJ2X2RhdGEtPm1wX2NvbnRpbnVvdXNfY2xrIDw8IDEpIHwKKwkJCWRydl9k YXRhLT5tcF9sYW5lX2Rlc2tldyk7CisKKwlpdDYxNTFfcmVndyhjbGllbnQsIHJ4X3JlZywgTUlQ SV9SWF9QS1RfREVDLCBkcnZfZGF0YS0+bWlwaV9wYWNrZWRfZm10KTsKKwlpdDYxNTFfcmVndyhj bGllbnQsIHJ4X3JlZywgTUlQSV9SWF9VRk9fQkxLX0hJR0gsCisJCSgoZHJ2X2RhdGEtPnBhbmVs X3dpZHRoLzQtMSk+PjIpJjB4QzApOworCWl0NjE1MV9yZWd3KGNsaWVudCwgcnhfcmVnLCBNSVBJ X1JYX1VGT19CTEtfTE9XLAorCQkoZHJ2X2RhdGEtPnBhbmVsX3dpZHRoLzQtMSkmMHhGRik7CisJ aXQ2MTUxX3JlZ3coY2xpZW50LCByeF9yZWcsIE1JUElfUlhfVUZPX0hERV9ERUxBWSwgMHgzNCk7 CisJaXQ2MTUxX3JlZ3coY2xpZW50LCByeF9yZWcsIE1JUElfUlhfVUZPX1JFU1lOQywgMHgwMSk7 CisJaXQ2MTUxX3JlZ3coY2xpZW50LCByeF9yZWcsIE1JUElfUlhfUkVTWU5DX1BPTCwKKwkJKGRy dl9kYXRhLT5tcF92X3Jlc3luYzw8Myl8KGRydl9kYXRhLT5tcF9oX3Jlc3luYzw8Mil8CisJCShk cnZfZGF0YS0+bXBfdnBvbDw8MSl8KGRydl9kYXRhLT5tcF9ocG9sKSk7CisJaXQ2MTUxX3JlZ3co Y2xpZW50LCByeF9yZWcsIE1JUElfUlhfUENMS19IU0NMSywKKwkJKGRydl9kYXRhLT5lbl91Zm88 PDUpfGRydl9kYXRhLT5tcF9wY2xrX2Rpdik7CisJaXQ2MTUxX3JlZ3coY2xpZW50LCByeF9yZWcs IE1JUElfUlhfQU1QX1RFUk0sIDB4OGYpOworCWl0NjE1MV9yZWd3KGNsaWVudCwgcnhfcmVnLCBN SVBJX1JYX0lOVF9NQVNLLCBkcnZfZGF0YS0+bWlwaV9pbnRfbWFzayk7CisJaXQ2MTUxX3JlZ3co Y2xpZW50LCByeF9yZWcsIE1JUElfUlhfVElNRVJfSU5UX0NOVCwgZHJ2X2RhdGEtPnRpbWVyX2Nu dCk7Cit9CisKK3N0YXRpYyB2b2lkIGl0NjE1MV9kcHR4X2luaXQoc3RydWN0IGl0NjE1MV9icmlk Z2UgKml0ZV9icmlkZ2UpCit7CisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IGl0ZV9icmlk Z2UtPmNsaWVudDsKKwlzdHJ1Y3QgaXQ2MTUxX2RyaXZlcl9kYXRhICpkcnZfZGF0YSA9IGl0ZV9i cmlkZ2UtPmRyaXZlcl9kYXRhOworCXUxNiB0eF9yZWcgPSBpdGVfYnJpZGdlLT50eF9yZWc7CisK KwlpdDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfU1dfUlNULCAweDI5KTsKKwlpdDYx NTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfU1dfUlNULCAweDAwKTsKKwlpdDYxNTFfcmVn dyhjbGllbnQsIHR4X3JlZywgRFBfVFhfSU5UX01BU0tfMCwgZHJ2X2RhdGEtPmludF9tYXNrKTsK KwlpdDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfSU5UX01BU0tfMSwgMHgwMCk7CisJ aXQ2MTUxX3JlZ3coY2xpZW50LCB0eF9yZWcsIERQX1RYX0lOVF9NQVNLXzIsIDB4MDApOworCWl0 NjE1MV9yZWd3KGNsaWVudCwgdHhfcmVnLCBEUF9UWF9QU1JfQ1RSTF8xLCAweGMxKTsKKwlpdDYx NTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfSU5fVkRPX1RNXzE1LCAweDAwKTsKKwlpdDYx NTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfSU5fVkRPX1RNXzE3LCAweDgwKTsKKwlpdDYx NTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfUFNSX0NUUkxfMCwgMHhGMCk7CisJaXQ2MTUx X3JlZ3coY2xpZW50LCB0eF9yZWcsIERQX1RYX0lOVF9TVEFfMCwgMHhGRik7CisJaXQ2MTUxX3Jl Z3coY2xpZW50LCB0eF9yZWcsIERQX1RYX0lOVF9TVEFfMSwgMHhGRik7CisJaXQ2MTUxX3JlZ3co Y2xpZW50LCB0eF9yZWcsIERQX1RYX0lOVF9TVEFfMiwgMHhGRik7CisJaXQ2MTUxX3JlZ3coY2xp ZW50LCB0eF9yZWcsIERQX1RYX1NXX1JTVCwgMHgwMCk7CisJaXQ2MTUxX3JlZ3coY2xpZW50LCB0 eF9yZWcsIERQX1RYX1NZU19DRkcsIDB4MDgpOworCWl0NjE1MV9yZWd3KGNsaWVudCwgdHhfcmVn LCBEUF9UWF9BVVhfQ0hfRklGTywgMHgwNSk7CisJaXQ2MTUxX3JlZ3coY2xpZW50LCB0eF9yZWcs IERQX1RYX0hEUCwgMHgwNCk7CisJaXQ2MTUxX3JlZ3coY2xpZW50LCB0eF9yZWcsIERQX1RYX0VR LCAweDA2KTsKKwlpdDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfSERQX0lSUV9UTSwg MHhmNSk7CisJaXQ2MTUxX3JlZ3coY2xpZW50LCB0eF9yZWcsIERQX1RYX0FVWF9EQkcsIDB4NGMp OworCWl0NjE1MV9yZWd3KGNsaWVudCwgdHhfcmVnLCBEUF9UWF9BVVhfTUFTVEVSLCAweDM3KTsK KwlpdDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfUEtUX09QVCwgMHg4MCk7CisJaXQ2 MTUxX3JlZ3coY2xpZW50LCB0eF9yZWcsIERQX1RYX1ZET19GSUZPLCAweDAzKTsKKwlpdDYxNTFf cmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfVkRPX1NUTVAsIDB4NjApOworCWl0NjE1MV9yZWd3 KGNsaWVudCwgdHhfcmVnLCBEUF9UWF9QS1QsIDB4MTEpOworCWl0NjE1MV9yZWd3KGNsaWVudCwg dHhfcmVnLCBEUF9UWF9QS1RfQVZJX1ZJQywgZHJ2X2RhdGEtPnZpYyk7CisJbWRlbGF5KDUpOwor CWl0NjE1MV9yZWd3KGNsaWVudCwgdHhfcmVnLCBEUF9UWF9QQ19SRVFfRklGTywgMHg0Mik7CisJ aXQ2MTUxX3JlZ3coY2xpZW50LCB0eF9yZWcsIERQX1RYX1BDX1JFUV9PRlNUXzAsIDB4MDcpOwor CWl0NjE1MV9yZWd3KGNsaWVudCwgdHhfcmVnLCBEUF9UWF9QQ19SRVFfT0ZTVF8xLCAweDAxKTsK KwlpdDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfUENfUkVRX09GU1RfMiwgMHgwMCk7 CisJaXQ2MTUxX3JlZ3coY2xpZW50LCB0eF9yZWcsIERQX1RYX1BDX1JFUV9XRF8wLCAweDEwKTsK KwlpdDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfUENfUkVRX1NFTCwgMHgwNSk7CisJ aXQ2MTUxX3JlZ3coY2xpZW50LCB0eF9yZWcsIERQX1RYX1BDX1JFUV9GSUZPLCAweDQwKTsKKwlp dDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfQVVYX0NMSywKKwkJKGRydl9kYXRhLT5k cF9hdXhfcG5fc3dhcDw8Myl8KGRydl9kYXRhLT5kcF9wbl9zd2FwPDwyKXwweDAzKTsKKwlpdDYx NTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfTEFORSwKKwkJKGRydl9kYXRhLT5kcHR4X3Nz Y19zZXR0aW5nPDw0KXwoZHJ2X2RhdGEtPmRwX2xhbmVfc3dhcDw8Myl8CisJCShkcnZfZGF0YS0+ ZHB0eF9sYW5lX2NvdW50PDwxKXxkcnZfZGF0YS0+dHJhaW5pbmdfYml0cmF0ZSk7CisJaXQ2MTUx X3JlZ3coY2xpZW50LCB0eF9yZWcsIERQX1RYX1NZU19EQkcsIDB4MDEpOworCWl0NjE1MV9yZWd3 KGNsaWVudCwgdHhfcmVnLCBEUF9UWF9DT0xfQ09OVl8xOSwgMHhhNyk7CisJaXQ2MTUxX3JlZ3co Y2xpZW50LCB0eF9yZWcsIERQX1RYX0NPTF9DT05WXzIwLCAweGFmKTsKKwlpdDYxNTFfcmVndyhj bGllbnQsIHR4X3JlZywgRFBfVFhfUEdfSF9ERV9FTkRfTCwgMHg4Zik7CisJaXQ2MTUxX3JlZ3co Y2xpZW50LCB0eF9yZWcsIERQX1RYX1BHX0hfREVfRU5EX0gsIDB4MDcpOworCWl0NjE1MV9yZWd3 KGNsaWVudCwgdHhfcmVnLCBEUF9UWF9QR19IX1NZTkNfU1RBUlRfTCwgMHhlZik7CisJaXQ2MTUx X3JlZ3coY2xpZW50LCB0eF9yZWcsIERQX1RYX1BHX0hfU1lOQ19TVEFSVF9ILCAweDVmKTsKKwlp dDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfUEdfSF9TWU5DX0VORF9MLCAweGVmKTsK KwlpdDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfUEdfSF9TWU5DX0VORF9ILCAweDA3 KTsKKwlpdDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfUEdfVl9ERV9FTkRfTCwgMHgz OCk7CisJaXQ2MTUxX3JlZ3coY2xpZW50LCB0eF9yZWcsIERQX1RYX1BHX1ZfREVfRU5EX0gsIDB4 MWYpOworCWl0NjE1MV9yZWd3KGNsaWVudCwgdHhfcmVnLCBEUF9UWF9QR19WX0RFX1NUQVJUX0ws IDB4NDgpOworCWl0NjE1MV9yZWd3KGNsaWVudCwgdHhfcmVnLCBEUF9UWF9TWVNfREJHLCAweDAw KTsKKwlpdDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfTE5QV0RCLCAweGYzKTsKKwlp dDYxNTFfcmVndyhjbGllbnQsIHR4X3JlZywgRFBfVFhfVFJBSU4sIDB4MDQpOworCWl0NjE1MV9y ZWd3KGNsaWVudCwgdHhfcmVnLCBEUF9UWF9UUkFJTiwgMHgwMSk7CisJbWRlbGF5KDUpOworfQor CitzdGF0aWMgaW50IGl0NjE1MV9iZGdfZW5hYmxlKHN0cnVjdCBpdDYxNTFfYnJpZGdlICppdGVf YnJpZGdlKQoreworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBpdGVfYnJpZGdlLT5jbGll bnQ7CisJdTE2IHR4X3JlZyA9IGl0ZV9icmlkZ2UtPnR4X3JlZzsKKworCWlmIChpdDYxNTFfY2hl Y2tfdmFsaWRfaWQoaXRlX2JyaWRnZSkpIHsKKwkJaXQ2MTUxX3JlZ3coY2xpZW50LCB0eF9yZWcs IERQX1RYX1NXX1JTVCwgMHgwNCk7CisJCWl0NjE1MV9yZWd3KGNsaWVudCwgdHhfcmVnLCBEUF9U WF9NSVBJX1BPUlQsCisJCQkoaXRlX2JyaWRnZS0+cnhfcmVnPDwxKXwxKTsKKworCQlpdDYxNTFf bWlwaXJ4X2luaXQoaXRlX2JyaWRnZSk7CisJCWl0NjE1MV9kcHR4X2luaXQoaXRlX2JyaWRnZSk7 CisKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgdm9pZCBpdDYx NTFfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQoreworCS8qIGRybSBmcmFt ZXdvcmsgZG9lc24ndCBjaGVjayBOVUxMLiAqLworfQorCitzdGF0aWMgdm9pZCBpdDYxNTFfZW5h YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCit7CisJc3RydWN0IGl0NjE1MV9icmlkZ2Ug Kml0ZV9icmlkZ2UgPSBicmlkZ2UtPmRyaXZlcl9wcml2YXRlOworCisJZ3Bpb19kaXJlY3Rpb25f b3V0cHV0KGl0ZV9icmlkZ2UtPmdwaW9fcnN0X24sIDApOworCXVkZWxheSgxNSk7CisJZ3Bpb19k aXJlY3Rpb25fb3V0cHV0KGl0ZV9icmlkZ2UtPmdwaW9fcnN0X24sIDEpOworCisJaXQ2MTUxX2Jk Z19lbmFibGUoaXRlX2JyaWRnZSk7CisKKwlpdGVfYnJpZGdlLT5lbmFibGVkID0gdHJ1ZTsKK30K Kworc3RhdGljIHZvaWQgaXQ2MTUxX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkK K3sKKwlzdHJ1Y3QgaXQ2MTUxX2JyaWRnZSAqaXRlX2JyaWRnZSA9IGJyaWRnZS0+ZHJpdmVyX3By aXZhdGU7CisKKwlpZiAoIWl0ZV9icmlkZ2UtPmVuYWJsZWQpCisJCXJldHVybjsKKworCWl0ZV9i cmlkZ2UtPmVuYWJsZWQgPSBmYWxzZTsKKworCWlmIChncGlvX2lzX3ZhbGlkKGl0ZV9icmlkZ2Ut PmdwaW9fcnN0X24pKQorCQlncGlvX3NldF92YWx1ZShpdGVfYnJpZGdlLT5ncGlvX3JzdF9uLCAx KTsKK30KKworc3RhdGljIHZvaWQgaXQ2MTUxX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlKQoreworCS8qIGRybSBmcmFtZXdvcmsgZG9lc24ndCBjaGVjayBOVUxMLiAqLwor fQorCitzdGF0aWMgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgaXQ2MTUxX2JyaWRnZV9mdW5jcyA9 IHsKKwkucHJlX2VuYWJsZSA9IGl0NjE1MV9wcmVfZW5hYmxlLAorCS5lbmFibGUgPSBpdDYxNTFf ZW5hYmxlLAorCS5kaXNhYmxlID0gaXQ2MTUxX2Rpc2FibGUsCisJLnBvc3RfZGlzYWJsZSA9IGl0 NjE1MV9wb3N0X2Rpc2FibGUsCit9OworCitzdGF0aWMgaW50IGl0NjE1MV9nZXRfbW9kZXMoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqcHRyID0gJml0NjE1MV9kcm1fZGVmYXVsdF9tb2Rlc1swXTsKKwlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZTsKKwlpbnQgY291bnQgPSAwOworCisJbW9kZSA9IGRybV9tb2Rl X2R1cGxpY2F0ZShjb25uZWN0b3ItPmRldiwgcHRyKTsKKwlpZiAobW9kZSkgeworCQlkcm1fbW9k ZV9wcm9iZWRfYWRkKGNvbm5lY3RvciwgbW9kZSk7CisJCWNvdW50Kys7CisJfQorCisJY29ubmVj dG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSBtb2RlLT5oZGlzcGxheTsKKwljb25uZWN0b3It PmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSBtb2RlLT52ZGlzcGxheTsKKworCXJldHVybiBjb3Vu dDsKK30KKworc3RhdGljIGludCBpdDYxNTFfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAorCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlyZXR1 cm4gTU9ERV9PSzsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqaXQ2MTUxX2Jlc3Rf ZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpdDYx NTFfYnJpZGdlICppdGVfYnJpZGdlOworCisJaXRlX2JyaWRnZSA9IGNvbnRhaW5lcl9vZihjb25u ZWN0b3IsIHN0cnVjdCBpdDYxNTFfYnJpZGdlLCBjb25uZWN0b3IpOworCXJldHVybiBpdGVfYnJp ZGdlLT5lbmNvZGVyOworfQorCitzdGF0aWMgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1 bmNzIGl0NjE1MV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0geworCS5nZXRfbW9kZXMgPSBpdDYx NTFfZ2V0X21vZGVzLAorCS5tb2RlX3ZhbGlkID0gaXQ2MTUxX21vZGVfdmFsaWQsCisJLmJlc3Rf ZW5jb2RlciA9IGl0NjE1MV9iZXN0X2VuY29kZXIsCit9OworCitzdGF0aWMgZW51bSBkcm1fY29u bmVjdG9yX3N0YXR1cyBpdDYxNTFfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsCisJCWJvb2wgZm9yY2UpCit7CisJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVk OworfQorCitzdGF0aWMgdm9pZCBpdDYxNTFfY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9y KTsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGl0NjE1MV9jb25uZWN0 b3JfZnVuY3MgPSB7CisJLmRwbXMgPSBkcm1faGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAorCS5maWxs X21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLAorCS5kZXRl Y3QgPSBpdDYxNTFfZGV0ZWN0LAorCS5kZXN0cm95ID0gaXQ2MTUxX2Nvbm5lY3Rvcl9kZXN0cm95 LAorfTsKKworaW50IGl0NjE1MV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwKKwlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBzdHJ1Y3Qg ZGV2aWNlX25vZGUgKm5vZGUpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlOworCXN0cnVjdCBpdDYxNTFfYnJpZGdlICppdGVfYnJpZGdlOworCXUzMiByeF9yZWcsIHR4 X3JlZzsKKworCWJyaWRnZSA9IGRldm1fa3phbGxvYyhkZXYtPmRldiwgc2l6ZW9mKCpicmlkZ2Up LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJyaWRnZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpdGVf YnJpZGdlID0gZGV2bV9remFsbG9jKGRldi0+ZGV2LCBzaXplb2YoKml0ZV9icmlkZ2UpLCBHRlBf S0VSTkVMKTsKKwlpZiAoIWl0ZV9icmlkZ2UpCisJCXJldHVybiAtRU5PTUVNOworCisJaXRlX2Jy aWRnZS0+ZW5jb2RlciA9IGVuY29kZXI7CisJaXRlX2JyaWRnZS0+Y2xpZW50ID0gY2xpZW50Owor CWl0ZV9icmlkZ2UtPmRyaXZlcl9kYXRhID0gaXQ2MTUxX2dldF9kcml2ZXJfZGF0YSgpOworCisJ aXRlX2JyaWRnZS0+Z3Bpb19yc3RfbiA9IG9mX2dldF9uYW1lZF9ncGlvKG5vZGUsICJyZXNldC1n cGlvIiwgMCk7CisJaWYgKGdwaW9faXNfdmFsaWQoaXRlX2JyaWRnZS0+Z3Bpb19yc3RfbikpIHsK KwkJcmV0ID0gZ3Bpb19yZXF1ZXN0X29uZShpdGVfYnJpZGdlLT5ncGlvX3JzdF9uLAorCQkJR1BJ T0ZfT1VUX0lOSVRfTE9XLCAibXRrX3JzdCIpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsK Kwl9CisKKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2RlLCAicmVnIiwJJnR4X3JlZyk7 CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoIkNhbid0IHJlYWQgcmVnIHZhbHVlXG4iKTsKKwkJ Z290byBlcnI7CisJfQorCWl0ZV9icmlkZ2UtPnR4X3JlZyA9IHR4X3JlZzsKKworCXJldCA9IG9m X3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJyeHJlZyIsICZyeF9yZWcpOworCWlmIChyZXQpIHsK KwkJRFJNX0VSUk9SKCJDYW4ndCByZWFkIHJ4cmVnIHZhbHVlXG4iKTsKKwkJZ290byBlcnI7CisJ fQorCWl0ZV9icmlkZ2UtPnJ4X3JlZyA9IHJ4X3JlZzsKKworCWJyaWRnZS0+ZnVuY3MgPSAmaXQ2 MTUxX2JyaWRnZV9mdW5jczsKKwlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChkZXYsIGJyaWRnZSk7 CisJaWYgKHJldCkKKwkJZ290byBlcnI7CisKKwlicmlkZ2UtPmRyaXZlcl9wcml2YXRlID0gaXRl X2JyaWRnZTsKKwllbmNvZGVyLT5icmlkZ2UgPSBicmlkZ2U7CisKKwlyZXQgPSBkcm1fY29ubmVj dG9yX2luaXQoZGV2LCAmaXRlX2JyaWRnZS0+Y29ubmVjdG9yLAorCQkmaXQ2MTUxX2Nvbm5lY3Rv cl9mdW5jcywgRFJNX01PREVfQ09OTkVDVE9SX2VEUCk7CisJaWYgKHJldCkKKwkJZ290byBlcnI7 CisKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoJml0ZV9icmlkZ2UtPmNvbm5lY3RvciwKKwkJ Jml0NjE1MV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKKwlkcm1fY29ubmVjdG9yX3JlZ2lzdGVy KCZpdGVfYnJpZGdlLT5jb25uZWN0b3IpOworCWRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5j b2RlcigmaXRlX2JyaWRnZS0+Y29ubmVjdG9yLCBlbmNvZGVyKTsKKworCXJldHVybiAwOworCitl cnI6CisJaWYgKGdwaW9faXNfdmFsaWQoaXRlX2JyaWRnZS0+Z3Bpb19yc3RfbikpCisJCWdwaW9f ZnJlZShpdGVfYnJpZGdlLT5ncGlvX3JzdF9uKTsKKworCXJldHVybiByZXQ7Cit9CisKZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2JyaWRnZS9pdDYxNTEuaCBiL2luY2x1ZGUvZHJtL2JyaWRnZS9p dDYxNTEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTAzZWQ5Ci0tLSAv ZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0vYnJpZGdlL2l0NjE1MS5oCkBAIC0wLDAgKzEsMzQg QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQgTWVkaWFUZWsgSW5jLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisjaWZuZGVmIF9EUk1f QlJJREdFX0lUNjE1MV9IXworI2RlZmluZSBfRFJNX0JSSURHRV9JVDYxNTFfSF8KKworc3RydWN0 IGRybV9kZXZpY2U7CitzdHJ1Y3QgZHJtX2VuY29kZXI7CitzdHJ1Y3QgaTJjX2NsaWVudDsKK3N0 cnVjdCBkZXZpY2Vfbm9kZTsKKworI2lmIGRlZmluZWQoQ09ORklHX0RSTV9JVDYxNTEpCitpbnQg aXQ2MTUxX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyLAorCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHN0cnVjdCBkZXZpY2Vfbm9kZSAq bm9kZSk7CisjZWxzZQoraW5saW5lIGludCBpdDYxNTFfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCwgc3RydWN0IGRldmljZV9ub2RlICpub2RlKQoreworCXJldHVybiAwOworfQorI2VuZGlm CisKKyNlbmRpZgorCi0tIAoxLjguMS4xLmRpcnR5CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=