From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Ripard Subject: [PATCH v2 9/9] drm/panel: Add Ronbo RB070D30 panel Date: Fri, 8 Feb 2019 10:53:22 +0100 Message-ID: <3eff6d6164845eee5636d7451b0fe08b09d1cf07.1549619502.git-series.maxime.ripard@bootlin.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from relay12.mail.gandi.net (relay12.mail.gandi.net [217.70.178.232]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9CD216ED7E for ; Fri, 8 Feb 2019 09:53:50 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maarten Lankhorst , Sean Paul , Maxime Ripard Cc: Konstantin Sudakov , bbrezillon@kernel.org, dri-devel@lists.freedesktop.org, Paul Kocialkowski , Chen-Yu Tsai , Thomas Petazzoni , Jagan Teki , linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogS29uc3RhbnRpbiBTdWRha292IDxrLnN1ZGFrb3ZAaW50ZWdyYXNvdXJjZXMuY29tPgoK VGhlIFJvbmJvIFJCMDcwRDMwIHBhbmVsIGlzIGEgTUlQSS1EU0kgcGFuZWwgYmFzZWQgb24gYSBG aXRpcG93ZXIgRUs3OTAwNwpjb250cm9sbGVyIGFuZCBhIDEwMjR4NjAwIHBhbmVsLgoKU2lnbmVk LW9mZi1ieTogS29uc3RhbnRpbiBTdWRha292IDxrLnN1ZGFrb3ZAaW50ZWdyYXNvdXJjZXMuY29t PgpTaWduZWQtb2ZmLWJ5OiBNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGJvb3RsaW4uY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAgICAgICAgICAgICAgIHwgICA5 ICstCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMSAr LQogZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJvbmJvLXJiMDcwZDMwLmMgfCAyNjIgKysr KysrKysrKysrKysrKysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDI3MiBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJvbmJvLXJiMDcw ZDMwLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyBiL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCmluZGV4IDNmMzUzNzcxOWJlYi4uODcwZGNkYmYyNjAx IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZworKysgYi9kcml2ZXJz L2dwdS9kcm0vcGFuZWwvS2NvbmZpZwpAQCAtMTM4LDYgKzEzOCwxNSBAQCBjb25maWcgRFJNX1BB TkVMX1JBWURJVU1fUk02ODIwMAogCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBlbmFibGUg c3VwcG9ydCBmb3IgUmF5ZGl1bSBSTTY4MjAwCiAJICA3MjB4MTI4MCBEU0kgdmlkZW8gbW9kZSBw YW5lbC4KIAorY29uZmlnIERSTV9QQU5FTF9ST05CT19SQjA3MEQzMAorCXRyaXN0YXRlICJSb25i byBFbGVjdHJvbmljcyBSQjA3MEQzMCBwYW5lbCIKKwlkZXBlbmRzIG9uIE9GCisJZGVwZW5kcyBv biBEUk1fTUlQSV9EU0kKKwlkZXBlbmRzIG9uIEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UKKwloZWxw CisJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBSb25ibyBF bGVjdHJvbmljcworCSAgUkIwNzBEMzAgMTAyNHg2MDAgRFNJIHBhbmVsLgorCiBjb25maWcgRFJN X1BBTkVMX1NBTVNVTkdfUzZEMTZEMAogCXRyaXN0YXRlICJTYW1zdW5nIFM2RDE2RDAgRFNJIHZp ZGVvIG1vZGUgcGFuZWwiCiAJZGVwZW5kcyBvbiBPRgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3BhbmVsL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCmluZGV4 IDQzOTY2NThhNzk5Ni4uNGExMDNkMzQ2ODA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCkBAIC0x Miw2ICsxMiw3IEBAIG9iai0kKENPTkZJR19EUk1fUEFORUxfT1JJU0VURUNIX09UTTgwMDlBKSAr PSBwYW5lbC1vcmlzZXRlY2gtb3RtODAwOWEubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9QQU5B U09OSUNfVlZYMTBGMDM0TjAwKSArPSBwYW5lbC1wYW5hc29uaWMtdnZ4MTBmMDM0bjAwLm8KIG9i ai0kKENPTkZJR19EUk1fUEFORUxfUkFTUEJFUlJZUElfVE9VQ0hTQ1JFRU4pICs9IHBhbmVsLXJh c3BiZXJyeXBpLXRvdWNoc2NyZWVuLm8KIG9iai0kKENPTkZJR19EUk1fUEFORUxfUkFZRElVTV9S TTY4MjAwKSArPSBwYW5lbC1yYXlkaXVtLXJtNjgyMDAubworb2JqLSQoQ09ORklHX0RSTV9QQU5F TF9ST05CT19SQjA3MEQzMCkgKz0gcGFuZWwtcm9uYm8tcmIwNzBkMzAubwogb2JqLSQoQ09ORklH X0RSTV9QQU5FTF9TQU1TVU5HX0xEOTA0MCkgKz0gcGFuZWwtc2Ftc3VuZy1sZDkwNDAubwogb2Jq LSQoQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RDE2RDApICs9IHBhbmVsLXNhbXN1bmctczZk MTZkMC5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NBTVNVTkdfUzZFM0hBMikgKz0gcGFuZWwt c2Ftc3VuZy1zNmUzaGEyLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5l bC1yb25iby1yYjA3MGQzMC5jIGIvZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJvbmJvLXJi MDcwZDMwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wZmQ2N2Jj NDk5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtcm9u Ym8tcmIwNzBkMzAuYwpAQCAtMCwwICsxLDI2MiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjArCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTksIEJyaWRnZSBTeXN0 ZW1zIEJWCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSwgQm9vdGxpbgorICogQ29weXJpZ2h0 IChDKSAyMDE3LCBGcmVlIEVsZWN0cm9ucworICoKKyAqIFRoaXMgZmlsZSBiYXNlZCBvbiBwYW5l bC1pbGl0ZWstaWxpOTg4MWMuYworICovCisKKyNpbmNsdWRlIDxsaW51eC9iYWNrbGlnaHQuaD4K KyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L2Vyci5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8 bGludXgvZmIuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9t ZWRpYS1idXMtZm9ybWF0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisKKyNpbmNsdWRl IDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1 bWVyLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNpLmg+CisjaW5jbHVkZSA8ZHJtL2Ry bV9tb2Rlcy5oPgorI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X3ByaW50Lmg+CisKKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4KKyNpbmNsdWRlIDx2 aWRlby9vZl9kaXNwbGF5X3RpbWluZy5oPgorI2luY2x1ZGUgPHZpZGVvL3ZpZGVvbW9kZS5oPgor CitzdHJ1Y3QgcmIwNzBkMzBfcGFuZWwgeworCXN0cnVjdCBkcm1fcGFuZWwgcGFuZWw7CisJc3Ry dWN0IG1pcGlfZHNpX2RldmljZSAqZHNpOworCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiYWNr bGlnaHQ7CisJc3RydWN0IHJlZ3VsYXRvciAqc3VwcGx5OworCisJc3RydWN0IHsKKwkJc3RydWN0 IGdwaW9fZGVzYyAqcG93ZXI7CisJCXN0cnVjdCBncGlvX2Rlc2MgKnJlc2V0OworCQlzdHJ1Y3Qg Z3Bpb19kZXNjICp1cGRuOworCQlzdHJ1Y3QgZ3Bpb19kZXNjICpzaGxyOworCX0gZ3Bpb3M7Cit9 OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCByYjA3MGQzMF9wYW5lbCAqcGFuZWxfdG9fcmIwNzBk MzBfcGFuZWwoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9v ZihwYW5lbCwgc3RydWN0IHJiMDcwZDMwX3BhbmVsLCBwYW5lbCk7Cit9CisKK3N0YXRpYyBpbnQg cmIwNzBkMzBfcGFuZWxfcHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1 Y3QgcmIwNzBkMzBfcGFuZWwgKmN0eCA9IHBhbmVsX3RvX3JiMDcwZDMwX3BhbmVsKHBhbmVsKTsK KwlpbnQgcmV0OworCisJcmV0ID0gcmVndWxhdG9yX2VuYWJsZShjdHgtPnN1cHBseSk7CisJaWYg KHJldCA8IDApIHsKKwkJRFJNX0RFVl9FUlJPUigmY3R4LT5kc2ktPmRldiwgIkZhaWxlZCB0byBl bmFibGUgc3VwcGx5OiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBSZXNl dCAqLworCW1zbGVlcCgyMCk7CisJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+Z3Bpb3MucG93ZXIsIDEp OworCW1zbGVlcCgyMCk7CisJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+Z3Bpb3MucmVzZXQsIDEpOwor CW1zbGVlcCgyMCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmIwNzBkMzBfcGFuZWxf dW5wcmVwYXJlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCByYjA3MGQzMF9w YW5lbCAqY3R4ID0gcGFuZWxfdG9fcmIwNzBkMzBfcGFuZWwocGFuZWwpOworCisJZ3Bpb2Rfc2V0 X3ZhbHVlKGN0eC0+Z3Bpb3MucmVzZXQsIDApOworCWdwaW9kX3NldF92YWx1ZShjdHgtPmdwaW9z LnBvd2VyLCAwKTsKKwlyZWd1bGF0b3JfZGlzYWJsZShjdHgtPnN1cHBseSk7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCByYjA3MGQzMF9wYW5lbF9lbmFibGUoc3RydWN0IGRybV9wYW5l bCAqcGFuZWwpCit7CisJc3RydWN0IHJiMDcwZDMwX3BhbmVsICpjdHggPSBwYW5lbF90b19yYjA3 MGQzMF9wYW5lbChwYW5lbCk7CisJaW50IHJldDsKKworCXJldCA9IG1pcGlfZHNpX2Rjc19leGl0 X3NsZWVwX21vZGUoY3R4LT5kc2kpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQg PSBiYWNrbGlnaHRfZW5hYmxlKGN0eC0+YmFja2xpZ2h0KTsKKwlpZiAocmV0KQorCQlnb3RvIG91 dDsKKworCXJldHVybiAwOworCitvdXQ6CisJbWlwaV9kc2lfZGNzX2VudGVyX3NsZWVwX21vZGUo Y3R4LT5kc2kpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgcmIwNzBkMzBfcGFuZWxf ZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgcmIwNzBkMzBfcGFu ZWwgKmN0eCA9IHBhbmVsX3RvX3JiMDcwZDMwX3BhbmVsKHBhbmVsKTsKKworCWJhY2tsaWdodF9k aXNhYmxlKGN0eC0+YmFja2xpZ2h0KTsKKwlyZXR1cm4gbWlwaV9kc2lfZGNzX2VudGVyX3NsZWVw X21vZGUoY3R4LT5kc2kpOworfQorCisvKiBEZWZhdWx0IHRpbWluZ3MgKi8KK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBkZWZhdWx0X21vZGUgPSB7CisJLmNsb2NrCQk9IDUx MjA2LAorCS5oZGlzcGxheQk9IDEwMjQsCisJLmhzeW5jX3N0YXJ0CT0gMTAyNCArIDE2MCwKKwku aHN5bmNfZW5kCT0gMTAyNCArIDE2MCArIDgwLAorCS5odG90YWwJCT0gMTAyNCArIDE2MCArIDgw ICsgODAsCisJLnZkaXNwbGF5CT0gNjAwLAorCS52c3luY19zdGFydAk9IDYwMCArIDEyLAorCS52 c3luY19lbmQJPSA2MDAgKyAxMiArIDEwLAorCS52dG90YWwJCT0gNjAwICsgMTIgKyAxMCArIDEz LAorCS52cmVmcmVzaAk9IDYwLAorCisJLndpZHRoX21tCT0gMTU0LAorCS5oZWlnaHRfbW0JPSA4 NSwKK307CisKK3N0YXRpYyBpbnQgcmIwNzBkMzBfcGFuZWxfZ2V0X21vZGVzKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBwYW5l bC0+Y29ubmVjdG9yOworCXN0cnVjdCByYjA3MGQzMF9wYW5lbCAqY3R4ID0gcGFuZWxfdG9fcmIw NzBkMzBfcGFuZWwocGFuZWwpOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOworCXN0 YXRpYyBjb25zdCB1MzIgYnVzX2Zvcm1hdCA9IE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQ7CisK Kwltb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKHBhbmVsLT5kcm0sICZkZWZhdWx0X21vZGUpOwor CWlmICghbW9kZSkgeworCQlEUk1fREVWX0VSUk9SKCZjdHgtPmRzaS0+ZGV2LAorCQkJICAgICAg IkZhaWxlZCB0byBhZGQgbW9kZSAiIERSTV9NT0RFX0ZNVCAiXG4iLAorCQkJICAgICAgRFJNX01P REVfQVJHKG1vZGUpKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZHJtX21vZGVfc2V0X25h bWUobW9kZSk7CisKKwltb2RlLT50eXBlID0gRFJNX01PREVfVFlQRV9EUklWRVIgfCBEUk1fTU9E RV9UWVBFX1BSRUZFUlJFRDsKKwlkcm1fbW9kZV9wcm9iZWRfYWRkKGNvbm5lY3RvciwgbW9kZSk7 CisKKwlwYW5lbC0+Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8uYnBjID0gODsKKwlwYW5lbC0+Y29u bmVjdG9yLT5kaXNwbGF5X2luZm8ud2lkdGhfbW0gPSBtb2RlLT53aWR0aF9tbTsKKwlwYW5lbC0+ Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGVpZ2h0X21tID0gbW9kZS0+aGVpZ2h0X21tOworCWRy bV9kaXNwbGF5X2luZm9fc2V0X2J1c19mb3JtYXRzKCZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbywK KwkJCQkJICZidXNfZm9ybWF0LCAxKTsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9wYW5lbF9mdW5jcyByYjA3MGQzMF9wYW5lbF9mdW5jcyA9IHsKKwkuZ2V0X21v ZGVzCT0gcmIwNzBkMzBfcGFuZWxfZ2V0X21vZGVzLAorCS5wcmVwYXJlCT0gcmIwNzBkMzBfcGFu ZWxfcHJlcGFyZSwKKwkuZW5hYmxlCQk9IHJiMDcwZDMwX3BhbmVsX2VuYWJsZSwKKwkuZGlzYWJs ZQk9IHJiMDcwZDMwX3BhbmVsX2Rpc2FibGUsCisJLnVucHJlcGFyZQk9IHJiMDcwZDMwX3BhbmVs X3VucHJlcGFyZSwKK307CisKK3N0YXRpYyBpbnQgcmIwNzBkMzBfcGFuZWxfZHNpX3Byb2JlKHN0 cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3QgcmIwNzBkMzBfcGFuZWwgKmN0 eDsKKwlpbnQgcmV0OworCisJY3R4ID0gZGV2bV9remFsbG9jKCZkc2ktPmRldiwgc2l6ZW9mKCpj dHgpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwljdHgt PnN1cHBseSA9IGRldm1fcmVndWxhdG9yX2dldCgmZHNpLT5kZXYsICJ2Y2MtbGNkIik7CisJaWYg KElTX0VSUihjdHgtPnN1cHBseSkpCisJCXJldHVybiBQVFJfRVJSKGN0eC0+c3VwcGx5KTsKKwor CW1pcGlfZHNpX3NldF9kcnZkYXRhKGRzaSwgY3R4KTsKKwljdHgtPmRzaSA9IGRzaTsKKworCWRy bV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsKTsKKwljdHgtPnBhbmVsLmRldiA9ICZkc2ktPmRldjsK KwljdHgtPnBhbmVsLmZ1bmNzID0gJnJiMDcwZDMwX3BhbmVsX2Z1bmNzOworCisJY3R4LT5ncGlv cy5yZXNldCA9IGRldm1fZ3Bpb2RfZ2V0KCZkc2ktPmRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0xP Vyk7CisJaWYgKElTX0VSUihjdHgtPmdwaW9zLnJlc2V0KSkgeworCQlEUk1fREVWX0VSUk9SKCZk c2ktPmRldiwgIkNvdWxkbid0IGdldCBvdXIgcmVzZXQgR1BJT1xuIik7CisJCXJldHVybiBQVFJf RVJSKGN0eC0+Z3Bpb3MucmVzZXQpOworCX0KKworCWN0eC0+Z3Bpb3MucG93ZXIgPSBkZXZtX2dw aW9kX2dldCgmZHNpLT5kZXYsICJwb3dlciIsIEdQSU9EX09VVF9MT1cpOworCWlmIChJU19FUlIo Y3R4LT5ncGlvcy5wb3dlcikpIHsKKwkJRFJNX0RFVl9FUlJPUigmZHNpLT5kZXYsICJDb3VsZG4n dCBnZXQgb3VyIHBvd2VyIEdQSU9cbiIpOworCQlyZXR1cm4gUFRSX0VSUihjdHgtPmdwaW9zLnBv d2VyKTsKKwl9CisKKwkvKgorCSAqIFdlIGRvbid0IGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhhdCBH UElPIGxhdGVyIG9uIGJ1dCB3ZSBuZWVkCisJICogdG8gZm9yY2UgaXQgaW50byBhIGxvdyBzdGF0 ZS4KKwkgKi8KKwljdHgtPmdwaW9zLnVwZG4gPSBkZXZtX2dwaW9kX2dldCgmZHNpLT5kZXYsICJ1 cGRuIiwgR1BJT0RfT1VUX0xPVyk7CisJaWYgKElTX0VSUihjdHgtPmdwaW9zLnVwZG4pKSB7CisJ CURSTV9ERVZfRVJST1IoJmRzaS0+ZGV2LCAiQ291bGRuJ3QgZ2V0IG91ciB1cGRuIEdQSU9cbiIp OworCQlyZXR1cm4gUFRSX0VSUihjdHgtPmdwaW9zLnVwZG4pOworCX0KKworCS8qCisJICogV2Ug ZG9uJ3QgY2hhbmdlIHRoZSBzdGF0ZSBvZiB0aGF0IEdQSU8gbGF0ZXIgb24gYnV0IHdlIG5lZWQK KwkgKiB0byBmb3JjZSBpdCBpbnRvIGEgbG93IHN0YXRlLgorCSAqLworCWN0eC0+Z3Bpb3Muc2hs ciA9IGRldm1fZ3Bpb2RfZ2V0KCZkc2ktPmRldiwgInNobHIiLCBHUElPRF9PVVRfTE9XKTsKKwlp ZiAoSVNfRVJSKGN0eC0+Z3Bpb3Muc2hscikpIHsKKwkJRFJNX0RFVl9FUlJPUigmZHNpLT5kZXYs ICJDb3VsZG4ndCBnZXQgb3VyIHNobHIgR1BJT1xuIik7CisJCXJldHVybiBQVFJfRVJSKGN0eC0+ Z3Bpb3Muc2hscik7CisJfQorCisJY3R4LT5iYWNrbGlnaHQgPSBkZXZtX29mX2ZpbmRfYmFja2xp Z2h0KCZkc2ktPmRldik7CisJaWYgKElTX0VSUihjdHgtPmJhY2tsaWdodCkpIHsKKwkJRFJNX0RF Vl9FUlJPUigmZHNpLT5kZXYsICJDb3VsZG4ndCBnZXQgb3VyIGJhY2tsaWdodFxuIik7CisJCXJl dHVybiBQVFJfRVJSKGN0eC0+YmFja2xpZ2h0KTsKKwl9CisKKwlyZXQgPSBkcm1fcGFuZWxfYWRk KCZjdHgtPnBhbmVsKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWRzaS0+bW9k ZV9mbGFncyA9IE1JUElfRFNJX01PREVfVklERU8gfCBNSVBJX0RTSV9NT0RFX1ZJREVPX0JVUlNU IHwgTUlQSV9EU0lfTU9ERV9MUE07CisJZHNpLT5mb3JtYXQgPSBNSVBJX0RTSV9GTVRfUkdCODg4 OworCWRzaS0+bGFuZXMgPSA0OworCisJcmV0dXJuIG1pcGlfZHNpX2F0dGFjaChkc2kpOworfQor CitzdGF0aWMgaW50IHJiMDcwZDMwX3BhbmVsX2RzaV9yZW1vdmUoc3RydWN0IG1pcGlfZHNpX2Rl dmljZSAqZHNpKQoreworCXN0cnVjdCByYjA3MGQzMF9wYW5lbCAqY3R4ID0gbWlwaV9kc2lfZ2V0 X2RydmRhdGEoZHNpKTsKKworCW1pcGlfZHNpX2RldGFjaChkc2kpOworCWRybV9wYW5lbF9yZW1v dmUoJmN0eC0+cGFuZWwpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIHJiMDcwZDMwX3BhbmVsX29mX21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJs ZSA9ICJyb25ibyxyYjA3MGQzMCIgfSwKKwl7IC8qIHNlbnRpbmVsICovIH0sCit9OworTU9EVUxF X0RFVklDRV9UQUJMRShvZiwgcmIwNzBkMzBfcGFuZWxfb2ZfbWF0Y2gpOworCitzdGF0aWMgc3Ry dWN0IG1pcGlfZHNpX2RyaXZlciByYjA3MGQzMF9wYW5lbF9kcml2ZXIgPSB7CisJLnByb2JlID0g cmIwNzBkMzBfcGFuZWxfZHNpX3Byb2JlLAorCS5yZW1vdmUgPSByYjA3MGQzMF9wYW5lbF9kc2lf cmVtb3ZlLAorCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gInBhbmVsLXJvbmJvLXJiMDcwZDMwIiwK KwkJLm9mX21hdGNoX3RhYmxlCT0gcmIwNzBkMzBfcGFuZWxfb2ZfbWF0Y2gsCisJfSwKK307Citt b2R1bGVfbWlwaV9kc2lfZHJpdmVyKHJiMDcwZDMwX3BhbmVsX2RyaXZlcik7CisKK01PRFVMRV9B VVRIT1IoIkJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGJvb3RsaW4uY29tPiIpOwor TU9EVUxFX0FVVEhPUigiS29uc3RhbnRpbiBTdWRha292IDxrLnN1ZGFrb3ZAaW50ZWdyYXNvdXJj ZXMuY29tPiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJSb25ibyBSQjA3MEQzMCBQYW5lbCBEcml2 ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLS0gCmdpdC1zZXJpZXMgMC45LjEKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==