From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark Yao Subject: [PATCH v2 2/7] drm/rockchip: Use common IOMMU API to attach devices Date: Tue, 7 Feb 2017 16:35:37 +0800 Message-ID: <1486456542-18675-3-git-send-email-mark.yao@rock-chips.com> References: <1486456542-18675-1-git-send-email-mark.yao@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1486456542-18675-1-git-send-email-mark.yao@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: David Airlie , Heiko Stuebner , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Shunqian Zheng , Tomasz Figa List-Id: linux-rockchip.vger.kernel.org RnJvbTogU2h1bnFpYW4gWmhlbmcgPHpoZW5nc3FAcm9jay1jaGlwcy5jb20+CgpSb2NrY2hpcCBE Uk0gdXNlZCB0aGUgYXJtIHNwZWNpYWwgQVBJLCBhcm1faW9tbXVfKigpLCB0byBhdHRhY2gKaW9t bXUgZm9yIEFSTTMyIFNvQ3MuIFRoaXMgcGF0Y2ggY29udmVydCB0byBjb21tb24gaW9tbXUgQVBJ CnNvIGl0IHdvdWxkIHN1cHBvcnQgQVJNNjQgbGlrZSBSSzMzOTkuCgpTaW5jZSBwcmV2aW91cyBw YXRjaCBhZGRlZCBzdXBwb3J0IGZvciBkaXJlY3QgSU9NTVUgYWRkcmVzcyBzcGFjZQptYW5hZ2Vt ZW50LCB0aGVyZSBpcyBubyBuZWVkIHRvIHVzZSBETUEgQVBJIGFueW1vcmUgYW5kIHRoaXMgcGF0 Y2ggd2lyZXMKdGhpbmdzIHRvIHVzZSB0aGUgbmV3IG1ldGhvZC4KClNpZ25lZC1vZmYtYnk6IFNo dW5xaWFuIFpoZW5nIDx6aGVuZ3NxQHJvY2stY2hpcHMuY29tPgpTaWduZWQtb2ZmLWJ5OiBUb21h c3ogRmlnYSA8dGZpZ2FAY2hyb21pdW0ub3JnPgpBY2tlZC1ieTogTWFyayBZYW8gPG1hcmsueWFv QHJvY2stY2hpcHMuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXJrIFlhbyA8bWFyay55YW9Acm9jay1j aGlwcy5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9kcnYu YyB8IDEwMCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTMg aW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fZHJ2LmMKaW5kZXggYzMwZDY0OS4uN2E2MTBlOSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9kcnYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2Rydi5jCkBAIC0xNCwxOSArMTQsMTkgQEAK ICAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAgKi8KIAot I2luY2x1ZGUgPGFzbS9kbWEtaW9tbXUuaD4KLQogI2luY2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5j bHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVy Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9k cm1fb2YuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxpbnV4 L2RtYS1pb21tdS5oPgogI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KICNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgogI2luY2x1ZGUgPGxp bnV4L2NvbXBvbmVudC5oPgogI2luY2x1ZGUgPGxpbnV4L2NvbnNvbGUuaD4KKyNpbmNsdWRlIDxs aW51eC9pb21tdS5oPgogCiAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2Rydi5oIgogI2luY2x1ZGUg InJvY2tjaGlwX2RybV9mYi5oIgpAQCAtNTAsMjggKzUwLDMxIEBACiBpbnQgcm9ja2NoaXBfZHJt X2RtYV9hdHRhY2hfZGV2aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAogCQkJCSAgIHN0 cnVjdCBkZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3QgZG1hX2lvbW11X21hcHBpbmcgKm1hcHBpbmcg PSBkcm1fZGV2LT5kZXYtPmFyY2hkYXRhLm1hcHBpbmc7CisJc3RydWN0IHJvY2tjaGlwX2RybV9w cml2YXRlICpwcml2YXRlID0gZHJtX2Rldi0+ZGV2X3ByaXZhdGU7CiAJaW50IHJldDsKIAogCWlm ICghaXNfc3VwcG9ydF9pb21tdSkKIAkJcmV0dXJuIDA7CiAKLQlyZXQgPSBkbWFfc2V0X2NvaGVy ZW50X21hc2soZGV2LCBETUFfQklUX01BU0soMzIpKTsKLQlpZiAocmV0KQorCXJldCA9IGlvbW11 X2F0dGFjaF9kZXZpY2UocHJpdmF0ZS0+ZG9tYWluLCBkZXYpOworCWlmIChyZXQpIHsKKwkJZGV2 X2VycihkZXYsICJGYWlsZWQgdG8gYXR0YWNoIGlvbW11IGRldmljZVxuIik7CiAJCXJldHVybiBy ZXQ7CisJfQogCi0JZG1hX3NldF9tYXhfc2VnX3NpemUoZGV2LCBETUFfQklUX01BU0soMzIpKTsK LQotCXJldHVybiBhcm1faW9tbXVfYXR0YWNoX2RldmljZShkZXYsIG1hcHBpbmcpOworCXJldHVy biAwOwogfQogCiB2b2lkIHJvY2tjaGlwX2RybV9kbWFfZGV0YWNoX2RldmljZShzdHJ1Y3QgZHJt X2RldmljZSAqZHJtX2RldiwKIAkJCQkgICAgc3RydWN0IGRldmljZSAqZGV2KQogeworCXN0cnVj dCByb2NrY2hpcF9kcm1fcHJpdmF0ZSAqcHJpdmF0ZSA9IGRybV9kZXYtPmRldl9wcml2YXRlOwor CXN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiA9IHByaXZhdGUtPmRvbWFpbjsKKwogCWlmICgh aXNfc3VwcG9ydF9pb21tdSkKIAkJcmV0dXJuOwogCi0JYXJtX2lvbW11X2RldGFjaF9kZXZpY2Uo ZGV2KTsKKwlpb21tdV9kZXRhY2hfZGV2aWNlKGRvbWFpbiwgZGV2KTsKIH0KIAogaW50IHJvY2tj aGlwX3JlZ2lzdGVyX2NydGNfZnVuY3Moc3RydWN0IGRybV9jcnRjICpjcnRjLApAQCAtMTIzLDEx ICsxMjYsNDUgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZHJtX2NydGNfZGlzYWJsZV92Ymxhbmso c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJcHJpdi0+Y3J0Y19mdW5jc1twaXBlXS0+ZGlzYWJs ZV92YmxhbmsoY3J0Yyk7CiB9CiAKK3N0YXRpYyBpbnQgcm9ja2NoaXBfZHJtX2luaXRfaW9tbXUo c3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYpCit7CisJc3RydWN0IHJvY2tjaGlwX2RybV9wcml2 YXRlICpwcml2YXRlID0gZHJtX2Rldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGlvbW11X2RvbWFp bl9nZW9tZXRyeSAqZ2VvbWV0cnk7CisJdTY0IHN0YXJ0LCBlbmQ7CisKKwlpZiAoIWlzX3N1cHBv cnRfaW9tbXUpCisJCXJldHVybiAwOworCisJcHJpdmF0ZS0+ZG9tYWluID0gaW9tbXVfZG9tYWlu X2FsbG9jKCZwbGF0Zm9ybV9idXNfdHlwZSk7CisJaWYgKCFwcml2YXRlLT5kb21haW4pCisJCXJl dHVybiAtRU5PTUVNOworCisJZ2VvbWV0cnkgPSAmcHJpdmF0ZS0+ZG9tYWluLT5nZW9tZXRyeTsK KwlzdGFydCA9IGdlb21ldHJ5LT5hcGVydHVyZV9zdGFydDsKKwllbmQgPSBnZW9tZXRyeS0+YXBl cnR1cmVfZW5kOworCisJRFJNX0RFQlVHKCJJT01NVSBjb250ZXh0IGluaXRpYWxpemVkIChhcGVy dHVyZTogJSNsbHgtJSNsbHgpXG4iLAorCQkgIHN0YXJ0LCBlbmQpOworCWRybV9tbV9pbml0KCZw cml2YXRlLT5tbSwgc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgcm9ja2NoaXBfaW9tbXVfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZHJt X2RldikKK3sKKwlzdHJ1Y3Qgcm9ja2NoaXBfZHJtX3ByaXZhdGUgKnByaXZhdGUgPSBkcm1fZGV2 LT5kZXZfcHJpdmF0ZTsKKworCWlmICghaXNfc3VwcG9ydF9pb21tdSkKKwkJcmV0dXJuOworCisJ ZHJtX21tX3Rha2Vkb3duKCZwcml2YXRlLT5tbSk7CisJaW9tbXVfZG9tYWluX2ZyZWUocHJpdmF0 ZS0+ZG9tYWluKTsKK30KKwogc3RhdGljIGludCByb2NrY2hpcF9kcm1fYmluZChzdHJ1Y3QgZGV2 aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXY7CiAJc3RydWN0IHJvY2tj aGlwX2RybV9wcml2YXRlICpwcml2YXRlOwotCXN0cnVjdCBkbWFfaW9tbXVfbWFwcGluZyAqbWFw cGluZyA9IE5VTEw7CiAJaW50IHJldDsKIAogCWRybV9kZXYgPSBkcm1fZGV2X2FsbG9jKCZyb2Nr Y2hpcF9kcm1fZHJpdmVyLCBkZXYpOwpAQCAtMTUxLDM4ICsxODgsMTQgQEAgc3RhdGljIGludCBy b2NrY2hpcF9kcm1fYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKIAlyb2NrY2hpcF9kcm1fbW9k ZV9jb25maWdfaW5pdChkcm1fZGV2KTsKIAotCWRldi0+ZG1hX3Bhcm1zID0gZGV2bV9remFsbG9j KGRldiwgc2l6ZW9mKCpkZXYtPmRtYV9wYXJtcyksCi0JCQkJICAgICAgR0ZQX0tFUk5FTCk7Ci0J aWYgKCFkZXYtPmRtYV9wYXJtcykgewotCQlyZXQgPSAtRU5PTUVNOworCXJldCA9IHJvY2tjaGlw X2RybV9pbml0X2lvbW11KGRybV9kZXYpOworCWlmIChyZXQpCiAJCWdvdG8gZXJyX2NvbmZpZ19j bGVhbnVwOwotCX0KLQotCWlmIChpc19zdXBwb3J0X2lvbW11KSB7Ci0JCS8qIFRPRE8oZGprdXJ0 eik6IGZldGNoIHRoZSBtYXBwaW5nIHN0YXJ0L3NpemUgZnJvbSBzb21ld2hlcmUgKi8KLQkJbWFw cGluZyA9IGFybV9pb21tdV9jcmVhdGVfbWFwcGluZygmcGxhdGZvcm1fYnVzX3R5cGUsCi0JCQkJ CQkgICAweDAwMDAwMDAwLAotCQkJCQkJICAgU1pfMkcpOwotCQlpZiAoSVNfRVJSKG1hcHBpbmcp KSB7Ci0JCQlyZXQgPSBQVFJfRVJSKG1hcHBpbmcpOwotCQkJZ290byBlcnJfY29uZmlnX2NsZWFu dXA7Ci0JCX0KLQotCQlyZXQgPSBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KGRldiwgRE1BX0JJ VF9NQVNLKDMyKSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycl9yZWxlYXNlX21hcHBpbmc7Ci0K LQkJZG1hX3NldF9tYXhfc2VnX3NpemUoZGV2LCBETUFfQklUX01BU0soMzIpKTsKLQotCQlyZXQg PSBhcm1faW9tbXVfYXR0YWNoX2RldmljZShkZXYsIG1hcHBpbmcpOwotCQlpZiAocmV0KQotCQkJ Z290byBlcnJfcmVsZWFzZV9tYXBwaW5nOwotCX0KIAogCS8qIFRyeSB0byBiaW5kIGFsbCBzdWIg ZHJpdmVycy4gKi8KIAlyZXQgPSBjb21wb25lbnRfYmluZF9hbGwoZGV2LCBkcm1fZGV2KTsKIAlp ZiAocmV0KQotCQlnb3RvIGVycl9kZXRhY2hfZGV2aWNlOworCQlnb3RvIGVycl9pb21tdV9jbGVh bnVwOwogCiAJLyogaW5pdCBrbXMgcG9sbCBmb3IgaGFuZGxpbmcgaHBkICovCiAJZHJtX2ttc19o ZWxwZXJfcG9sbF9pbml0KGRybV9kZXYpOwpAQCAtMjA3LDggKzIyMCw2IEBAIHN0YXRpYyBpbnQg cm9ja2NoaXBfZHJtX2JpbmQoc3RydWN0IGRldmljZSAqZGV2KQogCWlmIChyZXQpCiAJCWdvdG8g ZXJyX2ZiZGV2X2Zpbmk7CiAKLQlpZiAoaXNfc3VwcG9ydF9pb21tdSkKLQkJYXJtX2lvbW11X3Jl bGVhc2VfbWFwcGluZyhtYXBwaW5nKTsKIAlyZXR1cm4gMDsKIGVycl9mYmRldl9maW5pOgogCXJv Y2tjaGlwX2RybV9mYmRldl9maW5pKGRybV9kZXYpOwpAQCAtMjE3LDEyICsyMjgsOCBAQCBzdGF0 aWMgaW50IHJvY2tjaGlwX2RybV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIGVycl9rbXNfaGVs cGVyX3BvbGxfZmluaToKIAlkcm1fa21zX2hlbHBlcl9wb2xsX2ZpbmkoZHJtX2Rldik7CiAJY29t cG9uZW50X3VuYmluZF9hbGwoZGV2LCBkcm1fZGV2KTsKLWVycl9kZXRhY2hfZGV2aWNlOgotCWlm IChpc19zdXBwb3J0X2lvbW11KQotCQlhcm1faW9tbXVfZGV0YWNoX2RldmljZShkZXYpOwotZXJy X3JlbGVhc2VfbWFwcGluZzoKLQlpZiAoaXNfc3VwcG9ydF9pb21tdSkKLQkJYXJtX2lvbW11X3Jl bGVhc2VfbWFwcGluZyhtYXBwaW5nKTsKK2Vycl9pb21tdV9jbGVhbnVwOgorCXJvY2tjaGlwX2lv bW11X2NsZWFudXAoZHJtX2Rldik7CiBlcnJfY29uZmlnX2NsZWFudXA6CiAJZHJtX21vZGVfY29u ZmlnX2NsZWFudXAoZHJtX2Rldik7CiAJZHJtX2Rldi0+ZGV2X3ByaXZhdGUgPSBOVUxMOwpAQCAt MjM5LDggKzI0Niw3IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2RybV91bmJpbmQoc3RydWN0IGRl dmljZSAqZGV2KQogCWRybV92YmxhbmtfY2xlYW51cChkcm1fZGV2KTsKIAlkcm1fa21zX2hlbHBl cl9wb2xsX2ZpbmkoZHJtX2Rldik7CiAJY29tcG9uZW50X3VuYmluZF9hbGwoZGV2LCBkcm1fZGV2 KTsKLQlpZiAoaXNfc3VwcG9ydF9pb21tdSkKLQkJYXJtX2lvbW11X2RldGFjaF9kZXZpY2UoZGV2 KTsKKwlyb2NrY2hpcF9pb21tdV9jbGVhbnVwKGRybV9kZXYpOwogCWRybV9tb2RlX2NvbmZpZ19j bGVhbnVwKGRybV9kZXYpOwogCWRybV9kZXYtPmRldl9wcml2YXRlID0gTlVMTDsKIAlkcm1fZGV2 X3VucmVnaXN0ZXIoZHJtX2Rldik7Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=