From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: [PATCH 08/10] drm/imx: ipuv3-plane: add support for YUV 4:2:2 and 4:4:4, NV12, and NV16 formats Date: Wed, 19 Oct 2016 12:21:15 +0200 Message-ID: <1476872477-29493-8-git-send-email-p.zabel@pengutronix.de> References: <1476872477-29493-1-git-send-email-p.zabel@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by gabe.freedesktop.org (Postfix) with ESMTPS id 503DD6E8BE for ; Wed, 19 Oct 2016 10:21:25 +0000 (UTC) In-Reply-To: <1476872477-29493-1-git-send-email-p.zabel@pengutronix.de> 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 Cc: kernel@pengutronix.de List-Id: dri-devel@lists.freedesktop.org SG9vayB1cCBzdXBwb3J0IGZvciBEUk1fRk9STUFUX1lVVjQyMiwgRFJNX0ZPUk1BVF9ZVlU0MjIs CkRSTV9GT1JNQVRfWVVWNDQ0LCBEUk1fRk9STUFUX1lWVTQ0NCwgRFJNX0ZPUk1BVF9OVjEyLAph bmQgRFJNX0ZPUk1BVF9OVjE2LgoKU2lnbmVkLW9mZi1ieTogUGhpbGlwcCBaYWJlbCA8cC56YWJl bEBwZW5ndXRyb25peC5kZT4KLS0tCkNoYW5nZXMgc2luY2UgdjE6CiAtIE1ha2UgVUJPL1ZCTyBz d2FwIGZvciBZVlUgZm9ybWF0cyBtb3JlIG9idmlvdXMgaW4gaXB1X3BsYW5lX2F0b21pY191cGRh dGUKLS0tCiBkcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLXBsYW5lLmMgfCA2MCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0NyBpbnNlcnRp b25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14 L2lwdXYzLXBsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLXBsYW5lLmMKaW5kZXgg NTI3ODRjYi4uNmE5N2UzOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMt cGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLXBsYW5lLmMKQEAgLTUwLDYg KzUwLDEyIEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBpcHVfcGxhbmVfZm9ybWF0c1tdID0gewog CURSTV9GT1JNQVRfWVZZVSwKIAlEUk1fRk9STUFUX1lVVjQyMCwKIAlEUk1fRk9STUFUX1lWVTQy MCwKKwlEUk1fRk9STUFUX1lVVjQyMiwKKwlEUk1fRk9STUFUX1lWVTQyMiwKKwlEUk1fRk9STUFU X1lVVjQ0NCwKKwlEUk1fRk9STUFUX1lWVTQ0NCwKKwlEUk1fRk9STUFUX05WMTIsCisJRFJNX0ZP Uk1BVF9OVjE2LAogCURSTV9GT1JNQVRfUkdCNTY1LAogfTsKIApAQCAtMjkyLDYgKzI5OCwxMCBA QCBzdGF0aWMgaW50IGlwdV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCiAJc3dpdGNoIChmYi0+cGl4ZWxfZm9ybWF0KSB7CiAJY2FzZSBEUk1fRk9STUFUX1lVVjQy MDoKIAljYXNlIERSTV9GT1JNQVRfWVZVNDIwOgorCWNhc2UgRFJNX0ZPUk1BVF9ZVVY0MjI6CisJ Y2FzZSBEUk1fRk9STUFUX1lWVTQyMjoKKwljYXNlIERSTV9GT1JNQVRfWVVWNDQ0OgorCWNhc2Ug RFJNX0ZPUk1BVF9ZVlU0NDQ6CiAJCS8qCiAJCSAqIE11bHRpcGxhbmFyIGZvcm1hdHMgaGF2ZSB0 byBtZWV0IHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgogCQkgKiAtIFRoZSAodXAgdG8pIHRo cmVlIHBsYW5lIGFkZHJlc3NlcyBhcmUgRUJBLCBFQkErVUJPLCBFQkErVkJPCkBAIC0zMDAsMjUg KzMxMCwzNCBAQCBzdGF0aWMgaW50IGlwdV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJCSAqIC0gT25seSBFQkEgbWF5IGJlIGNoYW5nZWQgd2hpbGUgc2Nhbm91 dCBpcyBhY3RpdmUKIAkJICogLSBUaGUgc3RyaWRlcyBvZiBVIGFuZCBWIHBsYW5lcyBtdXN0IGJl IGlkZW50aWNhbC4KIAkJICovCi0JCXVibyA9IGRybV9wbGFuZV9zdGF0ZV90b191Ym8oc3RhdGUp OwogCQl2Ym8gPSBkcm1fcGxhbmVfc3RhdGVfdG9fdmJvKHN0YXRlKTsKIAotCQlpZiAoKHVibyAm IDB4NykgfHwgKHZibyAmIDB4NykpCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQotCQlpZiAoKHVibyA+ IDB4ZmZmZmY4KSB8fCAodmJvID4gMHhmZmZmZjgpKQorCQlpZiAodmJvICYgMHg3IHx8IHZibyA+ IDB4ZmZmZmY4KQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJaWYgKG9sZF9mYiAmJiAoZmItPnBp eGVsX2Zvcm1hdCA9PSBvbGRfZmItPnBpeGVsX2Zvcm1hdCkpIHsKLQkJCW9sZF91Ym8gPSBkcm1f cGxhbmVfc3RhdGVfdG9fdWJvKG9sZF9zdGF0ZSk7CiAJCQlvbGRfdmJvID0gZHJtX3BsYW5lX3N0 YXRlX3RvX3ZibyhvbGRfc3RhdGUpOwotCQkJaWYgKHVibyAhPSBvbGRfdWJvIHx8IHZibyAhPSBv bGRfdmJvKQorCQkJaWYgKHZibyAhPSBvbGRfdmJvKQogCQkJCWNydGNfc3RhdGUtPm1vZGVfY2hh bmdlZCA9IHRydWU7CiAJCX0KIAogCQlpZiAoZmItPnBpdGNoZXNbMV0gIT0gZmItPnBpdGNoZXNb Ml0pCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAorCQkvKiBmYWxsLXRocm91Z2ggKi8KKwljYXNlIERS TV9GT1JNQVRfTlYxMjoKKwljYXNlIERSTV9GT1JNQVRfTlYxNjoKKwkJdWJvID0gZHJtX3BsYW5l X3N0YXRlX3RvX3VibyhzdGF0ZSk7CisKKwkJaWYgKHVibyAmIDB4NyB8fCB1Ym8gPiAweGZmZmZm OCkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCWlmIChvbGRfZmIgJiYgKGZiLT5waXhlbF9mb3Jt YXQgPT0gb2xkX2ZiLT5waXhlbF9mb3JtYXQpKSB7CisJCQlvbGRfdWJvID0gZHJtX3BsYW5lX3N0 YXRlX3RvX3VibyhvbGRfc3RhdGUpOworCQkJaWYgKHVibyAhPSBvbGRfdWJvKQorCQkJCWNydGNf c3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7CisJCX0KKwogCQlpZiAoZmItPnBpdGNoZXNbMV0g PCAxIHx8IGZiLT5waXRjaGVzWzFdID4gMTYzODQpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIApAQCAt NDA5LDIwICs0MjgsMzUgQEAgc3RhdGljIHZvaWQgaXB1X3BsYW5lX2F0b21pY191cGRhdGUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJc3dpdGNoIChmYi0+cGl4ZWxfZm9ybWF0KSB7CiAJY2Fz ZSBEUk1fRk9STUFUX1lVVjQyMDoKIAljYXNlIERSTV9GT1JNQVRfWVZVNDIwOgorCWNhc2UgRFJN X0ZPUk1BVF9ZVVY0MjI6CisJY2FzZSBEUk1fRk9STUFUX1lWVTQyMjoKKwljYXNlIERSTV9GT1JN QVRfWVVWNDQ0OgorCWNhc2UgRFJNX0ZPUk1BVF9ZVlU0NDQ6CiAJCXVibyA9IGRybV9wbGFuZV9z dGF0ZV90b191Ym8oc3RhdGUpOwogCQl2Ym8gPSBkcm1fcGxhbmVfc3RhdGVfdG9fdmJvKHN0YXRl KTsKKwkJaWYgKGZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZVlU0MjAgfHwKKwkJICAg IGZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZVlU0MjIgfHwKKwkJICAgIGZiLT5waXhl bF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZVlU0NDQpCisJCQlzd2FwKHVibywgdmJvKTsKIAotCQlp ZiAoZmItPnBpeGVsX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1lVVjQyMCkKLQkJCWlwdV9jcG1lbV9z ZXRfeXV2X3BsYW5hcl9mdWxsKGlwdV9wbGFuZS0+aXB1X2NoLAotCQkJCQkJICAgICAgZmItPnBp dGNoZXNbMV0sIHVibywgdmJvKTsKLQkJZWxzZQotCQkJaXB1X2NwbWVtX3NldF95dXZfcGxhbmFy X2Z1bGwoaXB1X3BsYW5lLT5pcHVfY2gsCi0JCQkJCQkgICAgICBmYi0+cGl0Y2hlc1sxXSwgdmJv LCB1Ym8pOworCQlpcHVfY3BtZW1fc2V0X3l1dl9wbGFuYXJfZnVsbChpcHVfcGxhbmUtPmlwdV9j aCwKKwkJCQkJICAgICAgZmItPnBpdGNoZXNbMV0sIHVibywgdmJvKTsKIAogCQlkZXZfZGJnKGlw dV9wbGFuZS0+YmFzZS5kZXYtPmRldiwKIAkJCSJwaHkgPSAlbHUgJWx1ICVsdSwgeCA9ICVkLCB5 ID0gJWQiLCBlYmEsIHVibywgdmJvLAogCQkJc3RhdGUtPnNyY194ID4+IDE2LCBzdGF0ZS0+c3Jj X3kgPj4gMTYpOwogCQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRfTlYxMjoKKwljYXNlIERSTV9G T1JNQVRfTlYxNjoKKwkJdWJvID0gZHJtX3BsYW5lX3N0YXRlX3RvX3VibyhzdGF0ZSk7CisKKwkJ aXB1X2NwbWVtX3NldF95dXZfcGxhbmFyX2Z1bGwoaXB1X3BsYW5lLT5pcHVfY2gsCisJCQkJCSAg ICAgIGZiLT5waXRjaGVzWzFdLCB1Ym8sIHVibyk7CisKKwkJZGV2X2RiZyhpcHVfcGxhbmUtPmJh c2UuZGV2LT5kZXYsCisJCQkicGh5ID0gJWx1ICVsdSwgeCA9ICVkLCB5ID0gJWQiLCBlYmEsIHVi bywKKwkJCXN0YXRlLT5zcmNfeCA+PiAxNiwgc3RhdGUtPnNyY195ID4+IDE2KTsKKwkJYnJlYWs7 CiAJZGVmYXVsdDoKIAkJZGV2X2RiZyhpcHVfcGxhbmUtPmJhc2UuZGV2LT5kZXYsICJwaHlzID0g JWx1LCB4ID0gJWQsIHkgPSAlZCIsCiAJCQllYmEsIHN0YXRlLT5zcmNfeCA+PiAxNiwgc3RhdGUt PnNyY195ID4+IDE2KTsKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK