From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yakir Yang Subject: [PATCH v10 04/17] drm: bridge: analogix/dp: dynamic parse sync_pol & interlace & dynamic_range Date: Mon, 7 Dec 2015 14:38:55 +0800 Message-ID: <1449470335-31018-1-git-send-email-ykk@rock-chips.com> References: <1449470239-30667-1-git-send-email-ykk@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1449470239-30667-1-git-send-email-ykk@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Inki Dae , Mark Yao , Jingoo Han , Heiko Stuebner Cc: devicetree@vger.kernel.org, Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, Russell King , javier@osg.samsung.com, emil.l.velikov@gmail.com, Seung-Woo Kim , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Kishon Vijay Abraham I , linux-rockchip@lists.infradead.org, Andrzej Hajda , Kyungmin Park , Rob Herring , ajaynumb@gmail.com, Andy Yan , Thierry Reding , Gustavo Padovan , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org Qm90aCBoc3luYy92c3luYyBwb2xhcml0eSBhbmQgaW50ZXJsYWNlIG1vZGUgY2FuIGJlIHBhcnNl ZCBmcm9tCmRybSBkaXNwbGF5IG1vZGUsIGFuZCBkeW5hbWljX3JhbmdlIGFuZCB5Y2Jjcl9jb2Vm ZiBjYW4gYmUganVkZ2UKYnkgdGhlIHZpZGVvIGNvZGUuCgpCdXQgcHJlc3VtYWJseSBFeHlub3Mg c3RpbGwgcmVsaWVzIG9uIHRoZSBEVCBwcm9wZXJ0aWVzLCBzbyB0YWtlCmdvb2QgdXNlIG9mIG1v ZGVfZml4dXAoKSBpbiB0byBhY2hpZXZlIHRoZSBjb21wYXRpYmlsaXR5IGhhY2tzLgoKU2lnbmVk LW9mZi1ieTogWWFraXIgWWFuZyA8eWtrQHJvY2stY2hpcHMuY29tPgpSZXZpZXdlZC1ieTogS3J6 eXN6dG9mIEtvemxvd3NraSA8ay5rb3psb3dza2lAc2Ftc3VuZy5jb20+ClRlc3RlZC1ieTogSmF2 aWVyIE1hcnRpbmV6IENhbmlsbGFzIDxqYXZpZXJAb3NnLnNhbXN1bmcuY29tPgotLS0KQ2hhbmdl cyBpbiB2MTA6IE5vbmUKQ2hhbmdlcyBpbiB2OTogTm9uZQpDaGFuZ2VzIGluIHY4OiBOb25lCkNo YW5nZXMgaW4gdjc6Ci0gQmFjayB0byB1c2UgdGhlIG9mX3Byb3BlcnR5X3JlYWRfYm9vbCgpIGlu dGVyZmFjcyB0byBwcm92b2lkIGJhY2t3YXJkCiAgY29tcGF0aWJpbGl0eSBvZiAiaHN5bmMtYWN0 aXZlLWhpZ2giICJ2c3luYy1hY3RpdmUtaGlnaCIgImludGVybGFjZWQiCiAgdG8gYXZvaWQgLUVP VkVSRkxPVyBlcnJvciAoS3J6eXN6dG9mKQoKQ2hhbmdlcyBpbiB2NjogTm9uZQpDaGFuZ2VzIGlu IHY1OgotIFN3aXRjaCB2aWRlbyB0aW1pbmcgdHlwZSB0byAidTMyIiwgc28gZHJpdmVyIGNvdWxk IHVzZSAib2ZfcHJvcGVydHlfcmVhZF91MzIiCiAgdG8gZ2V0IHRoZSBiYWNrd29yZCB0aW1pbmcg dmFsdWVzLiBLcnp5c3p0b2Ygc3VnZ2VzdCBtZSB0aGF0IGRyaXZlciBjb3VsZCB1c2UKICB0aGUg Im9mX3Byb3BlcnR5X3JlYWRfYm9vbCIgdG8gZ2V0IGJhY2t3b3JkIHRpbWluZyB2YWx1ZXMsIGJ1 dCB0aGF0IGludGVyZmFjcwogIHdvdWxkIG1vZGlmeSB0aGUgb3JpZ2luYWwgZHJtX2Rpc3BsYXlf bW9kZSB0aW1pbmcgZGlyZWN0bHkgKHdoZXRoZXIgdGhvc2UKICBwcm9wZXJ0aWVzIGV4aXN0cyBv ciBub3QpLgoKQ2hhbmdlcyBpbiB2NDoKLSBQcm92aWRlIGJhY2t3b3JkIGNvbXBhdGliaWxpdHkg d2l0aCBzYW1zdW5nLiAoS3J6eXN6dG9mKQoKQ2hhbmdlcyBpbiB2MzoKLSBEeW5hbWljIHBhcnNl IHZpZGVvIHRpbWluZyBpbmZvIGZyb20gc3RydWN0IGRybV9kaXNwbGF5X21vZGUgYW5kCiAgc3Ry dWN0IGRybV9kaXNwbGF5X2luZm8uIChUaGllcnJ5KQoKQ2hhbmdlcyBpbiB2MjogTm9uZQoKIGRy aXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5jIHwgMTQ4ICsr KysrKysrKysrKystLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFs b2dpeF9kcF9jb3JlLmggfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgv YW5hbG9naXhfZHBfcmVnLmMgIHwgIDE0ICstCiAzIGZpbGVzIGNoYW5nZWQsIDEwMyBpbnNlcnRp b25zKCspLCA2MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv YW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5jCmluZGV4IDFmNjZkZWIuLjVmNTQyYjcgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5j CkBAIC04OTAsOCArODkwLDggQEAgc3RhdGljIHZvaWQgYW5hbG9naXhfZHBfY29tbWl0KHN0cnVj dCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQogCQlyZXR1cm47CiAJfQogCi0JcmV0ID0gYW5hbG9n aXhfZHBfc2V0X2xpbmtfdHJhaW4oZHAsIGRwLT52aWRlb19pbmZvLT5sYW5lX2NvdW50LAotCQkJ CQkgZHAtPnZpZGVvX2luZm8tPmxpbmtfcmF0ZSk7CisJcmV0ID0gYW5hbG9naXhfZHBfc2V0X2xp bmtfdHJhaW4oZHAsIGRwLT52aWRlb19pbmZvLmxhbmVfY291bnQsCisJCQkJCSBkcC0+dmlkZW9f aW5mby5saW5rX3JhdGUpOwogCWlmIChyZXQpIHsKIAkJZGV2X2VycihkcC0+ZGV2LCAidW5hYmxl IHRvIGRvIGxpbmsgdHJhaW5cbiIpOwogCQlyZXR1cm47CkBAIC0xMDMyLDYgKzEwMzIsODUgQEAg c3RhdGljIHZvaWQgYW5hbG9naXhfZHBfYnJpZGdlX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSkKIAlkcC0+ZHBtc19tb2RlID0gRFJNX01PREVfRFBNU19PRkY7CiB9CiAKK3N0YXRp YyB2b2lkIGFuYWxvZ2l4X2RwX2JyaWRnZV9tb2RlX3NldChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlLAorCQkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqb3JpZ19tb2RlLAorCQkJCQlzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNl ICpkcCA9IGJyaWRnZS0+ZHJpdmVyX3ByaXZhdGU7CisJc3RydWN0IGRybV9kaXNwbGF5X2luZm8g KmRpc3BsYXlfaW5mbyA9ICZkcC0+Y29ubmVjdG9yLT5kaXNwbGF5X2luZm87CisJc3RydWN0IHZp ZGVvX2luZm8gKnZpZGVvID0gJmRwLT52aWRlb19pbmZvOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAq ZHBfbm9kZSA9IGRwLT5kZXYtPm9mX25vZGU7CisJaW50IHZpYzsKKworCS8qIElucHV0IHZpZGVv IGludGVybGFjZXMgJiBoc3luYyBwb2wgJiB2c3luYyBwb2wgKi8KKwl2aWRlby0+aW50ZXJsYWNl ZCA9ICEhKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpOworCXZpZGVvLT52 X3N5bmNfcG9sYXJpdHkgPSAhIShtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfTlZTWU5DKTsK Kwl2aWRlby0+aF9zeW5jX3BvbGFyaXR5ID0gISEobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFH X05IU1lOQyk7CisKKwkvKiBJbnB1dCB2aWRlbyBkeW5hbWljX3JhbmdlICYgY29sb3JpbWV0cnkg Ki8KKwl2aWMgPSBkcm1fbWF0Y2hfY2VhX21vZGUobW9kZSk7CisJaWYgKCh2aWMgPT0gNikgfHwg KHZpYyA9PSA3KSB8fCAodmljID09IDIxKSB8fCAodmljID09IDIyKSB8fAorCSAgICAodmljID09 IDIpIHx8ICh2aWMgPT0gMykgfHwgKHZpYyA9PSAxNykgfHwgKHZpYyA9PSAxOCkpIHsKKwkJdmlk ZW8tPmR5bmFtaWNfcmFuZ2UgPSBDRUE7CisJCXZpZGVvLT55Y2Jjcl9jb2VmZiA9IENPTE9SX1lD QkNSNjAxOworCX0gZWxzZSBpZiAodmljKSB7CisJCXZpZGVvLT5keW5hbWljX3JhbmdlID0gQ0VB OworCQl2aWRlby0+eWNiY3JfY29lZmYgPSBDT0xPUl9ZQ0JDUjcwOTsKKwl9IGVsc2UgeworCQl2 aWRlby0+ZHluYW1pY19yYW5nZSA9IFZFU0E7CisJCXZpZGVvLT55Y2Jjcl9jb2VmZiA9IENPTE9S X1lDQkNSNzA5OworCX0KKworCS8qIElucHV0IHZpZGUgYnBjIGFuZCBjb2xvcl9mb3JtYXRzICov CisJc3dpdGNoIChkaXNwbGF5X2luZm8tPmJwYykgeworCWNhc2UgMTI6CisJCXZpZGVvLT5jb2xv cl9kZXB0aCA9IENPTE9SXzEyOworCQlicmVhazsKKwljYXNlIDEwOgorCQl2aWRlby0+Y29sb3Jf ZGVwdGggPSBDT0xPUl8xMDsKKwkJYnJlYWs7CisJY2FzZSA4OgorCQl2aWRlby0+Y29sb3JfZGVw dGggPSBDT0xPUl84OworCQlicmVhazsKKwljYXNlIDY6CisJCXZpZGVvLT5jb2xvcl9kZXB0aCA9 IENPTE9SXzY7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXZpZGVvLT5jb2xvcl9kZXB0aCA9IENP TE9SXzg7CisJCWJyZWFrOworCX0KKwlpZiAoZGlzcGxheV9pbmZvLT5jb2xvcl9mb3JtYXRzICYg RFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQ0NCkKKwkJdmlkZW8tPmNvbG9yX3NwYWNlID0gQ09MT1Jf WUNCQ1I0NDQ7CisJZWxzZSBpZiAoZGlzcGxheV9pbmZvLT5jb2xvcl9mb3JtYXRzICYgRFJNX0NP TE9SX0ZPUk1BVF9ZQ1JDQjQyMikKKwkJdmlkZW8tPmNvbG9yX3NwYWNlID0gQ09MT1JfWUNCQ1I0 MjI7CisJZWxzZSBpZiAoZGlzcGxheV9pbmZvLT5jb2xvcl9mb3JtYXRzICYgRFJNX0NPTE9SX0ZP Uk1BVF9SR0I0NDQpCisJCXZpZGVvLT5jb2xvcl9zcGFjZSA9IENPTE9SX1JHQjsKKwllbHNlCisJ CXZpZGVvLT5jb2xvcl9zcGFjZSA9IENPTE9SX1JHQjsKKworCS8qCisJICogTk9URTogdGhvc2Ug cHJvcGVydHkgcGFyc2luZyBjb2RlIGlzIHVzZWQgZm9yIHByb3ZpZGluZyBiYWNrd2FyZAorCSAq IGNvbXBhdGliaWxpdHkgZm9yIHNhbXN1bmcgcGxhdGZvcm0uCisJICogRHVlIHRvIHdlIHVzZWQg dGhlICJvZl9wcm9wZXJ0eV9yZWFkX3UzMiIgaW50ZXJmYWNlcywgd2hlbiB0aGlzCisJICogcHJv cGVydHkgaXNuJ3QgcHJlc2VudCwgdGhlICJ2aWRlb19pbmZvIiBjYW4ga2VlcCB0aGUgb3JpZ2lu YWwKKwkgKiB2YWx1ZXMgYW5kIHdvdWxkbid0IGJlIG1vZGlmaWVkLgorCSAqLworCW9mX3Byb3Bl cnR5X3JlYWRfdTMyKGRwX25vZGUsICJzYW1zdW5nLGNvbG9yLXNwYWNlIiwKKwkJCSAgICAgJnZp ZGVvLT5jb2xvcl9zcGFjZSk7CisJb2ZfcHJvcGVydHlfcmVhZF91MzIoZHBfbm9kZSwgInNhbXN1 bmcsZHluYW1pYy1yYW5nZSIsCisJCQkgICAgICZ2aWRlby0+ZHluYW1pY19yYW5nZSk7CisJb2Zf cHJvcGVydHlfcmVhZF91MzIoZHBfbm9kZSwgInNhbXN1bmcseWNiY3ItY29lZmYiLAorCQkJICAg ICAmdmlkZW8tPnljYmNyX2NvZWZmKTsKKwlvZl9wcm9wZXJ0eV9yZWFkX3UzMihkcF9ub2RlLCAi c2Ftc3VuZyxjb2xvci1kZXB0aCIsCisJCQkgICAgICZ2aWRlby0+Y29sb3JfZGVwdGgpOworCWlm IChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2woZHBfbm9kZSwgImhzeW5jLWFjdGl2ZS1oaWdoIikpCisJ CXZpZGVvLT5oX3N5bmNfcG9sYXJpdHkgPSB0cnVlOworCWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jv b2woZHBfbm9kZSwgInZzeW5jLWFjdGl2ZS1oaWdoIikpCisJCXZpZGVvLT52X3N5bmNfcG9sYXJp dHkgPSB0cnVlOworCWlmIChvZl9wcm9wZXJ0eV9yZWFkX2Jvb2woZHBfbm9kZSwgImludGVybGFj ZWQiKSkKKwkJdmlkZW8tPmludGVybGFjZWQgPSB0cnVlOworfQorCiBzdGF0aWMgdm9pZCBhbmFs b2dpeF9kcF9icmlkZ2Vfbm9wKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCiB7CiAJLyogZG8g bm90aGluZyAqLwpAQCAtMTA0Miw2ICsxMTIxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f YnJpZGdlX2Z1bmNzIGFuYWxvZ2l4X2RwX2JyaWRnZV9mdW5jcyA9IHsKIAkuZGlzYWJsZSA9IGFu YWxvZ2l4X2RwX2JyaWRnZV9kaXNhYmxlLAogCS5wcmVfZW5hYmxlID0gYW5hbG9naXhfZHBfYnJp ZGdlX25vcCwKIAkucG9zdF9kaXNhYmxlID0gYW5hbG9naXhfZHBfYnJpZGdlX25vcCwKKwkubW9k ZV9zZXQgPSBhbmFsb2dpeF9kcF9icmlkZ2VfbW9kZV9zZXQsCiAJLmF0dGFjaCA9IGFuYWxvZ2l4 X2RwX2JyaWRnZV9hdHRhY2gsCiB9OwogCkBAIC0xMDczLDYyICsxMTUzLDI0IEBAIHN0YXRpYyBp bnQgYW5hbG9naXhfZHBfY3JlYXRlX2JyaWRnZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwK IAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCB2aWRlb19pbmZvICphbmFsb2dpeF9kcF9k dF9wYXJzZV9wZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYpCitzdGF0aWMgaW50IGFuYWxvZ2l4X2Rw X2R0X3BhcnNlX3BkYXRhKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQogewotCXN0cnVj dCBkZXZpY2Vfbm9kZSAqZHBfbm9kZSA9IGRldi0+b2Zfbm9kZTsKLQlzdHJ1Y3QgdmlkZW9faW5m byAqZHBfdmlkZW9fY29uZmlnOwotCi0JZHBfdmlkZW9fY29uZmlnID0gZGV2bV9remFsbG9jKGRl diwgc2l6ZW9mKCpkcF92aWRlb19jb25maWcpLAotCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKLQlp ZiAoIWRwX3ZpZGVvX2NvbmZpZykKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0KLQlkcF92 aWRlb19jb25maWctPmhfc3luY19wb2xhcml0eSA9Ci0JCW9mX3Byb3BlcnR5X3JlYWRfYm9vbChk cF9ub2RlLCAiaHN5bmMtYWN0aXZlLWhpZ2giKTsKLQotCWRwX3ZpZGVvX2NvbmZpZy0+dl9zeW5j X3BvbGFyaXR5ID0KLQkJb2ZfcHJvcGVydHlfcmVhZF9ib29sKGRwX25vZGUsICJ2c3luYy1hY3Rp dmUtaGlnaCIpOwotCi0JZHBfdmlkZW9fY29uZmlnLT5pbnRlcmxhY2VkID0KLQkJb2ZfcHJvcGVy dHlfcmVhZF9ib29sKGRwX25vZGUsICJpbnRlcmxhY2VkIik7Ci0KLQlpZiAob2ZfcHJvcGVydHlf cmVhZF91MzIoZHBfbm9kZSwgInNhbXN1bmcsY29sb3Itc3BhY2UiLAotCQkJCSAmZHBfdmlkZW9f Y29uZmlnLT5jb2xvcl9zcGFjZSkpIHsKLQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IGNv bG9yLXNwYWNlXG4iKTsKLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Ci0JfQotCi0JaWYgKG9m X3Byb3BlcnR5X3JlYWRfdTMyKGRwX25vZGUsICJzYW1zdW5nLGR5bmFtaWMtcmFuZ2UiLAotCQkJ CSAmZHBfdmlkZW9fY29uZmlnLT5keW5hbWljX3JhbmdlKSkgewotCQlkZXZfZXJyKGRldiwgImZh aWxlZCB0byBnZXQgZHluYW1pYy1yYW5nZVxuIik7Ci0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwp OwotCX0KLQotCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihkcF9ub2RlLCAic2Ftc3VuZyx5Y2Jj ci1jb2VmZiIsCi0JCQkJICZkcF92aWRlb19jb25maWctPnljYmNyX2NvZWZmKSkgewotCQlkZXZf ZXJyKGRldiwgImZhaWxlZCB0byBnZXQgeWNiY3ItY29lZmZcbiIpOwotCQlyZXR1cm4gRVJSX1BU UigtRUlOVkFMKTsKLQl9Ci0KLQlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoZHBfbm9kZSwgInNh bXN1bmcsY29sb3ItZGVwdGgiLAotCQkJCSAmZHBfdmlkZW9fY29uZmlnLT5jb2xvcl9kZXB0aCkp IHsKLQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IGNvbG9yLWRlcHRoXG4iKTsKLQkJcmV0 dXJuIEVSUl9QVFIoLUVJTlZBTCk7Ci0JfQorCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZHBfbm9kZSA9 IGRwLT5kZXYtPm9mX25vZGU7CisJc3RydWN0IHZpZGVvX2luZm8gKnZpZGVvX2luZm8gPSAmZHAt PnZpZGVvX2luZm87CiAKIAlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIoZHBfbm9kZSwgInNhbXN1 bmcsbGluay1yYXRlIiwKLQkJCQkgJmRwX3ZpZGVvX2NvbmZpZy0+bGlua19yYXRlKSkgewotCQlk ZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgbGluay1yYXRlXG4iKTsKLQkJcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7CisJCQkJICZ2aWRlb19pbmZvLT5saW5rX3JhdGUpKSB7CisJCWRldl9lcnIo ZHAtPmRldiwgImZhaWxlZCB0byBnZXQgbGluay1yYXRlXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7 CiAJfQogCiAJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRwX25vZGUsICJzYW1zdW5nLGxhbmUt Y291bnQiLAotCQkJCSAmZHBfdmlkZW9fY29uZmlnLT5sYW5lX2NvdW50KSkgewotCQlkZXZfZXJy KGRldiwgImZhaWxlZCB0byBnZXQgbGFuZS1jb3VudFxuIik7Ci0JCXJldHVybiBFUlJfUFRSKC1F SU5WQUwpOworCQkJCSAmdmlkZW9faW5mby0+bGFuZV9jb3VudCkpIHsKKwkJZGV2X2VycihkcC0+ ZGV2LCAiZmFpbGVkIHRvIGdldCBsYW5lLWNvdW50XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJ fQogCi0JcmV0dXJuIGRwX3ZpZGVvX2NvbmZpZzsKKwlyZXR1cm4gMDsKIH0KIAogaW50IGFuYWxv Z2l4X2RwX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2Rl diwKQEAgLTExNjEsOSArMTIwMyw5IEBAIGludCBhbmFsb2dpeF9kcF9iaW5kKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsCiAJICovCiAJZHAtPnBsYXRfZGF0 YSA9IHBsYXRfZGF0YTsKIAotCWRwLT52aWRlb19pbmZvID0gYW5hbG9naXhfZHBfZHRfcGFyc2Vf cGRhdGEoJnBkZXYtPmRldik7Ci0JaWYgKElTX0VSUihkcC0+dmlkZW9faW5mbykpCi0JCXJldHVy biBQVFJfRVJSKGRwLT52aWRlb19pbmZvKTsKKwlyZXQgPSBhbmFsb2dpeF9kcF9kdF9wYXJzZV9w ZGF0YShkcCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKIAogCWRwLT5waHkgPSBkZXZtX3Bo eV9nZXQoZHAtPmRldiwgImRwIik7CiAJaWYgKElTX0VSUihkcC0+cGh5KSkgewpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmggYi9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuaAppbmRleCA5 YTkwYTE4Li5lMzdjZWY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxv Z2l4L2FuYWxvZ2l4X2RwX2NvcmUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxv Z2l4L2FuYWxvZ2l4X2RwX2NvcmUuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHN0cnVjdCBhbmFsb2dp eF9kcF9kZXZpY2UgewogCXVuc2lnbmVkIGludAkJaXJxOwogCXZvaWQgX19pb21lbQkJKnJlZ19i YXNlOwogCi0Jc3RydWN0IHZpZGVvX2luZm8JKnZpZGVvX2luZm87CisJc3RydWN0IHZpZGVvX2lu Zm8JdmlkZW9faW5mbzsKIAlzdHJ1Y3QgbGlua190cmFpbglsaW5rX3RyYWluOwogCXN0cnVjdCB3 b3JrX3N0cnVjdAlob3RwbHVnX3dvcms7CiAJc3RydWN0IHBoeQkJKnBoeTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfcmVnLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX3JlZy5jCmluZGV4IGEzODhj MGEuLjg2MTA5N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9naXgv YW5hbG9naXhfZHBfcmVnLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9h bmFsb2dpeF9kcF9yZWcuYwpAQCAtMTA4NCwxNSArMTA4NCwxNSBAQCB2b2lkIGFuYWxvZ2l4X2Rw X3NldF92aWRlb19jb2xvcl9mb3JtYXQoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCiAJ dTMyIHJlZzsKIAogCS8qIENvbmZpZ3VyZSB0aGUgaW5wdXQgY29sb3IgZGVwdGgsIGNvbG9yIHNw YWNlLCBkeW5hbWljIHJhbmdlICovCi0JcmVnID0gKGRwLT52aWRlb19pbmZvLT5keW5hbWljX3Jh bmdlIDw8IElOX0RfUkFOR0VfU0hJRlQpIHwKLQkJKGRwLT52aWRlb19pbmZvLT5jb2xvcl9kZXB0 aCA8PCBJTl9CUENfU0hJRlQpIHwKLQkJKGRwLT52aWRlb19pbmZvLT5jb2xvcl9zcGFjZSA8PCBJ Tl9DT0xPUl9GX1NISUZUKTsKKwlyZWcgPSAoZHAtPnZpZGVvX2luZm8uZHluYW1pY19yYW5nZSA8 PCBJTl9EX1JBTkdFX1NISUZUKSB8CisJCShkcC0+dmlkZW9faW5mby5jb2xvcl9kZXB0aCA8PCBJ Tl9CUENfU0hJRlQpIHwKKwkJKGRwLT52aWRlb19pbmZvLmNvbG9yX3NwYWNlIDw8IElOX0NPTE9S X0ZfU0hJRlQpOwogCXdyaXRlbChyZWcsIGRwLT5yZWdfYmFzZSArIEFOQUxPR0lYX0RQX1ZJREVP X0NUTF8yKTsKIAogCS8qIFNldCBJbnB1dCBDb2xvciBZQ2JDciBDb2VmZmljaWVudHMgdG8gSVRV NjAxIG9yIElUVTcwOSAqLwogCXJlZyA9IHJlYWRsKGRwLT5yZWdfYmFzZSArIEFOQUxPR0lYX0RQ X1ZJREVPX0NUTF8zKTsKIAlyZWcgJj0gfklOX1lDX0NPRUZGSV9NQVNLOwotCWlmIChkcC0+dmlk ZW9faW5mby0+eWNiY3JfY29lZmYpCisJaWYgKGRwLT52aWRlb19pbmZvLnljYmNyX2NvZWZmKQog CQlyZWcgfD0gSU5fWUNfQ09FRkZJX0lUVTcwOTsKIAllbHNlCiAJCXJlZyB8PSBJTl9ZQ19DT0VG RklfSVRVNjAxOwpAQCAtMTIyOSwxNyArMTIyOSwxNyBAQCB2b2lkIGFuYWxvZ2l4X2RwX2NvbmZp Z192aWRlb19zbGF2ZV9tb2RlKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQogCiAJcmVn ID0gcmVhZGwoZHAtPnJlZ19iYXNlICsgQU5BTE9HSVhfRFBfVklERU9fQ1RMXzEwKTsKIAlyZWcg Jj0gfklOVEVSQUNFX1NDQU5fQ0ZHOwotCXJlZyB8PSAoZHAtPnZpZGVvX2luZm8tPmludGVybGFj ZWQgPDwgMik7CisJcmVnIHw9IChkcC0+dmlkZW9faW5mby5pbnRlcmxhY2VkIDw8IDIpOwogCXdy aXRlbChyZWcsIGRwLT5yZWdfYmFzZSArIEFOQUxPR0lYX0RQX1ZJREVPX0NUTF8xMCk7CiAKIAly ZWcgPSByZWFkbChkcC0+cmVnX2Jhc2UgKyBBTkFMT0dJWF9EUF9WSURFT19DVExfMTApOwogCXJl ZyAmPSB+VlNZTkNfUE9MQVJJVFlfQ0ZHOwotCXJlZyB8PSAoZHAtPnZpZGVvX2luZm8tPnZfc3lu Y19wb2xhcml0eSA8PCAxKTsKKwlyZWcgfD0gKGRwLT52aWRlb19pbmZvLnZfc3luY19wb2xhcml0 eSA8PCAxKTsKIAl3cml0ZWwocmVnLCBkcC0+cmVnX2Jhc2UgKyBBTkFMT0dJWF9EUF9WSURFT19D VExfMTApOwogCiAJcmVnID0gcmVhZGwoZHAtPnJlZ19iYXNlICsgQU5BTE9HSVhfRFBfVklERU9f Q1RMXzEwKTsKIAlyZWcgJj0gfkhTWU5DX1BPTEFSSVRZX0NGRzsKLQlyZWcgfD0gKGRwLT52aWRl b19pbmZvLT5oX3N5bmNfcG9sYXJpdHkgPDwgMCk7CisJcmVnIHw9IChkcC0+dmlkZW9faW5mby5o X3N5bmNfcG9sYXJpdHkgPDwgMCk7CiAJd3JpdGVsKHJlZywgZHAtPnJlZ19iYXNlICsgQU5BTE9H SVhfRFBfVklERU9fQ1RMXzEwKTsKIAogCXJlZyA9IEFVRElPX01PREVfU1BESUZfTU9ERSB8IFZJ REVPX01PREVfU0xBVkVfTU9ERTsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK