From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve Longerbeam Subject: [PATCH v5 4/7] gpu: ipu-v3: ipu-ic: Add support for Rec.709 encoding Date: Tue, 19 Feb 2019 16:05:18 -0800 Message-ID: <20190220000521.31130-5-slongerbeam@gmail.com> References: <20190220000521.31130-1-slongerbeam@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pl1-x643.google.com (mail-pl1-x643.google.com [IPv6:2607:f8b0:4864:20::643]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6CFE89293 for ; Wed, 20 Feb 2019 00:05:38 +0000 (UTC) Received: by mail-pl1-x643.google.com with SMTP id k2so1877333plt.3 for ; Tue, 19 Feb 2019 16:05:38 -0800 (PST) In-Reply-To: <20190220000521.31130-1-slongerbeam@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-media@vger.kernel.org Cc: open list , "open list:DRM DRIVERS FOR FREESCALE IMX" , Steve Longerbeam List-Id: dri-devel@lists.freedesktop.org QWRkIHN1cHBvcnQgZm9yIFJlYy43MDkgZW5jb2RpbmcgYW5kIGludmVyc2UgZW5jb2RpbmcuCgpU aGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgQ1NDIGNvZWZmaWNpZW50cyBiYXNlZCBvbiB0aGUgaW5w dXQvb3V0cHV0CmNvbG9yc3BhY2UgcGFyYW1ldGVycyBhcmUgbW92ZWQgdG8gYSBuZXcgZnVuY3Rp b24gY2FsY19jc2NfY29lZmZzKCkuCgpSZXBvcnRlZC1ieTogVGltIEhhcnZleSA8dGhhcnZleUBn YXRld29ya3MuY29tPgpTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBMb25nZXJiZWFtIDxzbG9uZ2VyYmVh bUBnbWFpbC5jb20+Ci0tLQpDaGFuZ2VzIGluIHY1OgotIG1vdmVkIEFQSSBjaGFuZ2VzIHRvIGEg cHJldmlvdXMgcGF0Y2guCi0gbW92ZWQgQ1NDIGNvZWZmIGNhbGMgdG8gbmV3IGZ1bmN0aW9uIGNh bGNfY3NjX2NvZWZmcygpLgpDaGFuZ2VzIGluIHY0OgotIGZpeCBjb21waWxlIGVycm9yLgpDaG5n ZXMgaW4gdjM6Ci0gbm9uZS4KQ2hhbmdlcyBpbiB2MjoKLSBvbmx5IHJldHVybiAiVW5zdXBwb3J0 ZWQgWUNiQ3IgZW5jb2RpbmciIGVycm9yIGlmIGluZiAhPSBvdXRmLAogIHNpbmNlIGlmIGluZiA9 PSBvdXRmLCB0aGUgaWRlbnRpdHkgbWF0cml4IGNhbiBiZSB1c2VkLiBSZXBvcnRlZAogIGJ5IFRp bSBIYXJ2ZXkuCi0tLQogZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1pYy5jIHwgMTIwICsrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDk0IGluc2VydGlv bnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2lwdS12My9p cHUtaWMuYyBiL2RyaXZlcnMvZ3B1L2lwdS12My9pcHUtaWMuYwppbmRleCAwMjA0M2YyM2Y0MTEu LjAxMmVhMjIzOWU5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1pYy5jCisr KyBiL2RyaXZlcnMvZ3B1L2lwdS12My9pcHUtaWMuYwpAQCAtMjE0LDYgKzIxNCwyMyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGljX2VuY29kZV9jb2VmZiBpY19lbmNvZGVfaWRlbnRpdHkgPSB7CiAJ LnNjYWxlID0gMiwKIH07CiAKKy8qCisgKiBSRUMuNzA5IGVuY29kaW5nIGZyb20gUkdCIGZ1bGwg cmFuZ2UgdG8gWVVWIGZ1bGwgcmFuZ2U6CisgKgorICogWSA9ICAuMjEyNiAqIFIgKyAuNzE1MiAq IEcgKyAuMDcyMiAqIEIKKyAqIFUgPSAtLjExNDYgKiBSIC0gLjM4NTQgKiBHICsgLjUwMDAgKiBC ICsgMTI4CisgKiBWID0gIC41MDAwICogUiAtIC40NTQyICogRyAtIC4wNDU4ICogQiArIDEyOAor ICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGljX2VuY29kZV9jb2VmZiBpY19lbmNvZGVfcmdiMnlj YmNyXzcwOSA9IHsKKwkuY29lZmYgPSB7CisJCXsgIDU0LCAxODMsICAxOSB9LAorCQl7IDQ4Mywg NDEzLCAxMjggfSwKKwkJeyAxMjgsIDM5NiwgNTAwIH0sCisJfSwKKwkub2Zmc2V0ID0geyAwLCA1 MTIsIDUxMiB9LAorCS5zY2FsZSA9IDEsCit9OworCiAvKgogICogSW52ZXJzZSBCVC42MDEgZW5j b2RpbmcgZnJvbSBZVVYgZnVsbCByYW5nZSB0byBSR0IgZnVsbCByYW5nZToKICAqCkBAIC0yMzcs MjggKzI1NCw0MiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGljX2VuY29kZV9jb2VmZiBpY19lbmNv ZGVfeWNiY3IycmdiXzYwMSA9IHsKIAkuc2NhbGUgPSAyLAogfTsKIAotc3RhdGljIGludCBpbml0 X2NzYyhzdHJ1Y3QgaXB1X2ljICppYywKLQkJICAgIGNvbnN0IHN0cnVjdCBpcHVfaWNfY29sb3Jz cGFjZSAqaW4sCi0JCSAgICBjb25zdCBzdHJ1Y3QgaXB1X2ljX2NvbG9yc3BhY2UgKm91dCwKLQkJ ICAgIGludCBjc2NfaW5kZXgpCisvKgorICogSW52ZXJzZSBSRUMuNzA5IGVuY29kaW5nIGZyb20g WVVWIGZ1bGwgcmFuZ2UgdG8gUkdCIGZ1bGwgcmFuZ2U6CisgKgorICogUiA9IDEuICogWSArICAg ICAgMCAqIChDYiAtIDEyOCkgKyAxLjU3NDggKiAoQ3IgLSAxMjgpCisgKiBHID0gMS4gKiBZIC0g IC4xODczICogKENiIC0gMTI4KSAtICAuNDY4MSAqIChDciAtIDEyOCkKKyAqIEIgPSAxLiAqIFkg KyAxLjg1NTYgKiAoQ2IgLSAxMjgpICsgICAgICAwICogKENyIC0gMTI4KQorICoKKyAqIGVxdWl2 YWxlbnRseSAoZmFjdG9yaW5nIG91dCB0aGUgb2Zmc2V0cyk6CisgKgorICogUiA9IDEuICogWSAg KyAgICAgIDAgKiBDYiArIDEuNTc0OCAqIENyIC0gMjAxLjU3NAorICogRyA9IDEuICogWSAgLSAg LjE4NzMgKiBDYiAtICAuNDY4MSAqIENyICsgIDgzLjg5MQorICogQiA9IDEuICogWSAgKyAxLjg1 NTYgKiBDYiArICAgICAgMCAqIENyIC0gMjM3LjUxNworICovCitzdGF0aWMgY29uc3Qgc3RydWN0 IGljX2VuY29kZV9jb2VmZiBpY19lbmNvZGVfeWNiY3IycmdiXzcwOSA9IHsKKwkuY29lZmYgPSB7 CisJCXsgIDEyOCwgICAwLCAyMDIgfSwKKwkJeyAgMTI4LCA0ODgsIDQ1MiB9LAorCQl7ICAxMjgs IDIzOCwgICAwIH0sCisJfSwKKwkub2Zmc2V0ID0geyAtNDAzLCAxNjgsIC00NzUgfSwKKwkuc2Nh bGUgPSAyLAorfTsKKworc3RhdGljIGludCBjYWxjX2NzY19jb2VmZnMoc3RydWN0IGlwdV9pY19w cml2ICpwcml2LAorCQkJICAgc3RydWN0IGljX2VuY29kZV9jb2VmZiAqY29lZmZfb3V0LAorCQkJ ICAgY29uc3Qgc3RydWN0IGlwdV9pY19jb2xvcnNwYWNlICppbiwKKwkJCSAgIGNvbnN0IHN0cnVj dCBpcHVfaWNfY29sb3JzcGFjZSAqb3V0KQogewotCXN0cnVjdCBpcHVfaWNfcHJpdiAqcHJpdiA9 IGljLT5wcml2OwotCWNvbnN0IHN0cnVjdCBpY19lbmNvZGVfY29lZmYgKmNvZWZmOwotCXUzMiBf X2lvbWVtICpiYXNlOwotCWNvbnN0IHUxNiAoKmMpWzNdOwotCWNvbnN0IHUxNiAqYTsKLQl1MzIg cGFyYW07CisJY29uc3Qgc3RydWN0IGljX2VuY29kZV9jb2VmZiAqZW5jb2RlX2NvZWZmOworCWJv b2wgaW52ZXJzZV9lbmNvZGU7CiAKIAlpZiAoaW4tPmNvbG9yc3BhY2UgIT0gb3V0LT5jb2xvcnNw YWNlKSB7CiAJCWRldl9lcnIocHJpdi0+aXB1LT5kZXYsICJDYW5ub3QgY29udmVydCBjb2xvcnNw YWNlc1xuIik7CiAJCXJldHVybiAtRU5PVFNVUFA7CiAJfQogCi0JaWYgKG91dC0+ZW5jICE9IFY0 TDJfWUNCQ1JfRU5DXzYwMSkgewotCQlkZXZfZXJyKHByaXYtPmlwdS0+ZGV2LCAiT25seSBCVC42 MDEgZW5jb2Rpbmcgc3VwcG9ydGVkXG4iKTsKLQkJcmV0dXJuIC1FTk9UU1VQUDsKLQl9Ci0KIAlp ZiAoKGluLT5jcyA9PSBJUFVWM19DT0xPUlNQQUNFX1lVViAmJgogCSAgICAgaW4tPnF1YW50ICE9 IFY0TDJfUVVBTlRJWkFUSU9OX0ZVTExfUkFOR0UpIHx8CiAJICAgIChvdXQtPmNzID09IElQVVYz X0NPTE9SU1BBQ0VfWVVWICYmCkBAIC0yNzUsMjYgKzMwNiw2MyBAQCBzdGF0aWMgaW50IGluaXRf Y3NjKHN0cnVjdCBpcHVfaWMgKmljLAogCQlyZXR1cm4gLUVOT1RTVVBQOwogCX0KIAorCWlmIChp bi0+Y3MgPT0gb3V0LT5jcykgeworCQkqY29lZmZfb3V0ID0gaWNfZW5jb2RlX2lkZW50aXR5Owor CisJCXJldHVybiAwOworCX0KKworCWludmVyc2VfZW5jb2RlID0gKGluLT5jcyA9PSBJUFVWM19D T0xPUlNQQUNFX1lVVik7CisKKwlzd2l0Y2ggKG91dC0+ZW5jKSB7CisJY2FzZSBWNEwyX1lDQkNS X0VOQ182MDE6CisJCWVuY29kZV9jb2VmZiA9IGludmVyc2VfZW5jb2RlID8KKwkJCSZpY19lbmNv ZGVfeWNiY3IycmdiXzYwMSA6ICZpY19lbmNvZGVfcmdiMnljYmNyXzYwMTsKKwkJYnJlYWs7CisJ Y2FzZSBWNEwyX1lDQkNSX0VOQ183MDk6CisJCWVuY29kZV9jb2VmZiA9IGludmVyc2VfZW5jb2Rl ID8KKwkJCSZpY19lbmNvZGVfeWNiY3IycmdiXzcwOSA6ICZpY19lbmNvZGVfcmdiMnljYmNyXzcw OTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZGV2X2Vycihwcml2LT5pcHUtPmRldiwgIlVuc3Vw cG9ydGVkIFlDYkNyIGVuY29kaW5nXG4iKTsKKwkJcmV0dXJuIC1FTk9UU1VQUDsKKwl9CisKKwkq Y29lZmZfb3V0ID0gKmVuY29kZV9jb2VmZjsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGluaXRfY3NjKHN0cnVjdCBpcHVfaWMgKmljLAorCQkgICAgY29uc3Qgc3RydWN0IGlwdV9pY19j b2xvcnNwYWNlICppbiwKKwkJICAgIGNvbnN0IHN0cnVjdCBpcHVfaWNfY29sb3JzcGFjZSAqb3V0 LAorCQkgICAgaW50IGNzY19pbmRleCkKK3sKKwlzdHJ1Y3QgaXB1X2ljX3ByaXYgKnByaXYgPSBp Yy0+cHJpdjsKKwlzdHJ1Y3QgaWNfZW5jb2RlX2NvZWZmIGNvZWZmOworCXUzMiBfX2lvbWVtICpi YXNlOworCWNvbnN0IHUxNiAoKmMpWzNdOworCWNvbnN0IHUxNiAqYTsKKwl1MzIgcGFyYW07CisJ aW50IHJldDsKKworCXJldCA9IGNhbGNfY3NjX2NvZWZmcyhwcml2LCAmY29lZmYsIGluLCBvdXQp OworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAliYXNlID0gKHUzMiBfX2lvbWVtICopCiAJ CShwcml2LT50cG1lbV9iYXNlICsgaWMtPnJlZy0+dHBtZW1fY3NjW2NzY19pbmRleF0pOwogCi0J aWYgKGluLT5jcyA9PSBvdXQtPmNzKQotCQljb2VmZiA9ICZpY19lbmNvZGVfaWRlbnRpdHk7Ci0J ZWxzZSBpZiAoaW4tPmNzID09IElQVVYzX0NPTE9SU1BBQ0VfWVVWKQotCQljb2VmZiA9ICZpY19l bmNvZGVfeWNiY3IycmdiXzYwMTsKLQllbHNlCi0JCWNvZWZmID0gJmljX2VuY29kZV9yZ2IyeWNi Y3JfNjAxOwotCiAJLyogQ2FzdCB0byB1bnNpZ25lZCAqLwotCWMgPSAoY29uc3QgdTE2ICgqKVsz XSljb2VmZi0+Y29lZmY7Ci0JYSA9IChjb25zdCB1MTYgKiljb2VmZi0+b2Zmc2V0OworCWMgPSAo Y29uc3QgdTE2ICgqKVszXSljb2VmZi5jb2VmZjsKKwlhID0gKGNvbnN0IHUxNiAqKWNvZWZmLm9m ZnNldDsKIAogCXBhcmFtID0gKChhWzBdICYgMHgxZikgPDwgMjcpIHwgKChjWzBdWzBdICYgMHgx ZmYpIDw8IDE4KSB8CiAJCSgoY1sxXVsxXSAmIDB4MWZmKSA8PCA5KSB8IChjWzJdWzJdICYgMHgx ZmYpOwogCXdyaXRlbChwYXJhbSwgYmFzZSsrKTsKIAotCXBhcmFtID0gKChhWzBdICYgMHgxZmUw KSA+PiA1KSB8IChjb2VmZi0+c2NhbGUgPDwgOCkgfAotCQkoY29lZmYtPnNhdCA8PCAxMCk7CisJ cGFyYW0gPSAoKGFbMF0gJiAweDFmZTApID4+IDUpIHwgKGNvZWZmLnNjYWxlIDw8IDgpIHwKKwkJ KGNvZWZmLnNhdCA8PCAxMCk7CiAJd3JpdGVsKHBhcmFtLCBiYXNlKyspOwogCiAJcGFyYW0gPSAo KGFbMV0gJiAweDFmKSA8PCAyNykgfCAoKGNbMF1bMV0gJiAweDFmZikgPDwgMTgpIHwKLS0gCjIu MTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs