From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve Longerbeam Subject: [PATCH 38/72] imx-drm: Crtcs moved to device tree Date: Fri, 31 Oct 2014 15:54:21 -0700 Message-ID: <1414796095-10107-39-git-send-email-steve_longerbeam@mentor.com> References: <1414796095-10107-1-git-send-email-steve_longerbeam@mentor.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com [209.85.220.54]) by gabe.freedesktop.org (Postfix) with ESMTP id B2AD26E849 for ; Fri, 31 Oct 2014 15:57:19 -0700 (PDT) Received: by mail-pa0-f54.google.com with SMTP id rd3so8528352pab.41 for ; Fri, 31 Oct 2014 15:57:19 -0700 (PDT) In-Reply-To: <1414796095-10107-1-git-send-email-steve_longerbeam@mentor.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 List-Id: dri-devel@lists.freedesktop.org VGhlIGNydGNzIGFyZSBub3cgbm9kZXMgaW4gdGhlIGRldmljZSB0cmVlLCBhbmQgdGhlIGVuY29k ZXIgZW5kcG9pbnRzCmZhbGwgdW5kZXIgdGhlIGNydGMgcG9ydC4KCmlwdV9jbGllbnRfcGxhdGZv cm1kYXRhIGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIGlzIGdvbmUuIFRoZSBjcnRjCnJldHJpZXZl cyB0aGUgZm9sbG93aW5nIHJlcXVpcmVkIHBhcmFtZXRlcnMgZnJvbSBpdHMgbm9kZToKCi0gaXB1 IHBoYW5kbGUuCi0gZGkgbnVtYmVyLgotIHRoZSBwb3J0IGVuZHBvaW50cy4KCk9wdGlvbmFsbHks ICJkdWFsLXBsYW5lIiBjYW4gYmUgc3BlY2lmaWVkIHRvIGNvbmZpZ3VyZSB0aGUgY3J0YyBkZXZp Y2UKd2l0aCBhIGZvcmVncm91bmQgcGxhbmUuIElmIG5vdCBnaXZlbiwgdGhlIGNydGMgd2lsbCBo YXZlIG9ubHkgYQpzaW5nbGUgcGxhbmUuCgpUaGUgREMgYW5kIElETUFDIGNoYW5uZWxzIGNhbiBi ZSBpbmZlcnJlZCBmcm9tIHRoZSBkdWFsLXBsYW5lIHBhcmFtZXRlci4KSW4gdGFibGUgZm9ybSwg dGhlIGNoYW5uZWwgdXNhZ2UgaXM6CgogICAgICAgICAgICAgICAgIEJhY2tncm91bmQgUGxhbmUg ICBGb3JlZ3JvdW5kIFBsYW5lICAgICBTaW5nbGUgUGxhbmUKICAgICAgICAgICAgICAgICAtLS0t LS0tLS0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLSAgICAgLS0tLS0tLS0tLS0tCiAgICBGbG93 IFR5cGUgICAgSURNQUMgICBEQyAgIERQICAgICBJRE1BQyAgIERQICAgICAgICAgICBJRE1BQyAg IERDCiAgICAtLS0tLS0tLS0gICAgLS0tLS0gIC0tLSAgLS0tICAgICAtLS0tLSAgLS0tICAgICAg ICAgICAtLS0tLSAgLS0tCiAgICBTeW5jICAgICAgICAgIDIzICAgICA1ICAgIDAgICAgICAgMjcg ICAgIDEgICAgICAgICAgICAgMjggICAgIDEKICAgIEFzeW5jICAgICAgICAgMjQgICAgIDYgICAg MiAgICAgICAyOSAgICAgMyAgICAgICAgICAgICA0MSAgICAgMgoKQXN5bmMgZmxvd3MgYXJlIGlu Y2x1ZGVkIGluIHRoZSBhYm92ZSB0YWJsZSBidXQgYXN5bmMgZGlzcGxheXMgYXJlCm5vdCB5ZXQg c3VwcG9ydGVkIGJ5IHRoZSBjcnRjIGFuZCBwbGFuZSBkcml2ZXJzLgoKU2lnbmVkLW9mZi1ieTog U3RldmUgTG9uZ2VyYmVhbSA8c3RldmVfbG9uZ2VyYmVhbUBtZW50b3IuY29tPgotLS0KIGRyaXZl cnMvc3RhZ2luZy9pbXgtZHJtL2lteC1kcm0tY29yZS5jIHwgICAyOCArKystLQogZHJpdmVycy9z dGFnaW5nL2lteC1kcm0vaXB1djMtY3J0Yy5jICAgfCAgMjA0ICsrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE2MiBpbnNlcnRpb25zKCspLCA3MCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW14LWRybS9pbXgtZHJtLWNv cmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2lteC1kcm0tY29yZS5jCmluZGV4IDljYjIy MmUuLmU1ZWMwMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2lteC1kcm0t Y29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbXgtZHJtL2lteC1kcm0tY29yZS5jCkBAIC01 OTEsMzcgKzU5MSw0MyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9tYXN0ZXJfb3Bz IGlteF9kcm1fb3BzID0gewogCiBzdGF0aWMgaW50IGlteF9kcm1fcGxhdGZvcm1fcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKLQlzdHJ1Y3QgZGV2aWNlX25vZGUgKmVwLCAq cG9ydCwgKnJlbW90ZTsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKmVwLCAqY3J0YywgKnBvcnQsICpy ZW1vdGU7CiAJc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqbWF0Y2ggPSBOVUxMOwogCWludCByZXQ7 CiAJaW50IGk7CiAKIAkvKgotCSAqIEJpbmQgdGhlIElQVSBkaXNwbGF5IGludGVyZmFjZSBwb3J0 cyBmaXJzdCwgc28gdGhhdAotCSAqIGlteF9kcm1fZW5jb2Rlcl9wYXJzZV9vZiBjYWxsZWQgZnJv bSBlbmNvZGVyIC5iaW5kIGNhbGxiYWNrcwotCSAqIHdvcmtzIGFzIGV4cGVjdGVkLgorCSAqIEJp bmQgdGhlIGNydGNzIGZpcnN0LCBzbyB0aGF0IGlteF9kcm1fZW5jb2Rlcl9wYXJzZV9vZiBjYWxs ZWQKKwkgKiBmcm9tIGVuY29kZXIgLmJpbmQgY2FsbGJhY2tzIHdvcmtzIGFzIGV4cGVjdGVkLgog CSAqLwogCWZvciAoaSA9IDA7IDsgaSsrKSB7Ci0JCXBvcnQgPSBvZl9wYXJzZV9waGFuZGxlKHBk ZXYtPmRldi5vZl9ub2RlLCAicG9ydHMiLCBpKTsKLQkJaWYgKCFwb3J0KQorCQljcnRjID0gb2Zf cGFyc2VfcGhhbmRsZShwZGV2LT5kZXYub2Zfbm9kZSwgImNydGNzIiwgaSk7CisJCWlmICghY3J0 YykKIAkJCWJyZWFrOwogCi0JCWNvbXBvbmVudF9tYXRjaF9hZGQoJnBkZXYtPmRldiwgJm1hdGNo LCBjb21wYXJlX29mLCBwb3J0KTsKKwkJY29tcG9uZW50X21hdGNoX2FkZCgmcGRldi0+ZGV2LCAm bWF0Y2gsIGNvbXBhcmVfb2YsIGNydGMpOwogCX0KIAogCWlmIChpID09IDApIHsKLQkJZGV2X2Vy cigmcGRldi0+ZGV2LCAibWlzc2luZyAncG9ydHMnIHByb3BlcnR5XG4iKTsKKwkJZGV2X2Vycigm cGRldi0+ZGV2LCAibWlzc2luZyAnY3J0Y3MnIHByb3BlcnR5XG4iKTsKIAkJcmV0dXJuIC1FTk9E RVY7CiAJfQogCiAJLyogVGhlbiBiaW5kIGFsbCBlbmNvZGVycyAqLwogCWZvciAoaSA9IDA7IDsg aSsrKSB7Ci0JCXBvcnQgPSBvZl9wYXJzZV9waGFuZGxlKHBkZXYtPmRldi5vZl9ub2RlLCAicG9y dHMiLCBpKTsKLQkJaWYgKCFwb3J0KQorCQljcnRjID0gb2ZfcGFyc2VfcGhhbmRsZShwZGV2LT5k ZXYub2Zfbm9kZSwgImNydGNzIiwgaSk7CisJCWlmICghY3J0YykKIAkJCWJyZWFrOwogCisJCXBv cnQgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShjcnRjLCAicG9ydCIpOworCQlpZiAoIXBvcnQpIHsK KwkJCWRldl93YXJuKCZwZGV2LT5kZXYsICIlcyBoYXMgbm8gcG9ydFxuIiwgY3J0Yy0+bmFtZSk7 CisJCQljb250aW51ZTsKKwkJfQorCiAJCWZvcl9lYWNoX2NoaWxkX29mX25vZGUocG9ydCwgZXAp IHsKIAkJCXJlbW90ZSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQoZXApOworCiAJ CQlpZiAoIXJlbW90ZSB8fCAhb2ZfZGV2aWNlX2lzX2F2YWlsYWJsZShyZW1vdGUpKSB7CiAJCQkJ b2Zfbm9kZV9wdXQocmVtb3RlKTsKIAkJCQljb250aW51ZTsKQEAgLTYzNSw3ICs2NDEsNyBAQCBz dGF0aWMgaW50IGlteF9kcm1fcGxhdGZvcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKIAkJCWNvbXBvbmVudF9tYXRjaF9hZGQoJnBkZXYtPmRldiwgJm1hdGNoLCBjb21wYXJl X29mLCByZW1vdGUpOwogCQkJb2Zfbm9kZV9wdXQocmVtb3RlKTsKIAkJfQotCQlvZl9ub2RlX3B1 dChwb3J0KTsKKwkJb2Zfbm9kZV9wdXQoY3J0Yyk7CiAJfQogCiAJcmV0ID0gZG1hX3NldF9jb2hl cmVudF9tYXNrKCZwZGV2LT5kZXYsIERNQV9CSVRfTUFTSygzMikpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9zdGFnaW5nL2lteC1kcm0vaXB1djMtY3J0Yy5jIGIvZHJpdmVycy9zdGFnaW5nL2lteC1k cm0vaXB1djMtY3J0Yy5jCmluZGV4IDhiNDQ0MGEuLjVhNjAwMTcgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvc3RhZ2luZy9pbXgtZHJtL2lwdXYzLWNydGMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaW14 LWRybS9pcHV2My1jcnRjLmMKQEAgLTM2LDEwICszNiw1MiBAQAogCiAjZGVmaW5lIERSSVZFUl9E RVNDCQkiaS5NWCBJUFV2MyBHcmFwaGljcyIKIAorc3RydWN0IGlwdV9jaGFubmVscyB7CisJaW50 IGRtYVsyXTsgLyogQkcsIEZHICovCisJaW50IGRwWzJdOyAgLyogQkcsIEZHICovCisJaW50IGRj OworfTsKKworI2RlZmluZSBOT19EUCAtMQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGlwdV9jaGFu bmVscyBzeW5jX2R1YWxfcGxhbmUgPSB7CisJLmRtYSA9IHsgSVBVVjNfQ0hBTk5FTF9NRU1fQkdf U1lOQywgSVBVVjNfQ0hBTk5FTF9NRU1fRkdfU1lOQyB9LAorCS5kcCAgPSB7IElQVV9EUF9GTE9X X1NZTkNfQkcsIElQVV9EUF9GTE9XX1NZTkNfRkcgfSwKKwkuZGMgID0gSVBVX0RDX0NIQU5ORUxf RFBfU1lOQywKK307CitzdGF0aWMgY29uc3Qgc3RydWN0IGlwdV9jaGFubmVscyBzeW5jX3Npbmds ZV9wbGFuZSA9IHsKKwkuZG1hID0geyBJUFVWM19DSEFOTkVMX01FTV9EQ19TWU5DLCB9LAorCS5k cCAgPSB7IE5PX0RQLCBOT19EUCB9LAorCS5kYyAgPSBJUFVfRENfQ0hBTk5FTF9TWU5DLAorfTsK KworLyoKKyAqIFRoaXMgZHJpdmVyIGRvZXMgbm90IHlldCBzdXBwb3J0IGFzeW5jIGZsb3dzIGZv ciAic21hcnQiIGRpc3BsYXlzLAorICogYnV0IGtlZXAgdGhpcyBhcm91bmQgZm9yIGZ1dHVyZSBy ZWZlcmVuY2UuIFRoZSBjcnRjIG5vZGVzIGNvdWxkIGluCisgKiBmdXR1cmUgYWRkIGFuICJhc3lu YyIgcHJvcGVydHkuCisgKi8KKyNpZiAwCitzdGF0aWMgY29uc3Qgc3RydWN0IGlwdV9jaGFubmVs cyBhc3luY19kdWFsX3BsYW5lID0geworCS5kbWEgPSB7IElQVVYzX0NIQU5ORUxfTUVNX0JHX0FT WU5DLCBJUFVWM19DSEFOTkVMX01FTV9GR19BU1lOQyB9LAorCS5kcCAgPSB7IElQVV9EUF9GTE9X X0FTWU5DMF9CRywgSVBVX0RQX0ZMT1dfQVNZTkMwX0ZHIH0sCisJLmRjICA9IElQVV9EQ19DSEFO TkVMX0RQX0FTWU5DLAorfTsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXB1X2NoYW5uZWxzIGFzeW5j X3NpbmdsZV9wbGFuZSA9IHsKKwkuZG1hID0geyBJUFVWM19DSEFOTkVMX01FTV9EQ19BU1lOQywg fSwKKwkuZHAgID0geyBOT19EUCwgTk9fRFAgfSwKKwkuZGMgICAgPSBJUFVfRENfQ0hBTk5FTF9B U1lOQywKK307CisjZW5kaWYKKwogc3RydWN0IGlwdV9jcnRjIHsKIAlzdHJ1Y3QgZGV2aWNlCQkq ZGV2OwogCXN0cnVjdCBkcm1fY3J0YwkJYmFzZTsKIAlzdHJ1Y3QgaW14X2RybV9jcnRjCSppbXhf Y3J0YzsKKwlzdHJ1Y3QgZGV2aWNlICAgICAgICAgICAqaXB1X2RldjsgLyogb3VyIGlwdSAqLwor CXN0cnVjdCBpcHVfc29jICAgICAgICAgICppcHU7CisJc3RydWN0IGRldmljZV9ub2RlICAgICAg KnBvcnQ7ICAgIC8qIG91ciBwb3J0ICovCisKKwljb25zdCBzdHJ1Y3QgaXB1X2NoYW5uZWxzICpj aDsKIAogCS8qIHBsYW5lWzBdIGlzIHRoZSBmdWxsIHBsYW5lLCBwbGFuZVsxXSBpcyB0aGUgcGFy dGlhbCBwbGFuZSAqLwogCXN0cnVjdCBpcHVfcGxhbmUJKnBsYW5lWzJdOwpAQCAtMzExLDMyICsz NTMsMTA2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW14X2RybV9jcnRjX2hlbHBlcl9mdW5jcyBp cHVfY3J0Y19oZWxwZXJfZnVuY3MgPSB7CiAJLmNydGNfaGVscGVyX2Z1bmNzID0gJmlwdV9oZWxw ZXJfZnVuY3MsCiB9OwogCitzdGF0aWMgaW50IG9mX2Rldl9ub2RlX21hdGNoKHN0cnVjdCBkZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSkKK3sKKwlyZXR1cm4gZGV2LT5vZl9ub2RlID09IGRhdGE7Cit9 CisKK3N0YXRpYyBpbnQgZ2V0X2lwdShzdHJ1Y3QgaXB1X2NydGMgKmlwdV9jcnRjLCBzdHJ1Y3Qg ZGV2aWNlX25vZGUgKm5vZGUpCit7CisJc3RydWN0IGRldmljZV9ub2RlICppcHVfbm9kZTsKKwlz dHJ1Y3QgZGV2aWNlICppcHVfZGV2OworCWludCByZXQ7CisKKwlpcHVfbm9kZSA9IG9mX3BhcnNl X3BoYW5kbGUobm9kZSwgImlwdSIsIDApOworCWlmICghaXB1X25vZGUpIHsKKwkJZGV2X2Vycihp cHVfY3J0Yy0+ZGV2LCAibWlzc2luZyBpcHUgcGhhbmRsZSFcbiIpOworCQlyZXR1cm4gLUVOT0RF VjsKKwl9CisKKwlpcHVfZGV2ID0gYnVzX2ZpbmRfZGV2aWNlKCZwbGF0Zm9ybV9idXNfdHlwZSwg TlVMTCwKKwkJCQkgIGlwdV9ub2RlLCBvZl9kZXZfbm9kZV9tYXRjaCk7CisJb2Zfbm9kZV9wdXQo aXB1X25vZGUpOworCisJaWYgKCFpcHVfZGV2KSB7CisJCWRldl9lcnIoaXB1X2NydGMtPmRldiwg ImZhaWxlZCB0byBmaW5kIGlwdSBkZXZpY2UhXG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQor CisJZGV2aWNlX2xvY2soaXB1X2Rldik7CisKKwlpZiAoIWlwdV9kZXYtPmRyaXZlciB8fCAhdHJ5 X21vZHVsZV9nZXQoaXB1X2Rldi0+ZHJpdmVyLT5vd25lcikpIHsKKwkJcmV0ID0gLUVQUk9CRV9E RUZFUjsKKwkJZGV2X3dhcm4oaXB1X2NydGMtPmRldiwgIklQVSBkcml2ZXIgbm90IGxvYWRlZFxu Iik7CisJCWRldmljZV91bmxvY2soaXB1X2Rldik7CisJCWdvdG8gZGV2X3B1dDsKKwl9CisKKwlp cHVfY3J0Yy0+aXB1X2RldiA9IGlwdV9kZXY7CisJaXB1X2NydGMtPmlwdSA9IGRldl9nZXRfZHJ2 ZGF0YShpcHVfZGV2KTsKKworCWRldmljZV91bmxvY2soaXB1X2Rldik7CisJcmV0dXJuIDA7Citk ZXZfcHV0OgorCXB1dF9kZXZpY2UoaXB1X2Rldik7CisJcmV0dXJuIHJldDsKK30KKwogc3RhdGlj IHZvaWQgaXB1X3B1dF9yZXNvdXJjZXMoc3RydWN0IGlwdV9jcnRjICppcHVfY3J0YykKIHsKIAlp ZiAoIUlTX0VSUl9PUl9OVUxMKGlwdV9jcnRjLT5kYykpCiAJCWlwdV9kY19wdXQoaXB1X2NydGMt PmRjKTsKIAlpZiAoIUlTX0VSUl9PUl9OVUxMKGlwdV9jcnRjLT5kaSkpCiAJCWlwdV9kaV9wdXQo aXB1X2NydGMtPmRpKTsKKwlpZiAoIUlTX0VSUl9PUl9OVUxMKGlwdV9jcnRjLT5pcHVfZGV2KSkg eworCQltb2R1bGVfcHV0KGlwdV9jcnRjLT5pcHVfZGV2LT5kcml2ZXItPm93bmVyKTsKKwkJcHV0 X2RldmljZShpcHVfY3J0Yy0+aXB1X2Rldik7CisJfQogfQogCiBzdGF0aWMgaW50IGlwdV9nZXRf cmVzb3VyY2VzKHN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMsCi0JCXN0cnVjdCBpcHVfY2xpZW50 X3BsYXRmb3JtZGF0YSAqcGRhdGEpCisJCQkgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCiB7 Ci0Jc3RydWN0IGlwdV9zb2MgKmlwdSA9IGRldl9nZXRfZHJ2ZGF0YShpcHVfY3J0Yy0+ZGV2LT5w YXJlbnQpOworCXUzMiBkaTsKIAlpbnQgcmV0OwogCi0JaXB1X2NydGMtPmRjID0gaXB1X2RjX2dl dChpcHUsIHBkYXRhLT5kYyk7Ci0JaWYgKElTX0VSUihpcHVfY3J0Yy0+ZGMpKSB7Ci0JCXJldCA9 IFBUUl9FUlIoaXB1X2NydGMtPmRjKTsKLQkJZ290byBlcnJfb3V0OworCXJldCA9IGdldF9pcHUo aXB1X2NydGMsIG5wKTsKKwlpZiAocmV0KSB7CisJCWRldl93YXJuKGlwdV9jcnRjLT5kZXYsICJj b3VsZCBub3QgZ2V0IGlwdVxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJLyogZ2V0IG91ciBw b3J0ICovCisJaXB1X2NydGMtPnBvcnQgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgInBvcnQi KTsKKwlpZiAoIWlwdV9jcnRjLT5wb3J0KSB7CisJCWRldl9lcnIoaXB1X2NydGMtPmRldiwgImNv dWxkIG5vdCBnZXQgcG9ydFxuIik7CisJCXJldHVybiAtRU5PREVWOwogCX0KIAotCWlwdV9jcnRj LT5kaSA9IGlwdV9kaV9nZXQoaXB1LCBwZGF0YS0+ZGkpOworCXJldCA9IG9mX3Byb3BlcnR5X3Jl YWRfdTMyKG5wLCAiZGkiLCAmZGkpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycl9vdXQ7CisK KwlpcHVfY3J0Yy0+ZGkgPSBpcHVfZGlfZ2V0KGlwdV9jcnRjLT5pcHUsIGRpKTsKIAlpZiAoSVNf RVJSKGlwdV9jcnRjLT5kaSkpIHsKIAkJcmV0ID0gUFRSX0VSUihpcHVfY3J0Yy0+ZGkpOwogCQln b3RvIGVycl9vdXQ7CiAJfQogCisJaWYgKCFvZl9maW5kX3Byb3BlcnR5KG5wLCAiZHVhbC1wbGFu ZSIsIE5VTEwpKSB7CisJCWRldl9pbmZvKGlwdV9jcnRjLT5kZXYsICJzaW5nbGUgcGxhbmUgbW9k ZVxuIik7CisJCWlwdV9jcnRjLT5jaCA9ICZzeW5jX3NpbmdsZV9wbGFuZTsKKwl9IGVsc2Ugewor CQlkZXZfaW5mbyhpcHVfY3J0Yy0+ZGV2LCAiZHVhbCBwbGFuZSBtb2RlXG4iKTsKKwkJaXB1X2Ny dGMtPmNoID0gJnN5bmNfZHVhbF9wbGFuZTsKKwl9CisKKwlpcHVfY3J0Yy0+ZGMgPSBpcHVfZGNf Z2V0KGlwdV9jcnRjLT5pcHUsIGlwdV9jcnRjLT5jaC0+ZGMpOworCWlmIChJU19FUlIoaXB1X2Ny dGMtPmRjKSkgeworCQlyZXQgPSBQVFJfRVJSKGlwdV9jcnRjLT5kYyk7CisJCWdvdG8gZXJyX291 dDsKKwl9CisKIAlyZXR1cm4gMDsKIGVycl9vdXQ6CiAJaXB1X3B1dF9yZXNvdXJjZXMoaXB1X2Ny dGMpOwpAQCAtMzQ1LDE0ICs0NjEsMTMgQEAgZXJyX291dDoKIH0KIAogc3RhdGljIGludCBpcHVf Y3J0Y19pbml0KHN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMsCi0Jc3RydWN0IGlwdV9jbGllbnRf cGxhdGZvcm1kYXRhICpwZGF0YSwgc3RydWN0IGRybV9kZXZpY2UgKmRybSkKKwkJCSBzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtKQogewotCXN0cnVjdCBpcHVfc29jICppcHUgPSBkZXZfZ2V0X2RydmRh dGEoaXB1X2NydGMtPmRldi0+cGFyZW50KTsKLQlpbnQgZHAgPSAtRUlOVkFMOworCXN0cnVjdCBk ZXZpY2Vfbm9kZSAqbnAgPSBpcHVfY3J0Yy0+ZGV2LT5vZl9ub2RlOwogCWludCByZXQ7CiAJaW50 IGlkOwogCi0JcmV0ID0gaXB1X2dldF9yZXNvdXJjZXMoaXB1X2NydGMsIHBkYXRhKTsKKwlyZXQg PSBpcHVfZ2V0X3Jlc291cmNlcyhpcHVfY3J0YywgbnApOwogCWlmIChyZXQpIHsKIAkJZGV2X2Vy cihpcHVfY3J0Yy0+ZGV2LCAiZ2V0dGluZyByZXNvdXJjZXMgZmFpbGVkIHdpdGggJWQuXG4iLAog CQkJCXJldCk7CkBAIC0zNjAsMTcgKzQ3NSwxOCBAQCBzdGF0aWMgaW50IGlwdV9jcnRjX2luaXQo c3RydWN0IGlwdV9jcnRjICppcHVfY3J0YywKIAl9CiAKIAlyZXQgPSBpbXhfZHJtX2FkZF9jcnRj KGRybSwgJmlwdV9jcnRjLT5iYXNlLCAmaXB1X2NydGMtPmlteF9jcnRjLAotCQkJJmlwdV9jcnRj X2hlbHBlcl9mdW5jcywgaXB1X2NydGMtPmRldi0+b2Zfbm9kZSk7CisJCQkgICAgICAgJmlwdV9j cnRjX2hlbHBlcl9mdW5jcywgaXB1X2NydGMtPnBvcnQpOwogCWlmIChyZXQpIHsKIAkJZGV2X2Vy cihpcHVfY3J0Yy0+ZGV2LCAiYWRkaW5nIGNydGMgZmFpbGVkIHdpdGggJWQuXG4iLCByZXQpOwog CQlnb3RvIGVycl9wdXRfcmVzb3VyY2VzOwogCX0KIAotCWlmIChwZGF0YS0+ZHAgPj0gMCkKLQkJ ZHAgPSBJUFVfRFBfRkxPV19TWU5DX0JHOwogCWlkID0gaW14X2RybV9jcnRjX2lkKGlwdV9jcnRj LT5pbXhfY3J0Yyk7Ci0JaXB1X2NydGMtPnBsYW5lWzBdID0gaXB1X3BsYW5lX2luaXQoaXB1X2Ny dGMtPmJhc2UuZGV2LCBpcHUsCi0JCQkJCSAgICBwZGF0YS0+ZG1hWzBdLCBkcCwgQklUKGlkKSwg dHJ1ZSk7CisJaXB1X2NydGMtPnBsYW5lWzBdID0gaXB1X3BsYW5lX2luaXQoaXB1X2NydGMtPmJh c2UuZGV2LAorCQkJCQkgICAgaXB1X2NydGMtPmlwdSwKKwkJCQkJICAgIGlwdV9jcnRjLT5jaC0+ ZG1hWzBdLAorCQkJCQkgICAgaXB1X2NydGMtPmNoLT5kcFswXSwKKwkJCQkJICAgIEJJVChpZCks IHRydWUpOwogCXJldCA9IGlwdV9wbGFuZV9nZXRfcmVzb3VyY2VzKGlwdV9jcnRjLT5wbGFuZVsw XSk7CiAJaWYgKHJldCkgewogCQlkZXZfZXJyKGlwdV9jcnRjLT5kZXYsICJnZXR0aW5nIHBsYW5l IDAgcmVzb3VyY2VzIGZhaWxlZCB3aXRoICVkLlxuIiwKQEAgLTM3OSwxMCArNDk1LDExIEBAIHN0 YXRpYyBpbnQgaXB1X2NydGNfaW5pdChzdHJ1Y3QgaXB1X2NydGMgKmlwdV9jcnRjLAogCX0KIAog CS8qIElmIHRoaXMgY3J0YyBpcyB1c2luZyB0aGUgRFAsIGFkZCBhbiBvdmVybGF5IHBsYW5lICov Ci0JaWYgKHBkYXRhLT5kcCA+PSAwICYmIHBkYXRhLT5kbWFbMV0gPiAwKSB7Ci0JCWlwdV9jcnRj LT5wbGFuZVsxXSA9IGlwdV9wbGFuZV9pbml0KGlwdV9jcnRjLT5iYXNlLmRldiwgaXB1LAotCQkJ CQkJICAgIHBkYXRhLT5kbWFbMV0sCi0JCQkJCQkgICAgSVBVX0RQX0ZMT1dfU1lOQ19GRywKKwlp ZiAoaXB1X2NydGMtPmNoLT5kcFsxXSA+PSAwKSB7CisJCWlwdV9jcnRjLT5wbGFuZVsxXSA9IGlw dV9wbGFuZV9pbml0KGlwdV9jcnRjLT5iYXNlLmRldiwKKwkJCQkJCSAgICBpcHVfY3J0Yy0+aXB1 LAorCQkJCQkJICAgIGlwdV9jcnRjLT5jaC0+ZG1hWzFdLAorCQkJCQkJICAgIGlwdV9jcnRjLT5j aC0+ZHBbMV0sCiAJCQkJCQkgICAgQklUKGlkKSwgZmFsc2UpOwogCQlpZiAoSVNfRVJSKGlwdV9j cnRjLT5wbGFuZVsxXSkpCiAJCQlpcHVfY3J0Yy0+cGxhbmVbMV0gPSBOVUxMOwpAQCAtNDA4LDMx ICs1MjUsOCBAQCBlcnJfcHV0X3Jlc291cmNlczoKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMg c3RydWN0IGRldmljZV9ub2RlICppcHVfZHJtX2dldF9wb3J0X2J5X2lkKHN0cnVjdCBkZXZpY2Vf bm9kZSAqcGFyZW50LAotCQkJCQkJICBpbnQgcG9ydF9pZCkKLXsKLQlzdHJ1Y3QgZGV2aWNlX25v ZGUgKnBvcnQ7Ci0JaW50IGlkLCByZXQ7Ci0KLQlwb3J0ID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUo cGFyZW50LCAicG9ydCIpOwotCXdoaWxlIChwb3J0KSB7Ci0JCXJldCA9IG9mX3Byb3BlcnR5X3Jl YWRfdTMyKHBvcnQsICJyZWciLCAmaWQpOwotCQlpZiAoIXJldCAmJiBpZCA9PSBwb3J0X2lkKQot CQkJcmV0dXJuIHBvcnQ7Ci0KLQkJZG8gewotCQkJcG9ydCA9IG9mX2dldF9uZXh0X2NoaWxkKHBh cmVudCwgcG9ydCk7Ci0JCQlpZiAoIXBvcnQpCi0JCQkJcmV0dXJuIE5VTEw7Ci0JCX0gd2hpbGUg KG9mX25vZGVfY21wKHBvcnQtPm5hbWUsICJwb3J0IikpOwotCX0KLQotCXJldHVybiBOVUxMOwot fQotCiBzdGF0aWMgaW50IGlwdV9kcm1fYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBk ZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIHsKLQlzdHJ1Y3QgaXB1X2NsaWVudF9wbGF0Zm9y bWRhdGEgKnBkYXRhID0gZGV2LT5wbGF0Zm9ybV9kYXRhOwogCXN0cnVjdCBkcm1fZGV2aWNlICpk cm0gPSBkYXRhOwogCXN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGM7CiAJaW50IHJldDsKQEAgLTQ0 Myw3ICs1MzcsNyBAQCBzdGF0aWMgaW50IGlwdV9kcm1fYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIAogCWlwdV9jcnRjLT5kZXYgPSBk ZXY7CiAKLQlyZXQgPSBpcHVfY3J0Y19pbml0KGlwdV9jcnRjLCBwZGF0YSwgZHJtKTsKKwlyZXQg PSBpcHVfY3J0Y19pbml0KGlwdV9jcnRjLCBkcm0pOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7 CiAKQEAgLTQ3MSwyMyArNTY1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3Bz IGlwdV9jcnRjX29wcyA9IHsKIHN0YXRpYyBpbnQgaXB1X2RybV9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Ci0J c3RydWN0IGlwdV9jbGllbnRfcGxhdGZvcm1kYXRhICpwZGF0YSA9IGRldi0+cGxhdGZvcm1fZGF0 YTsKIAlpbnQgcmV0OwogCi0JaWYgKCFkZXYtPnBsYXRmb3JtX2RhdGEpCi0JCXJldHVybiAtRUlO VkFMOwotCi0JaWYgKCFkZXYtPm9mX25vZGUpIHsKLQkJLyogQXNzb2NpYXRlIGNydGMgZGV2aWNl IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgREkgcG9ydCBub2RlICovCi0JCWRldi0+b2Zfbm9kZSA9 IGlwdV9kcm1fZ2V0X3BvcnRfYnlfaWQoZGV2LT5wYXJlbnQtPm9mX25vZGUsCi0JCQkJCQkgICAg ICBwZGF0YS0+ZGkgKyAyKTsKLQkJaWYgKCFkZXYtPm9mX25vZGUpIHsKLQkJCWRldl9lcnIoZGV2 LCAibWlzc2luZyBwb3J0QCVkIG5vZGUgaW4gJXNcbiIsCi0JCQkJcGRhdGEtPmRpICsgMiwgZGV2 LT5wYXJlbnQtPm9mX25vZGUtPmZ1bGxfbmFtZSk7Ci0JCQlyZXR1cm4gLUVOT0RFVjsKLQkJfQot CX0KLQogCXJldCA9IGRtYV9zZXRfY29oZXJlbnRfbWFzayhkZXYsIERNQV9CSVRfTUFTSygzMikp OwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC01MDEsOSArNTgwLDE2IEBAIHN0YXRpYyBp bnQgaXB1X2RybV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlyZXR1cm4g MDsKIH0KIAorc3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgaXB1X2RybV9kdF9pZHNbXSA9IHsK Kwl7IC5jb21wYXRpYmxlID0gImZzbCxpbXgtaXB1djMtY3J0YyIgfSwKKwl7IC8qIHNlbnRpbmVs ICovIH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpcHVfZHJtX2R0X2lkcyk7CisKIHN0 YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGlwdV9kcm1fZHJpdmVyID0gewogCS5kcml2ZXIg PSB7CiAJCS5uYW1lID0gImlteC1pcHV2My1jcnRjIiwKKwkJLm9mX21hdGNoX3RhYmxlID0gaXB1 X2RybV9kdF9pZHMsCiAJfSwKIAkucHJvYmUgPSBpcHVfZHJtX3Byb2JlLAogCS5yZW1vdmUgPSBp cHVfZHJtX3JlbW92ZSwKLS0gCjEuNy45LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==