From mboxrd@z Thu Jan 1 00:00:00 1970 From: YT Shen Subject: [PATCH v10 03/13] drm/mediatek: add shadow register support Date: Fri, 25 Nov 2016 18:34:26 +0800 Message-ID: <1480070076-6196-4-git-send-email-yt.shen@mediatek.com> References: <1480070076-6196-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: <1480070076-6196-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: Daniel Vetter , Jie Qiu , Mao Huang , yingjoe.chen@mediatek.com, Dan Carpenter , Jitao Shi , linux-mediatek@lists.infradead.org, Matthias Brugger , shaoming chen , linux-arm-kernel@lists.infradead.org, srv_heupstream@mediatek.com, emil.l.velikov@gmail.com, linux-kernel@vger.kernel.org, Sascha Hauer , Maxime Ripard List-Id: linux-mediatek@lists.infradead.org V2UgbmVlZCB0byBhY3F1aXJlIG11dGV4IGJlZm9yZSB1c2luZyB0aGUgcmVzb3VyY2VzLAphbmQg bmVlZCB0byByZWxlYXNlIGl0IGFmdGVyIGZpbmlzaGVkLgpTbyB3ZSBkb24ndCBuZWVkIHRvIHdy aXRlIHJlZ2lzdGVycyBpbiB0aGUgYmxhbmtpbmcgcGVyaW9kLgoKU2lnbmVkLW9mZi1ieTogWVQg U2hlbiA8eXQuc2hlbkBtZWRpYXRlay5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kcm1fY3J0Yy5jIHwgNzYgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuYyAgfCAyNSArKysrKysrKysrKwog ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmggIHwgIDIgKwogZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmggIHwgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCA3 NSBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9jcnRjLmMKaW5kZXggMDFhMjFkZC4uYTRmMmIzYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fY3J0Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHJtX2NydGMuYwpAQCAtMzI5LDYgKzMyOSw0MiBAQCBzdGF0aWMgdm9pZCBt dGtfY3J0Y19kZHBfaHdfZmluaShzdHJ1Y3QgbXRrX2RybV9jcnRjICptdGtfY3J0YykKIAlwbV9y dW50aW1lX3B1dChkcm0tPmRldik7CiB9CiAKK3N0YXRpYyB2b2lkIG10a19jcnRjX2RkcF9jb25m aWcoc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCXN0cnVjdCBtdGtfZHJtX2NydGMgKm10a19j cnRjID0gdG9fbXRrX2NydGMoY3J0Yyk7CisJc3RydWN0IG10a19jcnRjX3N0YXRlICpzdGF0ZSA9 IHRvX210a19jcnRjX3N0YXRlKG10a19jcnRjLT5iYXNlLnN0YXRlKTsKKwlzdHJ1Y3QgbXRrX2Rk cF9jb21wICpvdmwgPSBtdGtfY3J0Yy0+ZGRwX2NvbXBbMF07CisJdW5zaWduZWQgaW50IGk7CisK KwkvKgorCSAqIFRPRE86IGluc3RlYWQgb2YgdXBkYXRpbmcgdGhlIHJlZ2lzdGVycyBoZXJlLCB3 ZSBzaG91bGQgcHJlcGFyZQorCSAqIHdvcmtpbmcgcmVnaXN0ZXJzIGluIGF0b21pY19jb21taXQg YW5kIGxldCB0aGUgaGFyZHdhcmUgY29tbWFuZAorCSAqIHF1ZXVlIHVwZGF0ZSBtb2R1bGUgcmVn aXN0ZXJzIG9uIHZibGFuay4KKwkgKi8KKwlpZiAoc3RhdGUtPnBlbmRpbmdfY29uZmlnKSB7CisJ CW10a19kZHBfY29tcF9jb25maWcob3ZsLCBzdGF0ZS0+cGVuZGluZ193aWR0aCwKKwkJCQkgICAg c3RhdGUtPnBlbmRpbmdfaGVpZ2h0LAorCQkJCSAgICBzdGF0ZS0+cGVuZGluZ192cmVmcmVzaCwg MCk7CisKKwkJc3RhdGUtPnBlbmRpbmdfY29uZmlnID0gZmFsc2U7CisJfQorCisJaWYgKG10a19j cnRjLT5wZW5kaW5nX3BsYW5lcykgeworCQlmb3IgKGkgPSAwOyBpIDwgT1ZMX0xBWUVSX05SOyBp KyspIHsKKwkJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gJm10a19jcnRjLT5wbGFuZXNbaV07 CisJCQlzdHJ1Y3QgbXRrX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKworCQkJcGxhbmVfc3Rh dGUgPSB0b19tdGtfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKKworCQkJaWYgKHBsYW5lX3N0 YXRlLT5wZW5kaW5nLmNvbmZpZykgeworCQkJCW10a19kZHBfY29tcF9sYXllcl9jb25maWcob3Zs LCBpLCBwbGFuZV9zdGF0ZSk7CisJCQkJcGxhbmVfc3RhdGUtPnBlbmRpbmcuY29uZmlnID0gZmFs c2U7CisJCQl9CisJCX0KKwkJbXRrX2NydGMtPnBlbmRpbmdfcGxhbmVzID0gZmFsc2U7CisJfQor fQorCiBzdGF0aWMgdm9pZCBtdGtfZHJtX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKIHsKIAlzdHJ1Y3QgbXRrX2RybV9jcnRjICptdGtfY3J0YyA9IHRvX210a19jcnRjKGNydGMp OwpAQCAtNDA1LDYgKzQ0MSw3IEBAIHN0YXRpYyB2b2lkIG10a19kcm1fY3J0Y19hdG9taWNfZmx1 c2goc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCSAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqb2xkX2NydGNfc3RhdGUpCiB7CiAJc3RydWN0IG10a19kcm1fY3J0YyAqbXRrX2NydGMgPSB0 b19tdGtfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgbXRrX2RybV9wcml2YXRlICpwcml2ID0gY3J0Yy0+ ZGV2LT5kZXZfcHJpdmF0ZTsKIAl1bnNpZ25lZCBpbnQgcGVuZGluZ19wbGFuZXMgPSAwOwogCWlu dCBpOwogCkBAIC00MjMsNiArNDYwLDEzIEBAIHN0YXRpYyB2b2lkIG10a19kcm1fY3J0Y19hdG9t aWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLAogCX0KIAlpZiAocGVuZGluZ19wbGFuZXMp CiAJCW10a19jcnRjLT5wZW5kaW5nX3BsYW5lcyA9IHRydWU7CisKKwlpZiAocHJpdi0+ZGF0YS0+ c2hhZG93X3JlZ2lzdGVyKSB7CisJCW10a19kaXNwX211dGV4X2FjcXVpcmUobXRrX2NydGMtPm11 dGV4KTsKKwkJbXRrX2NydGNfZGRwX2NvbmZpZyhjcnRjKTsKKwkJbXRrX2Rpc3BfbXV0ZXhfcmVs ZWFzZShtdGtfY3J0Yy0+bXV0ZXgpOworCX0KKwogCWlmIChjcnRjLT5zdGF0ZS0+Y29sb3JfbWdt dF9jaGFuZ2VkKQogCQlmb3IgKGkgPSAwOyBpIDwgbXRrX2NydGMtPmRkcF9jb21wX25yOyBpKysp CiAJCQltdGtfZGRwX2dhbW1hX3NldChtdGtfY3J0Yy0+ZGRwX2NvbXBbaV0sIGNydGMtPnN0YXRl KTsKQEAgLTQ3MSwzNiArNTE1LDEwIEBAIHN0YXRpYyBpbnQgbXRrX2RybV9jcnRjX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRybSwKIHZvaWQgbXRrX2NydGNfZGRwX2lycShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsIHN0cnVjdCBtdGtfZGRwX2NvbXAgKm92bCkKIHsKIAlzdHJ1Y3QgbXRrX2RybV9j cnRjICptdGtfY3J0YyA9IHRvX210a19jcnRjKGNydGMpOwotCXN0cnVjdCBtdGtfY3J0Y19zdGF0 ZSAqc3RhdGUgPSB0b19tdGtfY3J0Y19zdGF0ZShtdGtfY3J0Yy0+YmFzZS5zdGF0ZSk7Ci0JdW5z aWduZWQgaW50IGk7CisJc3RydWN0IG10a19kcm1fcHJpdmF0ZSAqcHJpdiA9IGNydGMtPmRldi0+ ZGV2X3ByaXZhdGU7CiAKLQkvKgotCSAqIFRPRE86IGluc3RlYWQgb2YgdXBkYXRpbmcgdGhlIHJl Z2lzdGVycyBoZXJlLCB3ZSBzaG91bGQgcHJlcGFyZQotCSAqIHdvcmtpbmcgcmVnaXN0ZXJzIGlu IGF0b21pY19jb21taXQgYW5kIGxldCB0aGUgaGFyZHdhcmUgY29tbWFuZAotCSAqIHF1ZXVlIHVw ZGF0ZSBtb2R1bGUgcmVnaXN0ZXJzIG9uIHZibGFuay4KLQkgKi8KLQlpZiAoc3RhdGUtPnBlbmRp bmdfY29uZmlnKSB7Ci0JCW10a19kZHBfY29tcF9jb25maWcob3ZsLCBzdGF0ZS0+cGVuZGluZ193 aWR0aCwKLQkJCQkgICAgc3RhdGUtPnBlbmRpbmdfaGVpZ2h0LAotCQkJCSAgICBzdGF0ZS0+cGVu ZGluZ192cmVmcmVzaCwgMCk7Ci0KLQkJc3RhdGUtPnBlbmRpbmdfY29uZmlnID0gZmFsc2U7Ci0J fQotCi0JaWYgKG10a19jcnRjLT5wZW5kaW5nX3BsYW5lcykgewotCQlmb3IgKGkgPSAwOyBpIDwg T1ZMX0xBWUVSX05SOyBpKyspIHsKLQkJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gJm10a19j cnRjLT5wbGFuZXNbaV07Ci0JCQlzdHJ1Y3QgbXRrX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsK LQotCQkJcGxhbmVfc3RhdGUgPSB0b19tdGtfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKLQot CQkJaWYgKHBsYW5lX3N0YXRlLT5wZW5kaW5nLmNvbmZpZykgewotCQkJCW10a19kZHBfY29tcF9s YXllcl9jb25maWcob3ZsLCBpLCBwbGFuZV9zdGF0ZSk7Ci0JCQkJcGxhbmVfc3RhdGUtPnBlbmRp bmcuY29uZmlnID0gZmFsc2U7Ci0JCQl9Ci0JCX0KLQkJbXRrX2NydGMtPnBlbmRpbmdfcGxhbmVz ID0gZmFsc2U7Ci0JfQorCWlmICghcHJpdi0+ZGF0YS0+c2hhZG93X3JlZ2lzdGVyKQorCQltdGtf Y3J0Y19kZHBfY29uZmlnKGNydGMpOwogCiAJbXRrX2RybV9maW5pc2hfcGFnZV9mbGlwKG10a19j cnRjKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rk cC5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMKaW5kZXggODAzMDc2 OS4uYjc3ZDQ1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1f ZGRwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMKQEAgLTEy LDYgKzEyLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVkZSA8bGlu dXgvaW9wb2xsLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgv b2ZfZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CkBAIC0zMiwx MCArMzMsMTMgQEAKICNkZWZpbmUgRElTUF9SRUdfQ09ORklHX01NU1lTX0NHX0NPTjAJCTB4MTAw CiAKICNkZWZpbmUgRElTUF9SRUdfTVVURVhfRU4obikJKDB4MjAgKyAweDIwICogKG4pKQorI2Rl ZmluZSBESVNQX1JFR19NVVRFWChuKQkoMHgyNCArIDB4MjAgKiAobikpCiAjZGVmaW5lIERJU1Bf UkVHX01VVEVYX1JTVChuKQkoMHgyOCArIDB4MjAgKiAobikpCiAjZGVmaW5lIERJU1BfUkVHX01V VEVYX01PRChuKQkoMHgyYyArIDB4MjAgKiAobikpCiAjZGVmaW5lIERJU1BfUkVHX01VVEVYX1NP RihuKQkoMHgzMCArIDB4MjAgKiAobikpCiAKKyNkZWZpbmUgSU5UX01VVEVYCQkJCUJJVCgxKQor CiAjZGVmaW5lIE1UODE3M19NVVRFWF9NT0RfRElTUF9PVkwwCQlCSVQoMTEpCiAjZGVmaW5lIE1U ODE3M19NVVRFWF9NT0RfRElTUF9PVkwxCQlCSVQoMTIpCiAjZGVmaW5lIE1UODE3M19NVVRFWF9N T0RfRElTUF9SRE1BMAkJQklUKDEzKQpAQCAtMzAwLDYgKzMwNCwyNyBAQCB2b2lkIG10a19kaXNw X211dGV4X2Rpc2FibGUoc3RydWN0IG10a19kaXNwX211dGV4ICptdXRleCkKIAl3cml0ZWwoMCwg ZGRwLT5yZWdzICsgRElTUF9SRUdfTVVURVhfRU4obXV0ZXgtPmlkKSk7CiB9CiAKK3ZvaWQgbXRr X2Rpc3BfbXV0ZXhfYWNxdWlyZShzdHJ1Y3QgbXRrX2Rpc3BfbXV0ZXggKm11dGV4KQoreworCXN0 cnVjdCBtdGtfZGRwICpkZHAgPSBjb250YWluZXJfb2YobXV0ZXgsIHN0cnVjdCBtdGtfZGRwLAor CQkJCQkgICBtdXRleFttdXRleC0+aWRdKTsKKwl1MzIgdG1wOworCisJd3JpdGVsKDEsIGRkcC0+ cmVncyArIERJU1BfUkVHX01VVEVYX0VOKG11dGV4LT5pZCkpOworCXdyaXRlbCgxLCBkZHAtPnJl Z3MgKyBESVNQX1JFR19NVVRFWChtdXRleC0+aWQpKTsKKwlpZiAocmVhZGxfcG9sbF90aW1lb3V0 X2F0b21pYyhkZHAtPnJlZ3MgKyBESVNQX1JFR19NVVRFWChtdXRleC0+aWQpLAorCQkJCSAgICAg IHRtcCwgdG1wICYgSU5UX01VVEVYLCAxLCAxMDAwMCkpCisJCXByX2VycigiY291bGQgbm90IGFj cXVpcmUgbXV0ZXggJWRcbiIsIG11dGV4LT5pZCk7Cit9CisKK3ZvaWQgbXRrX2Rpc3BfbXV0ZXhf cmVsZWFzZShzdHJ1Y3QgbXRrX2Rpc3BfbXV0ZXggKm11dGV4KQoreworCXN0cnVjdCBtdGtfZGRw ICpkZHAgPSBjb250YWluZXJfb2YobXV0ZXgsIHN0cnVjdCBtdGtfZGRwLAorCQkJCQkgICBtdXRl eFttdXRleC0+aWRdKTsKKworCXdyaXRlbCgwLCBkZHAtPnJlZ3MgKyBESVNQX1JFR19NVVRFWCht dXRleC0+aWQpKTsKK30KKwogc3RhdGljIGludCBtdGtfZGRwX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5oIGIvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmgKaW5kZXggOTJjMTE3NS4uZjlhNzk5MSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmgKQEAgLTM3LDUgKzM3LDcgQEAg dm9pZCBtdGtfZGlzcF9tdXRleF9yZW1vdmVfY29tcChzdHJ1Y3QgbXRrX2Rpc3BfbXV0ZXggKm11 dGV4LAogCQkJCWVudW0gbXRrX2RkcF9jb21wX2lkIGlkKTsKIHZvaWQgbXRrX2Rpc3BfbXV0ZXhf dW5wcmVwYXJlKHN0cnVjdCBtdGtfZGlzcF9tdXRleCAqbXV0ZXgpOwogdm9pZCBtdGtfZGlzcF9t dXRleF9wdXQoc3RydWN0IG10a19kaXNwX211dGV4ICptdXRleCk7Cit2b2lkIG10a19kaXNwX211 dGV4X2FjcXVpcmUoc3RydWN0IG10a19kaXNwX211dGV4ICptdXRleCk7Cit2b2lkIG10a19kaXNw X211dGV4X3JlbGVhc2Uoc3RydWN0IG10a19kaXNwX211dGV4ICptdXRleCk7CiAKICNlbmRpZiAv KiBNVEtfRFJNX0REUF9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oCmlu ZGV4IGZhMGIxMDYuLjk0ZjhiNjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZHJtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Ry di5oCkBAIC0zMyw2ICszMyw3IEBAIHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEgewogCXVu c2lnbmVkIGludCBtYWluX2xlbjsKIAljb25zdCBlbnVtIG10a19kZHBfY29tcF9pZCAqZXh0X3Bh dGg7CiAJdW5zaWduZWQgaW50IGV4dF9sZW47CisJYm9vbCBzaGFkb3dfcmVnaXN0ZXI7CiB9Owog CiBzdHJ1Y3QgbXRrX2RybV9wcml2YXRlIHsKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK