From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v2 10/12] drm/fb-helper: Finish the generic fbdev emulation Date: Mon, 18 Jun 2018 16:17:37 +0200 Message-ID: <20180618141739.48151-11-noralf@tronnes.org> References: <20180618141739.48151-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180618141739.48151-1-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org, =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org VGhpcyBhZGRzIGEgZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoKSBmdW5jdGlvbiB0aGF0IHNldHMg dXAgZ2VuZXJpYwpmYmRldiBlbXVsYXRpb24gd2l0aCBjbGllbnQgY2FsbGJhY2tzIGZvciBsYXN0 Y2xvc2UsIGhvdHBsdWcgYW5kCnJlbW92ZS91bnJlZ2lzdGVyLgoKU2lnbmVkLW9mZi1ieTogTm9y YWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2Ry bV9mYl9oZWxwZXIuYyB8IDEyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCiBpbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmggICAgIHwgICA3ICsrKwogMiBmaWxlcyBj aGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hl bHBlci5jCmluZGV4IGJlNmJhYjg4OWYxYi4uZGU5OGQ2MjE3ODY0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJf aGVscGVyLmMKQEAgLTY3LDYgKzY3LDkgQEAgc3RhdGljIERFRklORV9NVVRFWChrZXJuZWxfZmJf aGVscGVyX2xvY2spOwogICogaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5IG1hbnkgZHJpdmVycyB0 byBpbXBsZW1lbnQgdGhlIGtlcm5lbCBtb2RlIHNldHRpbmcKICAqIGludGVyZmFjZXMuCiAgKgor ICogRHJpdmVycyB0aGF0IHN1cHBvcnQgYSBkdW1iIGJ1ZmZlciB3aXRoIGEgdmlydHVhbCBhZGRy ZXNzIGFuZCBtbWFwIHN1cHBvcnQsCisgKiBzaG91bGQgdHJ5IG91dCB0aGUgZ2VuZXJpYyBmYmRl diBlbXVsYXRpb24gdXNpbmcgZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoKS4KKyAqCiAgKiBTZXR1 cCBmYmRldiBlbXVsYXRpb24gYnkgY2FsbGluZyBkcm1fZmJfaGVscGVyX2ZiZGV2X3NldHVwKCkg YW5kIHRlYXIgaXQKICAqIGRvd24gYnkgY2FsbGluZyBkcm1fZmJfaGVscGVyX2ZiZGV2X3RlYXJk b3duKCkuCiAgKgpAQCAtMzAxMiw3ICszMDE1LDggQEAgc3RhdGljIHZvaWQgZHJtX2ZiZGV2X2Zi X2Rlc3Ryb3koc3RydWN0IGZiX2luZm8gKmluZm8pCiAJICogUmVtb3ZlIHRoaXMgd2hlbiBhbGwg Q01BIGRyaXZlcnMgaGF2ZSBiZWVuIG1vdmVkIG92ZXIgdG8gdXNpbmcKIAkgKiBkcm1fZmJkZXZf Z2VuZXJpY19zZXR1cCgpLgogCSAqLwotCWRybV9mYmRldl9nZW5lcmljX2NsaWVudF9yZWxlYXNl X2RvKCZmYl9oZWxwZXItPmNsaWVudCk7CisJaWYgKCFmYl9oZWxwZXItPmNsaWVudC5mdW5jcykK KwkJZHJtX2ZiZGV2X2dlbmVyaWNfY2xpZW50X3JlbGVhc2VfZG8oJmZiX2hlbHBlci0+Y2xpZW50 KTsKIAogCWRybV9jbGllbnRfcHV0KCZmYl9oZWxwZXItPmNsaWVudCk7CiB9CkBAIC0zMTM1LDYg KzMxMzksMTIzIEBAIGludCBkcm1fZmJfaGVscGVyX2dlbmVyaWNfcHJvYmUoc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlciwKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9nZW5l cmljX3Byb2JlKTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZmJfaGVscGVyX2Z1bmNzIGRy bV9mYl9oZWxwZXJfZ2VuZXJpY19mdW5jcyA9IHsKKwkuZmJfcHJvYmUgPSBkcm1fZmJfaGVscGVy X2dlbmVyaWNfcHJvYmUsCit9OworCitzdGF0aWMgdm9pZCBkcm1fZmJkZXZfZ2VuZXJpY19jbGll bnRfcmVsZWFzZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyID0gZHJtX2ZiX2hlbHBlcl9mcm9tX2NsaWVudChjbGllbnQp OworCisJLyogQ2hlY2sgaWYgZHJtX2ZiX2hlbHBlcl9mYmRldl9zZXR1cCgpIGhhcyBiZWVuIHJ1 biAqLworCWlmIChmYl9oZWxwZXItPmRldikKKwkJZHJtX2ZiZGV2X2dlbmVyaWNfY2xpZW50X3Jl bGVhc2VfZG8oY2xpZW50KTsKKwlkcm1fY2xpZW50X2Nsb3NlKGNsaWVudCk7CisJa2ZyZWUoZmJf aGVscGVyKTsKK30KKworc3RhdGljIHZvaWQgZHJtX2ZiZGV2X2NsaWVudF91bnJlZ2lzdGVyKHN0 cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQoreworCXN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIgPSBkcm1fZmJfaGVscGVyX2Zyb21fY2xpZW50KGNsaWVudCk7CisKKwlpZiAoZmJf aGVscGVyLT5mYmRldikKKwkJZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaShmYl9oZWxwZXIp OworCWVsc2UKKwkJZHJtX2NsaWVudF9wdXQoY2xpZW50KTsKK30KKworc3RhdGljIGludCBkcm1f ZmJkZXZfY2xpZW50X3Jlc3RvcmUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCit7CisJ c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGRybV9mYl9oZWxwZXJfZnJvbV9jbGll bnQoY2xpZW50KTsKKworCWRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2Vk KGZiX2hlbHBlcik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkcm1fZmJkZXZfY2xp ZW50X2hvdHBsdWcoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCit7CisJc3RydWN0IGRy bV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGRybV9mYl9oZWxwZXJfZnJvbV9jbGllbnQoY2xpZW50 KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7CisJaW50IHJldDsKKwor CS8qIElmIGRybV9mYl9oZWxwZXJfZmJkZXZfc2V0dXAoKSBmYWlsZWQsIHdlIG9ubHkgdHJ5IG9u Y2UgKi8KKwlpZiAoIWZiX2hlbHBlci0+ZGV2ICYmIGZiX2hlbHBlci0+ZnVuY3MpCisJCXJldHVy biAwOworCisJaWYgKGRldi0+ZmJfaGVscGVyKQorCQlyZXR1cm4gZHJtX2ZiX2hlbHBlcl9ob3Rw bHVnX2V2ZW50KGRldi0+ZmJfaGVscGVyKTsKKworCWlmICghZGV2LT5tb2RlX2NvbmZpZy5udW1f Y29ubmVjdG9yKQorCQlyZXR1cm4gMDsKKworCXJldCA9IGRybV9mYl9oZWxwZXJfZmJkZXZfc2V0 dXAoZGV2LCBmYl9oZWxwZXIsICZkcm1fZmJfaGVscGVyX2dlbmVyaWNfZnVuY3MsCisJCQkJCWZi X2hlbHBlci0+cHJlZmVycmVkX2JwcCwgMCk7CisJaWYgKHJldCkgeworCQlmYl9oZWxwZXItPmRl diA9IE5VTEw7CisJCWZiX2hlbHBlci0+ZmJkZXYgPSBOVUxMOworCQlyZXR1cm4gcmV0OworCX0K KworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jbGllbnRfZnVuY3Mg ZHJtX2ZiZGV2X2NsaWVudF9mdW5jcyA9IHsKKwkucmVsZWFzZQk9IGRybV9mYmRldl9nZW5lcmlj X2NsaWVudF9yZWxlYXNlLAorCS51bnJlZ2lzdGVyCT0gZHJtX2ZiZGV2X2NsaWVudF91bnJlZ2lz dGVyLAorCS5yZXN0b3JlCT0gZHJtX2ZiZGV2X2NsaWVudF9yZXN0b3JlLAorCS5ob3RwbHVnCT0g ZHJtX2ZiZGV2X2NsaWVudF9ob3RwbHVnLAorfTsKKworLyoqCisgKiBkcm1fZmJfaGVscGVyX2dl bmVyaWNfZmJkZXZfc2V0dXAoKSAtIFNldHVwIGdlbmVyaWMgZmJkZXYgZW11bGF0aW9uCisgKiBA ZGV2OiBEUk0gZGV2aWNlCisgKiBAcHJlZmVycmVkX2JwcDogUHJlZmVycmVkIGJpdHMgcGVyIHBp eGVsIGZvciB0aGUgZGV2aWNlLgorICogICAgICAgICAgICAgICAgIEBkZXYtPm1vZGVfY29uZmln LnByZWZlcnJlZF9kZXB0aCBpcyB1c2VkIGlmIHRoaXMgaXMgemVyby4KKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIHNldHMgdXAgZ2VuZXJpYyBmYmRldiBlbXVsYXRpb24gZm9yIGRyaXZlcnMgdGhhdCBz dXBwb3J0cworICogZHVtYiBidWZmZXJzIHdpdGggYSB2aXJ0dWFsIGFkZHJlc3MgYW5kIHRoYXQg Y2FuIGJlIG1tYXAnZWQuCisgKgorICogUmVzdG9yZSwgaG90cGx1ZyBldmVudHMgYW5kIHRlYXJk b3duIGFyZSBhbGwgdGFrZW4gY2FyZSBvZi4gRHJpdmVycyB0aGF0IGRvCisgKiBzdXNwZW5kL3Jl c3VtZSBuZWVkIHRvIGNhbGwgZHJtX2ZiX2hlbHBlcl9zZXRfc3VzcGVuZF91bmxvY2tlZCgpIHRo ZW1zZWx2ZXMuCisgKiBTaW1wbGUgZHJpdmVycyBtaWdodCB1c2UgZHJtX21vZGVfY29uZmlnX2hl bHBlcl9zdXNwZW5kKCkuCisgKgorICogRHJpdmVycyB0aGF0IHNldCB0aGUgZGlydHkgY2FsbGJh Y2sgb24gdGhlaXIgZnJhbWVidWZmZXIgd2lsbCBnZXQgYSBzaGFkb3cKKyAqIGZiZGV2IGJ1ZmZl ciB0aGF0IGlzIGJsaXR0ZWQgb250byB0aGUgcmVhbCBidWZmZXIuIFRoaXMgaXMgZG9uZSBpbiBv cmRlciB0bworICogbWFrZSBkZWZlcnJlZCBJL08gd29yayB3aXRoIGFsbCBraW5kcyBvZiBidWZm ZXJzLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgc2FmZSB0byBjYWxsIGV2ZW4gd2hlbiB0aGVy ZSBhcmUgbm8gY29ubmVjdG9ycyBwcmVzZW50LgorICogU2V0dXAgd2lsbCBiZSByZXRyaWVkIG9u IHRoZSBuZXh0IGhvdHBsdWcgZXZlbnQuCisgKgorICogUmV0dXJuczoKKyAqIFplcm8gb24gc3Vj Y2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK2ludCBkcm1fZmJk ZXZfZ2VuZXJpY19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcHJl ZmVycmVkX2JwcCkKK3sKKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyOworCWludCBy ZXQ7CisKKwlpZiAoIWRybV9mYmRldl9lbXVsYXRpb24pCisJCXJldHVybiAwOworCisJZmJfaGVs cGVyID0ga3phbGxvYyhzaXplb2YoKmZiX2hlbHBlciksIEdGUF9LRVJORUwpOworCWlmICghZmJf aGVscGVyKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXJldCA9IGRybV9jbGllbnRfbmV3KGRldiwg JmZiX2hlbHBlci0+Y2xpZW50LCAiZmJkZXYiLCAmZHJtX2ZiZGV2X2NsaWVudF9mdW5jcyk7CisJ aWYgKHJldCkgeworCQlrZnJlZShmYl9oZWxwZXIpOworCQlyZXR1cm4gcmV0OworCX0KKworCWZi X2hlbHBlci0+cHJlZmVycmVkX2JwcCA9IHByZWZlcnJlZF9icHA7CisKKwlkcm1fZmJkZXZfY2xp ZW50X2hvdHBsdWcoJmZiX2hlbHBlci0+Y2xpZW50KTsKKworCXJldHVybiAwOworfQorRVhQT1JU X1NZTUJPTChkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cCk7CisKIC8qIFRoZSBLY29uZmlnIERSTV9L TVNfSEVMUEVSIHNlbGVjdHMgRlJBTUVCVUZGRVJfQ09OU09MRSAoaWYgIUVYUEVSVCkKICAqIGJ1 dCB0aGUgbW9kdWxlIGRvZXNuJ3QgZGVwZW5kIG9uIGFueSBmYiBjb25zb2xlIHN5bWJvbHMuICBB dCBsZWFzdAogICogYXR0ZW1wdCB0byBsb2FkIGZiY29uIHRvIGF2b2lkIGxlYXZpbmcgdGhlIHN5 c3RlbSB3aXRob3V0IGEgdXNhYmxlIGNvbnNvbGUuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9k cm1fZmJfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKaW5kZXggYzEzNGJi Y2ZkMmU5Li41ZGIwOGM4ZjFkMjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxw ZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKQEAgLTM1NCw2ICszNTQsNyBA QCB2b2lkIGRybV9mYl9oZWxwZXJfb3V0cHV0X3BvbGxfY2hhbmdlZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKIAogaW50IGRybV9mYl9oZWxwZXJfZ2VuZXJpY19wcm9iZShzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqZmJfaGVscGVyLAogCQkJCXN0cnVjdCBkcm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6 ZSAqc2l6ZXMpOworaW50IGRybV9mYmRldl9nZW5lcmljX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHVuc2lnbmVkIGludCBwcmVmZXJyZWRfYnBwKTsKICNlbHNlCiBzdGF0aWMgaW5saW5l IHZvaWQgZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJ CXN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCkBAIC01OTUsNiArNTk2LDEyIEBAIGRybV9m Yl9oZWxwZXJfZ2VuZXJpY19wcm9iZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAog CXJldHVybiAwOwogfQogCitzdGF0aWMgaW5saW5lIGludAorZHJtX2ZiZGV2X2dlbmVyaWNfc2V0 dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHByZWZlcnJlZF9icHApCit7 CisJcmV0dXJuIDA7Cit9CisKICNlbmRpZgogCiBzdGF0aWMgaW5saW5lIGludAotLSAKMi4xNS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK