From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hyungwon Hwang Subject: [PATCH v5 05/12] drm/exynos: dsi: add macros for register access Date: Fri, 10 Apr 2015 14:55:23 +0900 Message-ID: <1428645330-1043-6-git-send-email-human.hwang@samsung.com> References: <1428645330-1043-1-git-send-email-human.hwang@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1428645330-1043-1-git-send-email-human.hwang@samsung.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, devicetree@vger.kernel.org, inki.dae@samsung.com, daniel@fooishbar.org Cc: dh09.lee@samsung.com, sw0312.kim@samsung.com, Hyungwon Hwang , cw00.choi@samsung.com List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIG1hY3JvcyBmb3IgcmVnaXN0ZXIgd3JpdGluZy9yZWFkaW5nLiBUaGlz IGlzIG5lZWRlZCBmb3IKYWRkaW5nIHN1cHBvcnQgRXh5bm9zNTQzMyBNSVBJIERTSSBkcml2ZXIs IG5vdCBieSB1c2luZyBpZiBzdGF0ZW1lbnQsIGJ1dApieSB1c2luZyBkcml2ZXIgZGF0YS4KClNp Z25lZC1vZmYtYnk6IEh5dW5nd29uIEh3YW5nIDxodW1hbi5od2FuZ0BzYW1zdW5nLmNvbT4KLS0t CkNoYW5nZXMgZm9yIHY1OgotIE5ld2x5IGFkZGVkCiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4 eW5vc19kcm1fZHNpLmMgfCA5OCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMgYi9kcml2ZXJzL2dw dS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMKaW5kZXggMTc4YmU0NC4uMTA3NGRjZSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RzaS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kc2kuYwpAQCAtMjM0LDYgKzIzNCw5IEBA CiAjZGVmaW5lIERTSV9YRkVSX1RJTUVPVVRfTVMJCTEwMAogI2RlZmluZSBEU0lfUlhfRklGT19F TVBUWQkJMHgzMDgwMDAwMgoKKyNkZWZpbmUgRFNJX1dSSVRFKGRzaSwgcmVnLCB2YWwpCXdyaXRl bCgodmFsKSwgKGRzaSktPnJlZ19iYXNlICsgKHJlZykpCisjZGVmaW5lIERTSV9SRUFEKGRzaSwg cmVnKQkJcmVhZGwoKGRzaSktPnJlZ19iYXNlICsgKHJlZykpCisKIGVudW0gZXh5bm9zX2RzaV90 cmFuc2Zlcl90eXBlIHsKIAlFWFlOT1NfRFNJX1RYLAogCUVYWU5PU19EU0lfUlgsCkBAIC0zNjEs OCArMzY0LDEwIEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfd2FpdF9mb3JfcmVzZXQoc3RydWN0 IGV4eW5vc19kc2kgKmRzaSkKCiBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3Jlc2V0KHN0cnVjdCBl eHlub3NfZHNpICpkc2kpCiB7CisJc3RydWN0IGV4eW5vc19kc2lfZHJpdmVyX2RhdGEgKmRyaXZl cl9kYXRhID0gZHNpLT5kcml2ZXJfZGF0YTsKKwogCXJlaW5pdF9jb21wbGV0aW9uKCZkc2ktPmNv bXBsZXRlZCk7Ci0Jd3JpdGVsKERTSU1fU1dSU1QsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1NXUlNU X1JFRyk7CisJRFNJX1dSSVRFKGRzaSwgRFNJTV9TV1JTVF9SRUcsIERTSU1fU1dSU1QpOwogfQoK ICNpZm5kZWYgTUhaCkBAIC0zNzIsNiArMzc3LDcgQEAgc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9y ZXNldChzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQogc3RhdGljIHVuc2lnbmVkIGxvbmcgZXh5bm9z X2RzaV9wbGxfZmluZF9wbXMoc3RydWN0IGV4eW5vc19kc2kgKmRzaSwKIAkJdW5zaWduZWQgbG9u ZyBmaW4sIHVuc2lnbmVkIGxvbmcgZm91dCwgdTggKnAsIHUxNiAqbSwgdTggKnMpCiB7CisJc3Ry dWN0IGV4eW5vc19kc2lfZHJpdmVyX2RhdGEgKmRyaXZlcl9kYXRhID0gZHNpLT5kcml2ZXJfZGF0 YTsKIAl1bnNpZ25lZCBsb25nIGJlc3RfZnJlcSA9IDA7CiAJdTMyIG1pbl9kZWx0YSA9IDB4ZmZm ZmZmZmY7CiAJdTggcF9taW4sIHBfbWF4OwpAQCAtNDYyLDcgKzQ2OCw3IEBAIHN0YXRpYyB1bnNp Z25lZCBsb25nIGV4eW5vc19kc2lfc2V0X3BsbChzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpLAogCQly ZWcgfD0gRFNJTV9GUkVRX0JBTkQoYmFuZCk7CiAJfQoKLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19i YXNlICsgRFNJTV9QTExDVFJMX1JFRyk7CisJRFNJX1dSSVRFKGRzaSwgRFNJTV9QTExDVFJMX1JF RywgcmVnKTsKCiAJdGltZW91dCA9IDEwMDA7CiAJZG8gewpAQCAtNDcwLDcgKzQ3Niw3IEBAIHN0 YXRpYyB1bnNpZ25lZCBsb25nIGV4eW5vc19kc2lfc2V0X3BsbChzdHJ1Y3QgZXh5bm9zX2RzaSAq ZHNpLAogCQkJZGV2X2Vycihkc2ktPmRldiwgIlBMTCBmYWlsZWQgdG8gc3RhYmlsaXplXG4iKTsK IAkJCXJldHVybiAwOwogCQl9Ci0JCXJlZyA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1NU QVRVU19SRUcpOworCQlyZWcgPSBEU0lfUkVBRChkc2ksIERTSU1fU1RBVFVTX1JFRyk7CiAJfSB3 aGlsZSAoKHJlZyAmIERTSU1fUExMX1NUQUJMRSkgPT0gMCk7CgogCXJldHVybiBmb3V0OwpAQCAt NTAwLDcgKzUwNiw3IEBAIHN0YXRpYyBpbnQgZXh5bm9zX2RzaV9lbmFibGVfY2xvY2soc3RydWN0 IGV4eW5vc19kc2kgKmRzaSkKIAlkZXZfZGJnKGRzaS0+ZGV2LCAiaHNfY2xrID0gJWx1LCBieXRl X2NsayA9ICVsdSwgZXNjX2NsayA9ICVsdVxuIiwKIAkJaHNfY2xrLCBieXRlX2NsaywgZXNjX2Ns ayk7CgotCXJlZyA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0NMS0NUUkxfUkVHKTsKKwly ZWcgPSBEU0lfUkVBRChkc2ksIERTSU1fQ0xLQ1RSTF9SRUcpOwogCXJlZyAmPSB+KERTSU1fRVND X1BSRVNDQUxFUl9NQVNLIHwgRFNJTV9MQU5FX0VTQ19DTEtfRU5fQ0xLCiAJCQl8IERTSU1fTEFO RV9FU0NfQ0xLX0VOX0RBVEFfTUFTSyB8IERTSU1fUExMX0JZUEFTUwogCQkJfCBEU0lNX0JZVEVf Q0xLX1NSQ19NQVNLKTsKQEAgLTUxMCw3ICs1MTYsNyBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lf ZW5hYmxlX2Nsb2NrKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCiAJCQl8IERTSU1fTEFORV9FU0Nf Q0xLX0VOX0RBVEEoQklUKGRzaS0+bGFuZXMpIC0gMSkKIAkJCXwgRFNJTV9CWVRFX0NMS19TUkMo MCkKIAkJCXwgRFNJTV9UWF9SRVFVRVNUX0hTQ0xLOwotCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jh c2UgKyBEU0lNX0NMS0NUUkxfUkVHKTsKKwlEU0lfV1JJVEUoZHNpLCBEU0lNX0NMS0NUUkxfUkVH LCByZWcpOwoKIAlyZXR1cm4gMDsKIH0KQEAgLTUyNSw3ICs1MzEsNyBAQCBzdGF0aWMgdm9pZCBl eHlub3NfZHNpX3NldF9waHlfY3RybChzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQoKIAkvKiBCIEQt UEhZOiBELVBIWSBNYXN0ZXIgJiBTbGF2ZSBBbmFsb2cgQmxvY2sgY29udHJvbCAqLwogCXJlZyA9 IERTSU1fUEhZQ1RSTF9VTFBTX0VYSVQoMHgwYWYpOwotCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jh c2UgKyBEU0lNX1BIWUNUUkxfUkVHKTsKKwlEU0lfV1JJVEUoZHNpLCBEU0lNX1BIWUNUUkxfUkVH LCByZWcpOwoKIAkvKgogCSAqIFQgTFBYOiBUcmFuc21pdHRlZCBsZW5ndGggb2YgYW55IExvdy1Q b3dlciBzdGF0ZSBwZXJpb2QKQEAgLTUzMyw3ICs1MzksNyBAQCBzdGF0aWMgdm9pZCBleHlub3Nf ZHNpX3NldF9waHlfY3RybChzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQogCSAqCWJ1cnN0CiAJICov CiAJcmVnID0gRFNJTV9QSFlUSU1JTkdfTFBYKDB4MDYpIHwgRFNJTV9QSFlUSU1JTkdfSFNfRVhJ VCgweDBiKTsKLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9QSFlUSU1JTkdfUkVH KTsKKwlEU0lfV1JJVEUoZHNpLCBEU0lNX1BIWVRJTUlOR19SRUcsIHJlZyk7CgogCS8qCiAJICog VCBDTEstUFJFUEFSRTogVGltZSB0aGF0IHRoZSB0cmFuc21pdHRlciBkcml2ZXMgdGhlIENsb2Nr IExhbmUgTFAtMDAKQEAgLTU1Miw3ICs1NTgsNyBAQCBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3Nl dF9waHlfY3RybChzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQogCQkJRFNJTV9QSFlUSU1JTkcxX0NM S19aRVJPKDB4MjcpIHwKIAkJCURTSU1fUEhZVElNSU5HMV9DTEtfUE9TVCgweDBkKSB8CiAJCQlE U0lNX1BIWVRJTUlORzFfQ0xLX1RSQUlMKDB4MDgpOwotCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jh c2UgKyBEU0lNX1BIWVRJTUlORzFfUkVHKTsKKwlEU0lfV1JJVEUoZHNpLCBEU0lNX1BIWVRJTUlO RzFfUkVHLCByZWcpOwoKIAkvKgogCSAqIFQgSFMtUFJFUEFSRTogVGltZSB0aGF0IHRoZSB0cmFu c21pdHRlciBkcml2ZXMgdGhlIERhdGEgTGFuZSBMUC0wMApAQCAtNTY1LDIxICs1NzEsMjEgQEAg c3RhdGljIHZvaWQgZXh5bm9zX2RzaV9zZXRfcGh5X2N0cmwoc3RydWN0IGV4eW5vc19kc2kgKmRz aSkKIAkgKi8KIAlyZWcgPSBEU0lNX1BIWVRJTUlORzJfSFNfUFJFUEFSRSgweDA5KSB8IERTSU1f UEhZVElNSU5HMl9IU19aRVJPKDB4MGQpIHwKIAkJCURTSU1fUEhZVElNSU5HMl9IU19UUkFJTCgw eDBiKTsKLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9QSFlUSU1JTkcyX1JFRyk7 CisJRFNJX1dSSVRFKGRzaSwgRFNJTV9QSFlUSU1JTkcyX1JFRywgcmVnKTsKIH0KCiBzdGF0aWMg dm9pZCBleHlub3NfZHNpX2Rpc2FibGVfY2xvY2soc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKIHsK IAl1MzIgcmVnOwoKLQlyZWcgPSByZWFkbChkc2ktPnJlZ19iYXNlICsgRFNJTV9DTEtDVFJMX1JF Ryk7CisJcmVnID0gRFNJX1JFQUQoZHNpLCBEU0lNX0NMS0NUUkxfUkVHKTsKIAlyZWcgJj0gfihE U0lNX0xBTkVfRVNDX0NMS19FTl9DTEsgfCBEU0lNX0xBTkVfRVNDX0NMS19FTl9EQVRBX01BU0sK IAkJCXwgRFNJTV9FU0NfQ0xLRU4gfCBEU0lNX0JZVEVfQ0xLRU4pOwotCXdyaXRlbChyZWcsIGRz aS0+cmVnX2Jhc2UgKyBEU0lNX0NMS0NUUkxfUkVHKTsKKwlEU0lfV1JJVEUoZHNpLCBEU0lNX0NM S0NUUkxfUkVHLCByZWcpOwoKLQlyZWcgPSByZWFkbChkc2ktPnJlZ19iYXNlICsgRFNJTV9QTExD VFJMX1JFRyk7CisJcmVnID0gRFNJX1JFQUQoZHNpLCBEU0lNX1BMTENUUkxfUkVHKTsKIAlyZWcg Jj0gfkRTSU1fUExMX0VOOwotCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1BMTENU UkxfUkVHKTsKKwlEU0lfV1JJVEUoZHNpLCBEU0lNX1BMTENUUkxfUkVHLCByZWcpOwogfQoKIHN0 YXRpYyBpbnQgZXh5bm9zX2RzaV9pbml0X2xpbmsoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKQEAg LTU5MCwxNSArNTk2LDE0IEBAIHN0YXRpYyBpbnQgZXh5bm9zX2RzaV9pbml0X2xpbmsoc3RydWN0 IGV4eW5vc19kc2kgKmRzaSkKIAl1MzIgbGFuZXNfbWFzazsKCiAJLyogSW5pdGlhbGl6ZSBGSUZP IHBvaW50ZXJzICovCi0JcmVnID0gcmVhZGwoZHNpLT5yZWdfYmFzZSArIERTSU1fRklGT0NUUkxf UkVHKTsKKwlyZWcgPSBEU0lfUkVBRChkc2ksIERTSU1fRklGT0NUUkxfUkVHKTsKIAlyZWcgJj0g fjB4MWY7Ci0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fRklGT0NUUkxfUkVHKTsK KwlEU0lfV1JJVEUoZHNpLCBEU0lNX0ZJRk9DVFJMX1JFRywgcmVnKTsKCiAJdXNsZWVwX3Jhbmdl KDkwMDAsIDExMDAwKTsKCiAJcmVnIHw9IDB4MWY7Ci0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFz ZSArIERTSU1fRklGT0NUUkxfUkVHKTsKLQorCURTSV9XUklURShkc2ksIERTSU1fRklGT0NUUkxf UkVHLCByZWcpOwogCXVzbGVlcF9yYW5nZSg5MDAwLCAxMTAwMCk7CgogCS8qIERTSSBjb25maWd1 cmF0aW9uICovCkBAIC02NTcsMTQgKzY2MiwxNCBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfaW5p dF9saW5rKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCgogCXJlZyB8PSBEU0lNX05VTV9PRl9EQVRB X0xBTkUoZHNpLT5sYW5lcyAtIDEpOwoKLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJ TV9DT05GSUdfUkVHKTsKKwlEU0lfV1JJVEUoZHNpLCBEU0lNX0NPTkZJR19SRUcsIHJlZyk7Cgog CXJlZyB8PSBEU0lNX0xBTkVfRU5fQ0xLOwotCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBE U0lNX0NPTkZJR19SRUcpOworCURTSV9XUklURShkc2ksIERTSU1fQ09ORklHX1JFRywgcmVnKTsK CiAJbGFuZXNfbWFzayA9IEJJVChkc2ktPmxhbmVzKSAtIDE7CiAJcmVnIHw9IERTSU1fTEFORV9F TihsYW5lc19tYXNrKTsKLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9DT05GSUdf UkVHKTsKKwlEU0lfV1JJVEUoZHNpLCBEU0lNX0NPTkZJR19SRUcsIHJlZyk7CgogCS8qCiAJICog VXNlIG5vbi1jb250aW51b3VzIGNsb2NrIG1vZGUgaWYgdGhlIHBlcmlwYXJhbCB3YW50cyBhbmQK QEAgLTY3Nyw3ICs2ODIsNyBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfaW5pdF9saW5rKHN0cnVj dCBleHlub3NfZHNpICpkc2kpCiAJaWYgKGRyaXZlcl9kYXRhLT5oYXNfY2xrbGFuZV9zdG9wICYm CiAJCQlkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9DTE9DS19OT05fQ09OVElOVU9VUykgewog CQlyZWcgfD0gRFNJTV9DTEtMQU5FX1NUT1A7Ci0JCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2Ug KyBEU0lNX0NPTkZJR19SRUcpOworCQlEU0lfV1JJVEUoZHNpLCBEU0lNX0NPTkZJR19SRUcsIHJl Zyk7CiAJfQoKIAkvKiBDaGVjayBjbG9jayBhbmQgZGF0YSBsYW5lIHN0YXRlIGFyZSBzdG9wIHN0 YXRlICovCkBAIC02ODgsMTkgKzY5MywxOSBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfaW5pdF9s aW5rKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJfQoKLQkJ cmVnID0gcmVhZGwoZHNpLT5yZWdfYmFzZSArIERTSU1fU1RBVFVTX1JFRyk7CisJCXJlZyA9IERT SV9SRUFEKGRzaSwgRFNJTV9TVEFUVVNfUkVHKTsKIAkJaWYgKChyZWcgJiBEU0lNX1NUT1BfU1RB VEVfREFUKGxhbmVzX21hc2spKQogCQkgICAgIT0gRFNJTV9TVE9QX1NUQVRFX0RBVChsYW5lc19t YXNrKSkKIAkJCWNvbnRpbnVlOwogCX0gd2hpbGUgKCEocmVnICYgKERTSU1fU1RPUF9TVEFURV9D TEsgfCBEU0lNX1RYX1JFQURZX0hTX0NMSykpKTsKCi0JcmVnID0gcmVhZGwoZHNpLT5yZWdfYmFz ZSArIERTSU1fRVNDTU9ERV9SRUcpOworCXJlZyA9IERTSV9SRUFEKGRzaSwgRFNJTV9FU0NNT0RF X1JFRyk7CiAJcmVnICY9IH5EU0lNX1NUT1BfU1RBVEVfQ05UX01BU0s7CiAJcmVnIHw9IERTSU1f U1RPUF9TVEFURV9DTlQoMHhmKTsKLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9F U0NNT0RFX1JFRyk7CisJRFNJX1dSSVRFKGRzaSwgRFNJTV9FU0NNT0RFX1JFRywgcmVnKTsKCiAJ cmVnID0gRFNJTV9CVEFfVElNRU9VVCgweGZmKSB8IERTSU1fTFBEUl9USU1FT1VUKDB4ZmZmZik7 Ci0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fVElNRU9VVF9SRUcpOworCURTSV9X UklURShkc2ksIERTSU1fVElNRU9VVF9SRUcsIHJlZyk7CgogCXJldHVybiAwOwogfQpAQCAtNzE0 LDE5ICs3MTksMTkgQEAgc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9zZXRfZGlzcGxheV9tb2RlKHN0 cnVjdCBleHlub3NfZHNpICpkc2kpCiAJCXJlZyA9IERTSU1fQ01EX0FMTE9XKDB4ZikKIAkJCXwg RFNJTV9TVEFCTEVfVkZQKHZtLT52ZnJvbnRfcG9yY2gpCiAJCQl8IERTSU1fTUFJTl9WQlAodm0t PnZiYWNrX3BvcmNoKTsKLQkJd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fTVZQT1JD SF9SRUcpOworCQlEU0lfV1JJVEUoZHNpLCBEU0lNX01WUE9SQ0hfUkVHLCByZWcpOwoKIAkJcmVn ID0gRFNJTV9NQUlOX0hGUCh2bS0+aGZyb250X3BvcmNoKQogCQkJfCBEU0lNX01BSU5fSEJQKHZt LT5oYmFja19wb3JjaCk7Ci0JCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX01IUE9S Q0hfUkVHKTsKKwkJRFNJX1dSSVRFKGRzaSwgRFNJTV9NSFBPUkNIX1JFRywgcmVnKTsKCiAJCXJl ZyA9IERTSU1fTUFJTl9WU0Eodm0tPnZzeW5jX2xlbikKIAkJCXwgRFNJTV9NQUlOX0hTQSh2bS0+ aHN5bmNfbGVuKTsKLQkJd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fTVNZTkNfUkVH KTsKKwkJRFNJX1dSSVRFKGRzaSwgRFNJTV9NU1lOQ19SRUcsIHJlZyk7CiAJfQoKIAlyZWcgPSBE U0lNX01BSU5fSFJFU09MKHZtLT5oYWN0aXZlKSB8IERTSU1fTUFJTl9WUkVTT0wodm0tPnZhY3Rp dmUpOwotCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX01EUkVTT0xfUkVHKTsKKwlE U0lfV1JJVEUoZHNpLCBEU0lNX01EUkVTT0xfUkVHLCByZWcpOwoKIAlkZXZfZGJnKGRzaS0+ZGV2 LCAiTENEIHNpemUgPSAlZHglZFxuIiwgdm0tPmhhY3RpdmUsIHZtLT52YWN0aXZlKTsKIH0KQEAg LTczNSwxMiArNzQwLDEyIEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfc2V0X2Rpc3BsYXlfZW5h YmxlKHN0cnVjdCBleHlub3NfZHNpICpkc2ksIGJvb2wgZW5hYmxlKQogewogCXUzMiByZWc7Cgot CXJlZyA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX01EUkVTT0xfUkVHKTsKKwlyZWcgPSBE U0lfUkVBRChkc2ksIERTSU1fTURSRVNPTF9SRUcpOwogCWlmIChlbmFibGUpCiAJCXJlZyB8PSBE U0lNX01BSU5fU1RBTkRfQlk7CiAJZWxzZQogCQlyZWcgJj0gfkRTSU1fTUFJTl9TVEFORF9CWTsK LQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9NRFJFU09MX1JFRyk7CisJRFNJX1dS SVRFKGRzaSwgRFNJTV9NRFJFU09MX1JFRywgcmVnKTsKIH0KCiBzdGF0aWMgaW50IGV4eW5vc19k c2lfd2FpdF9mb3JfaGRyX2ZpZm8oc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKQEAgLTc0OCw3ICs3 NTMsNyBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfd2FpdF9mb3JfaGRyX2ZpZm8oc3RydWN0IGV4 eW5vc19kc2kgKmRzaSkKIAlpbnQgdGltZW91dCA9IDIwMDA7CgogCWRvIHsKLQkJdTMyIHJlZyA9 IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0ZJRk9DVFJMX1JFRyk7CisJCXUzMiByZWcgPSBE U0lfUkVBRChkc2ksIERTSU1fRklGT0NUUkxfUkVHKTsKCiAJCWlmICghKHJlZyAmIERTSU1fU0ZS X0hFQURFUl9GVUxMKSkKIAkJCXJldHVybiAwOwpAQCAtNzYyLDIyICs3NjcsMjEgQEAgc3RhdGlj IGludCBleHlub3NfZHNpX3dhaXRfZm9yX2hkcl9maWZvKHN0cnVjdCBleHlub3NfZHNpICpkc2kp Cgogc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9zZXRfY21kX2xwbShzdHJ1Y3QgZXh5bm9zX2RzaSAq ZHNpLCBib29sIGxwbSkKIHsKLQl1MzIgdiA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0VT Q01PREVfUkVHKTsKKwl1MzIgdiA9IERTSV9SRUFEKGRzaSwgRFNJTV9FU0NNT0RFX1JFRyk7Cgog CWlmIChscG0pCiAJCXYgfD0gRFNJTV9DTURfTFBEVF9MUDsKIAllbHNlCiAJCXYgJj0gfkRTSU1f Q01EX0xQRFRfTFA7CgotCXdyaXRlbCh2LCBkc2ktPnJlZ19iYXNlICsgRFNJTV9FU0NNT0RFX1JF Ryk7CisJRFNJX1dSSVRFKGRzaSwgRFNJTV9FU0NNT0RFX1JFRywgdik7CiB9Cgogc3RhdGljIHZv aWQgZXh5bm9zX2RzaV9mb3JjZV9idGEoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKIHsKLQl1MzIg diA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0VTQ01PREVfUkVHKTsKLQorCXUzMiB2ID0g RFNJX1JFQUQoZHNpLCBEU0lNX0VTQ01PREVfUkVHKTsKIAl2IHw9IERTSU1fRk9SQ0VfQlRBOwot CXdyaXRlbCh2LCBkc2ktPnJlZ19iYXNlICsgRFNJTV9FU0NNT0RFX1JFRyk7CisJRFNJX1dSSVRF KGRzaSwgRFNJTV9FU0NNT0RFX1JFRywgdik7CiB9Cgogc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9z ZW5kX3RvX2ZpZm8oc3RydWN0IGV4eW5vc19kc2kgKmRzaSwKQEAgLTgwMSw3ICs4MDUsNyBAQCBz dGF0aWMgdm9pZCBleHlub3NfZHNpX3NlbmRfdG9fZmlmbyhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNp LAogCXdoaWxlIChsZW5ndGggPj0gNCkgewogCQlyZWcgPSAocGF5bG9hZFszXSA8PCAyNCkgfCAo cGF5bG9hZFsyXSA8PCAxNikKIAkJCQkJfCAocGF5bG9hZFsxXSA8PCA4KSB8IHBheWxvYWRbMF07 Ci0JCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1BBWUxPQURfUkVHKTsKKwkJRFNJ X1dSSVRFKGRzaSwgRFNJTV9QQVlMT0FEX1JFRywgcmVnKTsKIAkJcGF5bG9hZCArPSA0OwogCQls ZW5ndGggLT0gNDsKIAl9CkBAIC04MTYsNyArODIwLDcgQEAgc3RhdGljIHZvaWQgZXh5bm9zX2Rz aV9zZW5kX3RvX2ZpZm8oc3RydWN0IGV4eW5vc19kc2kgKmRzaSwKIAkJLyogRmFsbCB0aHJvdWdo ICovCiAJY2FzZSAxOgogCQlyZWcgfD0gcGF5bG9hZFswXTsKLQkJd3JpdGVsKHJlZywgZHNpLT5y ZWdfYmFzZSArIERTSU1fUEFZTE9BRF9SRUcpOworCQlEU0lfV1JJVEUoZHNpLCBEU0lNX1BBWUxP QURfUkVHLCByZWcpOwogCQlicmVhazsKIAljYXNlIDA6CiAJCS8qIERvIG5vdGhpbmcgKi8KQEAg LTgzOSw3ICs4NDMsNyBAQCBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3NlbmRfdG9fZmlmbyhzdHJ1 Y3QgZXh5bm9zX2RzaSAqZHNpLAogCQlkc2ktPnN0YXRlIF49IERTSU1fU1RBVEVfQ01EX0xQTTsK IAl9CgotCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1BLVEhEUl9SRUcpOworCURT SV9XUklURShkc2ksIERTSU1fUEtUSERSX1JFRywgcmVnKTsKCiAJaWYgKHhmZXItPmZsYWdzICYg TUlQSV9EU0lfTVNHX1JFUV9BQ0spCiAJCWV4eW5vc19kc2lfZm9yY2VfYnRhKGRzaSk7CkBAIC04 NTUsNyArODU5LDcgQEAgc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9yZWFkX2Zyb21fZmlmbyhzdHJ1 Y3QgZXh5bm9zX2RzaSAqZHNpLAogCXUzMiByZWc7CgogCWlmIChmaXJzdCkgewotCQlyZWcgPSBy ZWFkbChkc2ktPnJlZ19iYXNlICsgRFNJTV9SWEZJRk9fUkVHKTsKKwkJcmVnID0gRFNJX1JFQUQo ZHNpLCBEU0lNX1JYRklGT19SRUcpOwoKIAkJc3dpdGNoIChyZWcgJiAweDNmKSB7CiAJCWNhc2Ug TUlQSV9EU0lfUlhfR0VORVJJQ19TSE9SVF9SRUFEX1JFU1BPTlNFXzJCWVRFOgpAQCAtODk0LDcg Kzg5OCw3IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfcmVhZF9mcm9tX2ZpZm8oc3RydWN0IGV4 eW5vc19kc2kgKmRzaSwKCiAJLyogUmVjZWl2ZSBwYXlsb2FkICovCiAJd2hpbGUgKGxlbmd0aCA+ PSA0KSB7Ci0JCXJlZyA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1JYRklGT19SRUcpOwor CQlyZWcgPSBEU0lfUkVBRChkc2ksIERTSU1fUlhGSUZPX1JFRyk7CiAJCXBheWxvYWRbMF0gPSAo cmVnID4+ICAwKSAmIDB4ZmY7CiAJCXBheWxvYWRbMV0gPSAocmVnID4+ICA4KSAmIDB4ZmY7CiAJ CXBheWxvYWRbMl0gPSAocmVnID4+IDE2KSAmIDB4ZmY7CkBAIC05MDQsNyArOTA4LDcgQEAgc3Rh dGljIHZvaWQgZXh5bm9zX2RzaV9yZWFkX2Zyb21fZmlmbyhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNp LAogCX0KCiAJaWYgKGxlbmd0aCkgewotCQlyZWcgPSByZWFkbChkc2ktPnJlZ19iYXNlICsgRFNJ TV9SWEZJRk9fUkVHKTsKKwkJcmVnID0gRFNJX1JFQUQoZHNpLCBEU0lNX1JYRklGT19SRUcpOwog CQlzd2l0Y2ggKGxlbmd0aCkgewogCQljYXNlIDM6CiAJCQlwYXlsb2FkWzJdID0gKHJlZyA+PiAx NikgJiAweGZmOwpAQCAtOTIzLDcgKzkyNyw3IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfcmVh ZF9mcm9tX2ZpZm8oc3RydWN0IGV4eW5vc19kc2kgKmRzaSwKIGNsZWFyX2ZpZm86CiAJbGVuZ3Ro ID0gRFNJX1JYX0ZJRk9fU0laRSAvIDQ7CiAJZG8gewotCQlyZWcgPSByZWFkbChkc2ktPnJlZ19i YXNlICsgRFNJTV9SWEZJRk9fUkVHKTsKKwkJcmVnID0gRFNJX1JFQUQoZHNpLCBEU0lNX1JYRklG T19SRUcpOwogCQlpZiAocmVnID09IERTSV9SWF9GSUZPX0VNUFRZKQogCQkJYnJlYWs7CiAJfSB3 aGlsZSAoLS1sZW5ndGgpOwpAQCAtMTA3OSwxOCArMTA4MywxOCBAQCBzdGF0aWMgaXJxcmV0dXJu X3QgZXh5bm9zX2RzaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogCXN0cnVjdCBleHlub3Nf ZHNpICpkc2kgPSBkZXZfaWQ7CiAJdTMyIHN0YXR1czsKCi0Jc3RhdHVzID0gcmVhZGwoZHNpLT5y ZWdfYmFzZSArIERTSU1fSU5UU1JDX1JFRyk7CisJc3RhdHVzID0gRFNJX1JFQUQoZHNpLCBEU0lN X0lOVFNSQ19SRUcpOwogCWlmICghc3RhdHVzKSB7CiAJCXN0YXRpYyB1bnNpZ25lZCBsb25nIGlu dCBqOwogCQlpZiAocHJpbnRrX3RpbWVkX3JhdGVsaW1pdCgmaiwgNTAwKSkKIAkJCWRldl93YXJu KGRzaS0+ZGV2LCAic3B1cmlvdXMgaW50ZXJydXB0XG4iKTsKIAkJcmV0dXJuIElSUV9IQU5ETEVE OwogCX0KLQl3cml0ZWwoc3RhdHVzLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9JTlRTUkNfUkVHKTsK KwlEU0lfV1JJVEUoZHNpLCBEU0lNX0lOVFNSQ19SRUcsIHN0YXR1cyk7CgogCWlmIChzdGF0dXMg JiBEU0lNX0lOVF9TV19SU1RfUkVMRUFTRSkgewogCQl1MzIgbWFzayA9IH4oRFNJTV9JTlRfUlhf RE9ORSB8IERTSU1fSU5UX1NGUl9GSUZPX0VNUFRZKTsKLQkJd3JpdGVsKG1hc2ssIGRzaS0+cmVn X2Jhc2UgKyBEU0lNX0lOVE1TS19SRUcpOworCQlEU0lfV1JJVEUoZHNpLCBEU0lNX0lOVE1TS19S RUcsIG1hc2spOwogCQljb21wbGV0ZSgmZHNpLT5jb21wbGV0ZWQpOwogCQlyZXR1cm4gSVJRX0hB TkRMRUQ7CiAJfQotLQoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK