From mboxrd@z Thu Jan 1 00:00:00 1970 From: YT Shen Subject: [PATCH v7 8/9] drm/mediatek: update DSI sub driver flow Date: Fri, 2 Sep 2016 19:24:43 +0800 Message-ID: <1472815484-43821-9-git-send-email-yt.shen@mediatek.com> References: <1472815484-43821-1-git-send-email-yt.shen@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1472815484-43821-1-git-send-email-yt.shen@mediatek.com> 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, Philipp Zabel Cc: Daniel Vetter , Jie Qiu , Mao Huang , yingjoe.chen@mediatek.com, Dan Carpenter , Jitao Shi , linux-mediatek@lists.infradead.org, Matthias Brugger , shaoming chen , linux-arm-kernel@lists.infradead.org, srv_heupstream@mediatek.com, emil.l.velikov@gmail.com, linux-kernel@vger.kernel.org, Sascha Hauer , Maxime Ripard List-Id: linux-mediatek@lists.infradead.org VGhpcyBwYXRjaCB1cGRhdGUgZW5hYmxlL2Rpc2FibGUgZmxvdyBvZiBEU0kgbW9kdWxlIGFuZCBN SVBJIFRYIG1vZHVsZQoKU2lnbmVkLW9mZi1ieTogc2hhb21pbmcgY2hlbiA8c2hhb21pbmcuY2hl bkBtZWRpYXRlay5jb20+ClNpZ25lZC1vZmYtYnk6IFlUIFNoZW4gPHl0LnNoZW5AbWVkaWF0ZWsu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHNpLmMgICAgIHwgMTAyICsr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19taXBpX3R4LmMgfCAgMzIgKysrKysrLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTAxIGlu c2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RzaS5j CmluZGV4IDExMDNmZjQuLmY4MDc2MjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHNpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kc2kuYwpA QCAtOTUsNiArOTUsOCBAQAogI2RlZmluZSBEU0lfUkFDSwkJMHg4NAogI2RlZmluZSBSQUNLCQkJ CUJJVCgwKQogCisjZGVmaW5lIERTSV9NRU1fQ09OVEkJCTB4OTAKKwogI2RlZmluZSBEU0lfUEhZ X0xDQ09OCQkweDEwNAogI2RlZmluZSBMQ19IU19UWF9FTgkJCUJJVCgwKQogI2RlZmluZSBMQ19V TFBNX0VOCQkJQklUKDEpCkBAIC0xMjcsNiArMTI5LDEwIEBACiAjZGVmaW5lIENMS19IU19QT1NU CQkJKDB4ZmYgPDwgOCkKICNkZWZpbmUgQ0xLX0hTX0VYSVQJCQkoMHhmZiA8PCAxNikKIAorI2Rl ZmluZSBEU0lfVk1fQ01EX0NPTgkJMHgxMzAKKyNkZWZpbmUgVk1fQ01EX0VOCQkJQklUKDApCisj ZGVmaW5lIFRTX1ZGUF9FTgkJCUJJVCg1KQorCiAjZGVmaW5lIERTSV9DTURRMAkJMHgxODAKICNk ZWZpbmUgQ09ORklHCQkJCSgweGZmIDw8IDApCiAjZGVmaW5lIFNIT1JUX1BBQ0tFVAkJCTAKQEAg LTI1MSw3ICsyNTcsOSBAQCBzdGF0aWMgaW50IG10a19kc2lfcG93ZXJvbihzdHJ1Y3QgbXRrX2Rz aSAqZHNpKQogCSAqIG1pcGlfcmF0aW8gaXMgbWlwaSBjbGsgY29lZmZpY2llbnQgZm9yIGJhbGFu Y2UgdGhlIHBpeGVsIGNsayBpbiBtaXBpLgogCSAqIHdlIHNldCBtaXBpX3JhdGlvIGlzIDEuMDUu CiAJICovCi0JZHNpLT5kYXRhX3JhdGUgPSBkc2ktPnZtLnBpeGVsY2xvY2sgKiAzICogMjEgLyAo MSAqIDEwMDAgKiAxMCk7CisJZHNpLT5kYXRhX3JhdGUgPSBkc2ktPnZtLnBpeGVsY2xvY2sgKiAx MiAqIDIxOworCWRzaS0+ZGF0YV9yYXRlIC89IChkc2ktPmxhbmVzICogMTAwMCAqIDEwKTsKKwlk ZXZfaW5mbyhkZXYsICJzZXQgbWlwaXR4J3MgZGF0YSByYXRlOiAlZE1IelxuIiwgZHNpLT5kYXRh X3JhdGUpOwogCiAJcmV0ID0gY2xrX3NldF9yYXRlKGRzaS0+aHNfY2xrLCBkc2ktPmRhdGFfcmF0 ZSAqIDEwMDAwMDApOwogCWlmIChyZXQgPCAwKSB7CkBAIC0yNzMsMTAgKzI4MSw2IEBAIHN0YXRp YyBpbnQgbXRrX2RzaV9wb3dlcm9uKHN0cnVjdCBtdGtfZHNpICpkc2kpCiAJCWdvdG8gZXJyX2Rp c2FibGVfZW5naW5lX2NsazsKIAl9CiAKLQltdGtfZHNpX2VuYWJsZShkc2kpOwotCW10a19kc2lf cmVzZXRfZW5naW5lKGRzaSk7Ci0JbXRrX2RzaV9waHlfdGltY29uZmlnKGRzaSk7Ci0KIAlyZXR1 cm4gMDsKIAogZXJyX2Rpc2FibGVfZW5naW5lX2NsazoKQEAgLTI5MSw3ICsyOTUsNyBAQCBlcnJf cmVmY291bnQ6CiBzdGF0aWMgdm9pZCBtdGtfZHNpX2Nsa191bHBfbW9kZV9lbnRlcihzdHJ1Y3Qg bXRrX2RzaSAqZHNpKQogewogCW10a19kc2lfbWFzayhkc2ksIERTSV9QSFlfTENDT04sIExDX0hT X1RYX0VOLCAwKTsKLQltdGtfZHNpX21hc2soZHNpLCBEU0lfUEhZX0xDQ09OLCBMQ19VTFBNX0VO LCAwKTsKKwltdGtfZHNpX21hc2soZHNpLCBEU0lfUEhZX0xDQ09OLCBMQ19VTFBNX0VOLCBMQ19V TFBNX0VOKTsKIH0KIAogc3RhdGljIHZvaWQgbXRrX2RzaV9jbGtfdWxwX21vZGVfbGVhdmUoc3Ry dWN0IG10a19kc2kgKmRzaSkKQEAgLTMwNCw3ICszMDgsNyBAQCBzdGF0aWMgdm9pZCBtdGtfZHNp X2Nsa191bHBfbW9kZV9sZWF2ZShzdHJ1Y3QgbXRrX2RzaSAqZHNpKQogc3RhdGljIHZvaWQgbXRr X2RzaV9sYW5lMF91bHBfbW9kZV9lbnRlcihzdHJ1Y3QgbXRrX2RzaSAqZHNpKQogewogCW10a19k c2lfbWFzayhkc2ksIERTSV9QSFlfTEQwQ09OLCBMRDBfSFNfVFhfRU4sIDApOwotCW10a19kc2lf bWFzayhkc2ksIERTSV9QSFlfTEQwQ09OLCBMRDBfVUxQTV9FTiwgMCk7CisJbXRrX2RzaV9tYXNr KGRzaSwgRFNJX1BIWV9MRDBDT04sIExEMF9VTFBNX0VOLCBMRDBfVUxQTV9FTik7CiB9CiAKIHN0 YXRpYyB2b2lkIG10a19kc2lfbGFuZTBfdWxwX21vZGVfbGVhdmUoc3RydWN0IG10a19kc2kgKmRz aSkKQEAgLTM0MCwxMSArMzQ0LDIxIEBAIHN0YXRpYyB2b2lkIG10a19kc2lfc2V0X21vZGUoc3Ry dWN0IG10a19kc2kgKmRzaSkKIAkJaWYgKChkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RF X1ZJREVPX0JVUlNUKSAmJgogCQkgICAgIShkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RF X1ZJREVPX1NZTkNfUFVMU0UpKQogCQkJdmlkX21vZGUgPSBCVVJTVF9NT0RFOworCQllbHNlCisJ CQl2aWRfbW9kZSA9IFNZTkNfRVZFTlRfTU9ERTsKIAl9CiAKIAl3cml0ZWwodmlkX21vZGUsIGRz aS0+cmVncyArIERTSV9NT0RFX0NUUkwpOwogfQogCitzdGF0aWMgdm9pZCBtdGtfZHNpX3NldF92 bV9jbWQoc3RydWN0IG10a19kc2kgKmRzaSkKK3sKKwl3cml0ZWwoMHgzYywgZHNpLT5yZWdzICsg RFNJX01FTV9DT05USSk7CisKKwltdGtfZHNpX21hc2soZHNpLCBEU0lfVk1fQ01EX0NPTiwgVk1f Q01EX0VOLCBWTV9DTURfRU4pOworCW10a19kc2lfbWFzayhkc2ksIERTSV9WTV9DTURfQ09OLCBU U19WRlBfRU4sIFRTX1ZGUF9FTik7Cit9CisKIHN0YXRpYyB2b2lkIG10a19kc2lfcHNfY29udHJv bF92YWN0KHN0cnVjdCBtdGtfZHNpICpkc2kpCiB7CiAJc3RydWN0IHZpZGVvbW9kZSAqdm0gPSAm ZHNpLT52bTsKQEAgLTQwMSw2ICs0MTUsOSBAQCBzdGF0aWMgdm9pZCBtdGtfZHNpX3J4dHhfY29u dHJvbChzdHJ1Y3QgbXRrX2RzaSAqZHNpKQogCQlicmVhazsKIAl9CiAKKwl0bXBfcmVnIHw9IChk c2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9DTE9DS19OT05fQ09OVElOVU9VUykgPDwgNjsKKwl0 bXBfcmVnIHw9IChkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX0VPVF9QQUNLRVQpID4+ IDM7CisKIAl3cml0ZWwodG1wX3JlZywgZHNpLT5yZWdzICsgRFNJX1RYUlhfQ1RSTCk7CiB9CiAK QEAgLTQ3OSw2ICs0OTYsMTYgQEAgc3RhdGljIHZvaWQgbXRrX2RzaV9zdGFydChzdHJ1Y3QgbXRr X2RzaSAqZHNpKQogCXdyaXRlbCgxLCBkc2ktPnJlZ3MgKyBEU0lfU1RBUlQpOwogfQogCitzdGF0 aWMgdm9pZCBtdGtfZHNpX3N0b3Aoc3RydWN0IG10a19kc2kgKmRzaSkKK3sKKwl3cml0ZWwoMCwg ZHNpLT5yZWdzICsgRFNJX1NUQVJUKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RzaV9zZXRfY21k X21vZGUoc3RydWN0IG10a19kc2kgKmRzaSkKK3sKKwl3cml0ZWwoQ01EX01PREUsIGRzaS0+cmVn cyArIERTSV9NT0RFX0NUUkwpOworfQorCiBzdGF0aWMgdm9pZCBtdGtfZHNpX3NldF9pbnRlcnJ1 cHRfZW5hYmxlKHN0cnVjdCBtdGtfZHNpICpkc2kpCiB7CiAJdTMyIGludGVuID0gRFNJX0lOVF9B TExfQklUUzsKQEAgLTUyMSw2ICs1NDgsMjUgQEAgc3RhdGljIGlycXJldHVybl90IG10a19kc2lf aXJxKGludCBpcnEsIHZvaWQgKmRldl9pZCkKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CiAKK3N0 YXRpYyB2b2lkIG10a19kc2lfc3dpdGNoX3RvX2NtZF9tb2RlKHN0cnVjdCBtdGtfZHNpICpkc2kp Cit7CisJczMyIHJldCA9IDA7CisJdW5zaWduZWQgbG9uZyB0aW1lb3V0ID0gbXNlY3NfdG9famlm Zmllcyg1MDApOworCisJbXRrX2RzaV9pcnFfZGF0YV9jbGVhcihkc2ksIFZNX0RPTkVfSU5UX0ZM QUcpOworCW10a19kc2lfc2V0X2NtZF9tb2RlKGRzaSk7CisKKwlyZXQgPSB3YWl0X2V2ZW50X2lu dGVycnVwdGlibGVfdGltZW91dChfZHNpX2lycV93YWl0X3F1ZXVlLAorCQkJCQkgICAgICAgZHNp LT5pcnFfZGF0YSAmIFZNX0RPTkVfSU5UX0ZMQUcsCisJCQkJCSAgICAgICB0aW1lb3V0KTsKKwlp ZiAocmV0ID09IDApIHsKKwkJZGV2X2luZm8oZHNpLT5kZXYsICJkc2kgd2FpdCBlbmdpbmUgaWRs ZSB0aW1lb3V0XG4iKTsKKworCQltdGtfZHNpX2VuYWJsZShkc2kpOworCQltdGtfZHNpX3Jlc2V0 X2VuZ2luZShkc2kpOworCX0KK30KKwogc3RhdGljIHZvaWQgbXRrX2RzaV9wb3dlcm9mZihzdHJ1 Y3QgbXRrX2RzaSAqZHNpKQogewogCWlmIChXQVJOX09OKGRzaS0+cmVmY291bnQgPT0gMCkpCkBA IC01MjksNiArNTc1LDE3IEBAIHN0YXRpYyB2b2lkIG10a19kc2lfcG93ZXJvZmYoc3RydWN0IG10 a19kc2kgKmRzaSkKIAlpZiAoLS1kc2ktPnJlZmNvdW50ICE9IDApCiAJCXJldHVybjsKIAorCW10 a19kc2lfc3dpdGNoX3RvX2NtZF9tb2RlKGRzaSk7CisKKwlpZiAoZHNpLT5wYW5lbCkgeworCQlp ZiAoZHJtX3BhbmVsX3VucHJlcGFyZShkc2ktPnBhbmVsKSkgeworCQkJRFJNX0VSUk9SKCJmYWls ZWQgdG8gdW5wcmVwYXJlIHRoZSBwYW5lbFxuIik7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlt dGtfZHNpX3Jlc2V0X2VuZ2luZShkc2kpOworCiAJbXRrX2RzaV9sYW5lMF91bHBfbW9kZV9lbnRl cihkc2kpOwogCW10a19kc2lfY2xrX3VscF9tb2RlX2VudGVyKGRzaSk7CiAKQEAgLTU0NywyOSAr NjA0LDM3IEBAIHN0YXRpYyB2b2lkIG10a19vdXRwdXRfZHNpX2VuYWJsZShzdHJ1Y3QgbXRrX2Rz aSAqZHNpKQogCWlmIChkc2ktPmVuYWJsZWQpCiAJCXJldHVybjsKIAotCWlmIChkc2ktPnBhbmVs KSB7Ci0JCWlmIChkcm1fcGFuZWxfcHJlcGFyZShkc2ktPnBhbmVsKSkgewotCQkJRFJNX0VSUk9S KCJmYWlsZWQgdG8gc2V0dXAgdGhlIHBhbmVsXG4iKTsKLQkJCXJldHVybjsKLQkJfQotCX0KLQog CXJldCA9IG10a19kc2lfcG93ZXJvbihkc2kpOwogCWlmIChyZXQgPCAwKSB7CiAJCURSTV9FUlJP UigiZmFpbGVkIHRvIHBvd2VyIG9uIGRzaVxuIik7CiAJCXJldHVybjsKIAl9CiAKKwl1c2xlZXBf cmFuZ2UoMjAwMDAsIDIxMDAwKTsKKwogCW10a19kc2lfcnh0eF9jb250cm9sKGRzaSk7CisJbXRr X2RzaV9waHlfdGltY29uZmlnKGRzaSk7CisJbXRrX2RzaV9wc19jb250cm9sX3ZhY3QoZHNpKTsK KwltdGtfZHNpX3NldF92bV9jbWQoZHNpKTsKKwltdGtfZHNpX2NvbmZpZ192ZG9fdGltaW5nKGRz aSk7CisJbXRrX2RzaV9zZXRfaW50ZXJydXB0X2VuYWJsZShkc2kpOwogCisJbXRrX2RzaV9lbmFi bGUoZHNpKTsKIAltdGtfZHNpX2Nsa191bHBfbW9kZV9sZWF2ZShkc2kpOwogCW10a19kc2lfbGFu ZTBfdWxwX21vZGVfbGVhdmUoZHNpKTsKIAltdGtfZHNpX2Nsa19oc19tb2RlKGRzaSwgMCk7Ci0J bXRrX2RzaV9zZXRfbW9kZShkc2kpOwogCi0JbXRrX2RzaV9wc19jb250cm9sX3ZhY3QoZHNpKTsK LQltdGtfZHNpX2NvbmZpZ192ZG9fdGltaW5nKGRzaSk7Ci0JbXRrX2RzaV9zZXRfaW50ZXJydXB0 X2VuYWJsZShkc2kpOworCWlmIChkc2ktPnBhbmVsKSB7CisJCWlmIChkcm1fcGFuZWxfcHJlcGFy ZShkc2ktPnBhbmVsKSkgeworCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcHJlcGFyZSB0aGUgcGFu ZWxcbiIpOworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKGRybV9wYW5lbF9lbmFibGUoZHNpLT5w YW5lbCkpIHsKKwkJCURSTV9FUlJPUigiZmFpbGVkIHRvIGVuYWJsZSB0aGUgcGFuZWxcbiIpOwor CQkJcmV0dXJuOworCQl9CisJfQogCiAJbXRrX2RzaV9zZXRfbW9kZShkc2kpOwogCW10a19kc2lf Y2xrX2hzX21vZGUoZHNpLCAxKTsKQEAgLTU5MSw2ICs2NTYsNyBAQCBzdGF0aWMgdm9pZCBtdGtf b3V0cHV0X2RzaV9kaXNhYmxlKHN0cnVjdCBtdGtfZHNpICpkc2kpCiAJCX0KIAl9CiAKKwltdGtf ZHNpX3N0b3AoZHNpKTsKIAltdGtfZHNpX3Bvd2Vyb2ZmKGRzaSk7CiAKIAlkc2ktPmVuYWJsZWQg PSBmYWxzZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90 eC5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19taXBpX3R4LmMKaW5kZXggMTA4ZDMx YS4uMzRlOTVjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19taXBp X3R4LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19taXBpX3R4LmMKQEAgLTE3 Nyw3ICsxNzcsOSBAQCBzdGF0aWMgaW50IG10a19taXBpX3R4X3BsbF9wcmVwYXJlKHN0cnVjdCBj bGtfaHcgKmh3KQogCiAJZGV2X2RiZyhtaXBpX3R4LT5kZXYsICJwcmVwYXJlOiAldSBIelxuIiwg bWlwaV90eC0+ZGF0YV9yYXRlKTsKIAotCWlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPj0gNTAwMDAw MDAwKSB7CisJaWYgKG1pcGlfdHgtPmRhdGFfcmF0ZSA+IDEyNTAwMDAwMDApIHsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfSBlbHNlIGlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPj0gNTAwMDAwMDAwKSB7 CiAJCXR4ZGl2ID0gMTsKIAkJdHhkaXYwID0gMDsKIAkJdHhkaXYxID0gMDsKQEAgLTIwMSw2ICsy MDMsMTAgQEAgc3RhdGljIGludCBtdGtfbWlwaV90eF9wbGxfcHJlcGFyZShzdHJ1Y3QgY2xrX2h3 ICpodykKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCisJbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMo bWlwaV90eCwgTUlQSVRYX0RTSV9UT1BfQ09OLAorCQkJCVJHX0RTSV9MTlRfSU1QX0NBTF9DT0RF IHwgUkdfRFNJX0xOVF9IU19CSUFTX0VOLAorCQkJCSg4IDw8IDQpIHwgUkdfRFNJX0xOVF9IU19C SUFTX0VOKTsKKwogCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lf QkdfQ09OLAogCQkJCVJHX0RTSV9WT1VUX01TSyB8CiAJCQkJUkdfRFNJX0JHX0NLRU4gfCBSR19E U0lfQkdfQ09SRV9FTiwKQEAgLTIxMCwyNCArMjE2LDE4IEBAIHN0YXRpYyBpbnQgbXRrX21pcGlf dHhfcGxsX3ByZXBhcmUoc3RydWN0IGNsa19odyAqaHcpCiAKIAl1c2xlZXBfcmFuZ2UoMzAsIDEw MCk7CiAKLQltdGtfbWlwaV90eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1RPUF9D T04sCi0JCQkJUkdfRFNJX0xOVF9JTVBfQ0FMX0NPREUgfCBSR19EU0lfTE5UX0hTX0JJQVNfRU4s Ci0JCQkJKDggPDwgNCkgfCBSR19EU0lfTE5UX0hTX0JJQVNfRU4pOwotCi0JbXRrX21pcGlfdHhf c2V0X2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9DT04sCi0JCQkgICAgIFJHX0RTSV9DS0dfTERP T1VUX0VOIHwgUkdfRFNJX0xET0NPUkVfRU4pOworCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1p cGlfdHgsIE1JUElUWF9EU0lfQ09OLAorCQkJCVJHX0RTSV9DS0dfTERPT1VUX0VOIHwgUkdfRFNJ X0xET0NPUkVfRU4sCisJCQkJUkdfRFNJX0NLR19MRE9PVVRfRU4gfCBSR19EU0lfTERPQ09SRV9F Tik7CiAKIAltdGtfbWlwaV90eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9Q V1IsCiAJCQkJUkdfRFNJX01QUExMX1NETV9QV1JfT04gfAogCQkJCVJHX0RTSV9NUFBMTF9TRE1f SVNPX0VOLAogCQkJCVJHX0RTSV9NUFBMTF9TRE1fUFdSX09OKTsKIAotCW10a19taXBpX3R4X2Ns ZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKLQkJCSAgICAgICBSR19EU0lf TVBQTExfUExMX0VOKTsKLQogCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElU WF9EU0lfUExMX0NPTjAsCi0JCQkJUkdfRFNJX01QUExMX1RYRElWMCB8IFJHX0RTSV9NUFBMTF9U WERJVjEgfAotCQkJCVJHX0RTSV9NUFBMTF9QUkVESVYsCisJCQkJUkdfRFNJX01QUExMX1BSRURJ ViB8IFJHX0RTSV9NUFBMTF9UWERJVjAgfAorCQkJCVJHX0RTSV9NUFBMTF9UWERJVjEgfCBSR19E U0lfTVBQTExfUE9TRElWLAogCQkJCSh0eGRpdjAgPDwgMykgfCAodHhkaXYxIDw8IDUpKTsKIAog CS8qCkBAIC0yNDIsMTAgKzI0MiwxMiBAQCBzdGF0aWMgaW50IG10a19taXBpX3R4X3BsbF9wcmVw YXJlKHN0cnVjdCBjbGtfaHcgKmh3KQogCQkgICAgICAyNjAwMDAwMCk7CiAJd3JpdGVsKHBjdywg bWlwaV90eC0+cmVncyArIE1JUElUWF9EU0lfUExMX0NPTjIpOwogCi0JbXRrX21pcGlfdHhfc2V0 X2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMSwKLQkJCSAgICAgUkdfRFNJX01QUExM X1NETV9GUkFfRU4pOworCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElUWF9E U0lfUExMX0NPTjEsCisJCQkJUkdfRFNJX01QUExMX1NETV9GUkFfRU4sCisJCQkJUkdfRFNJX01Q UExMX1NETV9GUkFfRU4pOwogCi0JbXRrX21pcGlfdHhfc2V0X2JpdHMobWlwaV90eCwgTUlQSVRY X0RTSV9QTExfQ09OMCwgUkdfRFNJX01QUExMX1BMTF9FTik7CisJbXRrX21pcGlfdHhfdXBkYXRl X2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKKwkJCQlSR19EU0lfTVBQTExfUExM X0VOLCBSR19EU0lfTVBQTExfUExMX0VOKTsKIAogCXVzbGVlcF9yYW5nZSgyMCwgMTAwKTsKIAot LSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=