From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH 20/49] drm/amd/display: Add HLG support in color module Date: Fri, 9 Aug 2019 17:37:13 -0400 Message-ID: <20190809213742.30301-21-sunpeng.li@amd.com> References: <20190809213742.30301-1-sunpeng.li@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809213742.30301-1-sunpeng.li-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Leo Li , Krunoslav Kovac , Vitaly Prosyak RnJvbTogVml0YWx5IFByb3N5YWsgPHZpdGFseS5wcm9zeWFrQGFtZC5jb20+CgpbV2h5ICYgSG93 XQpTdXBwb3J0IGhsZyBPRVRGIGFuZCBFT1RGIGJhc2VkIG9uIEJULjIxMDAtMgpGb2xsb3cgdXAg aXMgcmVxdWlyZWQuCgpTaWduZWQtb2ZmLWJ5OiBWaXRhbHkgUHJvc3lhayA8dml0YWx5LnByb3N5 YWtAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IEtydW5vc2xhdiBLb3ZhYyA8S3J1bm9zbGF2LktvdmFj QGFtZC5jb20+CkFja2VkLWJ5OiBMZW8gTGkgPHN1bnBlbmcubGlAYW1kLmNvbT4KQWNrZWQtYnk6 IFZpdGFseSBQcm9zeWFrIDxWaXRhbHkuUHJvc3lha0BhbWQuY29tPgotLS0KIC4uLi9hbWQvZGlz cGxheS9tb2R1bGVzL2NvbG9yL2NvbG9yX2dhbW1hLmMgICB8IDEwMiArKysrKysrKysrKy0tLS0t LS0KIDEgZmlsZSBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9jb2xvci9jb2xv cl9nYW1tYS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvY29sb3IvY29s b3JfZ2FtbWEuYwppbmRleCA4YjJlZTYwNmRiYzIuLjQ4MDgxMTNiOTFiZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L21vZHVsZXMvY29sb3IvY29sb3JfZ2FtbWEuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvbW9kdWxlcy9jb2xvci9jb2xvcl9nYW1t YS5jCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAib3BwLmgiCiAjaW5jbHVkZSAiY29sb3Jf Z2FtbWEuaCIKIAotCiAjZGVmaW5lIE5VTV9QVFNfSU5fUkVHSU9OIDE2CiAjZGVmaW5lIE5VTV9S RUdJT05TIDMyCiAjZGVmaW5lIE1BWF9IV19QT0lOVFMgKE5VTV9QVFNfSU5fUkVHSU9OKk5VTV9S RUdJT05TKQpAQCAtMTU5LDU5ICsxNTgsNjggQEAgc3RhdGljIHZvaWQgY29tcHV0ZV9kZV9wcShz dHJ1Y3QgZml4ZWQzMV8zMiBpbl94LCBzdHJ1Y3QgZml4ZWQzMV8zMiAqb3V0X3kpCiAKIH0KIAor CiAvKmRlIGdhbW1hLCBub25lIGxpbmVhciB0byBsaW5lYXIqLwotc3RhdGljIHZvaWQgY29tcHV0 ZV9obGdfb2V0ZihzdHJ1Y3QgZml4ZWQzMV8zMiBpbl94LCBib29sIGlzX2xpZ2h0MF8xMiwgc3Ry dWN0IGZpeGVkMzFfMzIgKm91dF95KQorc3RhdGljIHZvaWQgY29tcHV0ZV9obGdfZW90ZihzdHJ1 Y3QgZml4ZWQzMV8zMiBpbl94LAorCQlzdHJ1Y3QgZml4ZWQzMV8zMiAqb3V0X3ksCisJCXVpbnQz Ml90IHNkcl93aGl0ZV9sZXZlbCwgdWludDMyX3QgbWF4X2x1bWluYW5jZV9uaXRzKQogewogCXN0 cnVjdCBmaXhlZDMxXzMyIGE7CiAJc3RydWN0IGZpeGVkMzFfMzIgYjsKIAlzdHJ1Y3QgZml4ZWQz MV8zMiBjOwogCXN0cnVjdCBmaXhlZDMxXzMyIHRocmVzaG9sZDsKLQlzdHJ1Y3QgZml4ZWQzMV8z MiByZWZlcmVuY2Vfd2hpdGVfbGV2ZWw7CisJc3RydWN0IGZpeGVkMzFfMzIgeDsKIAorCXN0cnVj dCBmaXhlZDMxXzMyIHNjYWxpbmdfZmFjdG9yID0KKwkJCWRjX2ZpeHB0X2Zyb21fZnJhY3Rpb24o bWF4X2x1bWluYW5jZV9uaXRzLCBzZHJfd2hpdGVfbGV2ZWwpOwogCWEgPSBkY19maXhwdF9mcm9t X2ZyYWN0aW9uKDE3ODgzMjc3LCAxMDAwMDAwMDApOwotCWlmIChpc19saWdodDBfMTIpIHsKLQkJ LypsaWdodCAwLTEyKi8KLQkJYiA9IGRjX2ZpeHB0X2Zyb21fZnJhY3Rpb24oMjg0NjY4OTIsIDEw MDAwMDAwMCk7Ci0JCWMgPSBkY19maXhwdF9mcm9tX2ZyYWN0aW9uKDU1OTkxMDczLCAxMDAwMDAw MDApOwotCQl0aHJlc2hvbGQgPSBkY19maXhwdF9vbmU7Ci0JCXJlZmVyZW5jZV93aGl0ZV9sZXZl bCA9IGRjX2ZpeHB0X2hhbGY7CisJYiA9IGRjX2ZpeHB0X2Zyb21fZnJhY3Rpb24oMjg0NjY4OTIs IDEwMDAwMDAwMCk7CisJYyA9IGRjX2ZpeHB0X2Zyb21fZnJhY3Rpb24oNTU5OTEwNzMsIDEwMDAw MDAwMCk7CisJdGhyZXNob2xkID0gZGNfZml4cHRfZnJvbV9mcmFjdGlvbigxLCAyKTsKKworCWlm IChkY19maXhwdF9sdChpbl94LCB0aHJlc2hvbGQpKSB7CisJCXggPSBkY19maXhwdF9tdWwoaW5f eCwgaW5feCk7CisJCXggPSBkY19maXhwdF9kaXZfaW50KHgsIDMpOwogCX0gZWxzZSB7Ci0JCS8q bGlnaHQgMC0xKi8KLQkJYiA9IGRjX2ZpeHB0X2Zyb21fZnJhY3Rpb24oMjM3MjI0MSwgMTAwMDAw MDAwKTsKLQkJYyA9IGRjX2ZpeHB0X2FkZChkY19maXhwdF9vbmUsIGRjX2ZpeHB0X2Zyb21fZnJh Y3Rpb24oNDI5MzQ3LCAxMDAwMDAwMDApKTsKLQkJdGhyZXNob2xkID0gZGNfZml4cHRfZnJvbV9m cmFjdGlvbigxLCAxMik7Ci0JCXJlZmVyZW5jZV93aGl0ZV9sZXZlbCA9IGRjX2ZpeHB0X3Bvdyhk Y19maXhwdF9mcm9tX2ZyYWN0aW9uKDMsIDEpLCBkY19maXhwdF9oYWxmKTsKKwkJeCA9IGRjX2Zp eHB0X3N1Yihpbl94LCBjKTsKKwkJeCA9IGRjX2ZpeHB0X2Rpdih4LCBhKTsKKwkJeCA9IGRjX2Zp eHB0X2V4cCh4KTsKKwkJeCA9IGRjX2ZpeHB0X2FkZCh4LCBiKTsKKwkJeCA9IGRjX2ZpeHB0X2Rp dl9pbnQoeCwgMTIpOwogCX0KLQlpZiAoZGNfZml4cHRfbHQodGhyZXNob2xkLCBpbl94KSkKLQkJ Km91dF95ID0gZGNfZml4cHRfYWRkKGMsIGRjX2ZpeHB0X211bChhLCBkY19maXhwdF9sb2coZGNf Zml4cHRfc3ViKGluX3gsIGIpKSkpOwotCWVsc2UKLQkJKm91dF95ID0gZGNfZml4cHRfbXVsKGRj X2ZpeHB0X3Bvdyhpbl94LCBkY19maXhwdF9oYWxmKSwgcmVmZXJlbmNlX3doaXRlX2xldmVsKTsK Kwkqb3V0X3kgPSBkY19maXhwdF9tdWwoeCwgc2NhbGluZ19mYWN0b3IpOworCiB9CiAKIC8qcmUg Z2FtbWEsIGxpbmVhciB0byBub25lIGxpbmVhciovCi1zdGF0aWMgdm9pZCBjb21wdXRlX2hsZ19l b3RmKHN0cnVjdCBmaXhlZDMxXzMyIGluX3gsIGJvb2wgaXNfbGlnaHQwXzEyLCBzdHJ1Y3QgZml4 ZWQzMV8zMiAqb3V0X3kpCitzdGF0aWMgdm9pZCBjb21wdXRlX2hsZ19vZXRmKHN0cnVjdCBmaXhl ZDMxXzMyIGluX3gsIHN0cnVjdCBmaXhlZDMxXzMyICpvdXRfeSwKKwkJdWludDMyX3Qgc2RyX3do aXRlX2xldmVsLCB1aW50MzJfdCBtYXhfbHVtaW5hbmNlX25pdHMpCiB7CiAJc3RydWN0IGZpeGVk MzFfMzIgYTsKIAlzdHJ1Y3QgZml4ZWQzMV8zMiBiOwogCXN0cnVjdCBmaXhlZDMxXzMyIGM7Ci0J c3RydWN0IGZpeGVkMzFfMzIgcmVmZXJlbmNlX3doaXRlX2xldmVsOworCXN0cnVjdCBmaXhlZDMx XzMyIHRocmVzaG9sZDsKKwlzdHJ1Y3QgZml4ZWQzMV8zMiB4OwogCisJc3RydWN0IGZpeGVkMzFf MzIgc2NhbGluZ19mYWN0b3IgPQorCQkJZGNfZml4cHRfZnJvbV9mcmFjdGlvbihzZHJfd2hpdGVf bGV2ZWwsIG1heF9sdW1pbmFuY2Vfbml0cyk7CiAJYSA9IGRjX2ZpeHB0X2Zyb21fZnJhY3Rpb24o MTc4ODMyNzcsIDEwMDAwMDAwMCk7Ci0JaWYgKGlzX2xpZ2h0MF8xMikgewotCQkvKmxpZ2h0IDAt MTIqLwotCQliID0gZGNfZml4cHRfZnJvbV9mcmFjdGlvbigyODQ2Njg5MiwgMTAwMDAwMDAwKTsK LQkJYyA9IGRjX2ZpeHB0X2Zyb21fZnJhY3Rpb24oNTU5OTEwNzMsIDEwMDAwMDAwMCk7Ci0JCXJl ZmVyZW5jZV93aGl0ZV9sZXZlbCA9IGRjX2ZpeHB0X2Zyb21fZnJhY3Rpb24oNCwgMSk7CisJYiA9 IGRjX2ZpeHB0X2Zyb21fZnJhY3Rpb24oMjg0NjY4OTIsIDEwMDAwMDAwMCk7CisJYyA9IGRjX2Zp eHB0X2Zyb21fZnJhY3Rpb24oNTU5OTEwNzMsIDEwMDAwMDAwMCk7CisJdGhyZXNob2xkID0gZGNf Zml4cHRfZnJvbV9mcmFjdGlvbigxLCAxMik7CisJeCA9IGRjX2ZpeHB0X211bChpbl94LCBzY2Fs aW5nX2ZhY3Rvcik7CisKKworCWlmIChkY19maXhwdF9sdCh4LCB0aHJlc2hvbGQpKSB7CisJCXgg PSBkY19maXhwdF9tdWwoeCwgZGNfZml4cHRfZnJvbV9mcmFjdGlvbigzLCAxKSk7CisJCSpvdXRf eSA9IGRjX2ZpeHB0X3Bvdyh4LCBkY19maXhwdF9oYWxmKTsKIAl9IGVsc2UgewotCQkvKmxpZ2h0 IDAtMSovCi0JCWIgPSBkY19maXhwdF9mcm9tX2ZyYWN0aW9uKDIzNzIyNDEsIDEwMDAwMDAwMCk7 Ci0JCWMgPSBkY19maXhwdF9hZGQoZGNfZml4cHRfb25lLCBkY19maXhwdF9mcm9tX2ZyYWN0aW9u KDQyOTM0NywgMTAwMDAwMDAwKSk7Ci0JCXJlZmVyZW5jZV93aGl0ZV9sZXZlbCA9IGRjX2ZpeHB0 X2Zyb21fZnJhY3Rpb24oMSwgMyk7CisJCXggPSBkY19maXhwdF9tdWwoeCwgZGNfZml4cHRfZnJv bV9mcmFjdGlvbigxMiwgMSkpOworCQl4ID0gZGNfZml4cHRfc3ViKHgsIGIpOworCQl4ID0gZGNf Zml4cHRfbG9nKHgpOworCQl4ID0gZGNfZml4cHRfbXVsKGEsIHgpOworCQkqb3V0X3kgPSBkY19m aXhwdF9hZGQoeCwgYyk7CiAJfQotCWlmIChkY19maXhwdF9sdChkY19maXhwdF9oYWxmLCBpbl94 KSkKLQkJKm91dF95ID0gZGNfZml4cHRfYWRkKGRjX2ZpeHB0X2V4cChkY19maXhwdF9kaXYoZGNf Zml4cHRfc3ViKGluX3gsIGMpLCBhKSksIGIpOwotCWVsc2UKLQkJKm91dF95ID0gZGNfZml4cHRf bXVsKGRjX2ZpeHB0X3Bvdyhpbl94LCBkY19maXhwdF9mcm9tX2ZyYWN0aW9uKDIsIDEpKSwgcmVm ZXJlbmNlX3doaXRlX2xldmVsKTsKIH0KIAogCkBAIC05OTcsOSArMTAwNSwxNCBAQCBzdGF0aWMg Ym9vbCBidWlsZF9kZWdhbW1hKHN0cnVjdCBwd2xfZmxvYXRfZGF0YV9leCAqY3VydmUsCiAJcmV0 dXJuIHJldDsKIH0KIAorCisKKworCiBzdGF0aWMgdm9pZCBidWlsZF9obGdfZGVnYW1tYShzdHJ1 Y3QgcHdsX2Zsb2F0X2RhdGFfZXggKmRlZ2FtbWEsCiAJCXVpbnQzMl90IGh3X3BvaW50c19udW0s Ci0JCWNvbnN0IHN0cnVjdCBod194X3BvaW50ICpjb29yZGluYXRlX3gsIGJvb2wgaXNfbGlnaHQw XzEyKQorCQljb25zdCBzdHJ1Y3QgaHdfeF9wb2ludCAqY29vcmRpbmF0ZV94LAorCQl1aW50MzJf dCBzZHJfd2hpdGVfbGV2ZWwsIHVpbnQzMl90IG1heF9sdW1pbmFuY2Vfbml0cykKIHsKIAl1aW50 MzJfdCBpOwogCkBAIC0xMDA3LDkgKzEwMjAsOSBAQCBzdGF0aWMgdm9pZCBidWlsZF9obGdfZGVn YW1tYShzdHJ1Y3QgcHdsX2Zsb2F0X2RhdGFfZXggKmRlZ2FtbWEsCiAJY29uc3Qgc3RydWN0IGh3 X3hfcG9pbnQgKmNvb3JkX3ggPSBjb29yZGluYXRlX3g7CiAKIAlpID0gMDsKLQorCS8vY2hlY2sg d2hlbiBpID09IDQzNAogCXdoaWxlIChpICE9IGh3X3BvaW50c19udW0gKyAxKSB7Ci0JCWNvbXB1 dGVfaGxnX29ldGYoY29vcmRfeC0+eCwgaXNfbGlnaHQwXzEyLCAmcmdiLT5yKTsKKwkJY29tcHV0 ZV9obGdfZW90Zihjb29yZF94LT54LCAmcmdiLT5yLCBzZHJfd2hpdGVfbGV2ZWwsIG1heF9sdW1p bmFuY2Vfbml0cyk7CiAJCXJnYi0+ZyA9IHJnYi0+cjsKIAkJcmdiLT5iID0gcmdiLT5yOwogCQkr K2Nvb3JkX3g7CkBAIC0xMDE4LDkgKzEwMzEsMTEgQEAgc3RhdGljIHZvaWQgYnVpbGRfaGxnX2Rl Z2FtbWEoc3RydWN0IHB3bF9mbG9hdF9kYXRhX2V4ICpkZWdhbW1hLAogCX0KIH0KIAorCiBzdGF0 aWMgdm9pZCBidWlsZF9obGdfcmVnYW1tYShzdHJ1Y3QgcHdsX2Zsb2F0X2RhdGFfZXggKnJlZ2Ft bWEsCiAJCXVpbnQzMl90IGh3X3BvaW50c19udW0sCi0JCWNvbnN0IHN0cnVjdCBod194X3BvaW50 ICpjb29yZGluYXRlX3gsIGJvb2wgaXNfbGlnaHQwXzEyKQorCQljb25zdCBzdHJ1Y3QgaHdfeF9w b2ludCAqY29vcmRpbmF0ZV94LAorCQl1aW50MzJfdCBzZHJfd2hpdGVfbGV2ZWwsIHVpbnQzMl90 IG1heF9sdW1pbmFuY2Vfbml0cykKIHsKIAl1aW50MzJfdCBpOwogCkBAIC0xMDI5LDggKzEwNDQs OSBAQCBzdGF0aWMgdm9pZCBidWlsZF9obGdfcmVnYW1tYShzdHJ1Y3QgcHdsX2Zsb2F0X2RhdGFf ZXggKnJlZ2FtbWEsCiAKIAlpID0gMDsKIAorCS8vd2hlbiBpID09IDQ3MQogCXdoaWxlIChpICE9 IGh3X3BvaW50c19udW0gKyAxKSB7Ci0JCWNvbXB1dGVfaGxnX2VvdGYoY29vcmRfeC0+eCwgaXNf bGlnaHQwXzEyLCAmcmdiLT5yKTsKKwkJY29tcHV0ZV9obGdfb2V0Zihjb29yZF94LT54LCAmcmdi LT5yLCBzZHJfd2hpdGVfbGV2ZWwsIG1heF9sdW1pbmFuY2Vfbml0cyk7CiAJCXJnYi0+ZyA9IHJn Yi0+cjsKIAkJcmdiLT5iID0gcmdiLT5yOwogCQkrK2Nvb3JkX3g7CkBAIC0xOTE2LDcgKzE5MzIs NyBAQCBib29sIG1vZF9jb2xvcl9jYWxjdWxhdGVfZGVnYW1tYV9wYXJhbXMoc3RydWN0IGRjX3Ry YW5zZmVyX2Z1bmMgKmlucHV0X3RmLAogCQlidWlsZF9obGdfZGVnYW1tYShjdXJ2ZSwKIAkJCQlN QVhfSFdfUE9JTlRTLAogCQkJCWNvb3JkaW5hdGVzX3gsCi0JCQkJdHJ1ZSk7CisJCQkJODAsIDEw MDApOwogCWVsc2UgaWYgKHRmID09IFRSQU5TRkVSX0ZVTkNUSU9OX0xJTkVBUikgewogCQkvLyBq dXN0IGNvcHkgY29vcmRpbmF0ZXNfeCBpbnRvIGN1cnZlCiAJCWkgPSAwOwpAQCAtMjAzNSwxMSAr MjA1MSwxNSBAQCBib29sICBtb2RfY29sb3JfY2FsY3VsYXRlX2N1cnZlKGVudW0gZGNfdHJhbnNm ZXJfZnVuY19wcmVkZWZpbmVkIHRyYW5zLAogCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKIAkJaWYg KCFyZ2JfcmVnYW1tYSkKIAkJCWdvdG8gcmdiX3JlZ2FtbWFfYWxsb2NfZmFpbDsKKwkJcG9pbnRz LT5lbmRfZXhwb25lbnQgPSA0OworCQlwb2ludHMtPnhfcG9pbnRfYXRfeTFfcmVkID0gMTI7CisJ CXBvaW50cy0+eF9wb2ludF9hdF95MV9ncmVlbiA9IDEyOworCQlwb2ludHMtPnhfcG9pbnRfYXRf eTFfYmx1ZSA9IDEyOwogCiAJCWJ1aWxkX2hsZ19yZWdhbW1hKHJnYl9yZWdhbW1hLAogCQkJCU1B WF9IV19QT0lOVFMsCiAJCQkJY29vcmRpbmF0ZXNfeCwKLQkJCQl0cnVlKTsKKwkJCQk4MCwgMTAw MCk7CiAJCWZvciAoaSA9IDA7IGkgPD0gTUFYX0hXX1BPSU5UUyA7IGkrKykgewogCQkJcG9pbnRz LT5yZWRbaV0gICAgPSByZ2JfcmVnYW1tYVtpXS5yOwogCQkJcG9pbnRzLT5ncmVlbltpXSAgPSBy Z2JfcmVnYW1tYVtpXS5nOwpAQCAtMjEyMSw3ICsyMTQxLDcgQEAgYm9vbCAgbW9kX2NvbG9yX2Nh bGN1bGF0ZV9kZWdhbW1hX2N1cnZlKGVudW0gZGNfdHJhbnNmZXJfZnVuY19wcmVkZWZpbmVkIHRy YW5zLAogCQlidWlsZF9obGdfZGVnYW1tYShyZ2JfZGVnYW1tYSwKIAkJCQlNQVhfSFdfUE9JTlRT LAogCQkJCWNvb3JkaW5hdGVzX3gsCi0JCQkJdHJ1ZSk7CisJCQkJODAsIDEwMDApOwogCQlmb3Ig KGkgPSAwOyBpIDw9IE1BWF9IV19QT0lOVFMgOyBpKyspIHsKIAkJCXBvaW50cy0+cmVkW2ldICAg ID0gcmdiX2RlZ2FtbWFbaV0ucjsKIAkJCXBvaW50cy0+Z3JlZW5baV0gID0gcmdiX2RlZ2FtbWFb aV0uZzsKLS0gCjIuMjIuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4