From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Stuebner Subject: [PATCH RFC v2 04/12] drm/components: add generic vga encoder driver Date: Wed, 1 Apr 2015 12:09:38 +0200 Message-ID: <1427882986-19110-5-git-send-email-heiko@sntech.de> References: <1427882986-19110-1-git-send-email-heiko@sntech.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1427882986-19110-1-git-send-email-heiko@sntech.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: airlied@linux.ie, mark.yao@rock-chips.com, laurent.pinchart@ideasonboard.com Cc: devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org VGhpcyBhZGRzIGEgZHJpdmVyIGZvciBnZW5lcmljIHZnYSBlbmNvZGVycyBsaWtlIHRoZSBBbmFs b2cgRGV2aWNlcyBhZHY3MTIzCmFuZCBzaW1pbGFyIGljcy4gVGhlc2UgY2hpcHMgZG8gbm90IGhh dmUgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbiBvcHRpb25zCmV4Y2VwdCBhIHBvd2Vyc2FmZSBn cGlvLgoKQW4gZXhjZXB0aW9uIGlzIGFkZGVkIGZvciB0aGUgcmNhci1kdSBkcml2ZXIgd2hpY2gg YWxzbyBpbXBsZW1lbnRzIHN1cHBvcnQKZm9yIHRoZSBhZHY3MTIzIGludGVybmFsbHkgYnV0IGlz IG5vdCB5ZXQgY29udmVydGVkIHRvIHRoZSBjb21wb25lbnQgZnJhbWV3b3JrLgoKU2lnbmVkLW9m Zi1ieTogSGVpa28gU3R1ZWJuZXIgPGhlaWtvQHNudGVjaC5kZT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vY29tcG9uZW50cy9LY29uZmlnICAgICAgIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9jb21w b25lbnRzL01ha2VmaWxlICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2NvbXBvbmVudHMv dmdhLWVuY29kZXIuYyB8IDMxNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZp bGVzIGNoYW5nZWQsIDMyMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2NvbXBvbmVudHMvdmdhLWVuY29kZXIuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9jb21wb25lbnRzL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vY29tcG9uZW50cy9L Y29uZmlnCmluZGV4IDlkNWQ0NjIuLjY0N2NlYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9jb21wb25lbnRzL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL2NvbXBvbmVudHMvS2Nv bmZpZwpAQCAtMSw0ICsxLDkgQEAKIG1lbnUgIlN0YW5kYWxvbmUgY29tcG9uZW50cyBmb3IgdXNl IHdpdGggdGhlIGNvbXBvbmVudCBmcmFtZXdvcmsiCiAgICAgIGRlcGVuZHMgb24gRFJNICYmIERS TV9LTVNfSEVMUEVSCiAKK2NvbmZpZyBEUk1fQ09NUE9ORU5UU19WR0FfRU5DT0RFUgorCXRyaXN0 YXRlICJHZW5lcmljIHZnYSBlbmNvZGVyIgorCWhlbHAKKwkgIFN1cHBvcnQgZm9yIGdlbmVyaWMg dmdhIGVuY29kZXIgY2hpcHMgd2l0aG91dCBhbnkgc3BlY2lhbCBjb250cm9scy4KKwogZW5kbWVu dQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2NvbXBvbmVudHMvTWFrZWZpbGUgYi9kcml2 ZXJzL2dwdS9kcm0vY29tcG9uZW50cy9NYWtlZmlsZQppbmRleCBiZTE2ZWNhLi43MTliMWM5IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vY29tcG9uZW50cy9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL2dwdS9kcm0vY29tcG9uZW50cy9NYWtlZmlsZQpAQCAtMSArMSwzIEBACiBjY2ZsYWdzLXkg Oj0gLUlpbmNsdWRlL2RybQorCitvYmotJChDT05GSUdfRFJNX0NPTVBPTkVOVFNfVkdBX0VOQ09E RVIpICs9IHZnYS1lbmNvZGVyLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9jb21wb25l bnRzL3ZnYS1lbmNvZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vY29tcG9uZW50cy92Z2EtZW5jb2Rl ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NTliNWUKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vY29tcG9uZW50cy92Z2EtZW5jb2Rlci5jCkBAIC0w LDAgKzEsMzE1IEBACisvKgorICogU2ltcGxlIHZnYSBlbmNvZGVyIGRyaXZlcgorICoKKyAqIENv cHlyaWdodCAoQykgMjAxNCBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPgorICoKKyAq IFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgYW5kCisgKiBtYXkgYmUgY29waWVkLCBkaXN0cmlidXRl ZCwgYW5kIG1vZGlmaWVkIHVuZGVyIHRob3NlIHRlcm1zLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2Nv bXBvbmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L2dwaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9ncGlv L2NvbnN1bWVyLmg+CisjaW5jbHVkZSA8bGludXgvaTJjLmg+CisjaW5jbHVkZSA8bGludXgvcmVn dWxhdG9yL2NvbnN1bWVyLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfZ3JhcGguaD4KKyNpbmNsdWRl IDxkcm0vZHJtX29mLmg+CisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJt L2RybV9lZGlkLmg+CisKKyNkZWZpbmUgZW5jb2Rlcl90b192Z2FfZW5jb2Rlcih4KSBjb250YWlu ZXJfb2YoeCwgc3RydWN0IHZnYV9lbmNvZGVyLCBlbmNvZGVyKQorCitzdHJ1Y3QgdmdhX2VuY29k ZXIgeworCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOworCXN0cnVjdCBkZXZpY2UgKmRldjsK KwlzdHJ1Y3QgcmVndWxhdG9yICp2YWFfcmVnOworCXN0cnVjdCBncGlvX2Rlc2MgKnBzYXZlX2dw aW87CisKKwlzdHJ1Y3QgbXV0ZXggZW5hYmxlX2xvY2s7CisJYm9vbCBlbmFibGVkOworfTsKKwor c3RhdGljIHZvaWQgdmdhX2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCit7CisJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKK30KKworc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyB2Z2FfZW5jb2Rlcl9mdW5jcyA9IHsKKwkuZGVzdHJv eSA9IHZnYV9lbmNvZGVyX2Rlc3Ryb3ksCit9OworCitzdGF0aWMgdm9pZCB2Z2FfZW5jb2Rlcl9k cG1zKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgaW50IG1vZGUpCit7CisJc3RydWN0IHZn YV9lbmNvZGVyICp2Z2EgPSBlbmNvZGVyX3RvX3ZnYV9lbmNvZGVyKGVuY29kZXIpOworCisJbXV0 ZXhfbG9jaygmdmdhLT5lbmFibGVfbG9jayk7CisKKwlzd2l0Y2ggKG1vZGUpIHsKKwljYXNlIERS TV9NT0RFX0RQTVNfT046CisJCWlmICh2Z2EtPmVuYWJsZWQpCisJCQlnb3RvIG91dDsKKworCQlp ZiAoIUlTX0VSUih2Z2EtPnZhYV9yZWcpKQorCQkJcmVndWxhdG9yX2VuYWJsZSh2Z2EtPnZhYV9y ZWcpOworCisJCWlmICh2Z2EtPnBzYXZlX2dwaW8pCisJCQlncGlvZF9zZXRfdmFsdWUodmdhLT5w c2F2ZV9ncGlvLCAxKTsKKworCQl2Z2EtPmVuYWJsZWQgPSB0cnVlOworCQlicmVhazsKKwljYXNl IERSTV9NT0RFX0RQTVNfU1RBTkRCWToKKwljYXNlIERSTV9NT0RFX0RQTVNfU1VTUEVORDoKKwlj YXNlIERSTV9NT0RFX0RQTVNfT0ZGOgorCQlpZiAoIXZnYS0+ZW5hYmxlZCkKKwkJCWdvdG8gb3V0 OworCisJCWlmICh2Z2EtPnBzYXZlX2dwaW8pCisJCQlncGlvZF9zZXRfdmFsdWUodmdhLT5wc2F2 ZV9ncGlvLCAwKTsKKworCQlpZiAoIUlTX0VSUih2Z2EtPnZhYV9yZWcpKQorCQkJcmVndWxhdG9y X2VuYWJsZSh2Z2EtPnZhYV9yZWcpOworCisJCXZnYS0+ZW5hYmxlZCA9IGZhbHNlOworCQlicmVh azsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKK291dDoKKwltdXRleF91bmxvY2soJnZnYS0+ ZW5hYmxlX2xvY2spOworfQorCitzdGF0aWMgYm9vbCB2Z2FfZW5jb2Rlcl9tb2RlX2ZpeHVwKHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlLAorCQkJCSAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUpCit7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHZnYV9lbmNvZGVyX3ByZXBh cmUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworfQorCitzdGF0aWMgdm9pZCB2Z2Ff ZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQkJCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq YWRqdXN0ZWRfbW9kZSkKK3sKK30KKworc3RhdGljIHZvaWQgdmdhX2VuY29kZXJfY29tbWl0KHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwl2Z2FfZW5jb2Rlcl9kcG1zKGVuY29kZXIs IERSTV9NT0RFX0RQTVNfT04pOworfQorCitzdGF0aWMgdm9pZCB2Z2FfZW5jb2Rlcl9kaXNhYmxl KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwl2Z2FfZW5jb2Rlcl9kcG1zKGVuY29k ZXIsIERSTV9NT0RFX0RQTVNfT0ZGKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5j b2Rlcl9oZWxwZXJfZnVuY3MgdmdhX2VuY29kZXJfaGVscGVyX2Z1bmNzID0geworCS5kcG1zID0g dmdhX2VuY29kZXJfZHBtcywKKwkubW9kZV9maXh1cCA9IHZnYV9lbmNvZGVyX21vZGVfZml4dXAs CisJLnByZXBhcmUgPSB2Z2FfZW5jb2Rlcl9wcmVwYXJlLAorCS5tb2RlX3NldCA9IHZnYV9lbmNv ZGVyX21vZGVfc2V0LAorCS5jb21taXQgPSB2Z2FfZW5jb2Rlcl9jb21taXQsCisJLmRpc2FibGUg PSB2Z2FfZW5jb2Rlcl9kaXNhYmxlLAorfTsKKworLyoKKyAqIENvbXBvbmVudCBoZWxwZXIgZnVu Y3Rpb25zCisgKi8KKworc3RhdGljIGludCB2Z2FfZW5jb2Rlcl9iaW5kKHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAorCQkJCSB2b2lkICpkYXRhKQoreworCXN0cnVj dCB2Z2FfZW5jb2RlciAqdmdhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGRldmlj ZV9ub2RlICpucCA9IHZnYS0+ZW5jb2Rlci5vZl9ub2RlOworCXN0cnVjdCBkcm1fZGV2aWNlICpk cm1fZGV2ID0gZGF0YTsKKworCXZnYS0+ZW5jb2Rlci5wb3NzaWJsZV9jcnRjcyA9IGRybV9vZl9m aW5kX3Bvc3NpYmxlX2NydGNzKGRybV9kZXYsIG5wKTsKKworCWRybV9lbmNvZGVyX2hlbHBlcl9h ZGQoJnZnYS0+ZW5jb2RlciwgJnZnYV9lbmNvZGVyX2hlbHBlcl9mdW5jcyk7CisJZHJtX2VuY29k ZXJfaW5pdChkcm1fZGV2LCAmdmdhLT5lbmNvZGVyLCAmdmdhX2VuY29kZXJfZnVuY3MsCisJCQkg RFJNX01PREVfRU5DT0RFUl9EQUMpOworCisJcmV0dXJuIGNvbXBvbmVudF9iaW5kX2FsbChkZXYs IGRybV9kZXYpOworfQorCitzdGF0aWMgdm9pZCB2Z2FfZW5jb2Rlcl91bmJpbmQoc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCisJCQkJICAgIHZvaWQgKmRhdGEpCit7 CisJc3RydWN0IHZnYV9lbmNvZGVyICp2Z2EgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRhdGE7CisKKwljb21wb25lbnRfdW5iaW5kX2FsbChk ZXYsIGRybV9kZXYpOworCXZnYS0+ZW5jb2Rlci5mdW5jcy0+ZGVzdHJveSgmdmdhLT5lbmNvZGVy KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzIHZnYV9lbmNvZGVyX29w cyA9IHsKKwkuYmluZCA9IHZnYV9lbmNvZGVyX2JpbmQsCisJLnVuYmluZCA9IHZnYV9lbmNvZGVy X3VuYmluZCwKK307CisKK3N0YXRpYyBpbnQgY29tcGFyZV9vZihzdHJ1Y3QgZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEpCit7CisJcmV0dXJuIGRldi0+b2Zfbm9kZSA9PSBkYXRhOworfQorCitzdGF0 aWMgaW50IHZnYV9lbmNvZGVyX21hc3Rlcl9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdmdhX2VuY29kZXJfbWFzdGVyX3VuYmluZChzdHJ1 Y3QgZGV2aWNlICpkZXYpCit7CisJLyogZG8gbm90aGluZyAqLworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IGNvbXBvbmVudF9tYXN0ZXJfb3BzIHZnYV9lbmNvZGVyX21hc3Rlcl9vcHMgPSB7CisJ LmJpbmQgPSB2Z2FfZW5jb2Rlcl9tYXN0ZXJfYmluZCwKKwkudW5iaW5kID0gdmdhX2VuY29kZXJf bWFzdGVyX3VuYmluZCwKK307CisKK3N0YXRpYyBpbnQgdmdhX2VuY29kZXJfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRl di0+ZGV2Lm9mX25vZGU7CisJc3RydWN0IGRldmljZV9ub2RlICpwb3J0LCAqY29ubmVjdG9yX25v ZGU7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgY29tcG9uZW50 X21hdGNoICptYXRjaCA9IE5VTEw7CisJc3RydWN0IHZnYV9lbmNvZGVyICp2Z2E7CisJaW50IHJl dDsKKworCWlmICghbnApCisJCXJldHVybiAtRU5PREVWOworCisJdmdhID0gZGV2bV9remFsbG9j KGRldiwgc2l6ZW9mKCp2Z2EpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXZnYSkKKwkJcmV0dXJuIC1F Tk9NRU07CisKKwl2Z2EtPmRldiA9IGRldjsKKwlkZXZfc2V0X2RydmRhdGEoZGV2LCB2Z2EpOwor CW11dGV4X2luaXQoJnZnYS0+ZW5hYmxlX2xvY2spOworCisJdmdhLT5wc2F2ZV9ncGlvID0gZGV2 bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCAicHNhdmUiLAorCQkJCQkJICAgR1BJT0RfT1VUX0xP Vyk7CisJaWYgKElTX0VSUih2Z2EtPnBzYXZlX2dwaW8pKSB7CisJCXJldCA9IFBUUl9FUlIodmdh LT5wc2F2ZV9ncGlvKTsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gcmVxdWVzdCBHUElPOiAl ZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwl2Z2EtPmVuYWJsZWQgPSBmYWxzZTsK Kwl2Z2EtPnZhYV9yZWcgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfb3B0aW9uYWwoZGV2LCAidmFhIik7 CisJdmdhLT5lbmNvZGVyLm9mX25vZGUgPSBucDsKKworCXBvcnQgPSBvZl9ncmFwaF9nZXRfcG9y dF9ieV9pZChkZXYtPm9mX25vZGUsIDEpOworCWlmIChwb3J0KSB7CisJCXN0cnVjdCBkZXZpY2Vf bm9kZSAqZW5kcG9pbnQ7CisKKwkJZW5kcG9pbnQgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShwb3J0 LCAiZW5kcG9pbnQiKTsKKwkJaWYgKGVuZHBvaW50KSB7CisJCQljb25uZWN0b3Jfbm9kZSA9IG9m X2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQoZW5kcG9pbnQpOworCQkJb2Zfbm9kZV9wdXQo ZW5kcG9pbnQpOworCQl9CisKKwkJb2Zfbm9kZV9wdXQocG9ydCk7CisJfQorCisJaWYgKCFvZl9k cm1fZmluZF9jb25uZWN0b3IoY29ubmVjdG9yX25vZGUpKQorCQlyZXR1cm4gLUVQUk9CRV9ERUZF UjsKKworCWNvbXBvbmVudF9tYXRjaF9hZGQoZGV2LCAmbWF0Y2gsIGNvbXBhcmVfb2YsIGNvbm5l Y3Rvcl9ub2RlKTsKKworCXJldCA9IGRybV9lbmNvZGVyX2FkZCgmdmdhLT5lbmNvZGVyKTsKKwlp ZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGNvbXBvbmVudF9tYXN0ZXJfYWRk X3dpdGhfbWF0Y2goZGV2LCAmdmdhX2VuY29kZXJfbWFzdGVyX29wcywgbWF0Y2gpOworCWlmIChy ZXQgPCAwKQorCQlnb3RvIGVycl9lbmNvZGVyX3JlbW92ZTsKKworCXJldCA9IGNvbXBvbmVudF9h ZGQoZGV2LCAmdmdhX2VuY29kZXJfb3BzKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfbWFz dGVyX3JlbW92ZTsKKworCXJldHVybiAwOworCitlcnJfbWFzdGVyX3JlbW92ZToKKwljb21wb25l bnRfbWFzdGVyX2RlbCgmcGRldi0+ZGV2LCAmdmdhX2VuY29kZXJfbWFzdGVyX29wcyk7CitlcnJf ZW5jb2Rlcl9yZW1vdmU6CisJZHJtX2VuY29kZXJfcmVtb3ZlKCZ2Z2EtPmVuY29kZXIpOworCisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB2Z2FfZW5jb2Rlcl9yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgdmdhX2VuY29kZXIgKnZnYSA9IGRldl9n ZXRfZHJ2ZGF0YSgmcGRldi0+ZGV2KTsKKworCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJnZn YV9lbmNvZGVyX29wcyk7CisJY29tcG9uZW50X21hc3Rlcl9kZWwoJnBkZXYtPmRldiwgJnZnYV9l bmNvZGVyX21hc3Rlcl9vcHMpOworCWRybV9lbmNvZGVyX3JlbW92ZSgmdmdhLT5lbmNvZGVyKTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB2Z2Ff ZW5jb2Rlcl9pZHNbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gImFkaSxhZHY3MTIzIiwgfSwKKwl7 fSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB2Z2FfZW5jb2Rlcl9pZHMpOworCitzdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB2Z2FfZW5jb2Rlcl9kcml2ZXIgPSB7CisJLnByb2Jl ICA9IHZnYV9lbmNvZGVyX3Byb2JlLAorCS5yZW1vdmUgPSB2Z2FfZW5jb2Rlcl9yZW1vdmUsCisJ LmRyaXZlciA9IHsKKwkJLm5hbWUgPSAidmdhLWVuY29kZXIiLAorCQkub2ZfbWF0Y2hfdGFibGUg PSB2Z2FfZW5jb2Rlcl9pZHMsCisJfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIHJjYXJfZHVfb2ZfdGFibGVbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gInJlbmVzYXMs ZHUtcjhhNzc3OSIgfSwKKwl7IC5jb21wYXRpYmxlID0gInJlbmVzYXMsZHUtcjhhNzc5MCIgfSwK Kwl7IC5jb21wYXRpYmxlID0gInJlbmVzYXMsZHUtcjhhNzc5MSIgfSwKKwl7IH0KK307CisKK3N0 YXRpYyBpbnQgX19pbml0IHZnYV9lbmNvZGVyX2luaXQodm9pZCkKK3sKKwlzdHJ1Y3QgZGV2aWNl X25vZGUgKm5wOworCisJLyoKKwkgKiBQbGF5IG5pY2Ugd2l0aCByY2FyLWR1IHRoYXQgaXMgaGF2 aW5nIGl0cyBvd24gaW1wbGVtZW50YXRpb24KKwkgKiBvZiB0aGUgYWR2NzEyMyBiaW5kaW5nIGlt cGxlbWVudGF0aW9uIGFuZCBpcyBub3QgeWV0CisJICogY29udmVydGVkIHRvIHVzaW5nIGNvbXBv bmVudHMuCisJICovCisJbnAgPSBvZl9maW5kX21hdGNoaW5nX25vZGUoTlVMTCwgcmNhcl9kdV9v Zl90YWJsZSk7CisJaWYgKG5wKSB7CisJCW9mX25vZGVfcHV0KG5wKTsKKwkJcmV0dXJuIDA7CisJ fQorCisJcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmdmdhX2VuY29kZXJfZHJpdmVy KTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHZnYV9lbmNvZGVyX2V4aXQodm9pZCkKK3sKKwlw bGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmdmdhX2VuY29kZXJfZHJpdmVyKTsKK30KKworbW9k dWxlX2luaXQodmdhX2VuY29kZXJfaW5pdCk7Cittb2R1bGVfZXhpdCh2Z2FfZW5jb2Rlcl9leGl0 KTsKKworTU9EVUxFX0FVVEhPUigiSGVpa28gU3R1ZWJuZXIgPGhlaWtvQHNudGVjaC5kZT4iKTsK K01PRFVMRV9ERVNDUklQVElPTigiU2ltcGxlIHZnYSBjb252ZXJ0ZXIiKTsKK01PRFVMRV9MSUNF TlNFKCJHUEwiKTsKLS0gCjIuMS40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=