From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bibby Hsieh Subject: [PATCH v4 09/11] drm/mediatek: add hdmi driver for MT2701 and MT7623 Date: Tue, 2 Oct 2018 16:10:39 +0800 Message-ID: <20181002081041.32629-10-bibby.hsieh@mediatek.com> References: <20181002081041.32629-1-bibby.hsieh@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181002081041.32629-1-bibby.hsieh@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: David Airlie , Matthias Brugger , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org Cc: chunhui dai , linux-kernel@vger.kernel.org, Cawa Cheng , Mao Huang , Thierry Reding , Yingjoe Chen , Sascha Hauer , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org RnJvbTogY2h1bmh1aSBkYWkgPGNodW5odWkuZGFpQG1lZGlhdGVrLmNvbT4KClRoaXMgcGF0Y2gg YWRkcyBoZG1pIGRpcnZlciBzdXBwb3QgZm9yIGJvdGggTVQyNzAxIGFuZCBNVDc2MjMuCkFuZCBh bHNvIHN1cHBvcnQgb3RoZXIgKGV4aXN0aW5nIG9yIGZ1dHVyZSkgY2hpcHMgdGhhdCB1c2UKdGhl IHNhbWUgYmluZGluZyBhbmQgZHJpdmVyLgoKU2lnbmVkLW9mZi1ieTogY2h1bmh1aSBkYWkgPGNo dW5odWkuZGFpQG1lZGlhdGVrLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFr ZWZpbGUgICAgICAgICAgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2hkbWkuYyAgICAgICAgICAgIHwgICA5ICstCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2hkbWlfcGh5LmMgICAgICAgIHwgIDI1ICsrKwogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19oZG1pX3BoeS5oICAgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X210MjcwMV9oZG1pX3BoeS5jIHwgMjEyICsrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQ4MTczX2hkbWlfcGh5LmMgfCAgMjIgLS0tCiA2IGZp bGVzIGNoYW5nZWQsIDI1MiBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210MjcwMV9oZG1pX3BoeS5j CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlCmluZGV4IDYxY2YwZDJhYjI4YS4uODJhZTQ5YzY0 MjIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlCkBAIC0xOSw3ICsxOSw4IEBAIG9iai0k KENPTkZJR19EUk1fTUVESUFURUspICs9IG1lZGlhdGVrLWRybS5vCiBtZWRpYXRlay1kcm0taGRt aS1vYmpzIDo9IG10a19jZWMubyBcCiAJCQkgIG10a19oZG1pLm8gXAogCQkJICBtdGtfaGRtaV9k ZGMubyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIG10a19tdDI3MDFfaGRtaV9waHkubyBc CiAJCQkgIG10a19tdDgxNzNfaGRtaV9waHkubyBcCiAJCQkgIG10a19oZG1pX3BoeS5vCiAKLW9i ai0kKENPTkZJR19EUk1fTUVESUFURUtfSERNSSkgKz0gbWVkaWF0ZWstZHJtLWhkbWkubwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK29iai0kKENPTkZJR19EUk1fTUVESUFURUtfSERNSSkg Kz0gbWVkaWF0ZWstZHJtLWhkbWkubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuYwppbmRl eCBkNjJlNjg1Y2VjNzMuLjExZTM2NDRkYTc5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19oZG1pLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19o ZG1pLmMKQEAgLTI0MSw4ICsyNDEsMTMgQEAgc3RhdGljIHZvaWQgbXRrX2hkbWlfaHdfbWFrZV9y ZWdfd3JpdGFibGUoc3RydWN0IG10a19oZG1pICpoZG1pLCBib29sIGVuYWJsZSkKIAkgKiBUaGUg QVJNIHRydXN0ZWQgZmlybXdhcmUgcHJvdmlkZXMgYW4gQVBJIGZvciB0aGUgSERNSSBkcml2ZXIg dG8gc2V0CiAJICogdGhpcyBjb250cm9sIGJpdCB0byBlbmFibGUgSERNSSBvdXRwdXQgaW4gc3Vw ZXJ2aXNvciBtb2RlLgogCSAqLwotCWFybV9zbWNjY19zbWMoTVRLX1NJUF9TRVRfQVVUSE9SSVpF RF9TRUNVUkVfUkVHLCAweDE0MDAwOTA0LCAweDgwMDAwMDAwLAotCQkgICAgICAwLCAwLCAwLCAw LCAwLCAmcmVzKTsKKwlpZiAoaGRtaV9waHktPmNvbmYgJiYgaGRtaV9waHktPmNvbmYtPnR6X2Rp c2FibGVkKQorCQlyZWdtYXBfdXBkYXRlX2JpdHMoaGRtaS0+c3lzX3JlZ21hcCwKKwkJCQkgICBo ZG1pLT5zeXNfb2Zmc2V0ICsgSERNSV9TWVNfQ0ZHMjAsCisJCQkJICAgMHg4MDAwODAwNSwgZW5h YmxlID8gMHg4MDAwMDAwNSA6IDB4ODAwMCk7CisJZWxzZQorCQlhcm1fc21jY2Nfc21jKE1US19T SVBfU0VUX0FVVEhPUklaRURfU0VDVVJFX1JFRywgMHgxNDAwMDkwNCwKKwkJCSAgICAgIDB4ODAw MDAwMDAsIDAsIDAsIDAsIDAsIDAsICZyZXMpOwogCiAJcmVnbWFwX3VwZGF0ZV9iaXRzKGhkbWkt PnN5c19yZWdtYXAsIGhkbWktPnN5c19vZmZzZXQgKyBIRE1JX1NZU19DRkcyMCwKIAkJCSAgIEhE TUlfUENMS19GUkVFX1JVTiwgZW5hYmxlID8gSERNSV9QQ0xLX0ZSRUVfUlVOIDogMCk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmMgYi9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmMKaW5kZXggZDJkYzUwZGIxZmViLi40ZWY5 YzU3ZmZkNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9w aHkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmMKQEAgLTE1 LDYgKzE1LDI4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBtdGtfaGRtaV9waHlfZGV2 X29wcyA9IHsKIAkub3duZXIgPSBUSElTX01PRFVMRSwKIH07CiAKK2xvbmcgbXRrX2hkbWlfcGxs X3JvdW5kX3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwKKwkJCSAg ICAgdW5zaWduZWQgbG9uZyAqcGFyZW50X3JhdGUpCit7CisJc3RydWN0IG10a19oZG1pX3BoeSAq aGRtaV9waHkgPSB0b19tdGtfaGRtaV9waHkoaHcpOworCisJaGRtaV9waHktPnBsbF9yYXRlID0g cmF0ZTsKKwlpZiAocmF0ZSA8PSA3NDI1MDAwMCkKKwkJKnBhcmVudF9yYXRlID0gcmF0ZTsKKwll bHNlCisJCSpwYXJlbnRfcmF0ZSA9IHJhdGUgLyAyOworCisJcmV0dXJuIHJhdGU7Cit9CisKK3Vu c2lnbmVkIGxvbmcgbXRrX2hkbWlfcGxsX3JlY2FsY19yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LAor CQkJCSAgICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQoreworCXN0cnVjdCBtdGtfaGRt aV9waHkgKmhkbWlfcGh5ID0gdG9fbXRrX2hkbWlfcGh5KGh3KTsKKworCXJldHVybiBoZG1pX3Bo eS0+cGxsX3JhdGU7Cit9CisKIHZvaWQgbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoc3RydWN0IG10 a19oZG1pX3BoeSAqaGRtaV9waHksIHUzMiBvZmZzZXQsCiAJCQkgICAgIHUzMiBiaXRzKQogewpA QCAtMTkyLDYgKzIxNCw5IEBAIHN0YXRpYyBpbnQgbXRrX2hkbWlfcGh5X3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkIG10a19oZG1pX3BoeV9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWss bXQyNzAxLWhkbWktcGh5IiwKKwkgIC5kYXRhID0gJm10a19oZG1pX3BoeV8yNzAxX2NvbmYsCisJ fSwKIAl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1oZG1pLXBoeSIsCiAJICAuZGF0 YSA9ICZtdGtfaGRtaV9waHlfODE3M19jb25mLAogCX0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2hkbWlfcGh5LmgKaW5kZXggZTM0NmZlMzE5NjIxLi5mMzliMWZjNjY2MTIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9waHkuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmgKQEAgLTIwLDYgKzIwLDcgQEAKIHN0cnVj dCBtdGtfaGRtaV9waHk7CiAKIHN0cnVjdCBtdGtfaGRtaV9waHlfY29uZiB7CisJYm9vbCB0el9k aXNhYmxlZDsKIAljb25zdCBzdHJ1Y3QgY2xrX29wcyAqaGRtaV9waHlfY2xrX29wczsKIAl2b2lk ICgqaGRtaV9waHlfZW5hYmxlX3RtZHMpKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5KTsK IAl2b2lkICgqaGRtaV9waHlfZGlzYWJsZV90bWRzKShzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1p X3BoeSk7CkBAIC00Nyw4ICs0OCwxMyBAQCB2b2lkIG10a19oZG1pX3BoeV9zZXRfYml0cyhzdHJ1 Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSwgdTMyIG9mZnNldCwKIHZvaWQgbXRrX2hkbWlfcGh5 X21hc2soc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHksIHUzMiBvZmZzZXQsCiAJCSAgICAg ICB1MzIgdmFsLCB1MzIgbWFzayk7CiBzdHJ1Y3QgbXRrX2hkbWlfcGh5ICp0b19tdGtfaGRtaV9w aHkoc3RydWN0IGNsa19odyAqaHcpOworbG9uZyBtdGtfaGRtaV9wbGxfcm91bmRfcmF0ZShzdHJ1 Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyByYXRlLAorCQkJICAgICB1bnNpZ25lZCBsb25n ICpwYXJlbnRfcmF0ZSk7Cit1bnNpZ25lZCBsb25nIG10a19oZG1pX3BsbF9yZWNhbGNfcmF0ZShz dHJ1Y3QgY2xrX2h3ICpodywKKwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSk7 CiAKIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19oZG1pX3BoeV9kcml2ZXI7CiBl eHRlcm4gc3RydWN0IG10a19oZG1pX3BoeV9jb25mIG10a19oZG1pX3BoeV84MTczX2NvbmY7Citl eHRlcm4gc3RydWN0IG10a19oZG1pX3BoeV9jb25mIG10a19oZG1pX3BoeV8yNzAxX2NvbmY7CiAK ICNlbmRpZiAvKiBfTVRLX0hETUlfUEhZX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfbXQyNzAxX2hkbWlfcGh5LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX210MjcwMV9oZG1pX3BoeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uZmNjNDJkYzZlYTdmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19tdDI3MDFfaGRtaV9waHkuYwpAQCAtMCwwICsxLDIxMiBAQAorLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgg TWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBDaHVuaHVpIERhaSA8Y2h1bmh1aS5kYWlAbWVkaWF0 ZWsuY29tPgorICovCisKKyNpbmNsdWRlICJtdGtfaGRtaV9waHkuaCIKKworI2RlZmluZSBIRE1J X0NPTjAJMHgwMAorI2RlZmluZSBSR19IRE1JVFhfRFJWX0lCSUFTCQkwCisjZGVmaW5lIFJHX0hE TUlUWF9EUlZfSUJJQVNfTUFTSwkoMHgzZiA8PCAwKQorI2RlZmluZSBSR19IRE1JVFhfRU5fU0VS CQkxMgorI2RlZmluZSBSR19IRE1JVFhfRU5fU0VSX01BU0sJCSgweDBmIDw8IDEyKQorI2RlZmlu ZSBSR19IRE1JVFhfRU5fU0xETwkJMTYKKyNkZWZpbmUgUkdfSERNSVRYX0VOX1NMRE9fTUFTSwkJ KDB4MGYgPDwgMTYpCisjZGVmaW5lIFJHX0hETUlUWF9FTl9QUkVECQkyMAorI2RlZmluZSBSR19I RE1JVFhfRU5fUFJFRF9NQVNLCQkoMHgwZiA8PCAyMCkKKyNkZWZpbmUgUkdfSERNSVRYX0VOX0lN UAkJMjQKKyNkZWZpbmUgUkdfSERNSVRYX0VOX0lNUF9NQVNLCQkoMHgwZiA8PCAyNCkKKyNkZWZp bmUgUkdfSERNSVRYX0VOX0RSVgkJMjgKKyNkZWZpbmUgUkdfSERNSVRYX0VOX0RSVl9NQVNLCQko MHgwZiA8PCAyOCkKKworI2RlZmluZSBIRE1JX0NPTjEJMHgwNAorI2RlZmluZSBSR19IRE1JVFhf UFJFRF9JQklBUwkJMTgKKyNkZWZpbmUgUkdfSERNSVRYX1BSRURfSUJJQVNfTUFTSwkoMHgwZiA8 PCAxOCkKKyNkZWZpbmUgUkdfSERNSVRYX1BSRURfSU1QCQkoMHgwMSA8PCAyMikKKyNkZWZpbmUg UkdfSERNSVRYX0RSVl9JTVAJCTI2CisjZGVmaW5lIFJHX0hETUlUWF9EUlZfSU1QX01BU0sJCSgw eDNmIDw8IDI2KQorCisjZGVmaW5lIEhETUlfQ09OMgkweDA4CisjZGVmaW5lIFJHX0hETUlUWF9F Tl9UWF9DS0xETwkJKDB4MDEgPDwgMCkKKyNkZWZpbmUgUkdfSERNSVRYX0VOX1RYX1BPU0RJVgkJ KDB4MDEgPDwgMSkKKyNkZWZpbmUgUkdfSERNSVRYX1RYX1BPU0RJVgkJMworI2RlZmluZSBSR19I RE1JVFhfVFhfUE9TRElWX01BU0sJKDB4MDMgPDwgMykKKyNkZWZpbmUgUkdfSERNSVRYX0VOX01C SUFTCQkoMHgwMSA8PCA2KQorI2RlZmluZSBSR19IRE1JVFhfTUJJQVNfTFBGX0VOCQkoMHgwMSA8 PCA3KQorCisjZGVmaW5lIEhETUlfQ09ONAkweDEwCisjZGVmaW5lIFJHX0hETUlUWF9SRVNFUlZF X01BU0sJCSgweGZmZmZmZmZmIDw8IDApCisKKyNkZWZpbmUgSERNSV9DT042CTB4MTgKKyNkZWZp bmUgUkdfSFRQTExfQlIJCQkwCisjZGVmaW5lIFJHX0hUUExMX0JSX01BU0sJCSgweDAzIDw8IDAp CisjZGVmaW5lIFJHX0hUUExMX0JDCQkJMgorI2RlZmluZSBSR19IVFBMTF9CQ19NQVNLCQkoMHgw MyA8PCAyKQorI2RlZmluZSBSR19IVFBMTF9CUAkJCTQKKyNkZWZpbmUgUkdfSFRQTExfQlBfTUFT SwkJKDB4MGYgPDwgNCkKKyNkZWZpbmUgUkdfSFRQTExfSVIJCQk4CisjZGVmaW5lIFJHX0hUUExM X0lSX01BU0sJCSgweDBmIDw8IDgpCisjZGVmaW5lIFJHX0hUUExMX0lDCQkJMTIKKyNkZWZpbmUg UkdfSFRQTExfSUNfTUFTSwkJKDB4MGYgPDwgMTIpCisjZGVmaW5lIFJHX0hUUExMX1BPU0RJVgkJ CTE2CisjZGVmaW5lIFJHX0hUUExMX1BPU0RJVl9NQVNLCQkoMHgwMyA8PCAxNikKKyNkZWZpbmUg UkdfSFRQTExfUFJFRElWCQkJMTgKKyNkZWZpbmUgUkdfSFRQTExfUFJFRElWX01BU0sJCSgweDAz IDw8IDE4KQorI2RlZmluZSBSR19IVFBMTF9GQktTRUwJCQkyMAorI2RlZmluZSBSR19IVFBMTF9G QktTRUxfTUFTSwkJKDB4MDMgPDwgMjApCisjZGVmaW5lIFJHX0hUUExMX1JMSF9FTgkJCSgweDAx IDw8IDIyKQorI2RlZmluZSBSR19IVFBMTF9GQktESVYJCQkyNAorI2RlZmluZSBSR19IVFBMTF9G QktESVZfTUFTSwkJKDB4N2YgPDwgMjQpCisjZGVmaW5lIFJHX0hUUExMX0VOCQkJKDB4MDEgPDwg MzEpCisKKyNkZWZpbmUgSERNSV9DT043CTB4MWMKKyNkZWZpbmUgUkdfSFRQTExfQVVUT0tfRU4J CSgweDAxIDw8IDIzKQorI2RlZmluZSBSR19IVFBMTF9ESVZFTgkJCTI4CisjZGVmaW5lIFJHX0hU UExMX0RJVkVOX01BU0sJCSgweDA3IDw8IDI4KQorCitzdGF0aWMgaW50IG10a19oZG1pX3BsbF9w cmVwYXJlKHN0cnVjdCBjbGtfaHcgKmh3KQoreworCXN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlf cGh5ID0gdG9fbXRrX2hkbWlfcGh5KGh3KTsKKworCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1p X3BoeSwgSERNSV9DT043LCBSR19IVFBMTF9BVVRPS19FTik7CisJbXRrX2hkbWlfcGh5X2NsZWFy X2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfUkxIX0VOKTsKKwltdGtfaGRtaV9w aHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfUE9TRElWX01BU0spOwor CW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5f TUJJQVMpOworCXVzbGVlcF9yYW5nZSg4MCwgMTAwKTsKKwltdGtfaGRtaV9waHlfc2V0X2JpdHMo aGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfRU4pOworCW10a19oZG1pX3BoeV9zZXRfYml0 cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5fVFhfQ0tMRE8pOworCW10a19oZG1p X3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1JVFhfRU5fU0xET19NQVNL KTsKKwl1c2xlZXBfcmFuZ2UoODAsIDEwMCk7CisJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlf cGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9NQklBU19MUEZfRU4pOworCW10a19oZG1pX3BoeV9z ZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5fVFhfUE9TRElWKTsKKwlt dGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX1NF Ul9NQVNLKTsKKwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdf SERNSVRYX0VOX1BSRURfTUFTSyk7CisJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBI RE1JX0NPTjAsIFJHX0hETUlUWF9FTl9EUlZfTUFTSyk7CisJdXNsZWVwX3JhbmdlKDgwLCAxMDAp OworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBtdGtfaGRtaV9wbGxfdW5wcmVwYXJlKHN0 cnVjdCBjbGtfaHcgKmh3KQoreworCXN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5ID0gdG9f bXRrX2hkbWlfcGh5KGh3KTsKKworCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBI RE1JX0NPTjAsIFJHX0hETUlUWF9FTl9EUlZfTUFTSyk7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2Jp dHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX1BSRURfTUFTSyk7CisJbXRrX2hk bWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX1NFUl9N QVNLKTsKKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04yLCBSR19I RE1JVFhfRU5fVFhfUE9TRElWKTsKKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwg SERNSV9DT04yLCBSR19IRE1JVFhfTUJJQVNfTFBGX0VOKTsKKwl1c2xlZXBfcmFuZ2UoODAsIDEw MCk7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERN SVRYX0VOX1NMRE9fTUFTSyk7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhE TUlfQ09OMiwgUkdfSERNSVRYX0VOX1RYX0NLTERPKTsKKwltdGtfaGRtaV9waHlfY2xlYXJfYml0 cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9FTik7CisJdXNsZWVwX3JhbmdlKDgwLCAx MDApOworCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hE TUlUWF9FTl9NQklBUyk7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlf Q09ONiwgUkdfSFRQTExfUE9TRElWX01BU0spOworCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhk bWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX1JMSF9FTik7CisJbXRrX2hkbWlfcGh5X2NsZWFy X2JpdHMoaGRtaV9waHksIEhETUlfQ09ONywgUkdfSFRQTExfQVVUT0tfRU4pOworCXVzbGVlcF9y YW5nZSg4MCwgMTAwKTsKK30KKworc3RhdGljIGludCBtdGtfaGRtaV9wbGxfc2V0X3JhdGUoc3Ry dWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwKKwkJCQkgdW5zaWduZWQgbG9uZyBw YXJlbnRfcmF0ZSkKK3sKKwlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHRvX210a19o ZG1pX3BoeShodyk7CisJdTMyIHBvc19kaXY7CisKKwlpZiAocmF0ZSA8PSA2NDAwMDAwMCkKKwkJ cG9zX2RpdiA9IDM7CisJZWxzZSBpZiAocmF0ZSA8PSAxMjgwMDAwMCkKKwkJcG9zX2RpdiA9IDE7 CisJZWxzZQorCQlwb3NfZGl2ID0gMTsKKworCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3Bo eSwgSERNSV9DT042LCBSR19IVFBMTF9QUkVESVZfTUFTSyk7CisJbXRrX2hkbWlfcGh5X3NldF9i aXRzKGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX1BPU0RJVl9NQVNLKTsKKwltdGtfaGRt aV9waHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT042LCAoMHgxIDw8IFJHX0hUUExMX0lDKSwKKwkJ CSAgUkdfSFRQTExfSUNfTUFTSyk7CisJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlf Q09ONiwgKDB4MSA8PCBSR19IVFBMTF9JUiksCisJCQkgIFJHX0hUUExMX0lSX01BU0spOworCW10 a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjIsIChwb3NfZGl2IDw8IFJHX0hETUlU WF9UWF9QT1NESVYpLAorCQkJICBSR19IRE1JVFhfVFhfUE9TRElWX01BU0spOworCW10a19oZG1p X3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjYsICgxIDw8IFJHX0hUUExMX0ZCS1NFTCksCisJ CQkgIFJHX0hUUExMX0ZCS1NFTF9NQVNLKTsKKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3BoeSwg SERNSV9DT042LCAoMTkgPDwgUkdfSFRQTExfRkJLRElWKSwKKwkJCSAgUkdfSFRQTExfRkJLRElW X01BU0spOworCW10a19oZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjcsICgweDIgPDwg UkdfSFRQTExfRElWRU4pLAorCQkJICBSR19IVFBMTF9ESVZFTl9NQVNLKTsKKwltdGtfaGRtaV9w aHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT042LCAoMHhjIDw8IFJHX0hUUExMX0JQKSwKKwkJCSAg UkdfSFRQTExfQlBfTUFTSyk7CisJbXRrX2hkbWlfcGh5X21hc2soaGRtaV9waHksIEhETUlfQ09O NiwgKDB4MiA8PCBSR19IVFBMTF9CQyksCisJCQkgIFJHX0hUUExMX0JDX01BU0spOworCW10a19o ZG1pX3BoeV9tYXNrKGhkbWlfcGh5LCBIRE1JX0NPTjYsICgweDEgPDwgUkdfSFRQTExfQlIpLAor CQkJICBSR19IVFBMTF9CUl9NQVNLKTsKKworCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlf cGh5LCBIRE1JX0NPTjEsIFJHX0hETUlUWF9QUkVEX0lNUCk7CisJbXRrX2hkbWlfcGh5X21hc2so aGRtaV9waHksIEhETUlfQ09OMSwgKDB4MyA8PCBSR19IRE1JVFhfUFJFRF9JQklBUyksCisJCQkg IFJHX0hETUlUWF9QUkVEX0lCSUFTX01BU0spOworCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhk bWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9JTVBfTUFTSyk7CisJbXRrX2hkbWlfcGh5 X21hc2soaGRtaV9waHksIEhETUlfQ09OMSwgKDB4MjggPDwgUkdfSERNSVRYX0RSVl9JTVApLAor CQkJICBSR19IRE1JVFhfRFJWX0lNUF9NQVNLKTsKKwltdGtfaGRtaV9waHlfbWFzayhoZG1pX3Bo eSwgSERNSV9DT040LCAweDI4LCBSR19IRE1JVFhfUkVTRVJWRV9NQVNLKTsKKwltdGtfaGRtaV9w aHlfbWFzayhoZG1pX3BoeSwgSERNSV9DT04wLCAoMHhhIDw8IFJHX0hETUlUWF9EUlZfSUJJQVMp LAorCQkJICBSR19IRE1JVFhfRFJWX0lCSUFTX01BU0spOworCXJldHVybiAwOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgbXRrX2hkbWlfcGh5X3BsbF9vcHMgPSB7CisJLnByZXBh cmUgPSBtdGtfaGRtaV9wbGxfcHJlcGFyZSwKKwkudW5wcmVwYXJlID0gbXRrX2hkbWlfcGxsX3Vu cHJlcGFyZSwKKwkuc2V0X3JhdGUgPSBtdGtfaGRtaV9wbGxfc2V0X3JhdGUsCisJLnJvdW5kX3Jh dGUgPSBtdGtfaGRtaV9wbGxfcm91bmRfcmF0ZSwKKwkucmVjYWxjX3JhdGUgPSBtdGtfaGRtaV9w bGxfcmVjYWxjX3JhdGUsCit9OworCitzdGF0aWMgdm9pZCBtdGtfaGRtaV9waHlfZW5hYmxlX3Rt ZHMoc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkpCit7CisJbXRrX2hkbWlfcGh5X3NldF9i aXRzKGhkbWlfcGh5LCBIRE1JX0NPTjcsIFJHX0hUUExMX0FVVE9LX0VOKTsKKwltdGtfaGRtaV9w aHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9STEhfRU4pOworCW10 a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9QT1NESVZf TUFTSyk7CisJbXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hE TUlUWF9FTl9NQklBUyk7CisJdXNsZWVwX3JhbmdlKDgwLCAxMDApOworCW10a19oZG1pX3BoeV9z ZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9FTik7CisJbXRrX2hkbWlfcGh5 X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9FTl9UWF9DS0xETyk7CisJ bXRrX2hkbWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjAsIFJHX0hETUlUWF9FTl9T TERPX01BU0spOworCXVzbGVlcF9yYW5nZSg4MCwgMTAwKTsKKwltdGtfaGRtaV9waHlfc2V0X2Jp dHMoaGRtaV9waHksIEhETUlfQ09OMiwgUkdfSERNSVRYX01CSUFTX0xQRl9FTik7CisJbXRrX2hk bWlfcGh5X3NldF9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9FTl9UWF9QT1NE SVYpOworCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1J VFhfRU5fU0VSX01BU0spOworCW10a19oZG1pX3BoeV9zZXRfYml0cyhoZG1pX3BoeSwgSERNSV9D T04wLCBSR19IRE1JVFhfRU5fUFJFRF9NQVNLKTsKKwltdGtfaGRtaV9waHlfc2V0X2JpdHMoaGRt aV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX0RSVl9NQVNLKTsKKwl1c2xlZXBfcmFuZ2Uo ODAsIDEwMCk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19oZG1pX3BoeV9kaXNhYmxlX3RtZHMoc3Ry dWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkpCit7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMo aGRtaV9waHksIEhETUlfQ09OMCwgUkdfSERNSVRYX0VOX0RSVl9NQVNLKTsKKwltdGtfaGRtaV9w aHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1JVFhfRU5fUFJFRF9NQVNL KTsKKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT04wLCBSR19IRE1J VFhfRU5fU0VSX01BU0spOworCW10a19oZG1pX3BoeV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1J X0NPTjIsIFJHX0hETUlUWF9FTl9UWF9QT1NESVYpOworCW10a19oZG1pX3BoeV9jbGVhcl9iaXRz KGhkbWlfcGh5LCBIRE1JX0NPTjIsIFJHX0hETUlUWF9NQklBU19MUEZfRU4pOworCXVzbGVlcF9y YW5nZSg4MCwgMTAwKTsKKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9D T04wLCBSR19IRE1JVFhfRU5fU0xET19NQVNLKTsKKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyho ZG1pX3BoeSwgSERNSV9DT04yLCBSR19IRE1JVFhfRU5fVFhfQ0tMRE8pOworCW10a19oZG1pX3Bo eV9jbGVhcl9iaXRzKGhkbWlfcGh5LCBIRE1JX0NPTjYsIFJHX0hUUExMX0VOKTsKKwl1c2xlZXBf cmFuZ2UoODAsIDEwMCk7CisJbXRrX2hkbWlfcGh5X2NsZWFyX2JpdHMoaGRtaV9waHksIEhETUlf Q09OMiwgUkdfSERNSVRYX0VOX01CSUFTKTsKKwltdGtfaGRtaV9waHlfY2xlYXJfYml0cyhoZG1p X3BoeSwgSERNSV9DT042LCBSR19IVFBMTF9QT1NESVZfTUFTSyk7CisJbXRrX2hkbWlfcGh5X2Ns ZWFyX2JpdHMoaGRtaV9waHksIEhETUlfQ09ONiwgUkdfSFRQTExfUkxIX0VOKTsKKwltdGtfaGRt aV9waHlfY2xlYXJfYml0cyhoZG1pX3BoeSwgSERNSV9DT043LCBSR19IVFBMTF9BVVRPS19FTik7 CisJdXNsZWVwX3JhbmdlKDgwLCAxMDApOworfQorCitzdHJ1Y3QgbXRrX2hkbWlfcGh5X2NvbmYg bXRrX2hkbWlfcGh5XzI3MDFfY29uZiA9IHsKKwkudHpfZGlzYWJsZWQgPSB0cnVlLAorCS5oZG1p X3BoeV9jbGtfb3BzID0gJm10a19oZG1pX3BoeV9wbGxfb3BzLAorCS5oZG1pX3BoeV9lbmFibGVf dG1kcyA9IG10a19oZG1pX3BoeV9lbmFibGVfdG1kcywKKwkuaGRtaV9waHlfZGlzYWJsZV90bWRz ID0gbXRrX2hkbWlfcGh5X2Rpc2FibGVfdG1kcywKK307CisKK01PRFVMRV9BVVRIT1IoIkNodW5o dWkgRGFpIDxjaHVuaHVpLmRhaUBtZWRpYXRlay5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04o Ik1lZGlhVGVrIEhETUkgUEhZIERyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tdDgxNzNfaGRtaV9waHku YyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQ4MTczX2hkbWlfcGh5LmMKaW5kZXgg NWRlYTAzMzM0MDQyLi5lZDU5MTZiMjc2NTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfbXQ4MTczX2hkbWlfcGh5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19tdDgxNzNfaGRtaV9waHkuYwpAQCAtMjg1LDI4ICsyODUsNiBAQCBzdGF0aWMgaW50 IG10a19oZG1pX3BsbF9zZXRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyBy YXRlLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgbG9uZyBtdGtfaGRtaV9wbGxfcm91bmRfcmF0 ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyByYXRlLAotCQkJCSAgICB1bnNpZ25l ZCBsb25nICpwYXJlbnRfcmF0ZSkKLXsKLQlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9 IHRvX210a19oZG1pX3BoeShodyk7Ci0KLQloZG1pX3BoeS0+cGxsX3JhdGUgPSByYXRlOwotCWlm IChyYXRlIDw9IDc0MjUwMDAwKQotCQkqcGFyZW50X3JhdGUgPSByYXRlOwotCWVsc2UKLQkJKnBh cmVudF9yYXRlID0gcmF0ZSAvIDI7Ci0KLQlyZXR1cm4gcmF0ZTsKLX0KLQotc3RhdGljIHVuc2ln bmVkIGxvbmcgbXRrX2hkbWlfcGxsX3JlY2FsY19yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LAotCQkJ CQkgICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQotewotCXN0cnVjdCBtdGtfaGRtaV9w aHkgKmhkbWlfcGh5ID0gdG9fbXRrX2hkbWlfcGh5KGh3KTsKLQotCXJldHVybiBoZG1pX3BoeS0+ cGxsX3JhdGU7Ci19Ci0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBtdGtfaGRtaV9waHlf cGxsX29wcyA9IHsKIAkucHJlcGFyZSA9IG10a19oZG1pX3BsbF9wcmVwYXJlLAogCS51bnByZXBh cmUgPSBtdGtfaGRtaV9wbGxfdW5wcmVwYXJlLAotLSAKMi4xMi41LjIuZ2JkZjIzYWIKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=