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 6C847C79FBD for ; Wed, 9 Sep 2026 17:36:14 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B89BE10E556; Wed, 9 Sep 2026 17:36:13 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="NUVPRal7"; dkim-atps=neutral Received: from mail-wm2-f12.google.com (mail-wm2-f12.google.com [74.125.225.140]) by gabe.freedesktop.org (Postfix) with ESMTPS id 202DA10E557 for ; Wed, 9 Sep 2026 17:36:12 +0000 (UTC) Received: by mail-wm2-f12.google.com with SMTP id 5b1f17b1804b1-49b4ba7fe26so2339925e9.2 for ; Wed, 09 Sep 2026 10:36:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788975370; x=1789580170; 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=GcSEJLSb+KPAcWrzfd13cySwpnusQrnIcgjvZmkYhdY=; b=NUVPRal7UEW6/spynYrwt+j82/yz1qN1BO4NGXXHiM/YDcvEG4HeUAoOU7HJD4ND1S VuGaONQY7prRV/0vgDjOSfcx5o0OaI80fxUH8x+I8bmnKO19ne/9oRBBGd5u4HhgcRJ4 ox1GvDcBYYjGsFX54juDYYio7md1oyzkq0ntI1oZz/cjsCLRlF0o/th4QgjTeHFRYcjw 5GCnoxMoP/fOVy0Nojak5QzPpV0krRjvzuJPXTkYiIuu17qsmNFBdmB6VkvTgL5fF4zO TrkOKXqhNYIGhm3F95oWIG09U/GnbFoyZO/soOta7pi7nm4RtAzHPmyKY5LGkGsfRMX+ MdNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788975370; x=1789580170; 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=GcSEJLSb+KPAcWrzfd13cySwpnusQrnIcgjvZmkYhdY=; b=ExlLzGawJ6Jg/yuLl/EVg8zcjeUelRoPp3x7/BBSw6QdT6iVRhkZsudXjCuf1LM81C 0Wk3cXXMTmHo9zN/CSuW/X91mFxkc2oTXhcIGRzX8L89y+6PsUWGHV6CiimL5vOXiKBH BJQ9CJrSa9+WC9JdtZiOfxepgFa6z2agV77UZyRPbJiBbA6uuD7gU6Ped13YwXMz868C sMNV3IOQ7iMF/nSEjUJTH1DHA3r5V3kI1Gb020/hO/rix2pgVwVrlkOpNGgC027JJyot 4zKl+FMrHp7zX1ABfJMzQ7ql2yfZ3t8yTCAXO/UyTV1dhL5DbOWIO2GOx+Fu13/cXPkP HkoQ== X-Gm-Message-State: AFuF++kk5AmLK3/ZVMtBJO5KdwKzgCibrxnfdTzxcPwGMxLLjCQble93 Nh8Mn8hE/eoBXwo1vlC6AsCLVJYUzNqyyPrj8YaRk8OiegnBZYs88FdkvlEtsu18 X-Gm-Gg: AYBFou2K0k5P0c7pNhHAAmSEPmutgs0SwzDEmvzqZtqCbG4l2Xc3qbChUQd4auoed3u 1wQRJQ+PlJeBMq2rt4af4Ljxjk6h2zISxS3gC81927SoeaiqDGHM05S/VDxEH2gyWyQZqcSWgSM a0wYdBZTgG/HMebcQD1Zwv0ABG+4JX1sYbRrd8AhhqYdLPcUJVRrktYIxNsO2ylXZsMikY70jIP 2RG0y8pQ76ZcUZkuVlqFy6LLJUZ5JOhqAtmBbjxNeewLiq6vycb8uaS8+odns4KGBz4SnSiw4xY wmVReUwtE0m9frOfI9+OwK14YFjXw0IggalfF29YPSp3ZrIhxiydqGpC1jLvH22gcIuViaohFRO 79oC6M5WkcPW3UHtdZSDYHwPsE5y0Wo+dVjLAFcq9tYv9qyRub8RHFaG8coqcu9RB/S2AYo3RUq v+JGqeiVAHTbRLnC/7BtUcr5i6MSc9lVh+uRrNVtCxjSYkjB6Ww6kkxuVGjxchy19ApY3gAgbGI 63clQMeRq7oajU45JBz4HVxwbhJryq5F3w9YU1WsD53qkfO4Wy+jedg9dqb/3xTPyQViqblZope yvo= X-Received: by 2002:a05:600c:35cb:b0:49d:1da4:511b with SMTP id 5b1f17b1804b1-49d1da4515bmr96595615e9.1.1788975370286; Wed, 09 Sep 2026 10:36:10 -0700 (PDT) Received: from OrangePi5-Plus.BB-HOME (20014C4E1B836900B0110705BF092680.dsl.pool.telekom.hu. [2001:4c4e:1b83:6900:b011:705:bf09:2680]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d26c06f04sm6876575e9.13.2026.09.09.10.36.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Sep 2026 10:36:09 -0700 (PDT) From: Igor Paunovic To: dri-devel@lists.freedesktop.org Cc: Igor Paunovic , 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 , Heiko Stuebner , Andy Yan , Jani Nikula , Rodrigo Vivi , Ville Syrjala , Imre Deak , Ankit Nautiyal Subject: [PATCH v2 1/3] drm/dp: Add drm_dp_hdr_metadata_infoframe_sdp_pack() Date: Wed, 9 Sep 2026 19:35:38 +0200 Message-ID: <20260909173542.14030-2-royalnet026@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260909163206.36409-1-royalnet026@gmail.com> References: <20260909163206.36409-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. Assisted-by: LLM checkpatch Signed-off-by: Igor Paunovic Acked-by: Jani Nikula --- 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 e623ccb4c1d8a..7b80937255fe0 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 113d767e62e9c..d0d3f517df85a 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -5189,84 +5189,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) @@ -5285,9 +5207,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 5b05a7fbe174a..3e3f119775b38 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); @@ -1035,6 +1036,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 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 46426C79FBD for ; Wed, 9 Sep 2026 17:36:18 +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=bA6VrPj4R1svPkGtDbjYHd1ZLcDWHZPAhPsuzVoiqus=; b=L1W6mK650KOCug vTLxVEZec2/z8qxz+7gEzm10xGAQObmXCVLkesRwLZvo5pzoWAoP5P9HcnCTdhpbUzhBSl0Y38es1 wmJd5jbAds6XNecDO9OF4Ex94wtoj1IxWV3uCanf3RjEt+cIA4BSyQ7c8SyFV7zW36ZOziwGPoinL P/pgzJwzyHnLBk/SCjxI7UrlJaTgB5c9Ti7Q8jNie+cMKxDMxz0SqfHQl+LhFyGzpBjsohvKUdZ5I lkA8SeiQgo1hNNHHycn+wKX+brL+n/AfeheyyP8XAX0IV9MvEDdFuqQ203JdfrhBui8f4uweI5jAl hOGWtD+3CBvWu+6VKydQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x4MDW-0000000CVPv-3XFR; Wed, 09 Sep 2026 17:36:14 +0000 Received: from mail-wr2-x10.google.com ([2a00:1450:4864:30::10]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x4MDU-0000000CVNQ-1eqK for linux-rockchip@lists.infradead.org; Wed, 09 Sep 2026 17:36:13 +0000 Received: by mail-wr2-x10.google.com with SMTP id ffacd0b85a97d-4843971bdd0so680026f8f.1 for ; Wed, 09 Sep 2026 10:36:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788975370; x=1789580170; 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=GcSEJLSb+KPAcWrzfd13cySwpnusQrnIcgjvZmkYhdY=; b=j6WyMu4aBOkjV3s51CIaEDnC5av3oypvQrLoUPImQBYg6v2+FzQOw09nh4CFqJehl/ UULMPvUTezOrMhvpg5moqWmxG1d9ixCKLIg7+sNZXehNMKQqCTLhgRRRWTlVrb3FuZgf raGargjwwvyUiqwMvxvBPkxT+/+omXptDfQEuEY3BxeG16WPQKkN57x2xDm7twCKyMLZ ekF6STFyZ5pYufr48gyVO+1bofrtmJfrPQWxI2e31WXXkGZJnY0w6+mUe5Z4XwMg9jtK LVQADBkU5HFDqZ8fp0uZaIgmWD4hMnS1uTPMZ7Mv97tu74NNd1zGC8T+O14ui2xyJCBL irRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788975370; x=1789580170; 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=GcSEJLSb+KPAcWrzfd13cySwpnusQrnIcgjvZmkYhdY=; b=XEa4Ba9+xgNDCUwQnAkBkqzgsl/rx72Az2SG2TSm+kHWa9MieIs+7ksDnDWVpi+zhW W84dPOt1XEPRxL7WKkn22lZjzbmbT2B0NPAWR1+y3gH0frTHEytUbwRzurVkQoLEucJk 1azkVXSYFM+SPQPS+8jT+qlZbCTRNaADXinwzLUSwKBpJ5A8TwKRdOyoR0Wg9aUPdGv2 xaAdz0h2QhVMcOaI9WjgUGXLeOl77t85AO2ZoSue2p2zEsLuYMfD/FHFcg5BwhQQXl68 Q8c2/jvrZmw9FP9CEoatfmK335VmMUAhOPIe5DZdVnInEPXHqeFS/d4R/p7RYyOYqul8 e0Pg== X-Forwarded-Encrypted: i=1; AKwUvByCeN/jrdSE4qFonYxZyjdiyd1m3+hTXjmvFCNx9MoyaqG5w2W7ZaSEzrbzq1jAmon5ckg3SnWaiWjVyxpl3w==@lists.infradead.org X-Gm-Message-State: AFuF++lTzWOkERmRkgJiKg4aTpc4xyP3AoPD0/WOuJ4suQfziRTO8Oaw qkAQ7b+NERW4N+PvTI/5UU89pfGK1pQG49/V7iBR2jhfUo9BiwDJxJrEGJvy/pq0 X-Gm-Gg: AYBFou1bCWvnLrP2zrdaUBc9DFLBAaA8VvCrXEmzn8U6ZF3cbtRMR+qaNtdheZTlsRf PgFRAqS4Hf91Kh6fnQrurN59aJ3S/FKnEbcVySAirsP7FXk7FJOlc/g059A7vCSCzTXrUk/UkZv Qa/TiIG5VyohrwOmwbciqnFWNa9XMh/Tu8GvK7kp0T6d3VF+jC+LIan3e+D1P6NMU3tTDLVPamA 6lg4xl1wPTcQIjhUczVRDLik1tTYSDqaJAFSp/DTD795tC7ocZZw/nNfLAoAe7tg1j7cKRP278x /NH4QRnB27alMpgRro3M5oVzngPHjySiiEH+jlEqlkbpN46fSLr+QJD/gSH++b+EtnvajhIeHx7 RTYuZ0cYF1D7PHrIsZ5J/9boAEDIT2Xr5g5+Fevco0EI/8y7fLVbsG7u8Gk/e/TgEosFi++SBFZ BSLkP7yFd4qGA535t2h6Q3J656BhPNbn2pnuGjVIrzw5u3rBuF3K7gTYz3cU2tOhK+l5ji+M7aA rnzuWqRXbov6gYuho7DP036TS6UPsZ4Z4Kl1OggQDtp3MJr/BRqGsh9QDYsGwDFyivLxkEv9HL2 nIk= X-Received: by 2002:a05:600c:35cb:b0:49d:1da4:511b with SMTP id 5b1f17b1804b1-49d1da4515bmr96595615e9.1.1788975370286; Wed, 09 Sep 2026 10:36:10 -0700 (PDT) Received: from OrangePi5-Plus.BB-HOME (20014C4E1B836900B0110705BF092680.dsl.pool.telekom.hu. [2001:4c4e:1b83:6900:b011:705:bf09:2680]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d26c06f04sm6876575e9.13.2026.09.09.10.36.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Sep 2026 10:36:09 -0700 (PDT) From: Igor Paunovic To: dri-devel@lists.freedesktop.org Subject: [PATCH v2 1/3] drm/dp: Add drm_dp_hdr_metadata_infoframe_sdp_pack() Date: Wed, 9 Sep 2026 19:35:38 +0200 Message-ID: <20260909173542.14030-2-royalnet026@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260909163206.36409-1-royalnet026@gmail.com> References: <20260909163206.36409-1-royalnet026@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260909_103612_494631_36976F42 X-CRM114-Status: GOOD ( 21.81 ) 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: Heiko Stuebner , Imre Deak , Sandy Huang , Laurent Pinchart , Andrzej Hajda , David Airlie , Ville Syrjala , Simona Vetter , Robert Foss , Sebastian Reichel , Jernej Skrabec , linux-rockchip@lists.infradead.org, Ankit Nautiyal , Luca Ceresoli , Dmitry Baryshkov , 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, Igor Paunovic , 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 IHJlZ2lzdGVyIHNpemVzIGlzIGRyb3BwZWQuIE5vIGZ1bmN0aW9uYWwKY2hhbmdlLgoKQXNzaXN0 ZWQtYnk6IExMTSBjaGVja3BhdGNoClNpZ25lZC1vZmYtYnk6IElnb3IgUGF1bm92aWMgPHJveWFs bmV0MDI2QGdtYWlsLmNvbT4KQWNrZWQtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRl bC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2Rpc3BsYXkvZHJtX2RwX2hlbHBlci5jIHwgODgg KysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kcC5jIHwgODQgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUvZHJtL2Rpc3Bs YXkvZHJtX2RwX2hlbHBlci5oICAgICB8ICA0ICsrCiAzIGZpbGVzIGNoYW5nZWQsIDk1IGluc2Vy dGlvbnMoKyksIDgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k aXNwbGF5L2RybV9kcF9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kaXNwbGF5L2RybV9kcF9o ZWxwZXIuYwppbmRleCBlNjIzY2NiNGMxZDhhLi43YjgwOTM3MjU1ZmUwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2Rpc3BsYXkvZHJtX2RwX2hlbHBlci5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8 bGludXgvZHluYW1pY19kZWJ1Zy5oPgogI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CiAjaW5jbHVk ZSA8bGludXgvZXhwb3J0Lmg+CisjaW5jbHVkZSA8bGludXgvaGRtaS5oPgogI2luY2x1ZGUgPGxp bnV4L2kyYy5oPgogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9pb3Bv bGwuaD4KQEAgLTM2NzIsNiArMzY3Myw5MyBAQCBzc2l6ZV90IGRybV9kcF92c2Nfc2RwX3BhY2so Y29uc3Qgc3RydWN0IGRybV9kcF92c2Nfc2RwICp2c2MsCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9k cF92c2Nfc2RwX3BhY2spOwogCisvKioKKyAqIGRybV9kcF9oZHJfbWV0YWRhdGFfaW5mb2ZyYW1l X3NkcF9wYWNrKCkgLSBwYWNrIEhEUiBNZXRhZGF0YSBJbmZvRnJhbWUgU0RQCisgKiBAZGV2OiBE Uk0gZGV2aWNlCisgKiBAZHJtX2luZm9mcmFtZTogSERNSSBEUk0gaW5mb2ZyYW1lIGNhcnJ5aW5n IHRoZSBIRFIgc3RhdGljIG1ldGFkYXRhCisgKiBAc2RwOiB2YWxpZCBoYW5kbGUgdG8gdGhlIGdl bmVyaWMgZHBfc2RwIHdoaWNoIHdpbGwgYmUgcGFja2VkCisgKiBAc2l6ZTogdmFsaWQgc2l6ZSBv ZiB0aGUgcGFzc2VkIHNkcCBoYW5kbGUKKyAqCisgKiBQYWNrIGEgQ1RBLTg2MSBEeW5hbWljIFJh bmdlIGFuZCBNYXN0ZXJpbmcgaW5mb2ZyYW1lIGludG8gYW4gSERSCisgKiBNZXRhZGF0YSBJbmZv RnJhbWUgU0RQLCBhcyBkZWZpbmVkIGluIERQIDEuNGEgc3BlYywgVGFibGUgMi0xMDAgYW5kCisg KiBUYWJsZSAyLTEwMS4KKyAqCisgKiBSZXR1cm5zOiBsZW5ndGggb2Ygc2RwIG9uIHN1Y2Nlc3Mg YW5kIGVycm9yIGNvZGUgb24gZmFpbHVyZQorICovCitzc2l6ZV90IGRybV9kcF9oZHJfbWV0YWRh dGFfaW5mb2ZyYW1lX3NkcF9wYWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJCSAgICAg ICBjb25zdCBzdHJ1Y3QgaGRtaV9kcm1faW5mb2ZyYW1lICpkcm1faW5mb2ZyYW1lLAorCQkJCQkg ICAgICAgc3RydWN0IGRwX3NkcCAqc2RwLAorCQkJCQkgICAgICAgc2l6ZV90IHNpemUpCit7CisJ c2l6ZV90IGxlbmd0aCA9IHNpemVvZihzdHJ1Y3QgZHBfc2RwKTsKKwljb25zdCBpbnQgaW5mb2Zy YW1lX3NpemUgPSBIRE1JX0lORk9GUkFNRV9IRUFERVJfU0laRSArIEhETUlfRFJNX0lORk9GUkFN RV9TSVpFOworCXVuc2lnbmVkIGNoYXIgYnVmW0hETUlfSU5GT0ZSQU1FX0hFQURFUl9TSVpFICsg SERNSV9EUk1fSU5GT0ZSQU1FX1NJWkVdOworCXNzaXplX3QgbGVuOworCisJaWYgKHNpemUgPCBs ZW5ndGgpCisJCXJldHVybiAtRU5PU1BDOworCisJbWVtc2V0KHNkcCwgMCwgc2l6ZSk7CisKKwls ZW4gPSBoZG1pX2RybV9pbmZvZnJhbWVfcGFja19vbmx5KGRybV9pbmZvZnJhbWUsIGJ1Ziwgc2l6 ZW9mKGJ1ZikpOworCWlmIChsZW4gPCAwKSB7CisJCWRybV9kYmdfa21zKGRldiwKKwkJCSAgICAi YnVmZmVyIHNpemUgaXMgc21hbGxlciB0aGFuIGhkciBtZXRhZGF0YSBpbmZvZnJhbWVcbiIpOwor CQlyZXR1cm4gLUVOT1NQQzsKKwl9CisKKwlpZiAobGVuICE9IGluZm9mcmFtZV9zaXplKSB7CisJ CWRybV9kYmdfa21zKGRldiwgIndyb25nIHN0YXRpYyBoZHIgbWV0YWRhdGEgc2l6ZVxuIik7CisJ CXJldHVybiAtRU5PU1BDOworCX0KKworCS8qCisJICogU2V0IHVwIHRoZSBpbmZvZnJhbWUgc2Rw IHBhY2tldCBmb3IgSERSIHN0YXRpYyBtZXRhZGF0YS4KKwkgKiBQcmVwYXJlIFZTQyBIZWFkZXIg Zm9yIFNVIGFzIHBlciBEUCAxLjRhIHNwZWMsCisJICogVGFibGUgMi0xMDAgYW5kIFRhYmxlIDIt MTAxCisJICovCisKKwkvKiBTZWNvbmRhcnktRGF0YSBQYWNrZXQgSUQsIDAwaCBmb3Igbm9uLUF1 ZGlvIElORk9GUkFNRSAqLworCXNkcC0+c2RwX2hlYWRlci5IQjAgPSAwOworCS8qCisJICogUGFj a2V0IFR5cGUgODBoICsgTm9uLWF1ZGlvIElORk9GUkFNRSBUeXBlIHZhbHVlCisJICogSERNSV9J TkZPRlJBTUVfVFlQRV9EUk06IDB4ODcKKwkgKiAtIDgwaCArIE5vbi1hdWRpbyBJTkZPRlJBTUUg VHlwZSB2YWx1ZQorCSAqIC0gSW5mb0ZyYW1lIFR5cGU6IDB4MDcKKwkgKiAgICBbQ1RBLTg2MS1H IFRhYmxlLTQyIER5bmFtaWMgUmFuZ2UgYW5kIE1hc3RlcmluZyBJbmZvRnJhbWVdCisJICovCisJ c2RwLT5zZHBfaGVhZGVyLkhCMSA9IGRybV9pbmZvZnJhbWUtPnR5cGU7CisJLyoKKwkgKiBMZWFz dCBTaWduaWZpY2FudCBFaWdodCBCaXRzIG9mIChEYXRhIEJ5dGUgQ291bnQg4oCTIDEpCisJICog aW5mb2ZyYW1lX3NpemUgLSAxCisJICovCisJc2RwLT5zZHBfaGVhZGVyLkhCMiA9IDB4MUQ7CisJ LyogSU5GT0ZSQU1FIFNEUCBWZXJzaW9uIE51bWJlciAqLworCXNkcC0+c2RwX2hlYWRlci5IQjMg PSAoMHgxMyA8PCAyKTsKKwkvKiBDVEEgSGVhZGVyIEJ5dGUgMiAoSU5GT0ZSQU1FIFZlcnNpb24g TnVtYmVyKSAqLworCXNkcC0+ZGJbMF0gPSBkcm1faW5mb2ZyYW1lLT52ZXJzaW9uOworCS8qIENU QSBIZWFkZXIgQnl0ZSAzIChMZW5ndGggb2YgSU5GT0ZSQU1FKTogSERNSV9EUk1fSU5GT0ZSQU1F X1NJWkUgKi8KKwlzZHAtPmRiWzFdID0gZHJtX2luZm9mcmFtZS0+bGVuZ3RoOworCS8qCisJICog Q29weSBIRE1JX0RSTV9JTkZPRlJBTUVfU0laRSBzaXplIGZyb20gYSBidWZmZXIgYWZ0ZXIKKwkg KiBIRE1JX0lORk9GUkFNRV9IRUFERVJfU0laRQorCSAqLworCUJVSUxEX0JVR19PTihzaXplb2Yo c2RwLT5kYikgPCBIRE1JX0RSTV9JTkZPRlJBTUVfU0laRSArIDIpOworCW1lbWNweSgmc2RwLT5k YlsyXSwgJmJ1ZltIRE1JX0lORk9GUkFNRV9IRUFERVJfU0laRV0sCisJICAgICAgIEhETUlfRFJN X0lORk9GUkFNRV9TSVpFKTsKKworCS8qCisJICogU2l6ZSBvZiBEUCBpbmZvZnJhbWUgc2RwIHBh Y2tldCBmb3IgSERSIHN0YXRpYyBtZXRhZGF0YSBjb25zaXN0cyBvZgorCSAqIC0gRFAgU0RQIEhl YWRlcihzdHJ1Y3QgZHBfc2RwX2hlYWRlcik6IDQgYnl0ZXMKKwkgKiAtIFR3byBEYXRhIEJsb2Nr czogMiBieXRlcworCSAqICAgIENUQSBIZWFkZXIgQnl0ZTIgKElORk9GUkFNRSBWZXJzaW9uIE51 bWJlcikKKwkgKiAgICBDVEEgSGVhZGVyIEJ5dGUzIChMZW5ndGggb2YgSU5GT0ZSQU1FKQorCSAq IC0gSERNSV9EUk1fSU5GT0ZSQU1FX1NJWkU6IDI2IGJ5dGVzCisJICovCisJcmV0dXJuIHNpemVv ZihzdHJ1Y3QgZHBfc2RwX2hlYWRlcikgKyAyICsgSERNSV9EUk1fSU5GT0ZSQU1FX1NJWkU7Cit9 CitFWFBPUlRfU1lNQk9MKGRybV9kcF9oZHJfbWV0YWRhdGFfaW5mb2ZyYW1lX3NkcF9wYWNrKTsK KwogLyoqCiAgKiBkcm1fZHBfZ2V0X3Bjb25fbWF4X2ZybF9idygpIC0gbWF4aW11bSBmcmwgc3Vw cG9ydGVkIGJ5IFBDT04KICAqIEBkcGNkOiBEaXNwbGF5UG9ydCBjb25maWd1cmF0aW9uIGRhdGEK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwppbmRleCAxMTNkNzY3ZTYyZTlj Li5kMGQzZjUxN2RmODVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5j CkBAIC01MTg5LDg0ICs1MTg5LDYgQEAgc3RhdGljIHNzaXplX3QgaW50ZWxfZHBfYXNfc2RwX3Bh Y2soY29uc3Qgc3RydWN0IGRybV9kcF9hc19zZHAgKmFzX3NkcCwKIAlyZXR1cm4gbGVuZ3RoOwog fQogCi1zdGF0aWMgc3NpemVfdAotaW50ZWxfZHBfaGRyX21ldGFkYXRhX2luZm9mcmFtZV9zZHBf cGFjayhzdHJ1Y3QgaW50ZWxfZGlzcGxheSAqZGlzcGxheSwKLQkJCQkJIGNvbnN0IHN0cnVjdCBo ZG1pX2RybV9pbmZvZnJhbWUgKmRybV9pbmZvZnJhbWUsCi0JCQkJCSBzdHJ1Y3QgZHBfc2RwICpz ZHAsCi0JCQkJCSBzaXplX3Qgc2l6ZSkKLXsKLQlzaXplX3QgbGVuZ3RoID0gc2l6ZW9mKHN0cnVj dCBkcF9zZHApOwotCWNvbnN0IGludCBpbmZvZnJhbWVfc2l6ZSA9IEhETUlfSU5GT0ZSQU1FX0hF QURFUl9TSVpFICsgSERNSV9EUk1fSU5GT0ZSQU1FX1NJWkU7Ci0JdW5zaWduZWQgY2hhciBidWZb SERNSV9JTkZPRlJBTUVfSEVBREVSX1NJWkUgKyBIRE1JX0RSTV9JTkZPRlJBTUVfU0laRV07Ci0J c3NpemVfdCBsZW47Ci0KLQlpZiAoc2l6ZSA8IGxlbmd0aCkKLQkJcmV0dXJuIC1FTk9TUEM7Ci0K LQltZW1zZXQoc2RwLCAwLCBzaXplKTsKLQotCWxlbiA9IGhkbWlfZHJtX2luZm9mcmFtZV9wYWNr X29ubHkoZHJtX2luZm9mcmFtZSwgYnVmLCBzaXplb2YoYnVmKSk7Ci0JaWYgKGxlbiA8IDApIHsK LQkJZHJtX2RiZ19rbXMoZGlzcGxheS0+ZHJtLAotCQkJICAgICJidWZmZXIgc2l6ZSBpcyBzbWFs bGVyIHRoYW4gaGRyIG1ldGFkYXRhIGluZm9mcmFtZVxuIik7Ci0JCXJldHVybiAtRU5PU1BDOwot CX0KLQotCWlmIChsZW4gIT0gaW5mb2ZyYW1lX3NpemUpIHsKLQkJZHJtX2RiZ19rbXMoZGlzcGxh eS0+ZHJtLCAid3Jvbmcgc3RhdGljIGhkciBtZXRhZGF0YSBzaXplXG4iKTsKLQkJcmV0dXJuIC1F Tk9TUEM7Ci0JfQotCi0JLyoKLQkgKiBTZXQgdXAgdGhlIGluZm9mcmFtZSBzZHAgcGFja2V0IGZv ciBIRFIgc3RhdGljIG1ldGFkYXRhLgotCSAqIFByZXBhcmUgVlNDIEhlYWRlciBmb3IgU1UgYXMg cGVyIERQIDEuNGEgc3BlYywKLQkgKiBUYWJsZSAyLTEwMCBhbmQgVGFibGUgMi0xMDEKLQkgKi8K LQotCS8qIFNlY29uZGFyeS1EYXRhIFBhY2tldCBJRCwgMDBoIGZvciBub24tQXVkaW8gSU5GT0ZS QU1FICovCi0Jc2RwLT5zZHBfaGVhZGVyLkhCMCA9IDA7Ci0JLyoKLQkgKiBQYWNrZXQgVHlwZSA4 MGggKyBOb24tYXVkaW8gSU5GT0ZSQU1FIFR5cGUgdmFsdWUKLQkgKiBIRE1JX0lORk9GUkFNRV9U WVBFX0RSTTogMHg4NwotCSAqIC0gODBoICsgTm9uLWF1ZGlvIElORk9GUkFNRSBUeXBlIHZhbHVl Ci0JICogLSBJbmZvRnJhbWUgVHlwZTogMHgwNwotCSAqICAgIFtDVEEtODYxLUcgVGFibGUtNDIg RHluYW1pYyBSYW5nZSBhbmQgTWFzdGVyaW5nIEluZm9GcmFtZV0KLQkgKi8KLQlzZHAtPnNkcF9o ZWFkZXIuSEIxID0gZHJtX2luZm9mcmFtZS0+dHlwZTsKLQkvKgotCSAqIExlYXN0IFNpZ25pZmlj YW50IEVpZ2h0IEJpdHMgb2YgKERhdGEgQnl0ZSBDb3VudCDigJMgMSkKLQkgKiBpbmZvZnJhbWVf c2l6ZSAtIDEKLQkgKi8KLQlzZHAtPnNkcF9oZWFkZXIuSEIyID0gMHgxRDsKLQkvKiBJTkZPRlJB TUUgU0RQIFZlcnNpb24gTnVtYmVyICovCi0Jc2RwLT5zZHBfaGVhZGVyLkhCMyA9ICgweDEzIDw8 IDIpOwotCS8qIENUQSBIZWFkZXIgQnl0ZSAyIChJTkZPRlJBTUUgVmVyc2lvbiBOdW1iZXIpICov Ci0Jc2RwLT5kYlswXSA9IGRybV9pbmZvZnJhbWUtPnZlcnNpb247Ci0JLyogQ1RBIEhlYWRlciBC eXRlIDMgKExlbmd0aCBvZiBJTkZPRlJBTUUpOiBIRE1JX0RSTV9JTkZPRlJBTUVfU0laRSAqLwot CXNkcC0+ZGJbMV0gPSBkcm1faW5mb2ZyYW1lLT5sZW5ndGg7Ci0JLyoKLQkgKiBDb3B5IEhETUlf RFJNX0lORk9GUkFNRV9TSVpFIHNpemUgZnJvbSBhIGJ1ZmZlciBhZnRlcgotCSAqIEhETUlfSU5G T0ZSQU1FX0hFQURFUl9TSVpFCi0JICovCi0JQlVJTERfQlVHX09OKHNpemVvZihzZHAtPmRiKSA8 IEhETUlfRFJNX0lORk9GUkFNRV9TSVpFICsgMik7Ci0JbWVtY3B5KCZzZHAtPmRiWzJdLCAmYnVm W0hETUlfSU5GT0ZSQU1FX0hFQURFUl9TSVpFXSwKLQkgICAgICAgSERNSV9EUk1fSU5GT0ZSQU1F X1NJWkUpOwotCi0JLyoKLQkgKiBTaXplIG9mIERQIGluZm9mcmFtZSBzZHAgcGFja2V0IGZvciBI RFIgc3RhdGljIG1ldGFkYXRhIGNvbnNpc3RzIG9mCi0JICogLSBEUCBTRFAgSGVhZGVyKHN0cnVj dCBkcF9zZHBfaGVhZGVyKTogNCBieXRlcwotCSAqIC0gVHdvIERhdGEgQmxvY2tzOiAyIGJ5dGVz Ci0JICogICAgQ1RBIEhlYWRlciBCeXRlMiAoSU5GT0ZSQU1FIFZlcnNpb24gTnVtYmVyKQotCSAq ICAgIENUQSBIZWFkZXIgQnl0ZTMgKExlbmd0aCBvZiBJTkZPRlJBTUUpCi0JICogLSBIRE1JX0RS TV9JTkZPRlJBTUVfU0laRTogMjYgYnl0ZXMKLQkgKgotCSAqIFByaW9yIHRvIEdFTjExJ3MgR01Q IHJlZ2lzdGVyIHNpemUgaXMgaWRlbnRpY2FsIHRvIERQIEhEUiBzdGF0aWMgbWV0YWRhdGEKLQkg KiBpbmZvZnJhbWUgc2l6ZS4gQnV0IEdFTjExKyBoYXMgbGFyZ2VyIHRoYW4gdGhhdCBzaXplLCB3 cml0ZV9pbmZvZnJhbWUKLQkgKiB3aWxsIHBhZCByZXN0IG9mIHRoZSBzaXplLgotCSAqLwotCXJl dHVybiBzaXplb2Yoc3RydWN0IGRwX3NkcF9oZWFkZXIpICsgMiArIEhETUlfRFJNX0lORk9GUkFN RV9TSVpFOwotfQotCiBzdGF0aWMgdm9pZCBpbnRlbF93cml0ZV9kcF9zZHAoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCiAJCQkgICAgICAgdW5zaWduZWQgaW50IHR5cGUpCkBAIC01Mjg1LDkg KzUyMDcsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF93cml0ZV9kcF9zZHAoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCiAJCWxlbiA9IGRybV9kcF92c2Nfc2RwX3BhY2soJmNydGNfc3RhdGUt PmluZm9mcmFtZXMudnNjLCAmc2RwKTsKIAkJYnJlYWs7CiAJY2FzZSBIRE1JX1BBQ0tFVF9UWVBF X0dBTVVUX01FVEFEQVRBOgotCQlsZW4gPSBpbnRlbF9kcF9oZHJfbWV0YWRhdGFfaW5mb2ZyYW1l X3NkcF9wYWNrKGRpc3BsYXksCi0JCQkJCQkJICAgICAgICZjcnRjX3N0YXRlLT5pbmZvZnJhbWVz LmRybS5kcm0sCi0JCQkJCQkJICAgICAgICZzZHAsIHNpemVvZihzZHApKTsKKwkJbGVuID0gZHJt X2RwX2hkcl9tZXRhZGF0YV9pbmZvZnJhbWVfc2RwX3BhY2soZGlzcGxheS0+ZHJtLAorCQkJCQkJ CSAgICAgJmNydGNfc3RhdGUtPmluZm9mcmFtZXMuZHJtLmRybSwKKwkJCQkJCQkgICAgICZzZHAs IHNpemVvZihzZHApKTsKIAkJYnJlYWs7CiAJY2FzZSBEUF9TRFBfQURBUFRJVkVfU1lOQzoKIAkJ bGVuID0gaW50ZWxfZHBfYXNfc2RwX3BhY2soJmNydGNfc3RhdGUtPmluZm9mcmFtZXMuYXNfc2Rw LCAmc2RwLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZGlzcGxheS9kcm1fZHBfaGVscGVyLmgg Yi9pbmNsdWRlL2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuaAppbmRleCA1YjA1YTdmYmUxNzRh Li4zZTNmMTE5Nzc1YjM4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kaXNwbGF5L2RybV9kcF9o ZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9kaXNwbGF5L2RybV9kcF9oZWxwZXIuaApAQCAtMzIs NiArMzIsNyBAQAogc3RydWN0IGRybV9kZXZpY2U7CiBzdHJ1Y3QgZHJtX2RwX2F1eDsKIHN0cnVj dCBkcm1fcGFuZWw7CitzdHJ1Y3QgaGRtaV9kcm1faW5mb2ZyYW1lOwogCiBib29sIGRybV9kcF9j aGFubmVsX2VxX29rKGNvbnN0IHU4IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdLAog CQkJICBpbnQgbGFuZV9jb3VudCk7CkBAIC0xMDM1LDYgKzEwMzYsOSBAQCBpbnQgZHJtX2RwX2J3 X2NoYW5uZWxfY29kaW5nX2VmZmljaWVuY3koYm9vbCBpc191aGJyKTsKIGludCBkcm1fZHBfbWF4 X2RwcnhfZGF0YV9yYXRlKGludCBtYXhfbGlua19yYXRlLCBpbnQgbWF4X2xhbmVzKTsKIAogc3Np emVfdCBkcm1fZHBfdnNjX3NkcF9wYWNrKGNvbnN0IHN0cnVjdCBkcm1fZHBfdnNjX3NkcCAqdnNj LCBzdHJ1Y3QgZHBfc2RwICpzZHApOworc3NpemVfdCBkcm1fZHBfaGRyX21ldGFkYXRhX2luZm9m cmFtZV9zZHBfcGFjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCQkgICAgICAgY29uc3Qg c3RydWN0IGhkbWlfZHJtX2luZm9mcmFtZSAqZHJtX2luZm9mcmFtZSwKKwkJCQkJICAgICAgIHN0 cnVjdCBkcF9zZHAgKnNkcCwgc2l6ZV90IHNpemUpOwogaW50IGRybV9kcF9saW5rX3N5bWJvbF9j eWNsZXMoaW50IGxhbmVfY291bnQsIGludCBwaXhlbHMsIGludCBkc2Nfc2xpY2VfY291bnQsCiAJ CQkgICAgICBpbnQgYnBwX3gxNiwgaW50IHN5bWJvbF9zaXplLCBib29sIGlzX21zdCk7CiAKLS0g CjIuNDMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkxpbnV4LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt cm9ja2NoaXAK