From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xinliang Liu Subject: [PATCH v4 02/11] drm/hisilicon: Add hisilicon kirin drm master driver Date: Sat, 6 Feb 2016 11:24:49 +0800 Message-ID: <1454729098-79807-3-git-send-email-xinliang.liu@linaro.org> References: <1454729098-79807-1-git-send-email-xinliang.liu@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1454729098-79807-1-git-send-email-xinliang.liu@linaro.org> 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, daniel@ffwll.ch, robh@kernel.org, daniel@fooishbar.org, architt@codeaurora.org, airlied@linux.ie, corbet@lwn.net, catalin.marinas@arm.com, will.deacon@arm.com, emil.l.velikov@gmail.com Cc: andy.green@linaro.org, xuyiping@hisilicon.com, guodong.xu@linaro.org, linux-doc@vger.kernel.org, w.f@huawei.com, zourongrong@huawei.com, linuxarm@huawei.com, xuwei5@hisilicon.com, bintian.wang@huawei.com, haojian.zhuang@linaro.org, benjamin.gaignard@linaro.org, puck.chen@hisilicon.com, liguozhu@hisilicon.com, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org QWRkIGtpcmluIERSTSBtYXN0ZXIgZHJpdmVyIGZvciBoaTYyMjAgU29DIHdoaWNoIHVzZWQgaW4g SGlLZXkgYm9hcmQuCkFkZCBkdW1iIGJ1ZmZlciBmZWF0dXJlLgpBZGQgcHJpbWUgZG1hYnVmIGZl YXR1cmUuCgp2NDogTm9uZS4KdjM6Ci0gTW92ZSBhbmQgcmVuYW1lIGFsbCB0aGUgZmlsZXMgdG8g a2lyaW4gc3ViLWRpcmVjdG9yeS4KICBTbyB0aGF0IHdlIGNvdWxkIHNlcGFyYXRlIGRpZmZlcmVu dCBzZWlyZXMgU29DcycgZHJpdmVyLgotIFJlcGxhY2UgZHJtX3BsYXRmb3JtX2luaXQsIGxvYWQs IHVubG9hZCBpbXBsZW1lbnRhdGlvbi4KdjI6Ci0gUmVtb3ZlIGFidHJhY3Rpb24gbGF5ZXIuCgpT aWduZWQtb2ZmLWJ5OiBYaW53ZWkgS29uZyA8a29uZy5rb25neGlud2VpQGhpc2lsaWNvbi5jb20+ ClNpZ25lZC1vZmYtYnk6IFhpbmxpYW5nIExpdSA8eGlubGlhbmcubGl1QGxpbmFyby5vcmc+Ci0t LQogZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg KwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg KwogZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9LY29uZmlnICAgICAgICAgICAgICAgfCAgIDUg KwogZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDUg KwogZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9LY29uZmlnICAgICAgICAgfCAgIDkg KwogZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9NYWtlZmlsZSAgICAgICAgfCAgIDMg KwogZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJpbl9kcm1fZHJ2LmMgfCAzMjEg KysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmlu L2tpcmluX2RybV9kcnYuaCB8ICAyMCArKwogOCBmaWxlcyBjaGFuZ2VkLCAzNjYgaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vS2NvbmZp ZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vTWFrZWZpbGUK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL0tjb25m aWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL01h a2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJp bi9raXJpbl9kcm1fZHJ2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaGlz aWxpY29uL2tpcmluL2tpcmluX2RybV9kcnYuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKaW5kZXggYjUwYWU2MGY1ZjUwLi5m NWM1NjU2ZTI1NDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9LY29uZmlnCkBAIC0yNzcsMyArMjc3LDUgQEAgc291cmNlICJkcml2ZXJz L2dwdS9kcm0vaW14L0tjb25maWciCiBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS92YzQvS2NvbmZp ZyIKIAogc291cmNlICJkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9LY29uZmlnIgorCitzb3VyY2Ug ImRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vS2NvbmZpZyIKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRleCA2MTc2NmRl YzZhOGQuLjYwNTU0ODMyMDc5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQpAQCAtNzQsMyArNzQsNCBAQCBvYmoteQkJ CSs9IHBhbmVsLwogb2JqLXkJCQkrPSBicmlkZ2UvCiBvYmotJChDT05GSUdfRFJNX0ZTTF9EQ1Up ICs9IGZzbC1kY3UvCiBvYmotJChDT05GSUdfRFJNX0VUTkFWSVYpICs9IGV0bmF2aXYvCitvYmot eQkJCSs9IGhpc2lsaWNvbi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24v S2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vS2NvbmZpZwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU1OGM2MWIxYjhlOAotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vS2NvbmZpZwpAQCAtMCwwICsxLDUgQEAKKyMK KyMgaGlzaWxpY29uIGRybSBkZXZpY2UgY29uZmlndXJhdGlvbi4KKyMgUGxlYXNlIGtlZXAgdGhp cyBsaXN0IHNvcnRlZCBhbHBoYWJldGljYWxseQorCitzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9o aXNpbGljb24va2lyaW4vS2NvbmZpZyIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9oaXNp bGljb24vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL01ha2VmaWxlCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTNmNmQ0OTNjOTk2Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9NYWtlZmlsZQpAQCAtMCwwICsx LDUgQEAKKyMKKyMgTWFrZWZpbGUgZm9yIGhpc2lsaWNvbiBkcm0gZHJpdmVycy4KKyMgUGxlYXNl IGtlZXAgdGhpcyBsaXN0IHNvcnRlZCBhbHBoYWJldGljYWxseQorCitvYmotJChDT05GSUdfRFJN X0hJU0lfS0lSSU4pICs9IGtpcmluLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2hpc2ls aWNvbi9raXJpbi9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9LY29u ZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2FjNGI4ZWRlYWMx Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9LY29u ZmlnCkBAIC0wLDAgKzEsOSBAQAorY29uZmlnIERSTV9ISVNJX0tJUklOCisJdHJpc3RhdGUgIkRS TSBTdXBwb3J0IGZvciBIaXNpbGljb24gS2lyaW4gc2VyaWVzIFNvQ3MgUGxhdGZvcm0iCisJZGVw ZW5kcyBvbiBEUk0KKwlzZWxlY3QgRFJNX0tNU19IRUxQRVIKKwlzZWxlY3QgRFJNX0dFTV9DTUFf SEVMUEVSCisJc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBFUgorCWhlbHAKKwkgIENob29zZSB0aGlz IG9wdGlvbiBpZiB5b3UgaGF2ZSBhIGhpc2lsaWNvbiBLaXJpbiBjaGlwc2V0cyhoaTYyMjApLgor CSAgSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGtpcmluLWRybS4K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4vTWFrZWZpbGUgYi9k cml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2IzNDZkZTQ3ZDQ4Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9NYWtlZmlsZQpAQCAtMCwwICsxLDMgQEAK K2tpcmluLWRybS15IDo9IGtpcmluX2RybV9kcnYubworCitvYmotJChDT05GSUdfRFJNX0hJU0lf S0lSSU4pICs9IGtpcmluLWRybS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxp Y29uL2tpcmluL2tpcmluX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2ly aW4va2lyaW5fZHJtX2Rydi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uNzg5ZWJkMWY1OTIyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2hpc2ls aWNvbi9raXJpbi9raXJpbl9kcm1fZHJ2LmMKQEAgLTAsMCArMSwzMjEgQEAKKy8qCisgKiBIaXNp bGljb24gS2lyaW4gU29DcyBkcm0gbWFzdGVyIGRyaXZlcgorICoKKyAqIENvcHlyaWdodCAoYykg MjAxNiBMaW5hcm8gTGltaXRlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE2IEhpc2lsaWNv biBMaW1pdGVkLgorICoKKyAqIEF1dGhvcjoKKyAqCVhpbmxpYW5nIExpdSA8ei5saXV4aW5saWFu Z0BoaXNpbGljb24uY29tPgorICoJWGlubGlhbmcgTGl1IDx4aW5saWFuZy5saXVAbGluYXJvLm9y Zz4KKyAqCVhpbndlaSBLb25nIDxrb25nLmtvbmd4aW53ZWlAaGlzaWxpY29uLmNvbT4KKyAqCisg KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0u aD4KKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFw aC5oPgorCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFf aGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9jbWFfaGVscGVyLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisKKyNpbmNsdWRlICJraXJpbl9kcm1fZHJ2LmgiCisK K3N0YXRpYyBzdHJ1Y3Qga2lyaW5fZGNfb3BzICpkY19vcHM7CisKK3N0YXRpYyBpbnQga2lyaW5f ZHJtX2ttc19jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJZGNfb3BzLT5jbGVh bnVwKGRldik7CisJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZGV2KTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBraXJpbl9kcm1f bW9kZV9jb25maWdfZnVuY3MgPSB7CisJLmZiX2NyZWF0ZSA9IGRybV9mYl9jbWFfY3JlYXRlLAor CS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKKwkuYXRvbWljX2NvbW1p dCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwKK307CisKK3N0YXRpYyB2b2lkIGtpcmluX2Ry bV9tb2RlX2NvbmZpZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJZGV2LT5tb2Rl X2NvbmZpZy5taW5fd2lkdGggPSAwOworCWRldi0+bW9kZV9jb25maWcubWluX2hlaWdodCA9IDA7 CisKKwlkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDIwNDg7CisJZGV2LT5tb2RlX2NvbmZp Zy5tYXhfaGVpZ2h0ID0gMjA0ODsKKworCWRldi0+bW9kZV9jb25maWcuZnVuY3MgPSAma2lyaW5f ZHJtX21vZGVfY29uZmlnX2Z1bmNzOworfQorCitzdGF0aWMgaW50IGtpcmluX2RybV9rbXNfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCWludCByZXQ7CisKKwlkZXZfc2V0X2RydmRh dGEoZGV2LT5kZXYsIGRldik7CisKKwkvKiBkZXYtPm1vZGVfY29uZmlnIGluaXRpYWxpemF0aW9u ICovCisJZHJtX21vZGVfY29uZmlnX2luaXQoZGV2KTsKKwlraXJpbl9kcm1fbW9kZV9jb25maWdf aW5pdChkZXYpOworCisJLyogZGlzcGxheSBjb250cm9sbGVyIGluaXQgKi8KKwlyZXQgPSBkY19v cHMtPmluaXQoZGV2KTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9tb2RlX2NvbmZpZ19jbGVhbnVw OworCisJLyogYmluZCBhbmQgaW5pdCBzdWIgZHJpdmVycyAqLworCXJldCA9IGNvbXBvbmVudF9i aW5kX2FsbChkZXYtPmRldiwgZGV2KTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiZmFpbGVk IHRvIGJpbmQgYWxsIGNvbXBvbmVudC5cbiIpOworCQlnb3RvIGVycl9kY19jbGVhbnVwOworCX0K KworCS8qIHJlc2V0IGFsbCB0aGUgc3RhdGVzIG9mIGNydGMvcGxhbmUvZW5jb2Rlci9jb25uZWN0 b3IgKi8KKwlkcm1fbW9kZV9jb25maWdfcmVzZXQoZGV2KTsKKworCXJldHVybiAwOworCitlcnJf ZGNfY2xlYW51cDoKKwlkY19vcHMtPmNsZWFudXAoZGV2KTsKK2Vycl9tb2RlX2NvbmZpZ19jbGVh bnVwOgorCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRldik7CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBraXJpbl9kcm1fZm9wcyA9IHsK Kwkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJLm9wZW4JCT0gZHJtX29wZW4sCisJLnJlbGVhc2UJ PSBkcm1fcmVsZWFzZSwKKwkudW5sb2NrZWRfaW9jdGwJPSBkcm1faW9jdGwsCisjaWZkZWYgQ09O RklHX0NPTVBBVAorCS5jb21wYXRfaW9jdGwJPSBkcm1fY29tcGF0X2lvY3RsLAorI2VuZGlmCisJ LnBvbGwJCT0gZHJtX3BvbGwsCisJLnJlYWQJCT0gZHJtX3JlYWQsCisJLmxsc2VlawkJPSBub19s bHNlZWssCisJLm1tYXAJCT0gZHJtX2dlbV9jbWFfbW1hcCwKK307CisKK3N0YXRpYyBpbnQga2ly aW5fZ2VtX2NtYV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCisJCQkJICAgICBz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSAgICAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9k dW1iICphcmdzKQoreworCXJldHVybiBkcm1fZ2VtX2NtYV9kdW1iX2NyZWF0ZV9pbnRlcm5hbChm aWxlLCBkZXYsIGFyZ3MpOworfQorCitzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIga2lyaW5fZHJt X2RyaXZlciA9IHsKKwkuZHJpdmVyX2ZlYXR1cmVzCT0gRFJJVkVSX0dFTSB8IERSSVZFUl9NT0RF U0VUIHwgRFJJVkVSX1BSSU1FIHwKKwkJCQkgIERSSVZFUl9BVE9NSUMsCisJLmZvcHMJCQk9ICZr aXJpbl9kcm1fZm9wcywKKwkuc2V0X2J1c2lkCQk9IGRybV9wbGF0Zm9ybV9zZXRfYnVzaWQsCisK KwkuZ2VtX2ZyZWVfb2JqZWN0CT0gZHJtX2dlbV9jbWFfZnJlZV9vYmplY3QsCisJLmdlbV92bV9v cHMJCT0gJmRybV9nZW1fY21hX3ZtX29wcywKKwkuZHVtYl9jcmVhdGUJCT0ga2lyaW5fZ2VtX2Nt YV9kdW1iX2NyZWF0ZSwKKwkuZHVtYl9tYXBfb2Zmc2V0CT0gZHJtX2dlbV9jbWFfZHVtYl9tYXBf b2Zmc2V0LAorCS5kdW1iX2Rlc3Ryb3kJCT0gZHJtX2dlbV9kdW1iX2Rlc3Ryb3ksCisKKwkucHJp bWVfaGFuZGxlX3RvX2ZkCT0gZHJtX2dlbV9wcmltZV9oYW5kbGVfdG9fZmQsCisJLnByaW1lX2Zk X3RvX2hhbmRsZQk9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLAorCS5nZW1fcHJpbWVfZXhw b3J0CT0gZHJtX2dlbV9wcmltZV9leHBvcnQsCisJLmdlbV9wcmltZV9pbXBvcnQJPSBkcm1fZ2Vt X3ByaW1lX2ltcG9ydCwKKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZSA9IGRybV9nZW1fY21hX3By aW1lX2dldF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IGRybV9nZW1f Y21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX3ZtYXAJCT0gZHJtX2dlbV9j bWFfcHJpbWVfdm1hcCwKKwkuZ2VtX3ByaW1lX3Z1bm1hcAk9IGRybV9nZW1fY21hX3ByaW1lX3Z1 bm1hcCwKKwkuZ2VtX3ByaW1lX21tYXAJCT0gZHJtX2dlbV9jbWFfcHJpbWVfbW1hcCwKKworCS5u YW1lCQkJPSAia2lyaW4iLAorCS5kZXNjCQkJPSAiSGlzaWxpY29uIEtpcmluIFNvQ3MnIERSTSBE cml2ZXIiLAorCS5kYXRlCQkJPSAiMjAxNTA3MTgiLAorCS5tYWpvcgkJCT0gMSwKKwkubWlub3IJ CQk9IDAsCit9OworCitzdGF0aWMgaW50IGNvbXBhcmVfb2Yoc3RydWN0IGRldmljZSAqZGV2LCB2 b2lkICpkYXRhKQoreworCXJldHVybiBkZXYtPm9mX25vZGUgPT0gZGF0YTsKK30KKworc3RhdGlj IGludCBraXJpbl9kcm1fY29ubmVjdG9yc19yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQoreworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGRybV9jb25u ZWN0b3IgKmZhaWxlZF9jb25uZWN0b3I7CisJaW50IHJldDsKKworCWxpc3RfZm9yX2VhY2hfZW50 cnkoY29ubmVjdG9yLCAmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCwgaGVhZCkgewor CQlyZXQgPSBkcm1fY29ubmVjdG9yX3JlZ2lzdGVyKGNvbm5lY3Rvcik7CisJCWlmIChyZXQpIHsK KwkJCWZhaWxlZF9jb25uZWN0b3IgPSBjb25uZWN0b3I7CisJCQlnb3RvIGVycjsKKwkJfQorCX0K KworCXJldHVybiAwOworCitlcnI6CisJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZk ZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCBoZWFkKSB7CisJCWlmIChmYWlsZWRfY29u bmVjdG9yID09IGNvbm5lY3RvcikKKwkJCWJyZWFrOworCQlkcm1fY29ubmVjdG9yX3VucmVnaXN0 ZXIoY29ubmVjdG9yKTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGtpcmlu X2RybV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2RyaXZlciAqZHJp dmVyID0gJmtpcmluX2RybV9kcml2ZXI7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXY7CisJ aW50IHJldDsKKworCWRybV9kZXYgPSBkcm1fZGV2X2FsbG9jKGRyaXZlciwgZGV2KTsKKwlpZiAo IWRybV9kZXYpCisJCXJldHVybiAtRU5PTUVNOworCisJZHJtX2Rldi0+cGxhdGZvcm1kZXYgPSB0 b19wbGF0Zm9ybV9kZXZpY2UoZGV2KTsKKworCXJldCA9IGtpcmluX2RybV9rbXNfaW5pdChkcm1f ZGV2KTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9kcm1fZGV2X3VucmVmOworCisJcmV0ID0gZHJt X2Rldl9yZWdpc3Rlcihkcm1fZGV2LCAwKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9rbXNfY2xl YW51cDsKKworCS8qIGNvbm5lY3RvcnMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgYWZ0ZXIgZHJtIGRl dmljZSByZWdpc3RlciAqLworCXJldCA9IGtpcmluX2RybV9jb25uZWN0b3JzX3JlZ2lzdGVyKGRy bV9kZXYpOworCWlmIChyZXQpCisJCWdvdG8gZXJyX2RybV9kZXZfdW5yZWdpc3RlcjsKKworCURS TV9JTkZPKCJJbml0aWFsaXplZCAlcyAlZC4lZC4lZCAlcyBvbiBtaW5vciAlZFxuIiwKKwkJIGRy aXZlci0+bmFtZSwgZHJpdmVyLT5tYWpvciwgZHJpdmVyLT5taW5vciwgZHJpdmVyLT5wYXRjaGxl dmVsLAorCQkgZHJpdmVyLT5kYXRlLCBkcm1fZGV2LT5wcmltYXJ5LT5pbmRleCk7CisKKwlyZXR1 cm4gMDsKKworZXJyX2RybV9kZXZfdW5yZWdpc3RlcjoKKwlkcm1fZGV2X3VucmVnaXN0ZXIoZHJt X2Rldik7CitlcnJfa21zX2NsZWFudXA6CisJa2lyaW5fZHJtX2ttc19jbGVhbnVwKGRybV9kZXYp OworZXJyX2RybV9kZXZfdW5yZWY6CisJZHJtX2Rldl91bnJlZihkcm1fZGV2KTsKKworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGtpcmluX2RybV91bmJpbmQoc3RydWN0IGRldmljZSAq ZGV2KQoreworCWRybV9wdXRfZGV2KGRldl9nZXRfZHJ2ZGF0YShkZXYpKTsKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBjb21wb25lbnRfbWFzdGVyX29wcyBraXJpbl9kcm1fb3BzID0geworCS5i aW5kID0ga2lyaW5fZHJtX2JpbmQsCisJLnVuYmluZCA9IGtpcmluX2RybV91bmJpbmQsCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBraXJpbl9kcm1fZHRfaWRzW10gPSB7 CisJeyAvKiBlbmQgbm9kZSAqLyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGtpcmlu X2RybV9kdF9pZHMpOworCitzdGF0aWMgaW50IGtpcmluX2dldF9kY19vcHMoc3RydWN0IGRldmlj ZV9ub2RlICpucCkKK3sKKwljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaF9pZDsKKwor CW1hdGNoX2lkID0gb2ZfbWF0Y2hfbm9kZShraXJpbl9kcm1fZHRfaWRzLCBucCk7CisJaWYgKCFt YXRjaF9pZCkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBtYXRjaCBkdCBpZFxuIik7CisJCXJl dHVybiAtRUlOVkFMOworCX0KKworCWRjX29wcyA9IChzdHJ1Y3Qga2lyaW5fZGNfb3BzICopbWF0 Y2hfaWQtPmRhdGE7CisJaWYgKCFkY19vcHMpIHsKKwkJRFJNX0VSUk9SKCJkdCBpZCBkYXRhIGlz IG51bGxcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHN0cnVjdCBkZXZpY2Vfbm9kZSAqa2lyaW5fZ2V0X3JlbW90ZV9ub2RlKHN0cnVjdCBkZXZp Y2Vfbm9kZSAqbnApCit7CisJc3RydWN0IGRldmljZV9ub2RlICplbmRwb2ludCwgKnJlbW90ZTsK KworCS8qIGdldCB0aGUgZmlyc3QgZW5kcG9pbnQsIGluIG91ciBjYXNlIG9ubHkgb25lIHJlbW90 ZSBub2RlCisJICogaXMgY29ubmVjdGVkIHRvIGRpc3BsYXkgY29udHJvbGxlci4KKwkgKi8KKwll bmRwb2ludCA9IG9mX2dyYXBoX2dldF9uZXh0X2VuZHBvaW50KG5wLCBOVUxMKTsKKwlpZiAoIWVu ZHBvaW50KSB7CisJCURSTV9FUlJPUigibm8gdmFsaWQgZW5kcG9pbnQgbm9kZVxuIik7CisJCXJl dHVybiBFUlJfUFRSKC1FTk9ERVYpOworCX0KKwlvZl9ub2RlX3B1dChlbmRwb2ludCk7CisKKwly ZW1vdGUgPSBvZl9ncmFwaF9nZXRfcmVtb3RlX3BvcnRfcGFyZW50KGVuZHBvaW50KTsKKwlpZiAo IXJlbW90ZSkgeworCQlEUk1fRVJST1IoIm5vIHZhbGlkIHJlbW90ZSBub2RlXG4iKTsKKwkJcmV0 dXJuIEVSUl9QVFIoLUVOT0RFVik7CisJfQorCW9mX25vZGVfcHV0KHJlbW90ZSk7CisKKwlpZiAo IW9mX2RldmljZV9pc19hdmFpbGFibGUocmVtb3RlKSkgeworCQlEUk1fRVJST1IoIm5vdCBhdmFp bGFibGUgZm9yIHJlbW90ZSBub2RlXG4iKTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7CisJ fQorCisJcmV0dXJuIHJlbW90ZTsKK30KKworc3RhdGljIGludCBraXJpbl9kcm1fcGxhdGZvcm1f cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9mX25vZGU7 CisJc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqbWF0Y2ggPSBOVUxMOworCXN0cnVjdCBkZXZpY2Vf bm9kZSAqcmVtb3RlOworCWludCByZXQ7CisKKwlyZXQgPSBraXJpbl9nZXRfZGNfb3BzKG5wKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmVtb3RlID0ga2lyaW5fZ2V0X3JlbW90ZV9u b2RlKG5wKTsKKwlpZiAoSVNfRVJSKHJlbW90ZSkpCisJCXJldHVybiBQVFJfRVJSKHJlbW90ZSk7 CisKKwljb21wb25lbnRfbWF0Y2hfYWRkKGRldiwgJm1hdGNoLCBjb21wYXJlX29mLCByZW1vdGUp OworCisJcmV0dXJuIGNvbXBvbmVudF9tYXN0ZXJfYWRkX3dpdGhfbWF0Y2goZGV2LCAma2lyaW5f ZHJtX29wcywgbWF0Y2gpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQga2lyaW5fZHJt X3BsYXRmb3JtX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWNvbXBv bmVudF9tYXN0ZXJfZGVsKCZwZGV2LT5kZXYsICZraXJpbl9kcm1fb3BzKTsKKwlkY19vcHMgPSBO VUxMOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBraXJp bl9kcm1fcGxhdGZvcm1fZHJpdmVyID0geworCS5wcm9iZSA9IGtpcmluX2RybV9wbGF0Zm9ybV9w cm9iZSwKKwkucmVtb3ZlID0ga2lyaW5fZHJtX3BsYXRmb3JtX3JlbW92ZSwKKwkuZHJpdmVyID0g eworCQkubmFtZSA9ICJraXJpbi1kcm0iLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBraXJpbl9kcm1f ZHRfaWRzLAorCX0sCit9OworCittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGtpcmluX2RybV9wbGF0 Zm9ybV9kcml2ZXIpOworCitNT0RVTEVfQVVUSE9SKCJYaW5saWFuZyBMaXUgPHhpbmxpYW5nLmxp dUBsaW5hcm8ub3JnPiIpOworTU9EVUxFX0FVVEhPUigiWGlubGlhbmcgTGl1IDx6LmxpdXhpbmxp YW5nQGhpc2lsaWNvbi5jb20+Iik7CitNT0RVTEVfQVVUSE9SKCJYaW53ZWkgS29uZyA8a29uZy5r b25neGlud2VpQGhpc2lsaWNvbi5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oImhpc2lsaWNv biBLaXJpbiBTb0NzJyBEUk0gbWFzdGVyIGRyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2 MiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJpbl9k cm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmluX2RybV9kcnYu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc1ZTlkODIzNTZkNAot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5f ZHJtX2Rydi5oCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgTGlu YXJvIExpbWl0ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBIaXNpbGljb24gTGltaXRl ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqLworCisjaWZuZGVmIF9fS0lSSU5fRFJN X0RSVl9IX18KKyNkZWZpbmUgX19LSVJJTl9EUk1fRFJWX0hfXworCisvKiBkaXNwbGF5IGNvbnRy b2xsZXIgaW5pdC9jbGVhbnVwIG9wcyAqLworc3RydWN0IGtpcmluX2RjX29wcyB7CisJaW50ICgq aW5pdCkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CisJdm9pZCAoKmNsZWFudXApKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOworfTsKKworI2VuZGlmIC8qIF9fS0lSSU5fRFJNX0RSVl9IX18gKi8K LS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=