From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 505D7C10F1A for ; Tue, 7 May 2024 14:31:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=n/bHv/y/O9Y9nyys5RUYFUPZ95DxHH46dafq/FUUgQk=; b=tNG+2BaM2CNQNX Dqpz3tAZizI0AthotwYE/4MAca81bcRwRCbrWCsu4lhr78j69qSJxdR/4XhN9h1nqH0/akrCTGTvE vllIXm2owEsmPXc3gKK6J5Rp9g05N0U0Ud/doU+paH6QwJf6Mtew03WRmz2aDgRI+FAYjy5vmDskg btIPRpAmBKwxXwsqyPtPtKBTRpBnpzSpEINZxzr8vTSuuYG87oIUa46sr117TF+/48H6KT0cWiS+P ru0m0iIOwaNzKTMjwbeaHjlB22K9/ma46+ZNxOedlJNk7RCx5nwQuH29ZEqSLqmpjqnIKi0U47NwD 4U79cL8L0Umm1NeFb6bA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s4LqW-0000000BVwJ-0p1p; Tue, 07 May 2024 14:31:08 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s4Kiy-0000000BALt-1wxw; Tue, 07 May 2024 13:19:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Cc:To:In-Reply-To:References:Message-Id :Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender :Reply-To:Content-ID:Content-Description; bh=/Jz7duc/JyMnh01BrVI4mFW2BHba6jyk+523DFajDlU=; b=YebdewR4MhqiIyp0jNtfwls8zE X1y0Y6O9NRaLxCy/FbnFz4ryoIv8JjOGeJzW+qNFNj+PA7JYk8+1moPmrHrVdLH0xapjlI5+A5Y1x cSqDOM7boHTy+hfaNtetcmyUnnvLt+0NxpBXH0hbArJ2LERL8vi2QbDr9MTzPbNXfD4uztbJjklTh 8z8rBrU8+2AljoxcqteLrZijb9ImEX/xgNWCW13gOEv3TckQXT062rGPinTEqbGJVXSoovQEHoxBk QNZRUxRn6e2o3hfrRhiyqqvAYfDSP6OhYBzaDRYlSKWba9VdiSoAkEtsxwnDl6x81FZ2DTUwmOwPf aynVJu9g==; Received: from sin.source.kernel.org ([145.40.73.55]) by casper.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s4Kiu-0000000DIhq-3G9x; Tue, 07 May 2024 13:19:15 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 826F0CE1316; Tue, 7 May 2024 13:18:46 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DFB3FC4DDE2; Tue, 7 May 2024 13:18:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1715087906; bh=MFh6XBBBJRBlEIIJs6KhuU7h4XMccC70JG5oFoZobdI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pGz9cMy3ioZiL93lQs3IlVU1kzaUhZ2cVza7ZUNCGV7Etsr9GVPA8imo1kpH7kVI3 oCBULll/TKZDodc7wSl+aWehtBzxISDca7YAk/sRyRwKxl+ws1vLi7F0ebI+GvnBqG TUnULg8jJcXZ8dH+ehEuavoFuSh7SqAyX+W0RYffMT9Vw4VSrxORi6GyEcg+DvEdW4 uqFqvysO5MIUzQfoZJSyg6W8DMPZyuuYJWI75NT1z20rMQoB1/UH4yddcQjlCMaMd3 WAxpu3x+mCTelhZHn4DiiWMSXfijlNrIIoB/mbypzey38N3dzmWgkAiNtIqbnwMIxv PNdaCU4ZcjppQ== From: Maxime Ripard Date: Tue, 07 May 2024 15:17:33 +0200 Subject: [PATCH v13 15/28] drm/connector: hdmi: Compute bpc and format automatically MIME-Version: 1.0 Message-Id: <20240507-kms-hdmi-connector-state-v13-15-8fafc5efe8be@kernel.org> References: <20240507-kms-hdmi-connector-state-v13-0-8fafc5efe8be@kernel.org> In-Reply-To: <20240507-kms-hdmi-connector-state-v13-0-8fafc5efe8be@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Daniel Vetter , Jonathan Corbet , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andy Yan Cc: Hans Verkuil , Sebastian Wick , =?utf-8?q?Ville_Syrj=C3=A4l=C3=A4?= , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev, Maxime Ripard X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=11837; i=mripard@kernel.org; h=from:subject:message-id; bh=MFh6XBBBJRBlEIIJs6KhuU7h4XMccC70JG5oFoZobdI=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDGlWmm+v/C3+pfvxdIN14nG/L2EV27onJC+PeVo9S+3M0 z61JX+iOqayMAhzMsiKKbI8kQk7vbx9cZWD/cofMHNYmUCGMHBxCsBEbLgZ69RniC3P3CPcIO/7 eylvTWbPTfYrK2d6zFZd/Xq+m+di3vmHX22t0Z07L27BN+G+1ZN9bRjrrJ+vUlpyYEJBhLNDt5L g16u/7+39zudR1XQle93z/58+NCnM/M/FplQw9TBD0pWYpcXGAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240507_141913_495297_E9959E35 X-CRM114-Status: GOOD ( 19.33 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Tm93IHRoYXQgd2UgaGF2ZSBhbGwgdGhlIGluZnJhc3RydWN0dXJlIG5lZWRlZCwgd2UgY2FuIGFk ZCBzb21lIGNvZGUKdGhhdCB3aWxsLCBmb3IgYSBnaXZlbiBjb25uZWN0b3Igc3RhdGUgYW5kIG1v ZGUsIGNvbXB1dGUgdGhlIGJlc3Qgb3V0cHV0CmZvcm1hdCBhbmQgYnBjLgoKVGhlIGFsZ29yaXRo bSBpcyBlcXVpdmFsZW50IHRvIHRoZSBvbmUgYWxyZWFkeSBmb3VuZCBpbiBpOTE1IGFuZCB2YzQu CgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogTWF4aW1lIFJpcGFyZCA8bXJpcGFyZEBrZXJuZWwub3JnPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9kaXNwbGF5L2RybV9oZG1pX3N0YXRlX2hlbHBlci5jICAgIHwgMTk5ICsrKysr KysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL3Rlc3RzL2RybV9oZG1pX3N0YXRlX2hl bHBlcl90ZXN0LmMgfCAgMjUgKystCiAyIGZpbGVzIGNoYW5nZWQsIDIxMiBpbnNlcnRpb25zKCsp LCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9k cm1faGRtaV9zdGF0ZV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9oZG1p X3N0YXRlX2hlbHBlci5jCmluZGV4IDA2MzQyMTgzNWRiYS4uZjIwZGNmZWNiNmI4IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1faGRtaV9zdGF0ZV9oZWxwZXIuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1faGRtaV9zdGF0ZV9oZWxwZXIuYwpAQCAtMSw5 ICsxLDExIEBACiAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCiAKICNpbmNsdWRlIDxk cm0vZHJtX2F0b21pYy5oPgogI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+CisjaW5jbHVk ZSA8ZHJtL2RybV9lZGlkLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgogCiAjaW5jbHVk ZSA8ZHJtL2Rpc3BsYXkvZHJtX2hkbWlfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2Rpc3BsYXkv ZHJtX2hkbWlfc3RhdGVfaGVscGVyLmg+CiAKIC8qKgpAQCAtNDYsMTAgKzQ4LDExMiBAQCBjb25u ZWN0b3Jfc3RhdGVfZ2V0X21vZGUoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNv bm5fc3RhdGUpCiAJCXJldHVybiBOVUxMOwogCiAJcmV0dXJuICZjcnRjX3N0YXRlLT5tb2RlOwog fQogCitzdGF0aWMgYm9vbAorc2lua19zdXBwb3J0c19mb3JtYXRfYnBjKGNvbnN0IHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X2lu Zm8gKmluZm8sCisJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkg dW5zaWduZWQgaW50IGZvcm1hdCwgdW5zaWduZWQgaW50IGJwYykKK3sKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7CisJdTggdmljID0gZHJtX21hdGNoX2NlYV9tb2Rl KG1vZGUpOworCisJLyoKKwkgKiBDVEEtODYxLUYsIHNlY3Rpb24gNS40IC0gQ29sb3IgQ29kaW5n ICYgUXVhbnRpemF0aW9uIHN0YXRlcworCSAqIHRoYXQgdGhlIGJwYyBtdXN0IGJlIDgsIDEwLCAx MiBvciAxNiBleGNlcHQgZm9yIHRoZSBkZWZhdWx0CisJICogNjQweDQ4MCBWSUMxIHdoZXJlIHRo ZSB2YWx1ZSBtdXN0IGJlIDguCisJICoKKwkgKiBUaGUgZGVmaW5pdGlvbiBvZiBkZWZhdWx0IGhl cmUgaXMgYW1iaWd1b3VzIGJ1dCB0aGUgc3BlYworCSAqIHJlZmVycyB0byBWSUMxIGJlaW5nIHRo ZSBkZWZhdWx0IHRpbWluZyBpbiBzZXZlcmFsIG9jY2FzaW9ucworCSAqIHNvIG91ciB1bmRlcnN0 YW5kaW5nIGlzIHRoYXQgZm9yIHRoZSBkZWZhdWx0IHRpbWluZyAoaWUsCisJICogVklDMSksIHRo ZSBicGMgbXVzdCBiZSA4LgorCSAqLworCWlmICh2aWMgPT0gMSAmJiBicGMgIT0gOCkgeworCQlk cm1fZGJnX2ttcyhkZXYsICJWSUMxIHJlcXVpcmVzIGEgYnBjIG9mIDgsIGdvdCAldVxuIiwgYnBj KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmICghaW5mby0+aXNfaGRtaSAmJgorCSAgICAo Zm9ybWF0ICE9IEhETUlfQ09MT1JTUEFDRV9SR0IgfHwgYnBjICE9IDgpKSB7CisJCWRybV9kYmdf a21zKGRldiwgIkRWSSBNb25pdG9ycyByZXF1aXJlIGFuIFJHQiBvdXRwdXQgYXQgOCBicGNcbiIp OworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKCEoY29ubmVjdG9yLT5oZG1pLnN1cHBvcnRl ZF9mb3JtYXRzICYgQklUKGZvcm1hdCkpKSB7CisJCWRybV9kYmdfa21zKGRldiwgIiVzIGZvcm1h dCB1bnN1cHBvcnRlZCBieSB0aGUgY29ubmVjdG9yLlxuIiwKKwkJCSAgICBkcm1faGRtaV9jb25u ZWN0b3JfZ2V0X291dHB1dF9mb3JtYXRfbmFtZShmb3JtYXQpKTsKKwkJcmV0dXJuIGZhbHNlOwor CX0KKworCXN3aXRjaCAoZm9ybWF0KSB7CisJY2FzZSBIRE1JX0NPTE9SU1BBQ0VfUkdCOgorCQlk cm1fZGJnX2ttcyhkZXYsICJSR0IgRm9ybWF0LCBjaGVja2luZyB0aGUgY29uc3RyYWludHMuXG4i KTsKKworCQlpZiAoIShpbmZvLT5jb2xvcl9mb3JtYXRzICYgRFJNX0NPTE9SX0ZPUk1BVF9SR0I0 NDQpKSB7CisJCQlkcm1fZGJnX2ttcyhkZXYsICJTaW5rIGRvZXNuJ3Qgc3VwcG9ydCBSR0IuXG4i KTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCWlmIChicGMgPT0gMTAgJiYgIShpbmZvLT5l ZGlkX2hkbWlfcmdiNDQ0X2RjX21vZGVzICYgRFJNX0VESURfSERNSV9EQ18zMCkpIHsKKwkJCWRy bV9kYmdfa21zKGRldiwgIjEwIEJQQyBidXQgc2luayBkb2Vzbid0IHN1cHBvcnQgRGVlcCBDb2xv ciAzMC5cbiIpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJaWYgKGJwYyA9PSAxMiAmJiAh KGluZm8tPmVkaWRfaGRtaV9yZ2I0NDRfZGNfbW9kZXMgJiBEUk1fRURJRF9IRE1JX0RDXzM2KSkg eworCQkJZHJtX2RiZ19rbXMoZGV2LCAiMTIgQlBDIGJ1dCBzaW5rIGRvZXNuJ3Qgc3VwcG9ydCBE ZWVwIENvbG9yIDM2LlxuIik7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQlkcm1fZGJnX2tt cyhkZXYsICJSR0IgZm9ybWF0IHN1cHBvcnRlZCBpbiB0aGF0IGNvbmZpZ3VyYXRpb24uXG4iKTsK KworCQlyZXR1cm4gdHJ1ZTsKKworCWNhc2UgSERNSV9DT0xPUlNQQUNFX1lVVjQyMjoKKwkJZHJt X2RiZ19rbXMoZGV2LCAiWVVWNDIyIGZvcm1hdCwgY2hlY2tpbmcgdGhlIGNvbnN0cmFpbnRzLlxu Iik7CisKKwkJaWYgKCEoaW5mby0+Y29sb3JfZm9ybWF0cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNC Q1I0MjIpKSB7CisJCQlkcm1fZGJnX2ttcyhkZXYsICJTaW5rIGRvZXNuJ3Qgc3VwcG9ydCBZVVY0 MjIuXG4iKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCWlmIChicGMgIT0gMTIpIHsKKwkJ CWRybV9kYmdfa21zKGRldiwgIllVVjQyMiBvbmx5IHN1cHBvcnRzIDEyIGJwYy5cbiIpOworCQkJ cmV0dXJuIGZhbHNlOworCQl9CisKKwkJZHJtX2RiZ19rbXMoZGV2LCAiWVVWNDIyIGZvcm1hdCBz dXBwb3J0ZWQgaW4gdGhhdCBjb25maWd1cmF0aW9uLlxuIik7CisKKwkJcmV0dXJuIHRydWU7CisK KwljYXNlIEhETUlfQ09MT1JTUEFDRV9ZVVY0NDQ6CisJCWRybV9kYmdfa21zKGRldiwgIllVVjQ0 NCBmb3JtYXQsIGNoZWNraW5nIHRoZSBjb25zdHJhaW50cy5cbiIpOworCisJCWlmICghKGluZm8t PmNvbG9yX2Zvcm1hdHMgJiBEUk1fQ09MT1JfRk9STUFUX1lDQkNSNDQ0KSkgeworCQkJZHJtX2Ri Z19rbXMoZGV2LCAiU2luayBkb2Vzbid0IHN1cHBvcnQgWVVWNDQ0LlxuIik7CisJCQlyZXR1cm4g ZmFsc2U7CisJCX0KKworCQlpZiAoYnBjID09IDEwICYmICEoaW5mby0+ZWRpZF9oZG1pX3ljYmNy NDQ0X2RjX21vZGVzICYgRFJNX0VESURfSERNSV9EQ18zMCkpIHsKKwkJCWRybV9kYmdfa21zKGRl diwgIjEwIEJQQyBidXQgc2luayBkb2Vzbid0IHN1cHBvcnQgRGVlcCBDb2xvciAzMC5cbiIpOwor CQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJaWYgKGJwYyA9PSAxMiAmJiAhKGluZm8tPmVkaWRf aGRtaV95Y2JjcjQ0NF9kY19tb2RlcyAmIERSTV9FRElEX0hETUlfRENfMzYpKSB7CisJCQlkcm1f ZGJnX2ttcyhkZXYsICIxMiBCUEMgYnV0IHNpbmsgZG9lc24ndCBzdXBwb3J0IERlZXAgQ29sb3Ig MzYuXG4iKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCWRybV9kYmdfa21zKGRldiwgIllV VjQ0NCBmb3JtYXQgc3VwcG9ydGVkIGluIHRoYXQgY29uZmlndXJhdGlvbi5cbiIpOworCisJCXJl dHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIGVudW0gZHJtX21v ZGVfc3RhdHVzCiBoZG1pX2Nsb2NrX3ZhbGlkKGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsCiAJCSBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKIAkJIHVu c2lnbmVkIGxvbmcgbG9uZyBjbG9jaykKIHsKQEAgLTkwLDEwICsxOTQsMTAxIEBAIGhkbWlfY29t cHV0ZV9jbG9jayhjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCWNvbm5f c3RhdGUtPmhkbWkudG1kc19jaGFyX3JhdGUgPSBjbG9jazsKIAogCXJldHVybiAwOwogfQogCitz dGF0aWMgYm9vbAoraGRtaV90cnlfZm9ybWF0X2JwYyhjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAorCQkgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3Rh dGUsCisJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJICAgIHVu c2lnbmVkIGludCBicGMsIGVudW0gaGRtaV9jb2xvcnNwYWNlIGZtdCkKK3sKKwljb25zdCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbzsKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7CisJaW50IHJldDsKKworCWRy bV9kYmdfa21zKGRldiwgIlRyeWluZyAlcyBvdXRwdXQgZm9ybWF0XG4iLAorCQkgICAgZHJtX2hk bWlfY29ubmVjdG9yX2dldF9vdXRwdXRfZm9ybWF0X25hbWUoZm10KSk7CisKKwlpZiAoIXNpbmtf c3VwcG9ydHNfZm9ybWF0X2JwYyhjb25uZWN0b3IsIGluZm8sIG1vZGUsIGZtdCwgYnBjKSkgewor CQlkcm1fZGJnX2ttcyhkZXYsICIlcyBvdXRwdXQgZm9ybWF0IG5vdCBzdXBwb3J0ZWQgd2l0aCAl dSBicGNcbiIsCisJCQkgICAgZHJtX2hkbWlfY29ubmVjdG9yX2dldF9vdXRwdXRfZm9ybWF0X25h bWUoZm10KSwKKwkJCSAgICBicGMpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0ID0gaGRt aV9jb21wdXRlX2Nsb2NrKGNvbm5lY3RvciwgY29ubl9zdGF0ZSwgbW9kZSwgYnBjLCBmbXQpOwor CWlmIChyZXQpIHsKKwkJZHJtX2RiZ19rbXMoZGV2LCAiQ291bGRuJ3QgY29tcHV0ZSBjbG9jayBm b3IgJXMgb3V0cHV0IGZvcm1hdCBhbmQgJXUgYnBjXG4iLAorCQkJICAgIGRybV9oZG1pX2Nvbm5l Y3Rvcl9nZXRfb3V0cHV0X2Zvcm1hdF9uYW1lKGZtdCksCisJCQkgICAgYnBjKTsKKwkJcmV0dXJu IGZhbHNlOworCX0KKworCWRybV9kYmdfa21zKGRldiwgIiVzIG91dHB1dCBmb3JtYXQgc3VwcG9y dGVkIHdpdGggJXUgKFRNRFMgY2hhciByYXRlOiAlbGx1IEh6KVxuIiwKKwkJICAgIGRybV9oZG1p X2Nvbm5lY3Rvcl9nZXRfb3V0cHV0X2Zvcm1hdF9uYW1lKGZtdCksCisJCSAgICBicGMsIGNvbm5f c3RhdGUtPmhkbWkudG1kc19jaGFyX3JhdGUpOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp YyBpbnQKK2hkbWlfY29tcHV0ZV9mb3JtYXQoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwKKwkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLAor CQkgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCSAgICB1bnNpZ25l ZCBpbnQgYnBjKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsK KworCS8qCisJICogVE9ETzogQWRkIHN1cHBvcnQgZm9yIFlDYkNyNDIwIG91dHB1dCBmb3IgSERN SSAyLjAgY2FwYWJsZQorCSAqIGRldmljZXMsIGZvciBtb2RlcyB0aGF0IG9ubHkgc3VwcG9ydCBZ Q2JDcjQyMC4KKwkgKi8KKwlpZiAoaGRtaV90cnlfZm9ybWF0X2JwYyhjb25uZWN0b3IsIGNvbm5f c3RhdGUsIG1vZGUsIGJwYywgSERNSV9DT0xPUlNQQUNFX1JHQikpIHsKKwkJY29ubl9zdGF0ZS0+ aGRtaS5vdXRwdXRfZm9ybWF0ID0gSERNSV9DT0xPUlNQQUNFX1JHQjsKKwkJcmV0dXJuIDA7CisJ fQorCisJZHJtX2RiZ19rbXMoZGV2LCAiRmFpbGVkLiBObyBGb3JtYXQgU3VwcG9ydGVkIGZvciB0 aGF0IGJwYyBjb3VudC5cbiIpOworCisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQK K2hkbWlfY29tcHV0ZV9jb25maWcoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKKwkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLAorCQkgICAg Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2OworCXVuc2lnbmVkIGludCBtYXhfYnBjID0gY2xhbXBf dCh1bnNpZ25lZCBpbnQsCisJCQkJICAgICAgIGNvbm5fc3RhdGUtPm1heF9icGMsCisJCQkJICAg ICAgIDgsIGNvbm5lY3Rvci0+bWF4X2JwYyk7CisJdW5zaWduZWQgaW50IGJwYzsKKwlpbnQgcmV0 OworCisJZm9yIChicGMgPSBtYXhfYnBjOyBicGMgPj0gODsgYnBjIC09IDIpIHsKKwkJZHJtX2Ri Z19rbXMoZGV2LCAiVHJ5aW5nIHdpdGggYSAlZCBicGMgb3V0cHV0XG4iLCBicGMpOworCisJCXJl dCA9IGhkbWlfY29tcHV0ZV9mb3JtYXQoY29ubmVjdG9yLCBjb25uX3N0YXRlLCBtb2RlLCBicGMp OworCQlpZiAocmV0KQorCQkJY29udGludWU7CisKKwkJY29ubl9zdGF0ZS0+aGRtaS5vdXRwdXRf YnBjID0gYnBjOworCisJCWRybV9kYmdfa21zKGRldiwKKwkJCSAgICAiTW9kZSAldXgldSBAICV1 SHo6IEZvdW5kIGNvbmZpZ3VyYXRpb246IGJwYzogJXUsIGZtdDogJXMsIGNsb2NrOiAlbGx1XG4i LAorCQkJICAgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwgZHJtX21vZGVfdnJlZnJl c2gobW9kZSksCisJCQkgICAgY29ubl9zdGF0ZS0+aGRtaS5vdXRwdXRfYnBjLAorCQkJICAgIGRy bV9oZG1pX2Nvbm5lY3Rvcl9nZXRfb3V0cHV0X2Zvcm1hdF9uYW1lKGNvbm5fc3RhdGUtPmhkbWku b3V0cHV0X2Zvcm1hdCksCisJCQkgICAgY29ubl9zdGF0ZS0+aGRtaS50bWRzX2NoYXJfcmF0ZSk7 CisKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIC1FSU5WQUw7Cit9CisKIC8qKgogICogZHJt X2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2hkbWlfY2hlY2soKSAtIEhlbHBlciB0byBjaGVjayBI RE1JIGNvbm5lY3RvciBhdG9taWMgc3RhdGUKICAqIEBjb25uZWN0b3I6IERSTSBDb25uZWN0b3IK ICAqIEBzdGF0ZTogdGhlIERSTSBTdGF0ZSBvYmplY3QKICAqCkBAIC0xMTMsMTMgKzMwOCwxMSBA QCBpbnQgZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2hkbWlfY2hlY2soc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKIAkJZHJtX2F0b21pY19nZXRfbmV3X2Nvbm5lY3Rvcl9zdGF0 ZShzdGF0ZSwgY29ubmVjdG9yKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSA9CiAJCWNvbm5lY3Rvcl9zdGF0ZV9nZXRfbW9kZShuZXdfY29ubl9zdGF0ZSk7CiAJaW50IHJl dDsKIAotCXJldCA9IGhkbWlfY29tcHV0ZV9jbG9jayhjb25uZWN0b3IsIG5ld19jb25uX3N0YXRl LCBtb2RlLAotCQkJCSBuZXdfY29ubl9zdGF0ZS0+aGRtaS5vdXRwdXRfYnBjLAotCQkJCSBuZXdf Y29ubl9zdGF0ZS0+aGRtaS5vdXRwdXRfZm9ybWF0KTsKKwlyZXQgPSBoZG1pX2NvbXB1dGVfY29u ZmlnKGNvbm5lY3RvciwgbmV3X2Nvbm5fc3RhdGUsIG1vZGUpOwogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKIAlpZiAob2xkX2Nvbm5fc3RhdGUtPmhkbWkub3V0cHV0X2JwYyAhPSBuZXdfY29u bl9zdGF0ZS0+aGRtaS5vdXRwdXRfYnBjIHx8CiAJICAgIG9sZF9jb25uX3N0YXRlLT5oZG1pLm91 dHB1dF9mb3JtYXQgIT0gbmV3X2Nvbm5fc3RhdGUtPmhkbWkub3V0cHV0X2Zvcm1hdCkgewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rlc3RzL2RybV9oZG1pX3N0YXRlX2hlbHBlcl90ZXN0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVzdHMvZHJtX2hkbWlfc3RhdGVfaGVscGVyX3Rlc3QuYwpp bmRleCBlYWQ5OThhNjkxZTcuLmE0OWE1NDRkN2I0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3Rlc3RzL2RybV9oZG1pX3N0YXRlX2hlbHBlcl90ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3Rlc3RzL2RybV9oZG1pX3N0YXRlX2hlbHBlcl90ZXN0LmMKQEAgLTcwLDEzICs3MCwxMCBA QCBzdGF0aWMgaW50IGxpZ2h0X3VwX2Nvbm5lY3RvcihzdHJ1Y3Qga3VuaXQgKnRlc3QsCiAJS1VO SVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBzdGF0ZSk7CiAKIAljb25uX3N0YXRlID0g ZHJtX2F0b21pY19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOwogCUtVTklU X0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgY29ubl9zdGF0ZSk7CiAKLQljb25uX3N0YXRl LT5oZG1pLm91dHB1dF9icGMgPSBjb25uZWN0b3ItPm1heF9icGM7Ci0JY29ubl9zdGF0ZS0+aGRt aS5vdXRwdXRfZm9ybWF0ID0gSERNSV9DT0xPUlNQQUNFX1JHQjsKLQogCXJldCA9IGRybV9hdG9t aWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihjb25uX3N0YXRlLCBjcnRjKTsKIAlLVU5JVF9FWFBF Q1RfRVEodGVzdCwgcmV0LCAwKTsKIAogCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jcnRj X3N0YXRlKHN0YXRlLCBjcnRjKTsKIAlLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3Qs IGNydGNfc3RhdGUpOwpAQCAtMjUxLDE0ICsyNDgsMTkgQEAgc3RhdGljIHZvaWQgZHJtX3Rlc3Rf Y2hlY2tfb3V0cHV0X2JwY19jcnRjX21vZGVfY2hhbmdlZChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJ cHJpdiA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9oZG1pX2luaXQodGVzdCwKIAkJCQkJ CSAgICAgQklUKEhETUlfQ09MT1JTUEFDRV9SR0IpLAogCQkJCQkJICAgICAxMCk7CiAJS1VOSVRf QVNTRVJUX05PVF9OVUxMKHRlc3QsIHByaXYpOwogCisJY29ubiA9ICZwcml2LT5jb25uZWN0b3I7 CisJcmV0ID0gc2V0X2Nvbm5lY3Rvcl9lZGlkKHRlc3QsIGNvbm4sCisJCQkJIHRlc3RfZWRpZF9o ZG1pXzEwODBwX3JnYl95dXZfZGNfbWF4XzIwMG1oeiwKKwkJCQkgQVJSQVlfU0laRSh0ZXN0X2Vk aWRfaGRtaV8xMDgwcF9yZ2JfeXV2X2RjX21heF8yMDBtaHopKTsKKwlLVU5JVF9BU1NFUlRfRVEo dGVzdCwgcmV0LCAwKTsKKwogCWN0eCA9IGRybV9rdW5pdF9oZWxwZXJfYWNxdWlyZV9jdHhfYWxs b2ModGVzdCk7CiAJS1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBjdHgpOwogCi0J Y29ubiA9ICZwcml2LT5jb25uZWN0b3I7CiAJcHJlZmVycmVkID0gZmluZF9wcmVmZXJyZWRfbW9k ZShjb25uKTsKIAlLVU5JVF9BU1NFUlRfTk9UX05VTEwodGVzdCwgcHJlZmVycmVkKTsKIAogCWRy bSA9ICZwcml2LT5kcm07CiAJY3J0YyA9IHByaXYtPmNydGM7CkBAIC0yNzIsMTUgKzI3NCwxNSBA QCBzdGF0aWMgdm9pZCBkcm1fdGVzdF9jaGVja19vdXRwdXRfYnBjX2NydGNfbW9kZV9jaGFuZ2Vk KHN0cnVjdCBrdW5pdCAqdGVzdCkKIAlLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3Qs IG5ld19jb25uX3N0YXRlKTsKIAogCW9sZF9jb25uX3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xk X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgY29ubik7CiAJS1VOSVRfQVNTRVJUX05PVF9FUlJfT1Jf TlVMTCh0ZXN0LCBvbGRfY29ubl9zdGF0ZSk7CiAKLQluZXdfY29ubl9zdGF0ZS0+aGRtaS5vdXRw dXRfYnBjID0gODsKKwluZXdfY29ubl9zdGF0ZS0+bWF4X3JlcXVlc3RlZF9icGMgPSA4OwogCiAJ S1VOSVRfQVNTRVJUX05FKHRlc3QsCi0JCQlvbGRfY29ubl9zdGF0ZS0+aGRtaS5vdXRwdXRfYnBj LAotCQkJbmV3X2Nvbm5fc3RhdGUtPmhkbWkub3V0cHV0X2JwYyk7CisJCQlvbGRfY29ubl9zdGF0 ZS0+bWF4X3JlcXVlc3RlZF9icGMsCisJCQluZXdfY29ubl9zdGF0ZS0+bWF4X3JlcXVlc3RlZF9i cGMpOwogCiAJcmV0ID0gZHJtX2F0b21pY19jaGVja19vbmx5KHN0YXRlKTsKIAlLVU5JVF9BU1NF UlRfRVEodGVzdCwgcmV0LCAwKTsKIAogCW9sZF9jb25uX3N0YXRlID0gZHJtX2F0b21pY19nZXRf b2xkX2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgY29ubik7CkBAIC0zMjAsMTQgKzMyMiwxOSBAQCBz dGF0aWMgdm9pZCBkcm1fdGVzdF9jaGVja19vdXRwdXRfYnBjX2NydGNfbW9kZV9ub3RfY2hhbmdl ZChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJcHJpdiA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rv cl9oZG1pX2luaXQodGVzdCwKIAkJCQkJCSAgICAgQklUKEhETUlfQ09MT1JTUEFDRV9SR0IpLAog CQkJCQkJICAgICAxMCk7CiAJS1VOSVRfQVNTRVJUX05PVF9OVUxMKHRlc3QsIHByaXYpOwogCisJ Y29ubiA9ICZwcml2LT5jb25uZWN0b3I7CisJcmV0ID0gc2V0X2Nvbm5lY3Rvcl9lZGlkKHRlc3Qs IGNvbm4sCisJCQkJIHRlc3RfZWRpZF9oZG1pXzEwODBwX3JnYl95dXZfZGNfbWF4XzIwMG1oeiwK KwkJCQkgQVJSQVlfU0laRSh0ZXN0X2VkaWRfaGRtaV8xMDgwcF9yZ2JfeXV2X2RjX21heF8yMDBt aHopKTsKKwlLVU5JVF9BU1NFUlRfRVEodGVzdCwgcmV0LCAwKTsKKwogCWN0eCA9IGRybV9rdW5p dF9oZWxwZXJfYWNxdWlyZV9jdHhfYWxsb2ModGVzdCk7CiAJS1VOSVRfQVNTRVJUX05PVF9FUlJf T1JfTlVMTCh0ZXN0LCBjdHgpOwogCi0JY29ubiA9ICZwcml2LT5jb25uZWN0b3I7CiAJcHJlZmVy cmVkID0gZmluZF9wcmVmZXJyZWRfbW9kZShjb25uKTsKIAlLVU5JVF9BU1NFUlRfTk9UX05VTEwo dGVzdCwgcHJlZmVycmVkKTsKIAogCWRybSA9ICZwcml2LT5kcm07CiAJY3J0YyA9IHByaXYtPmNy dGM7CkBAIC02NzAsMTEgKzY3NywxMSBAQCBzdGF0aWMgdm9pZCBkcm1fdGVzdF9jaGVja19mb3Jt YXRfdmFsdWUoc3RydWN0IGt1bml0ICp0ZXN0KQogCQkJCQkJICAgICA4KTsKIAlLVU5JVF9BU1NF UlRfTk9UX05VTEwodGVzdCwgcHJpdik7CiAKIAljb25uID0gJnByaXYtPmNvbm5lY3RvcjsKIAlj b25uX3N0YXRlID0gY29ubi0+c3RhdGU7Ci0JS1VOSVRfRVhQRUNUX0VRKHRlc3QsIGNvbm5fc3Rh dGUtPmhkbWkub3V0cHV0X2Zvcm1hdCwgSERNSV9DT0xPUlNQQUNFX1JHQik7CisJS1VOSVRfRVhQ RUNUX0VRKHRlc3QsIGNvbm5fc3RhdGUtPmhkbWkub3V0cHV0X2Zvcm1hdCwgMCk7CiB9CiAKIC8q CiAgKiBUZXN0IHRoYXQgdGhlIHZhbHVlIG9mIHRoZSBvdXRwdXQgZm9ybWF0IHByb3BlcnR5IG91 dCBvZiByZXNldCBpcyBzZXQKICAqIHRvIDAsIGFuZCB3aWxsIGJlIGNvbXB1dGVkIGF0IGF0b21p Y19jaGVjayB0aW1lLgoKLS0gCjIuNDUuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK