From mboxrd@z Thu Jan 1 00:00:00 1970 From: YT Shen Subject: [PATCH v4 3/8] drm/mediatek: add shadow register support Date: Fri, 15 Jul 2016 18:07:49 +0800 Message-ID: <1468577274-6178-4-git-send-email-yt.shen@mediatek.com> References: <1468577274-6178-1-git-send-email-yt.shen@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1468577274-6178-1-git-send-email-yt.shen@mediatek.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, Philipp Zabel Cc: Mark Rutland , devicetree@vger.kernel.org, Russell King , srv_heupstream@mediatek.com, Pawel Moll , Ian Campbell , emil.l.velikov@gmail.com, linux-kernel@vger.kernel.org, Mao Huang , Rob Herring , linux-mediatek@lists.infradead.org, Kumar Gala , Matthias Brugger , yingjoe.chen@mediatek.com, Sascha Hauer , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org V2UgbmVlZCB0byBhY3F1aXJlIG11dGV4IGJlZm9yZSB1c2luZyB0aGUgcmVzb3VyY2VzLAphbmQg bmVlZCB0byByZWxlYXNlIGl0IGFmdGVyIGZpbmlzaGVkLgpTbyB3ZSBkb24ndCBuZWVkIHRvIHdy aXRlIHJlZ2lzdGVycyBpbiB0aGUgYmxhbmtpbmcgcGVyaW9kLgoKU2lnbmVkLW9mZi1ieTogWVQg U2hlbiA8eXQuc2hlbkBtZWRpYXRlay5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kcm1fY3J0Yy5jIHwgICA3NSArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuYyAgfCAgIDIyICsrKysrKysrKwog ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmggIHwgICAgMiArCiBkcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCAgfCAgICAxICsKIDQgZmlsZXMgY2hhbmdl ZCwgNzEgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kcm1fY3J0Yy5jCmluZGV4IDI0YWEzYmEuLjgwZDk2NDEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMKQEAgLTMxNSw2ICszMTUsNDIgQEAgc3RhdGljIHZv aWQgbXRrX2NydGNfZGRwX2h3X2Zpbmkoc3RydWN0IG10a19kcm1fY3J0YyAqbXRrX2NydGMpCiAJ cG1fcnVudGltZV9wdXQoZHJtLT5kZXYpOwogfQogCitzdGF0aWMgdm9pZCBtdGtfY3J0Y19kZHBf Y29uZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgbXRrX2RybV9jcnRjICpt dGtfY3J0YyA9IHRvX210a19jcnRjKGNydGMpOworCXN0cnVjdCBtdGtfY3J0Y19zdGF0ZSAqc3Rh dGUgPSB0b19tdGtfY3J0Y19zdGF0ZShtdGtfY3J0Yy0+YmFzZS5zdGF0ZSk7CisJc3RydWN0IG10 a19kZHBfY29tcCAqb3ZsID0gbXRrX2NydGMtPmRkcF9jb21wWzBdOworCXVuc2lnbmVkIGludCBp OworCisJLyoKKwkgKiBUT0RPOiBpbnN0ZWFkIG9mIHVwZGF0aW5nIHRoZSByZWdpc3RlcnMgaGVy ZSwgd2Ugc2hvdWxkIHByZXBhcmUKKwkgKiB3b3JraW5nIHJlZ2lzdGVycyBpbiBhdG9taWNfY29t bWl0IGFuZCBsZXQgdGhlIGhhcmR3YXJlIGNvbW1hbmQKKwkgKiBxdWV1ZSB1cGRhdGUgbW9kdWxl IHJlZ2lzdGVycyBvbiB2YmxhbmsuCisJICovCisJaWYgKHN0YXRlLT5wZW5kaW5nX2NvbmZpZykg eworCQltdGtfZGRwX2NvbXBfY29uZmlnKG92bCwgc3RhdGUtPnBlbmRpbmdfd2lkdGgsCisJCQkJ ICAgIHN0YXRlLT5wZW5kaW5nX2hlaWdodCwKKwkJCQkgICAgc3RhdGUtPnBlbmRpbmdfdnJlZnJl c2gpOworCisJCXN0YXRlLT5wZW5kaW5nX2NvbmZpZyA9IGZhbHNlOworCX0KKworCWlmIChtdGtf Y3J0Yy0+cGVuZGluZ19wbGFuZXMpIHsKKwkJZm9yIChpID0gMDsgaSA8IE9WTF9MQVlFUl9OUjsg aSsrKSB7CisJCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9ICZtdGtfY3J0Yy0+cGxhbmVzW2ld LmJhc2U7CisJCQlzdHJ1Y3QgbXRrX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKworCQkJcGxh bmVfc3RhdGUgPSB0b19tdGtfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKKworCQkJaWYgKHBs YW5lX3N0YXRlLT5wZW5kaW5nLmNvbmZpZykgeworCQkJCW10a19kZHBfY29tcF9sYXllcl9jb25m aWcob3ZsLCBpLCBwbGFuZV9zdGF0ZSk7CisJCQkJcGxhbmVfc3RhdGUtPnBlbmRpbmcuY29uZmln ID0gZmFsc2U7CisJCQl9CisJCX0KKwkJbXRrX2NydGMtPnBlbmRpbmdfcGxhbmVzID0gZmFsc2U7 CisJfQorfQorCiBzdGF0aWMgdm9pZCBtdGtfZHJtX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIHsKIAlzdHJ1Y3QgbXRrX2RybV9jcnRjICptdGtfY3J0YyA9IHRvX210a19jcnRj KGNydGMpOwpAQCAtMzkxLDYgKzQyNyw3IEBAIHN0YXRpYyB2b2lkIG10a19kcm1fY3J0Y19hdG9t aWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCSAgICAgIHN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCiB7CiAJc3RydWN0IG10a19kcm1fY3J0YyAqbXRrX2Ny dGMgPSB0b19tdGtfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgbXRrX2RybV9wcml2YXRlICpwcml2ID0g Y3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAl1bnNpZ25lZCBpbnQgcGVuZGluZ19wbGFuZXMgPSAw OwogCWludCBpOwogCkBAIC00MDksNiArNDQ2LDEyIEBAIHN0YXRpYyB2b2lkIG10a19kcm1fY3J0 Y19hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLAogCX0KIAlpZiAocGVuZGluZ19w bGFuZXMpCiAJCW10a19jcnRjLT5wZW5kaW5nX3BsYW5lcyA9IHRydWU7CisKKwlpZiAocHJpdi0+ ZGF0YS0+c2hhZG93X3JlZ2lzdGVyKSB7CisJCW10a19kaXNwX211dGV4X2FjcXVpcmUobXRrX2Ny dGMtPm11dGV4KTsKKwkJbXRrX2NydGNfZGRwX2NvbmZpZyhjcnRjKTsKKwkJbXRrX2Rpc3BfbXV0 ZXhfcmVsZWFzZShtdGtfY3J0Yy0+bXV0ZXgpOworCX0KIH0KIAogc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fY3J0Y19mdW5jcyBtdGtfY3J0Y19mdW5jcyA9IHsKQEAgLTQ1MywzNiArNDk2LDEwIEBA IGVycl9jbGVhbnVwX2NydGM6CiB2b2lkIG10a19jcnRjX2RkcF9pcnEoc3RydWN0IGRybV9jcnRj ICpjcnRjLCBzdHJ1Y3QgbXRrX2RkcF9jb21wICpvdmwpCiB7CiAJc3RydWN0IG10a19kcm1fY3J0 YyAqbXRrX2NydGMgPSB0b19tdGtfY3J0YyhjcnRjKTsKLQlzdHJ1Y3QgbXRrX2NydGNfc3RhdGUg KnN0YXRlID0gdG9fbXRrX2NydGNfc3RhdGUobXRrX2NydGMtPmJhc2Uuc3RhdGUpOwotCXVuc2ln bmVkIGludCBpOworCXN0cnVjdCBtdGtfZHJtX3ByaXZhdGUgKnByaXYgPSBjcnRjLT5kZXYtPmRl dl9wcml2YXRlOwogCi0JLyoKLQkgKiBUT0RPOiBpbnN0ZWFkIG9mIHVwZGF0aW5nIHRoZSByZWdp c3RlcnMgaGVyZSwgd2Ugc2hvdWxkIHByZXBhcmUKLQkgKiB3b3JraW5nIHJlZ2lzdGVycyBpbiBh dG9taWNfY29tbWl0IGFuZCBsZXQgdGhlIGhhcmR3YXJlIGNvbW1hbmQKLQkgKiBxdWV1ZSB1cGRh dGUgbW9kdWxlIHJlZ2lzdGVycyBvbiB2YmxhbmsuCi0JICovCi0JaWYgKHN0YXRlLT5wZW5kaW5n X2NvbmZpZykgewotCQltdGtfZGRwX2NvbXBfY29uZmlnKG92bCwgc3RhdGUtPnBlbmRpbmdfd2lk dGgsCi0JCQkJICAgIHN0YXRlLT5wZW5kaW5nX2hlaWdodCwKLQkJCQkgICAgc3RhdGUtPnBlbmRp bmdfdnJlZnJlc2gpOwotCi0JCXN0YXRlLT5wZW5kaW5nX2NvbmZpZyA9IGZhbHNlOwotCX0KLQot CWlmIChtdGtfY3J0Yy0+cGVuZGluZ19wbGFuZXMpIHsKLQkJZm9yIChpID0gMDsgaSA8IE9WTF9M QVlFUl9OUjsgaSsrKSB7Ci0JCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9ICZtdGtfY3J0Yy0+ cGxhbmVzW2ldLmJhc2U7Ci0JCQlzdHJ1Y3QgbXRrX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsK LQotCQkJcGxhbmVfc3RhdGUgPSB0b19tdGtfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKLQot CQkJaWYgKHBsYW5lX3N0YXRlLT5wZW5kaW5nLmNvbmZpZykgewotCQkJCW10a19kZHBfY29tcF9s YXllcl9jb25maWcob3ZsLCBpLCBwbGFuZV9zdGF0ZSk7Ci0JCQkJcGxhbmVfc3RhdGUtPnBlbmRp bmcuY29uZmlnID0gZmFsc2U7Ci0JCQl9Ci0JCX0KLQkJbXRrX2NydGMtPnBlbmRpbmdfcGxhbmVz ID0gZmFsc2U7Ci0JfQorCWlmICghcHJpdi0+ZGF0YS0+c2hhZG93X3JlZ2lzdGVyKQorCQltdGtf Y3J0Y19kZHBfY29uZmlnKGNydGMpOwogCiAJbXRrX2RybV9maW5pc2hfcGFnZV9mbGlwKG10a19j cnRjKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rk cC5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMKaW5kZXggODAzMDc2 OS4uZmE1MzgwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1f ZGRwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMKQEAgLTEy LDYgKzEyLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGlu dXgvaW9wb2xsLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgv b2ZfZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CkBAIC0zMiw2 ICszMyw3IEBACiAjZGVmaW5lIERJU1BfUkVHX0NPTkZJR19NTVNZU19DR19DT04wCQkweDEwMAog CiAjZGVmaW5lIERJU1BfUkVHX01VVEVYX0VOKG4pCSgweDIwICsgMHgyMCAqIChuKSkKKyNkZWZp bmUgRElTUF9SRUdfTVVURVgobikJKDB4MjQgKyAweDIwICogKG4pKQogI2RlZmluZSBESVNQX1JF R19NVVRFWF9SU1QobikJKDB4MjggKyAweDIwICogKG4pKQogI2RlZmluZSBESVNQX1JFR19NVVRF WF9NT0QobikJKDB4MmMgKyAweDIwICogKG4pKQogI2RlZmluZSBESVNQX1JFR19NVVRFWF9TT0Yo bikJKDB4MzAgKyAweDIwICogKG4pKQpAQCAtMzAwLDYgKzMwMiwyNiBAQCB2b2lkIG10a19kaXNw X211dGV4X2Rpc2FibGUoc3RydWN0IG10a19kaXNwX211dGV4ICptdXRleCkKIAl3cml0ZWwoMCwg ZGRwLT5yZWdzICsgRElTUF9SRUdfTVVURVhfRU4obXV0ZXgtPmlkKSk7CiB9CiAKK3ZvaWQgbXRr X2Rpc3BfbXV0ZXhfYWNxdWlyZShzdHJ1Y3QgbXRrX2Rpc3BfbXV0ZXggKm11dGV4KQoreworCXN0 cnVjdCBtdGtfZGRwICpkZHAgPSBjb250YWluZXJfb2YobXV0ZXgsIHN0cnVjdCBtdGtfZGRwLAor CQkJCQkgICBtdXRleFttdXRleC0+aWRdKTsKKwl1MzIgdG1wOworCisJd3JpdGVsKDEsIGRkcC0+ cmVncyArIERJU1BfUkVHX01VVEVYX0VOKG11dGV4LT5pZCkpOworCXdyaXRlbCgxLCBkZHAtPnJl Z3MgKyBESVNQX1JFR19NVVRFWChtdXRleC0+aWQpKTsKKwlyZWFkbF9wb2xsX3RpbWVvdXRfYXRv bWljKGRkcC0+cmVncyArIERJU1BfUkVHX01VVEVYKG11dGV4LT5pZCksIHRtcCwKKwkJCQkgIHRt cCAmIDB4MiwgMSwgMTAwMDApOworfQorCit2b2lkIG10a19kaXNwX211dGV4X3JlbGVhc2Uoc3Ry dWN0IG10a19kaXNwX211dGV4ICptdXRleCkKK3sKKwlzdHJ1Y3QgbXRrX2RkcCAqZGRwID0gY29u dGFpbmVyX29mKG11dGV4LCBzdHJ1Y3QgbXRrX2RkcCwKKwkJCQkJICAgbXV0ZXhbbXV0ZXgtPmlk XSk7CisKKwl3cml0ZWwoMCwgZGRwLT5yZWdzICsgRElTUF9SRUdfTVVURVgobXV0ZXgtPmlkKSk7 Cit9CisKIHN0YXRpYyBpbnQgbXRrX2RkcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQogewogCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuaCBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHJtX2RkcC5oCmluZGV4IDkyYzExNzUuLmY5YTc5OTEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5oCkBAIC0zNyw1ICszNyw3IEBAIHZvaWQgbXRrX2Rp c3BfbXV0ZXhfcmVtb3ZlX2NvbXAoc3RydWN0IG10a19kaXNwX211dGV4ICptdXRleCwKIAkJCQll bnVtIG10a19kZHBfY29tcF9pZCBpZCk7CiB2b2lkIG10a19kaXNwX211dGV4X3VucHJlcGFyZShz dHJ1Y3QgbXRrX2Rpc3BfbXV0ZXggKm11dGV4KTsKIHZvaWQgbXRrX2Rpc3BfbXV0ZXhfcHV0KHN0 cnVjdCBtdGtfZGlzcF9tdXRleCAqbXV0ZXgpOwordm9pZCBtdGtfZGlzcF9tdXRleF9hY3F1aXJl KHN0cnVjdCBtdGtfZGlzcF9tdXRleCAqbXV0ZXgpOwordm9pZCBtdGtfZGlzcF9tdXRleF9yZWxl YXNlKHN0cnVjdCBtdGtfZGlzcF9tdXRleCAqbXV0ZXgpOwogCiAjZW5kaWYgLyogTVRLX0RSTV9E RFBfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaAppbmRleCBmYTBiMTA2 Li45NGY4YjY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaApAQCAtMzMs NiArMzMsNyBAQCBzdHJ1Y3QgbXRrX21tc3lzX2RyaXZlcl9kYXRhIHsKIAl1bnNpZ25lZCBpbnQg bWFpbl9sZW47CiAJY29uc3QgZW51bSBtdGtfZGRwX2NvbXBfaWQgKmV4dF9wYXRoOwogCXVuc2ln bmVkIGludCBleHRfbGVuOworCWJvb2wgc2hhZG93X3JlZ2lzdGVyOwogfTsKIAogc3RydWN0IG10 a19kcm1fcHJpdmF0ZSB7Ci0tIAoxLjcuOS41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK