From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH v2] drm/i915: Clean up HDMI deep color handling a bit Date: Wed, 28 Aug 2019 21:34:24 +0300 Message-ID: <20190828183424.7856-1-ville.syrjala@linux.intel.com> References: <20190822180500.26608-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4F12789E23 for ; Wed, 28 Aug 2019 18:34:28 +0000 (UTC) In-Reply-To: <20190822180500.26608-1-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Jani Nikula List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClJl b2dyYW5pemUgdGhlIEhETUkgZGVlcCBjb2xvciBzdGF0ZSBjb21wdXRhdGlvbiB0byBqdXN0Cmxv b3Agb3ZlciBwb3NzaWJsZSBicGMgdmFsdWVzLiBBdm9pZHMgaGF2aW5nIHRvIG1haW50YWluCnNv IG1hbnkgdmFyaWFudHMgb2YgdGhlIGNsb2NrIGV0Yy4KClRoZSBjdXJyZW50IGNvZGUgYWxzbyBs b29rcyBjb25mdXNlZCB3LnIudC4gcG9ydF9jbG9jayB2cy4KYndfY29uc3RyYWluZWQuIEl0IHdv dWxkIGhhcHBpbHkgdXBkYXRlIHBvcnRfY2xvY2sgZm9yCmRlZXAgY29sb3IgYnV0IHRoZW4gbm90 IGFjdHVhbGx5IGVuYWJsZSBkZWVwIGNvbG9yIGR1ZSB0bwpid19jb25zdHJhaW5lZCBiZWluZyBz ZXQuIFRoZSBuZXcgbG9naWMgaGFuZGxlcyB0aGF0IGNhc2UKY29ycmVjdGx5LgoKdjI6IFB1bGwg c3R1ZmYgaW50byBzZXBhcmF0ZSBmdW5jcyAoSmFuaSkKClJldmlld2VkLWJ5OiBKYW5pIE5pa3Vs YSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPiAjdjEKU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOk bMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYyB8IDEzNCArKysrKysrKysrKysrLS0tLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYwppbmRleCAwZjVhMGM2MThlNDYuLjAy YzVjMzgxMWE1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9oZG1pLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMK QEAgLTIyNjEsOSArMjI2MSw3IEBAIHN0YXRpYyBib29sIGhkbWlfZGVlcF9jb2xvcl9wb3NzaWJs ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAogc3RhdGljIGJv b2wKIGludGVsX2hkbWlfeWNiY3I0MjBfY29uZmlnKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsCi0JCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnLAotCQkJICAgaW50 ICpjbG9ja18xMmJwYywgaW50ICpjbG9ja18xMGJwYywKLQkJCSAgIGludCAqY2xvY2tfOGJwYykK KwkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25maWcpCiB7CiAJc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNvbmZpZy0+YmFzZS5jcnRjKTsKIApA QCAtMjI3MiwxMSArMjI3MCw2IEBAIGludGVsX2hkbWlfeWNiY3I0MjBfY29uZmlnKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQkvKiBZQ0JD UjQyMCBUTURTIHJhdGUgcmVxdWlyZW1lbnQgaXMgaGFsZiB0aGUgcGl4ZWwgY2xvY2sgKi8KLQlj b25maWctPnBvcnRfY2xvY2sgLz0gMjsKLQkqY2xvY2tfMTJicGMgLz0gMjsKLQkqY2xvY2tfMTBi cGMgLz0gMjsKLQkqY2xvY2tfOGJwYyAvPSAyOwogCWNvbmZpZy0+b3V0cHV0X2Zvcm1hdCA9IElO VEVMX09VVFBVVF9GT1JNQVRfWUNCQ1I0MjA7CiAKIAkvKiBZQ0JDUiA0MjAgb3V0cHV0IGNvbnZl cnNpb24gbmVlZHMgYSBzY2FsZXIgKi8KQEAgLTIyOTEsNiArMjI4NCw3NiBAQCBpbnRlbF9oZG1p X3ljYmNyNDIwX2NvbmZpZyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCXJldHVy biB0cnVlOwogfQogCitzdGF0aWMgaW50IGludGVsX2hkbWlfcG9ydF9jbG9jayhpbnQgY2xvY2ss IGludCBicGMpCit7CisJLyoKKwkgKiBOZWVkIHRvIGFkanVzdCB0aGUgcG9ydCBsaW5rIGJ5Ogor CSAqICAxLjV4IGZvciAxMmJwYworCSAqICAxLjI1eCBmb3IgMTBicGMKKwkgKi8KKwlyZXR1cm4g Y2xvY2sgKiBicGMgLyA4OworfQorCitzdGF0aWMgaW50IGludGVsX2hkbWlfY29tcHV0ZV9icGMo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgIGludCBjbG9jaywgYm9vbCBmb3JjZV9kdmkpCit7CisJ c3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBlbmNfdG9faW50ZWxfaGRtaSgmZW5jb2Rl ci0+YmFzZSk7CisJaW50IGJwYzsKKworCWZvciAoYnBjID0gMTI7IGJwYyA+PSAxMDsgYnBjIC09 IDIpIHsKKwkJaWYgKGhkbWlfZGVlcF9jb2xvcl9wb3NzaWJsZShjcnRjX3N0YXRlLCBicGMpICYm CisJCSAgICBoZG1pX3BvcnRfY2xvY2tfdmFsaWQoaW50ZWxfaGRtaSwKKwkJCQkJICBpbnRlbF9o ZG1pX3BvcnRfY2xvY2soY2xvY2ssIGJwYyksCisJCQkJCSAgdHJ1ZSwgZm9yY2VfZHZpKSA9PSBN T0RFX09LKQorCQkJcmV0dXJuIGJwYzsKKwl9CisKKwlyZXR1cm4gODsKK30KKworc3RhdGljIGlu dCBpbnRlbF9oZG1pX2NvbXB1dGVfY2xvY2soc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CisJCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSAgICBi b29sIGZvcmNlX2R2aSkKK3sKKwlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190 b19pbnRlbF9oZG1pKCZlbmNvZGVyLT5iYXNlKTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9CisJCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7 CisJaW50IGJwYywgY2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOworCisJaWYgKGFk anVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxDTEspCisJCWNsb2NrICo9IDI7 CisKKwkvKiBZQ0JDUjQyMCBUTURTIHJhdGUgcmVxdWlyZW1lbnQgaXMgaGFsZiB0aGUgcGl4ZWwg Y2xvY2sgKi8KKwlpZiAoY3J0Y19zdGF0ZS0+b3V0cHV0X2Zvcm1hdCA9PSBJTlRFTF9PVVRQVVRf Rk9STUFUX1lDQkNSNDIwKQorCQljbG9jayAvPSAyOworCisJYnBjID0gaW50ZWxfaGRtaV9jb21w dXRlX2JwYyhlbmNvZGVyLCBjcnRjX3N0YXRlLAorCQkJCSAgICAgY2xvY2ssIGZvcmNlX2R2aSk7 CisKKwljcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID0gaW50ZWxfaGRtaV9wb3J0X2Nsb2NrKGNsb2Nr LCBicGMpOworCisJLyoKKwkgKiBwaXBlX2JwcCBjb3VsZCBhbHJlYWR5IGJlIGJlbG93IDhicGMg ZHVlIHRvCisJICogRkRJIGJhbmR3aWR0aCBjb25zdHJhaW50cy4gV2Ugc2hvdWxkbid0IGJ1bXAg aXQKKwkgKiBiYWNrIHVwIHRvIDhicGMgaW4gdGhhdCBjYXNlLgorCSAqLworCWlmIChjcnRjX3N0 YXRlLT5waXBlX2JwcCA+IGJwYyAqIDMpCisJCWNydGNfc3RhdGUtPnBpcGVfYnBwID0gYnBjICog MzsKKworCURSTV9ERUJVR19LTVMoInBpY2tpbmcgJWQgYnBjIGZvciBIRE1JIG91dHB1dCAocGlw ZSBicHA6ICVkKVxuIiwKKwkJICAgICAgYnBjLCBjcnRjX3N0YXRlLT5waXBlX2JwcCk7CisKKwlp ZiAoaGRtaV9wb3J0X2Nsb2NrX3ZhbGlkKGludGVsX2hkbWksIGNydGNfc3RhdGUtPnBvcnRfY2xv Y2ssCisJCQkJICBmYWxzZSwgZm9yY2VfZHZpKSAhPSBNT0RFX09LKSB7CisJCURSTV9ERUJVR19L TVMoInVuc3VwcG9ydGVkIEhETUkgY2xvY2sgKCVkIGtIeiksIHJlamVjdGluZyBtb2RlXG4iLAor CQkJICAgICAgY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayk7CisJCXJldHVybiAtRUlOVkFMOworCX0K KworCXJldHVybiAwOworfQorCiBpbnQgaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKIAkJCSAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25u X3N0YXRlKQpAQCAtMjMwMiwxMSArMjM2NSw4IEBAIGludCBpbnRlbF9oZG1pX2NvbXB1dGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCXN0cnVjdCBkcm1fc2NkYyAqc2Nk YyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZG1pLnNjZGM7CiAJc3RydWN0IGludGVsX2Rp Z2l0YWxfY29ubmVjdG9yX3N0YXRlICppbnRlbF9jb25uX3N0YXRlID0KIAkJdG9faW50ZWxfZGln aXRhbF9jb25uZWN0b3Jfc3RhdGUoY29ubl9zdGF0ZSk7Ci0JaW50IGNsb2NrXzhicGMgPSBwaXBl X2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Ci0JaW50IGNsb2NrXzEwYnBj ID0gY2xvY2tfOGJwYyAqIDUgLyA0OwotCWludCBjbG9ja18xMmJwYyA9IGNsb2NrXzhicGMgKiAz IC8gMjsKLQlpbnQgZGVzaXJlZF9icHA7CiAJYm9vbCBmb3JjZV9kdmkgPSBpbnRlbF9jb25uX3N0 YXRlLT5mb3JjZV9hdWRpbyA9PSBIRE1JX0FVRElPX09GRl9EVkk7CisJaW50IHJldDsKIAogCWlm IChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJMU0NBTikKIAkJcmV0dXJu IC1FSU5WQUw7CkBAIC0yMzI4LDE3ICsyMzg4LDExIEBAIGludCBpbnRlbF9oZG1pX2NvbXB1dGVf Y29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJaW50ZWxfY29ubl9zdGF0 ZS0+YnJvYWRjYXN0X3JnYiA9PSBJTlRFTF9CUk9BRENBU1RfUkdCX0xJTUlURUQ7CiAJfQogCi0J aWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxDTEspIHsKKwlpZiAo YWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTENMSykKIAkJcGlwZV9jb25m aWctPnBpeGVsX211bHRpcGxpZXIgPSAyOwotCQljbG9ja184YnBjICo9IDI7Ci0JCWNsb2NrXzEw YnBjICo9IDI7Ci0JCWNsb2NrXzEyYnBjICo9IDI7Ci0JfQogCiAJaWYgKGRybV9tb2RlX2lzXzQy MF9vbmx5KCZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbywgYWRqdXN0ZWRfbW9kZSkpIHsKLQkJaWYg KCFpbnRlbF9oZG1pX3ljYmNyNDIwX2NvbmZpZyhjb25uZWN0b3IsIHBpcGVfY29uZmlnLAotCQkJ CQkJJmNsb2NrXzEyYnBjLCAmY2xvY2tfMTBicGMsCi0JCQkJCQkmY2xvY2tfOGJwYykpIHsKKwkJ aWYgKCFpbnRlbF9oZG1pX3ljYmNyNDIwX2NvbmZpZyhjb25uZWN0b3IsIHBpcGVfY29uZmlnKSkg ewogCQkJRFJNX0VSUk9SKCJDYW4ndCBzdXBwb3J0IFlDQkNSNDIwIG91dHB1dFxuIik7CiAJCQly ZXR1cm4gLUVJTlZBTDsKIAkJfQpAQCAtMjM1NSw0MyArMjQwOSw5IEBAIGludCBpbnRlbF9oZG1p X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJCWludGVs X2Nvbm5fc3RhdGUtPmZvcmNlX2F1ZGlvID09IEhETUlfQVVESU9fT047CiAJfQogCi0JLyoKLQkg KiBOb3RlIHRoYXQgZzR4L3ZsdiBkb24ndCBzdXBwb3J0IDEyYnBjIGhkbWkgb3V0cHV0cy4gV2Ug YWxzbyBuZWVkCi0JICogdG8gY2hlY2sgdGhhdCB0aGUgaGlnaGVyIGNsb2NrIHN0aWxsIGZpdHMg d2l0aGluIGxpbWl0cy4KLQkgKi8KLQlpZiAoaGRtaV9kZWVwX2NvbG9yX3Bvc3NpYmxlKHBpcGVf Y29uZmlnLCAxMikgJiYKLQkgICAgaGRtaV9wb3J0X2Nsb2NrX3ZhbGlkKGludGVsX2hkbWksIGNs b2NrXzEyYnBjLAotCQkJCSAgdHJ1ZSwgZm9yY2VfZHZpKSA9PSBNT0RFX09LKSB7Ci0JCURSTV9E RUJVR19LTVMoInBpY2tpbmcgYnBjIHRvIDEyIGZvciBIRE1JIG91dHB1dFxuIik7Ci0JCWRlc2ly ZWRfYnBwID0gMTIqMzsKLQotCQkvKiBOZWVkIHRvIGFkanVzdCB0aGUgcG9ydCBsaW5rIGJ5IDEu NXggZm9yIDEyYnBjLiAqLwotCQlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IGNsb2NrXzEyYnBj OwotCX0gZWxzZSBpZiAoaGRtaV9kZWVwX2NvbG9yX3Bvc3NpYmxlKHBpcGVfY29uZmlnLCAxMCkg JiYKLQkJICAgaGRtaV9wb3J0X2Nsb2NrX3ZhbGlkKGludGVsX2hkbWksIGNsb2NrXzEwYnBjLAot CQkJCQkgdHJ1ZSwgZm9yY2VfZHZpKSA9PSBNT0RFX09LKSB7Ci0JCURSTV9ERUJVR19LTVMoInBp Y2tpbmcgYnBjIHRvIDEwIGZvciBIRE1JIG91dHB1dFxuIik7Ci0JCWRlc2lyZWRfYnBwID0gMTAg KiAzOwotCi0JCS8qIE5lZWQgdG8gYWRqdXN0IHRoZSBwb3J0IGxpbmsgYnkgMS4yNXggZm9yIDEw YnBjLiAqLwotCQlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IGNsb2NrXzEwYnBjOwotCX0gZWxz ZSB7Ci0JCURSTV9ERUJVR19LTVMoInBpY2tpbmcgYnBjIHRvIDggZm9yIEhETUkgb3V0cHV0XG4i KTsKLQkJZGVzaXJlZF9icHAgPSA4KjM7Ci0KLQkJcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSBj bG9ja184YnBjOwotCX0KLQotCWlmICghcGlwZV9jb25maWctPmJ3X2NvbnN0cmFpbmVkKSB7Ci0J CURSTV9ERUJVR19LTVMoImZvcmNpbmcgcGlwZSBicHAgdG8gJWkgZm9yIEhETUlcbiIsIGRlc2ly ZWRfYnBwKTsKLQkJcGlwZV9jb25maWctPnBpcGVfYnBwID0gZGVzaXJlZF9icHA7Ci0JfQotCi0J aWYgKGhkbWlfcG9ydF9jbG9ja192YWxpZChpbnRlbF9oZG1pLCBwaXBlX2NvbmZpZy0+cG9ydF9j bG9jaywKLQkJCQkgIGZhbHNlLCBmb3JjZV9kdmkpICE9IE1PREVfT0spIHsKLQkJRFJNX0RFQlVH X0tNUygidW5zdXBwb3J0ZWQgSERNSSBjbG9jaywgcmVqZWN0aW5nIG1vZGVcbiIpOwotCQlyZXR1 cm4gLUVJTlZBTDsKLQl9CisJcmV0ID0gaW50ZWxfaGRtaV9jb21wdXRlX2Nsb2NrKGVuY29kZXIs IHBpcGVfY29uZmlnLCBmb3JjZV9kdmkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CiAKIAkv KiBTZXQgdXNlciBzZWxlY3RlZCBQQVIgdG8gaW5jb21pbmcgbW9kZSdzIG1lbWJlciAqLwogCWFk anVzdGVkX21vZGUtPnBpY3R1cmVfYXNwZWN0X3JhdGlvID0gY29ubl9zdGF0ZS0+cGljdHVyZV9h c3BlY3RfcmF0aW87Ci0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeA==