From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v3 7/9] drm/fb-helper: Finish the generic fbdev emulation Date: Wed, 27 Jun 2018 15:09:03 +0200 Message-ID: <20180627130905.40117-8-noralf@tronnes.org> References: <20180627130905.40117-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180627130905.40117-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, david@lechnology.com List-Id: dri-devel@lists.freedesktop.org VGhpcyBhZGRzIGEgZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoKSBmdW5jdGlvbiB0aGF0IHNldHMg dXAgZ2VuZXJpYwpmYmRldiBlbXVsYXRpb24gd2l0aCBjbGllbnQgY2FsbGJhY2tzIGZvciByZXN0 b3JlLCBob3RwbHVnIGFuZAp1bnJlZ2lzdGVyLgoKU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hu bmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxw ZXIuYyB8IDExNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNs dWRlL2RybS9kcm1fZmJfaGVscGVyLmggICAgIHwgICA3ICsrKwogMiBmaWxlcyBjaGFuZ2VkLCAx MjQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVs cGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCmluZGV4IGJlYTNhMGNiMzI0 YS4uZTJmMGRiMTQzMmFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBl ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKQEAgLTY3LDYgKzY3LDkg QEAgc3RhdGljIERFRklORV9NVVRFWChrZXJuZWxfZmJfaGVscGVyX2xvY2spOwogICogaGVscGVy IGZ1bmN0aW9ucyB1c2VkIGJ5IG1hbnkgZHJpdmVycyB0byBpbXBsZW1lbnQgdGhlIGtlcm5lbCBt b2RlIHNldHRpbmcKICAqIGludGVyZmFjZXMuCiAgKgorICogRHJpdmVycyB0aGF0IHN1cHBvcnQg YSBkdW1iIGJ1ZmZlciB3aXRoIGEgdmlydHVhbCBhZGRyZXNzIGFuZCBtbWFwIHN1cHBvcnQsCisg KiBzaG91bGQgdHJ5IG91dCB0aGUgZ2VuZXJpYyBmYmRldiBlbXVsYXRpb24gdXNpbmcgZHJtX2Zi ZGV2X2dlbmVyaWNfc2V0dXAoKS4KKyAqCiAgKiBTZXR1cCBmYmRldiBlbXVsYXRpb24gYnkgY2Fs bGluZyBkcm1fZmJfaGVscGVyX2ZiZGV2X3NldHVwKCkgYW5kIHRlYXIgaXQKICAqIGRvd24gYnkg Y2FsbGluZyBkcm1fZmJfaGVscGVyX2ZiZGV2X3RlYXJkb3duKCkuCiAgKgpAQCAtMzExOCw2ICsz MTIxLDEyMCBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9nZW5lcmljX3Byb2JlKHN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIsCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfZ2VuZXJp Y19wcm9iZSk7CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9mdW5jcyBkcm1f ZmJfaGVscGVyX2dlbmVyaWNfZnVuY3MgPSB7CisJLmZiX3Byb2JlID0gZHJtX2ZiX2hlbHBlcl9n ZW5lcmljX3Byb2JlLAorfTsKKworc3RhdGljIHZvaWQgZHJtX2ZiZGV2X2NsaWVudF91bnJlZ2lz dGVyKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQoreworCXN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIgPSBkcm1fZmJfaGVscGVyX2Zyb21fY2xpZW50KGNsaWVudCk7CisKKwlp ZiAoZmJfaGVscGVyLT5mYmRldikgeworCQlkcm1fZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJpKGZi X2hlbHBlcik7CisJCS8qIGRybV9mYmRldl9mYl9kZXN0cm95KCkgdGFrZXMgY2FyZSBvZiBjbGVh bnVwICovCisJCXJldHVybjsKKwl9CisKKwkvKiBEaWQgZHJtX2ZiX2hlbHBlcl9mYmRldl9zZXR1 cCgpIHJ1bj8gKi8KKwlpZiAoZmJfaGVscGVyLT5kZXYpCisJCWRybV9mYl9oZWxwZXJfZmluaShm Yl9oZWxwZXIpOworCisJZHJtX2NsaWVudF9yZWxlYXNlKGNsaWVudCk7CisJa2ZyZWUoZmJfaGVs cGVyKTsKK30KKworc3RhdGljIGludCBkcm1fZmJkZXZfY2xpZW50X3Jlc3RvcmUoc3RydWN0IGRy bV9jbGllbnRfZGV2ICpjbGllbnQpCit7CisJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl ciA9IGRybV9mYl9oZWxwZXJfZnJvbV9jbGllbnQoY2xpZW50KTsKKworCWRybV9mYl9oZWxwZXJf cmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkKGZiX2hlbHBlcik7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBkcm1fZmJkZXZfY2xpZW50X2hvdHBsdWcoc3RydWN0IGRybV9jbGllbnRf ZGV2ICpjbGllbnQpCit7CisJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGRybV9m Yl9oZWxwZXJfZnJvbV9jbGllbnQoY2xpZW50KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Y2xpZW50LT5kZXY7CisJaW50IHJldDsKKworCS8qIElmIGRybV9mYl9oZWxwZXJfZmJkZXZfc2V0 dXAoKSBmYWlsZWQsIHdlIG9ubHkgdHJ5IG9uY2UgKi8KKwlpZiAoIWZiX2hlbHBlci0+ZGV2ICYm IGZiX2hlbHBlci0+ZnVuY3MpCisJCXJldHVybiAwOworCisJaWYgKGRldi0+ZmJfaGVscGVyKQor CQlyZXR1cm4gZHJtX2ZiX2hlbHBlcl9ob3RwbHVnX2V2ZW50KGRldi0+ZmJfaGVscGVyKTsKKwor CWlmICghZGV2LT5tb2RlX2NvbmZpZy5udW1fY29ubmVjdG9yKQorCQlyZXR1cm4gMDsKKworCXJl dCA9IGRybV9mYl9oZWxwZXJfZmJkZXZfc2V0dXAoZGV2LCBmYl9oZWxwZXIsICZkcm1fZmJfaGVs cGVyX2dlbmVyaWNfZnVuY3MsCisJCQkJCWZiX2hlbHBlci0+cHJlZmVycmVkX2JwcCwgMCk7CisJ aWYgKHJldCkgeworCQlmYl9oZWxwZXItPmRldiA9IE5VTEw7CisJCWZiX2hlbHBlci0+ZmJkZXYg PSBOVUxMOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9jbGllbnRfZnVuY3MgZHJtX2ZiZGV2X2NsaWVudF9mdW5jcyA9IHsKKwku b3duZXIJCT0gVEhJU19NT0RVTEUsCisJLnVucmVnaXN0ZXIJPSBkcm1fZmJkZXZfY2xpZW50X3Vu cmVnaXN0ZXIsCisJLnJlc3RvcmUJPSBkcm1fZmJkZXZfY2xpZW50X3Jlc3RvcmUsCisJLmhvdHBs dWcJPSBkcm1fZmJkZXZfY2xpZW50X2hvdHBsdWcsCit9OworCisvKioKKyAqIGRybV9mYl9oZWxw ZXJfZ2VuZXJpY19mYmRldl9zZXR1cCgpIC0gU2V0dXAgZ2VuZXJpYyBmYmRldiBlbXVsYXRpb24K KyAqIEBkZXY6IERSTSBkZXZpY2UKKyAqIEBwcmVmZXJyZWRfYnBwOiBQcmVmZXJyZWQgYml0cyBw ZXIgcGl4ZWwgZm9yIHRoZSBkZXZpY2UuCisgKiAgICAgICAgICAgICAgICAgQGRldi0+bW9kZV9j b25maWcucHJlZmVycmVkX2RlcHRoIGlzIHVzZWQgaWYgdGhpcyBpcyB6ZXJvLgorICoKKyAqIFRo aXMgZnVuY3Rpb24gc2V0cyB1cCBnZW5lcmljIGZiZGV2IGVtdWxhdGlvbiBmb3IgZHJpdmVycyB0 aGF0IHN1cHBvcnRzCisgKiBkdW1iIGJ1ZmZlcnMgd2l0aCBhIHZpcnR1YWwgYWRkcmVzcyBhbmQg dGhhdCBjYW4gYmUgbW1hcCdlZC4KKyAqCisgKiBSZXN0b3JlLCBob3RwbHVnIGV2ZW50cyBhbmQg dGVhcmRvd24gYXJlIGFsbCB0YWtlbiBjYXJlIG9mLiBEcml2ZXJzIHRoYXQgZG8KKyAqIHN1c3Bl bmQvcmVzdW1lIG5lZWQgdG8gY2FsbCBkcm1fZmJfaGVscGVyX3NldF9zdXNwZW5kX3VubG9ja2Vk KCkgdGhlbXNlbHZlcy4KKyAqIFNpbXBsZSBkcml2ZXJzIG1pZ2h0IHVzZSBkcm1fbW9kZV9jb25m aWdfaGVscGVyX3N1c3BlbmQoKS4KKyAqCisgKiBEcml2ZXJzIHRoYXQgc2V0IHRoZSBkaXJ0eSBj YWxsYmFjayBvbiB0aGVpciBmcmFtZWJ1ZmZlciB3aWxsIGdldCBhIHNoYWRvdworICogZmJkZXYg YnVmZmVyIHRoYXQgaXMgYmxpdHRlZCBvbnRvIHRoZSByZWFsIGJ1ZmZlci4gVGhpcyBpcyBkb25l IGluIG9yZGVyIHRvCisgKiBtYWtlIGRlZmVycmVkIEkvTyB3b3JrIHdpdGggYWxsIGtpbmRzIG9m IGJ1ZmZlcnMuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBzYWZlIHRvIGNhbGwgZXZlbiB3aGVu IHRoZXJlIGFyZSBubyBjb25uZWN0b3JzIHByZXNlbnQuCisgKiBTZXR1cCB3aWxsIGJlIHJldHJp ZWQgb24gdGhlIG5leHQgaG90cGx1ZyBldmVudC4KKyAqCisgKiBSZXR1cm5zOgorICogWmVybyBv biBzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworaW50IGRy bV9mYmRldl9nZW5lcmljX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGlu dCBwcmVmZXJyZWRfYnBwKQoreworCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXI7CisJ aW50IHJldDsKKworCWlmICghZHJtX2ZiZGV2X2VtdWxhdGlvbikKKwkJcmV0dXJuIDA7CisKKwlm Yl9oZWxwZXIgPSBremFsbG9jKHNpemVvZigqZmJfaGVscGVyKSwgR0ZQX0tFUk5FTCk7CisJaWYg KCFmYl9oZWxwZXIpCisJCXJldHVybiAtRU5PTUVNOworCisJcmV0ID0gZHJtX2NsaWVudF9uZXco ZGV2LCAmZmJfaGVscGVyLT5jbGllbnQsICJmYmRldiIsICZkcm1fZmJkZXZfY2xpZW50X2Z1bmNz KTsKKwlpZiAocmV0KSB7CisJCWtmcmVlKGZiX2hlbHBlcik7CisJCXJldHVybiByZXQ7CisJfQor CisJZmJfaGVscGVyLT5wcmVmZXJyZWRfYnBwID0gcHJlZmVycmVkX2JwcDsKKworCWRybV9mYmRl dl9jbGllbnRfaG90cGx1ZygmZmJfaGVscGVyLT5jbGllbnQpOworCisJcmV0dXJuIDA7Cit9CitF WFBPUlRfU1lNQk9MKGRybV9mYmRldl9nZW5lcmljX3NldHVwKTsKKwogLyogVGhlIEtjb25maWcg RFJNX0tNU19IRUxQRVIgc2VsZWN0cyBGUkFNRUJVRkZFUl9DT05TT0xFIChpZiAhRVhQRVJUKQog ICogYnV0IHRoZSBtb2R1bGUgZG9lc24ndCBkZXBlbmQgb24gYW55IGZiIGNvbnNvbGUgc3ltYm9s cy4gIEF0IGxlYXN0CiAgKiBhdHRlbXB0IHRvIGxvYWQgZmJjb24gdG8gYXZvaWQgbGVhdmluZyB0 aGUgc3lzdGVtIHdpdGhvdXQgYSB1c2FibGUgY29uc29sZS4KZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL2RybV9mYl9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAppbmRleCBj MTM0YmJjZmQyZTkuLjVkYjA4YzhmMWQyNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Zi X2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaApAQCAtMzU0LDYgKzM1 NCw3IEBAIHZvaWQgZHJtX2ZiX2hlbHBlcl9vdXRwdXRfcG9sbF9jaGFuZ2VkKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwogCiBpbnQgZHJtX2ZiX2hlbHBlcl9nZW5lcmljX3Byb2JlKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCQkJc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFj ZV9zaXplICpzaXplcyk7CitpbnQgZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHByZWZlcnJlZF9icHApOwogI2Vsc2UKIHN0YXRpYyBp bmxpbmUgdm9pZCBkcm1fZmJfaGVscGVyX3ByZXBhcmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAkJCQkJc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKQEAgLTU5NSw2ICs1OTYsMTIgQEAg ZHJtX2ZiX2hlbHBlcl9nZW5lcmljX3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50Citkcm1fZmJkZXZfZ2VuZXJp Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX2Jw cCkKK3sKKwlyZXR1cm4gMDsKK30KKwogI2VuZGlmCiAKIHN0YXRpYyBpbmxpbmUgaW50Ci0tIAoy LjE1LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=