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 EEFA0C5AD2B for ; Sat, 8 Aug 2026 09:58:26 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lcQdCly9E2hTQoFBE7y+T8Tnb1gHw1mcH+nP1HKg6JQ=; b=yDJFkhm3gebeKJ qroH0CkQ69yEJWNJEQBZbUDe5/WzAPpdcjGj4NRa8T0pk7aLjh+iJz4GuiyEm9gHSFoBg1arAbaYE +V/wTXNxl22BlgB+ZEeGD/SiCBISjfU8r/h+yPtleYLy5a9bs5Aw7pVhrgnY8xqqNnAhH31dCD3zu 93NVfju5E716MSmqpmXzmiPphGEWgw6u90lod4cYVJMdppzxomOqyF3yqb6U9mbAVpdj3fn8LAd19 hpFhiPaO+/YQYYqaJNdfZwLa6wPi9+Ir4NZa9b3YYgQ831CZ/1C0XVH2UUCBw/FUFZ7MQf3lpQdig qT8ksIhisEfDQWqWeHaQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wsdot-00000009F0A-3ZKO; Sat, 08 Aug 2026 09:58:23 +0000 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wsdoq-00000009Ey1-3vju for linux-rockchip@lists.infradead.org; Sat, 08 Aug 2026 09:58:22 +0000 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-47fe45db360so32565f8f.2 for ; Sat, 08 Aug 2026 02:58:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786183099; x=1786787899; darn=lists.infradead.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=LUzFgsK+uW+0joiMTH75XmXXqtMHA5YYrGPdzifhZ7c=; b=hMn8i72qeHcT4NpZtDROKitus2ErF/Q6iKTFr5bZrg9ogOyUFMnY6fQPR06ITHPgFg Q1Rn6J7pEXefWw4qqrAQ9erMvKfJZhbdt0ld+UFSwInb6uexbilmfuegFlXt1xMaoyK5 h6z0IQUxKE3RZtaYTtm7kfftQpkXYN9Y6L/ZAK3HRi/EN7lmaNnTmzwln0dtA0GD78fG N2MBmNJ3eBmZp+DoHN145poaN2wS8sVxrEJR6l54JOfYlJ5V5cJRBZVvhmrWJpr8Bv3u rLV+auEPPHEpEPNfz9OyTT8N2KL2k/+s3Ac8q0W+zRErvxQYDDEyvBhYHoEBG2rOoq3d Nb9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786183099; x=1786787899; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=LUzFgsK+uW+0joiMTH75XmXXqtMHA5YYrGPdzifhZ7c=; b=WnApKmKqNUfavH2uCOxAPr64X+qZ2n2AXQjzaPkem3djJhIPDqIwtkc8558qhhnj2+ wb5FBswdTiXbaiATGYfmsTzzNsn6huZjifW9/igSzK9AUL97Ibrv1J5AtuaDAQZMcaqe I6IQ50tOOphiVch4b7dqCmcfxlGKPbnw9S+D+3QqtDgkrc0k7GApBqldUSQqWj7YlO2R Xj03p2N7sycKJnGFgAJ20A0YsRWkPKJgZj/1YvqFuogUst3S1s7xqGUq/es+FqKhRP5O 49dLgo9Y+//I0zqLL2WKLGUpe9RCZYz6kQYYlXwSiEbWiWsT+veNCxznhqPRbK6MtK/G EkNw== X-Forwarded-Encrypted: i=1; AHgh+RptQGGcxySwzOIz1pZrLm0D5XH7KAFjUzDSWQ5lXEhuD+HgMwiujCtdnLXMw1Ju8cyX1duUTnD8be8RqWUL3g==@lists.infradead.org X-Gm-Message-State: AOJu0YwavbbpL4C5HZ/qdMTIQB5zKVYpMBG4gGTODCrlZVYlpO8HDi+F jTcu9Q9YJhXxvwRFYBH5QXbb4ZxIi5XyQumLxVBwiNZKqS/75VlbRZXY X-Gm-Gg: AR+sD12Gk53LAkusRJ+scoBEyiVz/S8u6bzFiY9QP/nn4rQXgjFdZ79wl8iME2WDjZg EedIYJfTWAwyc/OFo8+vQjY+nu393P5GFwrCi2USPeeCwyBDZfUTYaR95yvQfKiRIfVkdVGYLNS ZWN6itBJdI3l5fpsA47vHAVbnIb4CGOAYPKrCRhtLnGWQXqGvfUSZuny4FN04kJYCwSopo7VlvY +PMrcXJIm934YZZ/dOsee/1fcjBZzYhTCKpwxVwsdzVQUcyQPhRbtXf/FUOJokxkI+wZ5laQ6TS lM8LZEB9S9rrC8+2pudP/3e8sdy+S+ZA+5owQU/5ZzG0Cg49Tx8YiKjIVnxBu0jPtrl2jXPxxLK kFP/0DTsL2wdXZuAqhF1EnBqtF/PeBTccS4XdMDtZ72jabYndUqz9Gy+daEAXQEYmNQkDEL0DEZ s4Q0dSlg60+C+KaePteS4oIlmozm6fjgSu6hOBxtwsYOsiBe7jKIQHXRcJWIS6Z91atQLJUpGD6 yidKvZOvFWrSSy+uOT7dJWuXr8O+jkBx5ymrFzRqgzZ0oRH8O5n6krtm7smq3qfEo3ZPA== X-Received: by 2002:a05:6000:410e:b0:47f:e8af:7687 with SMTP id ffacd0b85a97d-47fec4ea9f6mr15258182f8f.1.1786183098980; Sat, 08 Aug 2026 02:58:18 -0700 (PDT) Received: from OrangePi5-Plus.BB-HOME (20014C4E1B8E20009911270F4BEC2300.dsl.pool.telekom.hu. [2001:4c4e:1b8e:2000:9911:270f:4bec:2300]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-480020be8f3sm13255725f8f.0.2026.08.08.02.58.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 02:58:18 -0700 (PDT) From: Igor Paunovic To: dri-devel@lists.freedesktop.org Subject: [PATCH 1/5] drm/dp: Add drm_dp_hdr_metadata_infoframe_sdp_pack() Date: Sat, 8 Aug 2026 11:57:20 +0200 Message-ID: <20260808095749.9428-2-royalnet026@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260808095749.9428-1-royalnet026@gmail.com> References: <20260808095749.9428-1-royalnet026@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260808_025821_023124_A353E0DC X-CRM114-Status: GOOD ( 21.13 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Heiko=20St=C3=BCbner?= , Imre Deak , Sandy Huang , Laurent Pinchart , Andrzej Hajda , David Airlie , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Simona Vetter , Robert Foss , Sebastian Reichel , Jernej Skrabec , linux-rockchip@lists.infradead.org, Ankit Nautiyal , Luca Ceresoli , Igor Paunovic , Jonas Karlman , intel-gfx@lists.freedesktop.org, Maarten Lankhorst , Maxime Ripard , Jani Nikula , Rodrigo Vivi , intel-xe@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, Dmitry Baryshkov , Neil Armstrong , linux-kernel@vger.kernel.org, Thomas Zimmermann , Andy Yan Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org aTkxNSBwYWNrcyBIRFIgc3RhdGljIG1ldGFkYXRhIGludG8gYW4gSERSIE1ldGFkYXRhIEluZm9G cmFtZSBTRFAKKERQIDEuNGEgc3BlYywgVGFibGUgMi0xMDAgYW5kIFRhYmxlIDItMTAxKSB3aXRo IGEgZHJpdmVyLXByaXZhdGUKaGVscGVyLCBpbnRlbF9kcF9oZHJfbWV0YWRhdGFfaW5mb2ZyYW1l X3NkcF9wYWNrKCkuIE5vdGhpbmcgaW4gaXQgaXMKaTkxNSBzcGVjaWZpYzogaXQgY29udmVydHMg YSBnZW5lcmljIHN0cnVjdCBoZG1pX2RybV9pbmZvZnJhbWUgaW50byBhCmdlbmVyaWMgc3RydWN0 IGRwX3NkcC4KCk1vdmUgaXQgdG8gZHJtX2RwX2hlbHBlci5jIGFzIGRybV9kcF9oZHJfbWV0YWRh dGFfaW5mb2ZyYW1lX3NkcF9wYWNrKCksCm5leHQgdG8gZHJtX2RwX3ZzY19zZHBfcGFjaygpLCBh bmQgY29udmVydCBpOTE1IHRvIHRoZSBuZXcgaGVscGVyLiBUaGUKU3lub3BzeXMgRGVzaWduV2Fy ZSBEaXNwbGF5UG9ydCBicmlkZ2UgZHJpdmVyIChkdy1kcCkgbmVlZHMgdG8gc2VuZCB0aGUKc2Ft ZSBTRFAgdG8gc3VwcG9ydCBIRFIgYW5kIHNob3VsZCBub3QgaGF2ZSB0byBkdXBsaWNhdGUgdGhl IHBhY2tpbmcKY29kZS4KClRoZSBoZWxwZXIgdGFrZXMgYSBzdHJ1Y3QgZHJtX2RldmljZSBwb2lu dGVyIGluIHBsYWNlIG9mIHRoZSBpOTE1CmRpc3BsYXkgcG9pbnRlciBmb3IgaXRzIHR3byBkZWJ1 ZyBtZXNzYWdlcywgYW5kIGFuIGk5MTUtc3BlY2lmaWMKY29tbWVudCBhYm91dCBHRU4xMSsgR01Q IHJlZ2lzdGVyIHNpemVzIGlzIGRyb3BwZWQuIE5vIGZ1bmN0aW9uYWwKY2hhbmdlLgoKU2lnbmVk LW9mZi1ieTogSWdvciBQYXVub3ZpYyA8cm95YWxuZXQwMjZAZ21haWwuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuYyB8IDg4ICsrKysrKysrKysrKysrKysr KysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyB8IDg0ICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIu aCAgICAgfCAgNCArKwogMyBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCA4MSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVs cGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmMKaW5kZXggOWMz MWUxNGNjNDEzLi43YjNiMDc5NDAzYzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kaXNw bGF5L2RybV9kcF9oZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBf aGVscGVyLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDxsaW51eC9keW5hbWljX2RlYnVn Lmg+CiAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KICNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4K KyNpbmNsdWRlIDxsaW51eC9oZG1pLmg+CiAjaW5jbHVkZSA8bGludXgvaTJjLmg+CiAjaW5jbHVk ZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgpAQCAtMzY3Miw2ICsz NjczLDkzIEBAIHNzaXplX3QgZHJtX2RwX3ZzY19zZHBfcGFjayhjb25zdCBzdHJ1Y3QgZHJtX2Rw X3ZzY19zZHAgKnZzYywKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2RwX3ZzY19zZHBfcGFjayk7CiAK Ky8qKgorICogZHJtX2RwX2hkcl9tZXRhZGF0YV9pbmZvZnJhbWVfc2RwX3BhY2soKSAtIHBhY2sg SERSIE1ldGFkYXRhIEluZm9GcmFtZSBTRFAKKyAqIEBkZXY6IERSTSBkZXZpY2UKKyAqIEBkcm1f aW5mb2ZyYW1lOiBIRE1JIERSTSBpbmZvZnJhbWUgY2FycnlpbmcgdGhlIEhEUiBzdGF0aWMgbWV0 YWRhdGEKKyAqIEBzZHA6IHZhbGlkIGhhbmRsZSB0byB0aGUgZ2VuZXJpYyBkcF9zZHAgd2hpY2gg d2lsbCBiZSBwYWNrZWQKKyAqIEBzaXplOiB2YWxpZCBzaXplIG9mIHRoZSBwYXNzZWQgc2RwIGhh bmRsZQorICoKKyAqIFBhY2sgYSBDVEEtODYxIER5bmFtaWMgUmFuZ2UgYW5kIE1hc3RlcmluZyBp bmZvZnJhbWUgaW50byBhbiBIRFIKKyAqIE1ldGFkYXRhIEluZm9GcmFtZSBTRFAsIGFzIGRlZmlu ZWQgaW4gRFAgMS40YSBzcGVjLCBUYWJsZSAyLTEwMCBhbmQKKyAqIFRhYmxlIDItMTAxLgorICoK KyAqIFJldHVybnM6IGxlbmd0aCBvZiBzZHAgb24gc3VjY2VzcyBhbmQgZXJyb3IgY29kZSBvbiBm YWlsdXJlCisgKi8KK3NzaXplX3QgZHJtX2RwX2hkcl9tZXRhZGF0YV9pbmZvZnJhbWVfc2RwX3Bh Y2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBoZG1p X2RybV9pbmZvZnJhbWUgKmRybV9pbmZvZnJhbWUsCisJCQkJCSAgICAgICBzdHJ1Y3QgZHBfc2Rw ICpzZHAsCisJCQkJCSAgICAgICBzaXplX3Qgc2l6ZSkKK3sKKwlzaXplX3QgbGVuZ3RoID0gc2l6 ZW9mKHN0cnVjdCBkcF9zZHApOworCWNvbnN0IGludCBpbmZvZnJhbWVfc2l6ZSA9IEhETUlfSU5G T0ZSQU1FX0hFQURFUl9TSVpFICsgSERNSV9EUk1fSU5GT0ZSQU1FX1NJWkU7CisJdW5zaWduZWQg Y2hhciBidWZbSERNSV9JTkZPRlJBTUVfSEVBREVSX1NJWkUgKyBIRE1JX0RSTV9JTkZPRlJBTUVf U0laRV07CisJc3NpemVfdCBsZW47CisKKwlpZiAoc2l6ZSA8IGxlbmd0aCkKKwkJcmV0dXJuIC1F Tk9TUEM7CisKKwltZW1zZXQoc2RwLCAwLCBzaXplKTsKKworCWxlbiA9IGhkbWlfZHJtX2luZm9m cmFtZV9wYWNrX29ubHkoZHJtX2luZm9mcmFtZSwgYnVmLCBzaXplb2YoYnVmKSk7CisJaWYgKGxl biA8IDApIHsKKwkJZHJtX2RiZ19rbXMoZGV2LAorCQkJICAgICJidWZmZXIgc2l6ZSBpcyBzbWFs bGVyIHRoYW4gaGRyIG1ldGFkYXRhIGluZm9mcmFtZVxuIik7CisJCXJldHVybiAtRU5PU1BDOwor CX0KKworCWlmIChsZW4gIT0gaW5mb2ZyYW1lX3NpemUpIHsKKwkJZHJtX2RiZ19rbXMoZGV2LCAi d3Jvbmcgc3RhdGljIGhkciBtZXRhZGF0YSBzaXplXG4iKTsKKwkJcmV0dXJuIC1FTk9TUEM7CisJ fQorCisJLyoKKwkgKiBTZXQgdXAgdGhlIGluZm9mcmFtZSBzZHAgcGFja2V0IGZvciBIRFIgc3Rh dGljIG1ldGFkYXRhLgorCSAqIFByZXBhcmUgVlNDIEhlYWRlciBmb3IgU1UgYXMgcGVyIERQIDEu NGEgc3BlYywKKwkgKiBUYWJsZSAyLTEwMCBhbmQgVGFibGUgMi0xMDEKKwkgKi8KKworCS8qIFNl Y29uZGFyeS1EYXRhIFBhY2tldCBJRCwgMDBoIGZvciBub24tQXVkaW8gSU5GT0ZSQU1FICovCisJ c2RwLT5zZHBfaGVhZGVyLkhCMCA9IDA7CisJLyoKKwkgKiBQYWNrZXQgVHlwZSA4MGggKyBOb24t YXVkaW8gSU5GT0ZSQU1FIFR5cGUgdmFsdWUKKwkgKiBIRE1JX0lORk9GUkFNRV9UWVBFX0RSTTog MHg4NworCSAqIC0gODBoICsgTm9uLWF1ZGlvIElORk9GUkFNRSBUeXBlIHZhbHVlCisJICogLSBJ bmZvRnJhbWUgVHlwZTogMHgwNworCSAqICAgIFtDVEEtODYxLUcgVGFibGUtNDIgRHluYW1pYyBS YW5nZSBhbmQgTWFzdGVyaW5nIEluZm9GcmFtZV0KKwkgKi8KKwlzZHAtPnNkcF9oZWFkZXIuSEIx ID0gZHJtX2luZm9mcmFtZS0+dHlwZTsKKwkvKgorCSAqIExlYXN0IFNpZ25pZmljYW50IEVpZ2h0 IEJpdHMgb2YgKERhdGEgQnl0ZSBDb3VudCDigJMgMSkKKwkgKiBpbmZvZnJhbWVfc2l6ZSAtIDEK KwkgKi8KKwlzZHAtPnNkcF9oZWFkZXIuSEIyID0gMHgxRDsKKwkvKiBJTkZPRlJBTUUgU0RQIFZl cnNpb24gTnVtYmVyICovCisJc2RwLT5zZHBfaGVhZGVyLkhCMyA9ICgweDEzIDw8IDIpOworCS8q IENUQSBIZWFkZXIgQnl0ZSAyIChJTkZPRlJBTUUgVmVyc2lvbiBOdW1iZXIpICovCisJc2RwLT5k YlswXSA9IGRybV9pbmZvZnJhbWUtPnZlcnNpb247CisJLyogQ1RBIEhlYWRlciBCeXRlIDMgKExl bmd0aCBvZiBJTkZPRlJBTUUpOiBIRE1JX0RSTV9JTkZPRlJBTUVfU0laRSAqLworCXNkcC0+ZGJb MV0gPSBkcm1faW5mb2ZyYW1lLT5sZW5ndGg7CisJLyoKKwkgKiBDb3B5IEhETUlfRFJNX0lORk9G UkFNRV9TSVpFIHNpemUgZnJvbSBhIGJ1ZmZlciBhZnRlcgorCSAqIEhETUlfSU5GT0ZSQU1FX0hF QURFUl9TSVpFCisJICovCisJQlVJTERfQlVHX09OKHNpemVvZihzZHAtPmRiKSA8IEhETUlfRFJN X0lORk9GUkFNRV9TSVpFICsgMik7CisJbWVtY3B5KCZzZHAtPmRiWzJdLCAmYnVmW0hETUlfSU5G T0ZSQU1FX0hFQURFUl9TSVpFXSwKKwkgICAgICAgSERNSV9EUk1fSU5GT0ZSQU1FX1NJWkUpOwor CisJLyoKKwkgKiBTaXplIG9mIERQIGluZm9mcmFtZSBzZHAgcGFja2V0IGZvciBIRFIgc3RhdGlj IG1ldGFkYXRhIGNvbnNpc3RzIG9mCisJICogLSBEUCBTRFAgSGVhZGVyKHN0cnVjdCBkcF9zZHBf aGVhZGVyKTogNCBieXRlcworCSAqIC0gVHdvIERhdGEgQmxvY2tzOiAyIGJ5dGVzCisJICogICAg Q1RBIEhlYWRlciBCeXRlMiAoSU5GT0ZSQU1FIFZlcnNpb24gTnVtYmVyKQorCSAqICAgIENUQSBI ZWFkZXIgQnl0ZTMgKExlbmd0aCBvZiBJTkZPRlJBTUUpCisJICogLSBIRE1JX0RSTV9JTkZPRlJB TUVfU0laRTogMjYgYnl0ZXMKKwkgKi8KKwlyZXR1cm4gc2l6ZW9mKHN0cnVjdCBkcF9zZHBfaGVh ZGVyKSArIDIgKyBIRE1JX0RSTV9JTkZPRlJBTUVfU0laRTsKK30KK0VYUE9SVF9TWU1CT0woZHJt X2RwX2hkcl9tZXRhZGF0YV9pbmZvZnJhbWVfc2RwX3BhY2spOworCiAvKioKICAqIGRybV9kcF9n ZXRfcGNvbl9tYXhfZnJsX2J3KCkgLSBtYXhpbXVtIGZybCBzdXBwb3J0ZWQgYnkgUENPTgogICog QGRwY2Q6IERpc3BsYXlQb3J0IGNvbmZpZ3VyYXRpb24gZGF0YQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kcC5jCmluZGV4IDZlM2ZhNjY2MmNiZS4uMDkzYTNiNzk2MWY3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCkBAIC01MTU3LDg0ICs1MTU3LDYg QEAgc3RhdGljIHNzaXplX3QgaW50ZWxfZHBfYXNfc2RwX3BhY2soY29uc3Qgc3RydWN0IGRybV9k cF9hc19zZHAgKmFzX3NkcCwKIAlyZXR1cm4gbGVuZ3RoOwogfQogCi1zdGF0aWMgc3NpemVfdAot aW50ZWxfZHBfaGRyX21ldGFkYXRhX2luZm9mcmFtZV9zZHBfcGFjayhzdHJ1Y3QgaW50ZWxfZGlz cGxheSAqZGlzcGxheSwKLQkJCQkJIGNvbnN0IHN0cnVjdCBoZG1pX2RybV9pbmZvZnJhbWUgKmRy bV9pbmZvZnJhbWUsCi0JCQkJCSBzdHJ1Y3QgZHBfc2RwICpzZHAsCi0JCQkJCSBzaXplX3Qgc2l6 ZSkKLXsKLQlzaXplX3QgbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBkcF9zZHApOwotCWNvbnN0IGlu dCBpbmZvZnJhbWVfc2l6ZSA9IEhETUlfSU5GT0ZSQU1FX0hFQURFUl9TSVpFICsgSERNSV9EUk1f SU5GT0ZSQU1FX1NJWkU7Ci0JdW5zaWduZWQgY2hhciBidWZbSERNSV9JTkZPRlJBTUVfSEVBREVS X1NJWkUgKyBIRE1JX0RSTV9JTkZPRlJBTUVfU0laRV07Ci0Jc3NpemVfdCBsZW47Ci0KLQlpZiAo c2l6ZSA8IGxlbmd0aCkKLQkJcmV0dXJuIC1FTk9TUEM7Ci0KLQltZW1zZXQoc2RwLCAwLCBzaXpl KTsKLQotCWxlbiA9IGhkbWlfZHJtX2luZm9mcmFtZV9wYWNrX29ubHkoZHJtX2luZm9mcmFtZSwg YnVmLCBzaXplb2YoYnVmKSk7Ci0JaWYgKGxlbiA8IDApIHsKLQkJZHJtX2RiZ19rbXMoZGlzcGxh eS0+ZHJtLAotCQkJICAgICJidWZmZXIgc2l6ZSBpcyBzbWFsbGVyIHRoYW4gaGRyIG1ldGFkYXRh IGluZm9mcmFtZVxuIik7Ci0JCXJldHVybiAtRU5PU1BDOwotCX0KLQotCWlmIChsZW4gIT0gaW5m b2ZyYW1lX3NpemUpIHsKLQkJZHJtX2RiZ19rbXMoZGlzcGxheS0+ZHJtLCAid3Jvbmcgc3RhdGlj IGhkciBtZXRhZGF0YSBzaXplXG4iKTsKLQkJcmV0dXJuIC1FTk9TUEM7Ci0JfQotCi0JLyoKLQkg KiBTZXQgdXAgdGhlIGluZm9mcmFtZSBzZHAgcGFja2V0IGZvciBIRFIgc3RhdGljIG1ldGFkYXRh LgotCSAqIFByZXBhcmUgVlNDIEhlYWRlciBmb3IgU1UgYXMgcGVyIERQIDEuNGEgc3BlYywKLQkg KiBUYWJsZSAyLTEwMCBhbmQgVGFibGUgMi0xMDEKLQkgKi8KLQotCS8qIFNlY29uZGFyeS1EYXRh IFBhY2tldCBJRCwgMDBoIGZvciBub24tQXVkaW8gSU5GT0ZSQU1FICovCi0Jc2RwLT5zZHBfaGVh ZGVyLkhCMCA9IDA7Ci0JLyoKLQkgKiBQYWNrZXQgVHlwZSA4MGggKyBOb24tYXVkaW8gSU5GT0ZS QU1FIFR5cGUgdmFsdWUKLQkgKiBIRE1JX0lORk9GUkFNRV9UWVBFX0RSTTogMHg4NwotCSAqIC0g ODBoICsgTm9uLWF1ZGlvIElORk9GUkFNRSBUeXBlIHZhbHVlCi0JICogLSBJbmZvRnJhbWUgVHlw ZTogMHgwNwotCSAqICAgIFtDVEEtODYxLUcgVGFibGUtNDIgRHluYW1pYyBSYW5nZSBhbmQgTWFz dGVyaW5nIEluZm9GcmFtZV0KLQkgKi8KLQlzZHAtPnNkcF9oZWFkZXIuSEIxID0gZHJtX2luZm9m cmFtZS0+dHlwZTsKLQkvKgotCSAqIExlYXN0IFNpZ25pZmljYW50IEVpZ2h0IEJpdHMgb2YgKERh dGEgQnl0ZSBDb3VudCDigJMgMSkKLQkgKiBpbmZvZnJhbWVfc2l6ZSAtIDEKLQkgKi8KLQlzZHAt PnNkcF9oZWFkZXIuSEIyID0gMHgxRDsKLQkvKiBJTkZPRlJBTUUgU0RQIFZlcnNpb24gTnVtYmVy ICovCi0Jc2RwLT5zZHBfaGVhZGVyLkhCMyA9ICgweDEzIDw8IDIpOwotCS8qIENUQSBIZWFkZXIg Qnl0ZSAyIChJTkZPRlJBTUUgVmVyc2lvbiBOdW1iZXIpICovCi0Jc2RwLT5kYlswXSA9IGRybV9p bmZvZnJhbWUtPnZlcnNpb247Ci0JLyogQ1RBIEhlYWRlciBCeXRlIDMgKExlbmd0aCBvZiBJTkZP RlJBTUUpOiBIRE1JX0RSTV9JTkZPRlJBTUVfU0laRSAqLwotCXNkcC0+ZGJbMV0gPSBkcm1faW5m b2ZyYW1lLT5sZW5ndGg7Ci0JLyoKLQkgKiBDb3B5IEhETUlfRFJNX0lORk9GUkFNRV9TSVpFIHNp emUgZnJvbSBhIGJ1ZmZlciBhZnRlcgotCSAqIEhETUlfSU5GT0ZSQU1FX0hFQURFUl9TSVpFCi0J ICovCi0JQlVJTERfQlVHX09OKHNpemVvZihzZHAtPmRiKSA8IEhETUlfRFJNX0lORk9GUkFNRV9T SVpFICsgMik7Ci0JbWVtY3B5KCZzZHAtPmRiWzJdLCAmYnVmW0hETUlfSU5GT0ZSQU1FX0hFQURF Ul9TSVpFXSwKLQkgICAgICAgSERNSV9EUk1fSU5GT0ZSQU1FX1NJWkUpOwotCi0JLyoKLQkgKiBT aXplIG9mIERQIGluZm9mcmFtZSBzZHAgcGFja2V0IGZvciBIRFIgc3RhdGljIG1ldGFkYXRhIGNv bnNpc3RzIG9mCi0JICogLSBEUCBTRFAgSGVhZGVyKHN0cnVjdCBkcF9zZHBfaGVhZGVyKTogNCBi eXRlcwotCSAqIC0gVHdvIERhdGEgQmxvY2tzOiAyIGJ5dGVzCi0JICogICAgQ1RBIEhlYWRlciBC eXRlMiAoSU5GT0ZSQU1FIFZlcnNpb24gTnVtYmVyKQotCSAqICAgIENUQSBIZWFkZXIgQnl0ZTMg KExlbmd0aCBvZiBJTkZPRlJBTUUpCi0JICogLSBIRE1JX0RSTV9JTkZPRlJBTUVfU0laRTogMjYg Ynl0ZXMKLQkgKgotCSAqIFByaW9yIHRvIEdFTjExJ3MgR01QIHJlZ2lzdGVyIHNpemUgaXMgaWRl bnRpY2FsIHRvIERQIEhEUiBzdGF0aWMgbWV0YWRhdGEKLQkgKiBpbmZvZnJhbWUgc2l6ZS4gQnV0 IEdFTjExKyBoYXMgbGFyZ2VyIHRoYW4gdGhhdCBzaXplLCB3cml0ZV9pbmZvZnJhbWUKLQkgKiB3 aWxsIHBhZCByZXN0IG9mIHRoZSBzaXplLgotCSAqLwotCXJldHVybiBzaXplb2Yoc3RydWN0IGRw X3NkcF9oZWFkZXIpICsgMiArIEhETUlfRFJNX0lORk9GUkFNRV9TSVpFOwotfQotCiBzdGF0aWMg dm9pZCBpbnRlbF93cml0ZV9kcF9zZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJ CQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkg ICAgICAgdW5zaWduZWQgaW50IHR5cGUpCkBAIC01MjUzLDkgKzUxNzUsOSBAQCBzdGF0aWMgdm9p ZCBpbnRlbF93cml0ZV9kcF9zZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCWxl biA9IGRybV9kcF92c2Nfc2RwX3BhY2soJmNydGNfc3RhdGUtPmluZm9mcmFtZXMudnNjLCAmc2Rw KTsKIAkJYnJlYWs7CiAJY2FzZSBIRE1JX1BBQ0tFVF9UWVBFX0dBTVVUX01FVEFEQVRBOgotCQls ZW4gPSBpbnRlbF9kcF9oZHJfbWV0YWRhdGFfaW5mb2ZyYW1lX3NkcF9wYWNrKGRpc3BsYXksCi0J CQkJCQkJICAgICAgICZjcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmRybS5kcm0sCi0JCQkJCQkJICAg ICAgICZzZHAsIHNpemVvZihzZHApKTsKKwkJbGVuID0gZHJtX2RwX2hkcl9tZXRhZGF0YV9pbmZv ZnJhbWVfc2RwX3BhY2soZGlzcGxheS0+ZHJtLAorCQkJCQkJCSAgICAgJmNydGNfc3RhdGUtPmlu Zm9mcmFtZXMuZHJtLmRybSwKKwkJCQkJCQkgICAgICZzZHAsIHNpemVvZihzZHApKTsKIAkJYnJl YWs7CiAJY2FzZSBEUF9TRFBfQURBUFRJVkVfU1lOQzoKIAkJbGVuID0gaW50ZWxfZHBfYXNfc2Rw X3BhY2soJmNydGNfc3RhdGUtPmluZm9mcmFtZXMuYXNfc2RwLCAmc2RwLApkaWZmIC0tZ2l0IGEv aW5jbHVkZS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kaXNwbGF5 L2RybV9kcF9oZWxwZXIuaAppbmRleCBhYjE2YzFiZTM5MDAuLmMxNTg2MjhmMGQzOCAxMDA2NDQK LS0tIGEvaW5jbHVkZS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmgKKysrIGIvaW5jbHVkZS9k cm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKIHN0cnVjdCBkcm1f ZGV2aWNlOwogc3RydWN0IGRybV9kcF9hdXg7CiBzdHJ1Y3QgZHJtX3BhbmVsOworc3RydWN0IGhk bWlfZHJtX2luZm9mcmFtZTsKIAogYm9vbCBkcm1fZHBfY2hhbm5lbF9lcV9vayhjb25zdCB1OCBs aW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSwKIAkJCSAgaW50IGxhbmVfY291bnQpOwpA QCAtMTAyOSw2ICsxMDMwLDkgQEAgaW50IGRybV9kcF9id19jaGFubmVsX2NvZGluZ19lZmZpY2ll bmN5KGJvb2wgaXNfdWhicik7CiBpbnQgZHJtX2RwX21heF9kcHJ4X2RhdGFfcmF0ZShpbnQgbWF4 X2xpbmtfcmF0ZSwgaW50IG1heF9sYW5lcyk7CiAKIHNzaXplX3QgZHJtX2RwX3ZzY19zZHBfcGFj ayhjb25zdCBzdHJ1Y3QgZHJtX2RwX3ZzY19zZHAgKnZzYywgc3RydWN0IGRwX3NkcCAqc2RwKTsK K3NzaXplX3QgZHJtX2RwX2hkcl9tZXRhZGF0YV9pbmZvZnJhbWVfc2RwX3BhY2soc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKKwkJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBoZG1pX2RybV9pbmZvZnJh bWUgKmRybV9pbmZvZnJhbWUsCisJCQkJCSAgICAgICBzdHJ1Y3QgZHBfc2RwICpzZHAsIHNpemVf dCBzaXplKTsKIGludCBkcm1fZHBfbGlua19zeW1ib2xfY3ljbGVzKGludCBsYW5lX2NvdW50LCBp bnQgcGl4ZWxzLCBpbnQgZHNjX3NsaWNlX2NvdW50LAogCQkJICAgICAgaW50IGJwcF94MTYsIGlu dCBzeW1ib2xfc2l6ZSwgYm9vbCBpc19tc3QpOwogCi0tIAoyLjQzLjAKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5n IGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg== 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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 25E8BC5AD4D for ; Sat, 8 Aug 2026 09:58:29 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 22FF110E4A5; Sat, 8 Aug 2026 09:58:27 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LMzi6hmK"; dkim-atps=neutral Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) by gabe.freedesktop.org (Postfix) with ESMTPS id 98F0D10E3FA for ; Sat, 8 Aug 2026 09:58:20 +0000 (UTC) Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-47f611b3af9so39199f8f.3 for ; Sat, 08 Aug 2026 02:58:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786183099; x=1786787899; darn=lists.freedesktop.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=LUzFgsK+uW+0joiMTH75XmXXqtMHA5YYrGPdzifhZ7c=; b=LMzi6hmKkjY30H/HAiya9mjZtxSw1K/PSze3hZHfE9vDCp1WvDwsuVoHadGRNH5Ue5 U9CQ1pLZoA5/igVTGbaH4C3oSgrK9AR2y/6XP3f929PXDjHjQDwz7VF9sQBdjGqGBDDP 5KVyx0zmRvL0PbFszj/e8YtYf2A5dfFPmq2soyjD3+NCQ852EGks6MyRbs4llois9AaF wvQtEkGLLgEPxLVd1U/tEAHEAXGLkB7atLhls5mzWxwVuylk9FKzPRX9oDF6sARcuMKf L+GFtU3xtT4t7ogb5KJf9eWVFwSKYsVPGoz/p7v65Y3MlgzCMt2uE7VOBjGcFRvkAaLo pPeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786183099; x=1786787899; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=LUzFgsK+uW+0joiMTH75XmXXqtMHA5YYrGPdzifhZ7c=; b=EUaZDjkBGgyCFiVSuW1tWqHIlBFmpeiofZHHfkuGld8FnZYb5TxMThyM11TU+DrqYh pujhY7aQN1uO9Y1iUJkai0O/x9jrBtlLjmxOBYZTJF1kdAqMMtSIqEjbj4bwFnNqgpQi lxvWt5N0Ebef6mES3qf3oS6ohJTDfXGncepcJuOhbBJPcgbUIIZs8w9vVw4DYU6lT31u kTfssk7hD0hHnNcbuAiZ+RC7Y049WeylNZl32OL+m2KCnmSiDz2bLnHFr9bdhnBBK2W1 cgnlvCfzel0K29SBX9Z1WAjVlZps98ic5ZOcqUlPpHCSe+WrS7ib+yyn10usfb+G4f2R nmjA== X-Gm-Message-State: AOJu0YxpEeRs953mYl+JuxTg1rd+uQ8eUcdr2/D9BU1WuYK4SFsCe7KQ ttg3Lj9HK1uzp/pJBCK05wLtndA1mwEkpuKBfSqhVdy8p2KbAJaUdbpm7aWm+McY X-Gm-Gg: AR+sD12Quo8P9GtsUVgDHAPNgscEoad4RsZDHv8RdHNEhiZ9oFLH71Eqr0XsEWBXsUd m2qI6zfnAe3Clxyj2RpRJqWj4SkvYkwNl76rjbz9NX1vMs8SDBaRNM8uleyXiwmrbp2HUkhOD6M gLcBVvxVAnnl2o5CXv/BrIQFP4DKaIW/psz8WrPq5JqU5ne6AENu8DRqf7Tedc9y5AQi0VUKxpW 2EeK83zFG7Z1dExG7RoYAsKM4umvOieJ0JsyLq6P92gl+TFLf/ykqHUDklvsITDRMLxDK9l+nHH Zb+8OFZNHtGiaUw9PiPLwg6o1wI8VTK9uZGwa6wo7pI3PqNW3wo5+cH+oYTaKzZqFSy1P2V54x8 W3TcMTmGBvJDBQUhPRskT7O0t7+j11H/rQFFzd6XEuJfZ6px6Kdbk8InZHdU3HXb2ga+v2fdBQz v5idpYhQ5lXmjKpxaiwK/2bY+Jpk9cLof/I35DUlWlibgqYSK7EzvmQT2ouZ9JjATe3GxcxZ7E2 SO9L12NhFOK88Jia6/BztDR9++/9sV3NfNnrToYlUjU2KlizkXmTQU45lg8ClWPBx2URA== X-Received: by 2002:a05:6000:410e:b0:47f:e8af:7687 with SMTP id ffacd0b85a97d-47fec4ea9f6mr15258182f8f.1.1786183098980; Sat, 08 Aug 2026 02:58:18 -0700 (PDT) Received: from OrangePi5-Plus.BB-HOME (20014C4E1B8E20009911270F4BEC2300.dsl.pool.telekom.hu. [2001:4c4e:1b8e:2000:9911:270f:4bec:2300]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-480020be8f3sm13255725f8f.0.2026.08.08.02.58.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 02:58:18 -0700 (PDT) From: Igor Paunovic To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Sebastian Reichel , Cristian Ciocaltea , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dmitry Baryshkov , Sandy Huang , =?UTF-8?q?Heiko=20St=C3=BCbner?= , Andy Yan , Jani Nikula , Rodrigo Vivi , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Imre Deak , Ankit Nautiyal , Igor Paunovic Subject: [PATCH 1/5] drm/dp: Add drm_dp_hdr_metadata_infoframe_sdp_pack() Date: Sat, 8 Aug 2026 11:57:20 +0200 Message-ID: <20260808095749.9428-2-royalnet026@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260808095749.9428-1-royalnet026@gmail.com> References: <20260808095749.9428-1-royalnet026@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" i915 packs HDR static metadata into an HDR Metadata InfoFrame SDP (DP 1.4a spec, Table 2-100 and Table 2-101) with a driver-private helper, intel_dp_hdr_metadata_infoframe_sdp_pack(). Nothing in it is i915 specific: it converts a generic struct hdmi_drm_infoframe into a generic struct dp_sdp. Move it to drm_dp_helper.c as drm_dp_hdr_metadata_infoframe_sdp_pack(), next to drm_dp_vsc_sdp_pack(), and convert i915 to the new helper. The Synopsys DesignWare DisplayPort bridge driver (dw-dp) needs to send the same SDP to support HDR and should not have to duplicate the packing code. The helper takes a struct drm_device pointer in place of the i915 display pointer for its two debug messages, and an i915-specific comment about GEN11+ GMP register sizes is dropped. No functional change. Signed-off-by: Igor Paunovic --- drivers/gpu/drm/display/drm_dp_helper.c | 88 +++++++++++++++++++++++++ drivers/gpu/drm/i915/display/intel_dp.c | 84 +---------------------- include/drm/display/drm_dp_helper.h | 4 ++ 3 files changed, 95 insertions(+), 81 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/display/drm_dp_helper.c index 9c31e14cc413..7b3b079403c4 100644 --- a/drivers/gpu/drm/display/drm_dp_helper.c +++ b/drivers/gpu/drm/display/drm_dp_helper.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -3672,6 +3673,93 @@ ssize_t drm_dp_vsc_sdp_pack(const struct drm_dp_vsc_sdp *vsc, } EXPORT_SYMBOL(drm_dp_vsc_sdp_pack); +/** + * drm_dp_hdr_metadata_infoframe_sdp_pack() - pack HDR Metadata InfoFrame SDP + * @dev: DRM device + * @drm_infoframe: HDMI DRM infoframe carrying the HDR static metadata + * @sdp: valid handle to the generic dp_sdp which will be packed + * @size: valid size of the passed sdp handle + * + * Pack a CTA-861 Dynamic Range and Mastering infoframe into an HDR + * Metadata InfoFrame SDP, as defined in DP 1.4a spec, Table 2-100 and + * Table 2-101. + * + * Returns: length of sdp on success and error code on failure + */ +ssize_t drm_dp_hdr_metadata_infoframe_sdp_pack(struct drm_device *dev, + const struct hdmi_drm_infoframe *drm_infoframe, + struct dp_sdp *sdp, + size_t size) +{ + size_t length = sizeof(struct dp_sdp); + const int infoframe_size = HDMI_INFOFRAME_HEADER_SIZE + HDMI_DRM_INFOFRAME_SIZE; + unsigned char buf[HDMI_INFOFRAME_HEADER_SIZE + HDMI_DRM_INFOFRAME_SIZE]; + ssize_t len; + + if (size < length) + return -ENOSPC; + + memset(sdp, 0, size); + + len = hdmi_drm_infoframe_pack_only(drm_infoframe, buf, sizeof(buf)); + if (len < 0) { + drm_dbg_kms(dev, + "buffer size is smaller than hdr metadata infoframe\n"); + return -ENOSPC; + } + + if (len != infoframe_size) { + drm_dbg_kms(dev, "wrong static hdr metadata size\n"); + return -ENOSPC; + } + + /* + * Set up the infoframe sdp packet for HDR static metadata. + * Prepare VSC Header for SU as per DP 1.4a spec, + * Table 2-100 and Table 2-101 + */ + + /* Secondary-Data Packet ID, 00h for non-Audio INFOFRAME */ + sdp->sdp_header.HB0 = 0; + /* + * Packet Type 80h + Non-audio INFOFRAME Type value + * HDMI_INFOFRAME_TYPE_DRM: 0x87 + * - 80h + Non-audio INFOFRAME Type value + * - InfoFrame Type: 0x07 + * [CTA-861-G Table-42 Dynamic Range and Mastering InfoFrame] + */ + sdp->sdp_header.HB1 = drm_infoframe->type; + /* + * Least Significant Eight Bits of (Data Byte Count – 1) + * infoframe_size - 1 + */ + sdp->sdp_header.HB2 = 0x1D; + /* INFOFRAME SDP Version Number */ + sdp->sdp_header.HB3 = (0x13 << 2); + /* CTA Header Byte 2 (INFOFRAME Version Number) */ + sdp->db[0] = drm_infoframe->version; + /* CTA Header Byte 3 (Length of INFOFRAME): HDMI_DRM_INFOFRAME_SIZE */ + sdp->db[1] = drm_infoframe->length; + /* + * Copy HDMI_DRM_INFOFRAME_SIZE size from a buffer after + * HDMI_INFOFRAME_HEADER_SIZE + */ + BUILD_BUG_ON(sizeof(sdp->db) < HDMI_DRM_INFOFRAME_SIZE + 2); + memcpy(&sdp->db[2], &buf[HDMI_INFOFRAME_HEADER_SIZE], + HDMI_DRM_INFOFRAME_SIZE); + + /* + * Size of DP infoframe sdp packet for HDR static metadata consists of + * - DP SDP Header(struct dp_sdp_header): 4 bytes + * - Two Data Blocks: 2 bytes + * CTA Header Byte2 (INFOFRAME Version Number) + * CTA Header Byte3 (Length of INFOFRAME) + * - HDMI_DRM_INFOFRAME_SIZE: 26 bytes + */ + return sizeof(struct dp_sdp_header) + 2 + HDMI_DRM_INFOFRAME_SIZE; +} +EXPORT_SYMBOL(drm_dp_hdr_metadata_infoframe_sdp_pack); + /** * drm_dp_get_pcon_max_frl_bw() - maximum frl supported by PCON * @dpcd: DisplayPort configuration data diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 6e3fa6662cbe..093a3b7961f7 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -5157,84 +5157,6 @@ static ssize_t intel_dp_as_sdp_pack(const struct drm_dp_as_sdp *as_sdp, return length; } -static ssize_t -intel_dp_hdr_metadata_infoframe_sdp_pack(struct intel_display *display, - const struct hdmi_drm_infoframe *drm_infoframe, - struct dp_sdp *sdp, - size_t size) -{ - size_t length = sizeof(struct dp_sdp); - const int infoframe_size = HDMI_INFOFRAME_HEADER_SIZE + HDMI_DRM_INFOFRAME_SIZE; - unsigned char buf[HDMI_INFOFRAME_HEADER_SIZE + HDMI_DRM_INFOFRAME_SIZE]; - ssize_t len; - - if (size < length) - return -ENOSPC; - - memset(sdp, 0, size); - - len = hdmi_drm_infoframe_pack_only(drm_infoframe, buf, sizeof(buf)); - if (len < 0) { - drm_dbg_kms(display->drm, - "buffer size is smaller than hdr metadata infoframe\n"); - return -ENOSPC; - } - - if (len != infoframe_size) { - drm_dbg_kms(display->drm, "wrong static hdr metadata size\n"); - return -ENOSPC; - } - - /* - * Set up the infoframe sdp packet for HDR static metadata. - * Prepare VSC Header for SU as per DP 1.4a spec, - * Table 2-100 and Table 2-101 - */ - - /* Secondary-Data Packet ID, 00h for non-Audio INFOFRAME */ - sdp->sdp_header.HB0 = 0; - /* - * Packet Type 80h + Non-audio INFOFRAME Type value - * HDMI_INFOFRAME_TYPE_DRM: 0x87 - * - 80h + Non-audio INFOFRAME Type value - * - InfoFrame Type: 0x07 - * [CTA-861-G Table-42 Dynamic Range and Mastering InfoFrame] - */ - sdp->sdp_header.HB1 = drm_infoframe->type; - /* - * Least Significant Eight Bits of (Data Byte Count – 1) - * infoframe_size - 1 - */ - sdp->sdp_header.HB2 = 0x1D; - /* INFOFRAME SDP Version Number */ - sdp->sdp_header.HB3 = (0x13 << 2); - /* CTA Header Byte 2 (INFOFRAME Version Number) */ - sdp->db[0] = drm_infoframe->version; - /* CTA Header Byte 3 (Length of INFOFRAME): HDMI_DRM_INFOFRAME_SIZE */ - sdp->db[1] = drm_infoframe->length; - /* - * Copy HDMI_DRM_INFOFRAME_SIZE size from a buffer after - * HDMI_INFOFRAME_HEADER_SIZE - */ - BUILD_BUG_ON(sizeof(sdp->db) < HDMI_DRM_INFOFRAME_SIZE + 2); - memcpy(&sdp->db[2], &buf[HDMI_INFOFRAME_HEADER_SIZE], - HDMI_DRM_INFOFRAME_SIZE); - - /* - * Size of DP infoframe sdp packet for HDR static metadata consists of - * - DP SDP Header(struct dp_sdp_header): 4 bytes - * - Two Data Blocks: 2 bytes - * CTA Header Byte2 (INFOFRAME Version Number) - * CTA Header Byte3 (Length of INFOFRAME) - * - HDMI_DRM_INFOFRAME_SIZE: 26 bytes - * - * Prior to GEN11's GMP register size is identical to DP HDR static metadata - * infoframe size. But GEN11+ has larger than that size, write_infoframe - * will pad rest of the size. - */ - return sizeof(struct dp_sdp_header) + 2 + HDMI_DRM_INFOFRAME_SIZE; -} - static void intel_write_dp_sdp(struct intel_encoder *encoder, const struct intel_crtc_state *crtc_state, unsigned int type) @@ -5253,9 +5175,9 @@ static void intel_write_dp_sdp(struct intel_encoder *encoder, len = drm_dp_vsc_sdp_pack(&crtc_state->infoframes.vsc, &sdp); break; case HDMI_PACKET_TYPE_GAMUT_METADATA: - len = intel_dp_hdr_metadata_infoframe_sdp_pack(display, - &crtc_state->infoframes.drm.drm, - &sdp, sizeof(sdp)); + len = drm_dp_hdr_metadata_infoframe_sdp_pack(display->drm, + &crtc_state->infoframes.drm.drm, + &sdp, sizeof(sdp)); break; case DP_SDP_ADAPTIVE_SYNC: len = intel_dp_as_sdp_pack(&crtc_state->infoframes.as_sdp, &sdp, diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_dp_helper.h index ab16c1be3900..c158628f0d38 100644 --- a/include/drm/display/drm_dp_helper.h +++ b/include/drm/display/drm_dp_helper.h @@ -32,6 +32,7 @@ struct drm_device; struct drm_dp_aux; struct drm_panel; +struct hdmi_drm_infoframe; bool drm_dp_channel_eq_ok(const u8 link_status[DP_LINK_STATUS_SIZE], int lane_count); @@ -1029,6 +1030,9 @@ int drm_dp_bw_channel_coding_efficiency(bool is_uhbr); int drm_dp_max_dprx_data_rate(int max_link_rate, int max_lanes); ssize_t drm_dp_vsc_sdp_pack(const struct drm_dp_vsc_sdp *vsc, struct dp_sdp *sdp); +ssize_t drm_dp_hdr_metadata_infoframe_sdp_pack(struct drm_device *dev, + const struct hdmi_drm_infoframe *drm_infoframe, + struct dp_sdp *sdp, size_t size); int drm_dp_link_symbol_cycles(int lane_count, int pixels, int dsc_slice_count, int bpp_x16, int symbol_size, bool is_mst); -- 2.43.0