From nobody Fri Sep 25 21:41:01 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EB246503BEB for ; Tue, 8 Sep 2026 09:07:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788858481; cv=none; b=T9oJB3CgiiARBoEO9L7f4WpIBOIVsW3M71V0n5PsyXg4rJ2fy48JcLUlMdYQeHqVYsDUR/LeEKr8DUpr67CacryqXEGVFHAqnclaX+e9s1PlLYbeeR21skPXdkXhhPW+9FJAgvZBwJOJVIVTuq7sCkPG2Y7yi7cxMRUjTcEGYGQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788858481; c=relaxed/simple; bh=h38nWmHGokmgNrF8M7H1ZEOsIaWfmOwXRv9fJbwDAq0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=f6vO1nC88tCy+EsoNbuEcSrgpL2alQOOS+yxVmY8nAjFFq+UzZnMMbJtwSlPRDMZmxMLsKs0pc5X7OBNu7IrH15ZaI9KWZjmkBHu2Lz84188sWGZPNCclEI+xxhVneBbT9qJ4pTuVKohdxOxhSPezL837nRDucrOleCZiZG3xpY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=BQnjgMjb; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="BQnjgMjb" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2db59f54ccfso10163525ad.2 for ; Tue, 08 Sep 2026 02:07:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1788858479; x=1789463279; darn=vger.kernel.org; h=content-transfer-encoding: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=htcWMQzzIdN2OMq/lgGMWw6WmNo5HAqJQi0+KH0X9Sk=; b=BQnjgMjbD86T/yCETa42VP+ODESR27OSsnSbZlAAMfxc/XlebaTeZKnPN0dvGrBuEj tDX4AMbUJbJYWvcWFTw2mp9JAGrW8HtiGYIcpwX2Lr84Frt88TrZlmkYKe8m7Xc5hO6F /pKWkIHRMQ0jcMt/vwx0fEyb9r1/q6JlbpYAs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788858479; x=1789463279; h=content-transfer-encoding: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=htcWMQzzIdN2OMq/lgGMWw6WmNo5HAqJQi0+KH0X9Sk=; b=J+OJU8lPoSk/7sXzWY41OuziR6RtNfEyEPbfbjIUaPz7ipQ2pJbpFkFqN9HV00d7Ei 1mWA1EFi246qT9ZbuRoG/YbfwEuDPF/kLabJ/iXUq93eQTjV+ejav4W3fajBj+Ghn30q HOIoS6fd3VzI2LbhHxkdQZ5gMj41WCxU+ZoFBWDiy//VjpMyKCTHq7kUjJt2wbL6VJz8 Ze29SGgltkT+U48kQ61NFtJM3nf+XDtjiGAMfs/2jqLnTD6opQYc5gWIBCgVPG+BTbdv FZHmAxImhde3ov9dMzfi5lUsy4vTqU6OaUR7YralWLiI+GecwvgmDEDVPr1kqT3FUWyP lFfg== X-Forwarded-Encrypted: i=1; AKwUvBy3+Ot/Ef5DUro9/NP6tmez2N/u4mCXuqt6ZlQ0/nci2YV4IDmJj9S9nuHClaiSiGZigfbQ59CJX+4iIiM=@vger.kernel.org X-Gm-Message-State: AFuF++mmHL1jPspg+KVc1rYTHtTGyFFhhuyih0PyZKGecPb7RXhlRrE4 gE9u6+YpSiA8dhJJsGDFXbEgLljjTZIFmpOfHZG/kHIJpd2dyDXd0VQC0iSpmf7uDg== X-Gm-Gg: AYBFou3Hd8UwJ4gHhvPV7Z01DzttCIyPN2eDFEz8qKPkN/gQ64ncTuRH4pAhesxmxGL xWIvc04CNOx78myMv6vTINfMCmp7Rctt3NVhFFY3YKGrNlh/YIoylOg5B3OWSwyXkQGb2WHhMs+ 9P58OidmGoHGFt7e2QYm5xfbY6spZjT4sqqqpY1IiY5gamFSDwcXtCoy1Y2+P02vLLRbDXYU/RE seKE0aMvb3cwSp/sMAMVXZHjuw6rn5LtnPNsl2GZji0KLAAx0HZJcJZXSJbBK6pin0thPeUROoT FDtAlrC51iwneRe8r+YlTDgtE0GXsPJKW2blvLWqblYmc99CcwVVJ+ISpx4xTJYIhefDKOw6RI3 /Iy93reAclS3qht71bjG6URhapR19qRTeZx3z5M88UEkvZv5OUu6MPWGrqRrR57FW3NUfjG3XfP yOq4uUJ+al6Qgdr3d9q8SYsHoKhxB9azA9VlTlle4LUzc+9Ja0y4B6tYKzsmqX0kawVIE9Etqei NeGfh1cez3cIAELWufxurjLoNscet8uHXhbFTgftUNA+nA= X-Received: by 2002:a17:90b:2784:b0:395:4de5:1054 with SMTP id 98e67ed59e1d1-39b26272bdcmr47233218a91.16.1788858479259; Tue, 08 Sep 2026 02:07:59 -0700 (PDT) Received: from wenst-7875.tpe.corp.google.com ([2a00:79e0:201d:8:e541:8c2f:4ce9:823a]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39b4b72f62esm19718804a91.5.2026.09.08.02.07.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 02:07:58 -0700 (PDT) From: Chen-Yu Tsai To: Liu Ying , Laurentiu Palcu , Lucas Stach , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: Chen-Yu Tsai , David Airlie , Simona Vetter , linux-sunxi@lists.linux.dev, imx@lists.linux.dev, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH 1/4] drm/fb-dma-helper: Add drm_fb_dma_get_gem_clipped_addr() Date: Tue, 8 Sep 2026 17:07:40 +0800 Message-ID: <20260908090745.1089143-2-wenst@chromium.org> X-Mailer: git-send-email 2.55.0.979.g7e5102b832-goog In-Reply-To: <20260908090745.1089143-1-wenst@chromium.org> References: <20260908090745.1089143-1-wenst@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" drm_fb_dma_get_gem_addr() returns the DMA address to the "unclipped" framebuffer. However some display drivers want the "clipped" framebuffer instead, as they are also using the clipped coordinates to program the hardware. Some of these drivers are open-coding drm_fb_dma_get_gem_addr() with the source coordinates replaced, while others have been incorrectly converted to using drm_fb_dma_get_gem_addr(), which would end up causing incorrect parts of the framebuffer to be displayed if it were somehow clipped. Add drm_fb_dma_get_gem_clipped_addr(), a "clipped" version of drm_fb_dma_get_gem_addr() for these drivers to use. Cc: # dependency for next patch Signed-off-by: Chen-Yu Tsai --- drivers/gpu/drm/drm_fb_dma_helper.c | 63 +++++++++++++++++++++-------- include/drm/drm_fb_dma_helper.h | 4 ++ 2 files changed, 51 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/drm_fb_dma_helper.c b/drivers/gpu/drm/drm_fb_d= ma_helper.c index fd71969d2fb1..a260e7cd5667 100644 --- a/drivers/gpu/drm/drm_fb_dma_helper.c +++ b/drivers/gpu/drm/drm_fb_dma_helper.c @@ -59,20 +59,10 @@ struct drm_gem_dma_object *drm_fb_dma_get_gem_obj(struc= t drm_framebuffer *fb, } EXPORT_SYMBOL_GPL(drm_fb_dma_get_gem_obj); =20 -/** - * drm_fb_dma_get_gem_addr() - Get DMA (bus) address for framebuffer, for = pixel - * formats where values are grouped in blocks this will get you the beginn= ing of - * the block - * @fb: The framebuffer - * @state: Which state of drm plane - * @plane: Which plane - * Return the DMA GEM address for given framebuffer. - * - * This function will usually be called from the PLANE callback functions. - */ -dma_addr_t drm_fb_dma_get_gem_addr(struct drm_framebuffer *fb, - struct drm_plane_state *state, - unsigned int plane) +static dma_addr_t _drm_fb_dma_get_gem_addr(struct drm_framebuffer *fb, + unsigned int plane, + unsigned int x, + unsigned int y) { struct drm_gem_dma_object *obj; dma_addr_t dma_addr; @@ -96,8 +86,8 @@ dma_addr_t drm_fb_dma_get_gem_addr(struct drm_framebuffer= *fb, v_div =3D fb->format->vsub; } =20 - sample_x =3D (state->src_x >> 16) / h_div; - sample_y =3D (state->src_y >> 16) / v_div; + sample_x =3D x / h_div; + sample_y =3D y / v_div; block_start_y =3D (sample_y / block_h) * block_h; num_hblocks =3D sample_x / block_w; =20 @@ -106,8 +96,49 @@ dma_addr_t drm_fb_dma_get_gem_addr(struct drm_framebuff= er *fb, =20 return dma_addr; } + +/** + * drm_fb_dma_get_gem_addr() - Get DMA (bus) address for unclipped framebu= ffer, + * for pixel formats where values are grouped in blocks this will get you = the + * beginning of the block + * @fb: The framebuffer + * @state: Which state of drm plane + * @plane: Which plane + * + * This function will usually be called from the PLANE callback functions. + * + * Return: GEM DMA address for given framebuffer, unclipped. + */ +dma_addr_t drm_fb_dma_get_gem_addr(struct drm_framebuffer *fb, + struct drm_plane_state *state, + unsigned int plane) +{ + return _drm_fb_dma_get_gem_addr(fb, plane, state->src_x >> 16, + state->src_y >> 16); +} EXPORT_SYMBOL_GPL(drm_fb_dma_get_gem_addr); =20 +/** + * drm_fb_dma_get_gem_clipped_addr() - Get DMA (bus) address for clipped + * framebuffer, for pixel formats where values are grouped in blocks this + * will get you the beginning of the block + * @fb: The framebuffer + * @state: Which state of drm plane + * @plane: Which plane + * + * This function will usually be called from the PLANE callback functions. + * + * Return: GEM DMA address for given framebuffer, clipped. + */ +dma_addr_t drm_fb_dma_get_gem_clipped_addr(struct drm_framebuffer *fb, + struct drm_plane_state *state, + unsigned int plane) +{ + return _drm_fb_dma_get_gem_addr(fb, plane, state->src.x1 >> 16, + state->src.y1 >> 16); +} +EXPORT_SYMBOL_GPL(drm_fb_dma_get_gem_clipped_addr); + /** * drm_fb_dma_sync_non_coherent - Sync GEM object to non-coherent backing * memory diff --git a/include/drm/drm_fb_dma_helper.h b/include/drm/drm_fb_dma_helpe= r.h index c950732c6d36..b2a0bd7ef9d0 100644 --- a/include/drm/drm_fb_dma_helper.h +++ b/include/drm/drm_fb_dma_helper.h @@ -17,6 +17,10 @@ dma_addr_t drm_fb_dma_get_gem_addr(struct drm_framebuffe= r *fb, struct drm_plane_state *state, unsigned int plane); =20 +dma_addr_t drm_fb_dma_get_gem_clipped_addr(struct drm_framebuffer *fb, + struct drm_plane_state *state, + unsigned int plane); + void drm_fb_dma_sync_non_coherent(struct drm_device *drm, struct drm_plane_state *old_state, struct drm_plane_state *state); --=20 2.55.0.979.g7e5102b832-goog From nobody Fri Sep 25 21:41:01 2026 Received: from mail-pz2-f12.google.com (mail-pz2-f12.google.com [74.125.228.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C9A950C2BB for ; Tue, 8 Sep 2026 09:08:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788858485; cv=none; b=nQ+sCS3qRZ2OS91bHNlv1WaD3J32R33alyVwkm+Siadj1b39ZBu9plIlxdWhERQ9AcM51bt/+r5sIqR0TlZ0A9VZuivz/lLCDDUCYFvLrPyIJYjmgLRv8dXRuL6P4GHaEd/tj5kxu7QwJJqx910dYHKPtw7eJ5qX7ElcEDwaB8A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788858485; c=relaxed/simple; bh=w0FP0wBCIa+/EHsZH1IzuHconhrkS9VP6UooovR5/Jo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=u9eka15ixEFIFBN92mwHXkvhU8NoxGlqQ3z1my/NewkrPJMRzZ9sUiyS5eTXD6YWfPym70n5RMMz0paKjgFFUJLNWWYV97VffgBmhvubTMvYpMBxaBIELsjpsiqyKWUeJgKEmDgekDIfSKg4x07+fjSJDZ6Me5vUi8Fn+MJHgRc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=fSTLCwo9; arc=none smtp.client-ip=74.125.228.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="fSTLCwo9" Received: by mail-pz2-f12.google.com with SMTP id 41be03b00d2f7-cc1ceb47d53so192089a12.0 for ; Tue, 08 Sep 2026 02:08:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1788858483; x=1789463283; darn=vger.kernel.org; h=content-transfer-encoding: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=2nbiAaHsEOkyMIOSUPLzzSXJU25j/HCglaTjq/uSdS0=; b=fSTLCwo9UlzWgwAlMqzzgV5X0WBJS+cYSP1bhB0f4FASEQmrPBaNzjqhfnsjfCPhXs Dq4QuTbyisJVdciUDAqPHAq+HA48WrgF3s99pQDcGzAgo+5cDwdEfwS3/izeG/I5zTx3 suMQ/jBrFH81/gHPGoiekUeYVFNZNtQB/kB14= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788858483; x=1789463283; h=content-transfer-encoding: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=2nbiAaHsEOkyMIOSUPLzzSXJU25j/HCglaTjq/uSdS0=; b=S6iBfB8D+4pI/zkJWs/HC/KustPSZmvGgLPmj4JYafZmXyK0/KPYN+UKR3SGvlTm/0 qOR/LcZ44wQOfVhXzEx6aAdzwZgxf1IJDbTWk6nvbckV7DNUBvTPu23AlzFfmu6OGxLl rTL1dwbyWwise7gG9PTXTmSiNy4wWqzyqdIG3FwjqTQK0doGdqhoNlEKjsczYjBOhiP+ 5HFDAl6ggt6ujLD55Dt8SaCZ5n3vD/noG9tHKC02rGK7NgpXqOZYMl2lhcCDKf+tPbRv 8oUHirFGSk3GwrLh1NkVNywsr+b+OyMJP3dxxzOI8W7EmdVMRRGDk3PEAQmpx3EB9Bko /TMg== X-Forwarded-Encrypted: i=1; AKwUvBxG0M1iTp7ipoBhBudU45Udz8OrUUZaYFUFQvHjXFzUQc2AEddbWFd8d4XQQjOn0PcMBggn97TRJy9aLw4=@vger.kernel.org X-Gm-Message-State: AFuF++kWJkVg8s1BsuxdRj1F4pG+fElT8TbzrNlvTvsDFSfCCi34hTxJ JjCcdrkczvv/wgT38nDgz9eQfTLzHDLDDsshJl7Pf6etnbKeefzxWdts4qXPpJ5LzehgS+tYRCh Dxv8= X-Gm-Gg: AYBFou1LHqP7yNNimBlOdjne+drwMH6OVCpOlQi5MAzq8KnsMzAoF8NkZ3Bo+xsfClm K8bsNjaKr0nTTT9M+GnF1S/8tazpRoPsyqqBXCOCknXQzYEp+AuMHThVjvAEx+KqQVRlNU8qaYz rtrUMAIIJLrTZMQmdhZJ4q5YDOF3+DFZZbSdYXlgIauRrbg0FpeePJE/h+Iy7pi5WzFfKjc4/c4 3PearmCBNiAxC7WpUxf1EvPbKr7fkKZtyaZaNgDJi3JT5j88QCdBi8mgvR3WYP8XxMArmu2McVl mhsfynT9Vg75GuwDA17jnOrQgjgpsWTXCbpLgSW6SVrRNyN/R96KX9LKJNt/+B+3H4RWbn4XO6h oYExk4EYd7Jjlw5UNTzIcUCLedV5zBiX/ACWp4i5PF3TX6Tt/jioT6jpm3hg81YV/1pyWS02RLv 3fyfXjTGfPVdE1ct+aj2OlLVMTsufCABhRw4nxtBauhyKUFcgkswbOFL9APAvbohe3qc3VdcoYO OutxM0P0GUIe1Q1Zp4MlCB0GSEIkPgq2yLDIiYAZpmqBMk= X-Received: by 2002:a17:90a:d010:b0:38f:de94:bf34 with SMTP id 98e67ed59e1d1-39b8be7a13dmr4691886a91.10.1788858483369; Tue, 08 Sep 2026 02:08:03 -0700 (PDT) Received: from wenst-7875.tpe.corp.google.com ([2a00:79e0:201d:8:e541:8c2f:4ce9:823a]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39b4b72f62esm19718804a91.5.2026.09.08.02.07.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 02:08:02 -0700 (PDT) From: Chen-Yu Tsai To: Liu Ying , Laurentiu Palcu , Lucas Stach , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: Chen-Yu Tsai , David Airlie , Simona Vetter , linux-sunxi@lists.linux.dev, imx@lists.linux.dev, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH 2/4] drm/sun4i: layers: Fix VI buffer address for clipped offsets Date: Tue, 8 Sep 2026 17:07:41 +0800 Message-ID: <20260908090745.1089143-3-wenst@chromium.org> X-Mailer: git-send-email 2.55.0.979.g7e5102b832-goog In-Reply-To: <20260908090745.1089143-1-wenst@chromium.org> References: <20260908090745.1089143-1-wenst@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Commit 79ac1c945ab8 ("drm/sun4i: layers: Use drm_fb_dma_get_gem_addr() to get display memory") dropped the code to calculate the framebuffer's DMA address in favor of drm_fb_dma_get_gem_addr(). This turned out to be wrong in a couple ways. The hardware is programmed with clipped dimensions, so it needs the buffer address to start at the clipped boundary. Moving to the helper negated the clipping. Also, when clipping on the left, the buffer address needs to start at the first pixel in the sub-sampling group even for the luma plane. The hardware handles the interpolation internally. Switch to the new drm_fb_dma_get_gem_clipped_addr(), which provides the buffer address starting at the clipped boundary. Calculate the intra-group offset and adjust the luma plane buffer address so that it points to the start of the sub-sampling group. Fixes: 79ac1c945ab8 ("drm/sun4i: layers: Use drm_fb_dma_get_gem_addr() to g= et display memory") Cc: # v7.1+, needs drm_fb_dma_get_gem_clipped_addr= () Signed-off-by: Chen-Yu Tsai --- This is an alternative to Jernej's original revert: https://lore.kernel.org/all/3980ea1aeb3f7fe8b4700e36560deeba3d050664.178577= 2659.git.jernej.skrabec@gmail.com/ --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 2 +- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i= /sun8i_ui_layer.c index bad102134726..530efae7e13c 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -130,7 +130,7 @@ static void sun8i_ui_layer_update_buffer(struct sun8i_l= ayer *layer, ch_base =3D sun8i_channel_base(layer); =20 /* Get the start of the displayed memory */ - dma_addr =3D drm_fb_dma_get_gem_addr(fb, state, 0); + dma_addr =3D drm_fb_dma_get_gem_clipped_addr(fb, state, 0); =20 /* Set the line width */ DRM_DEBUG_DRIVER("Layer line width: %d bytes\n", fb->pitches[0]); diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i= /sun8i_vi_layer.c index 2e9cda45c04e..7a1d5f1db037 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -205,7 +205,21 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_= layer *layer, =20 for (i =3D 0; i < format->num_planes; i++) { /* Get the start of the displayed memory */ - dma_addr =3D drm_fb_dma_get_gem_addr(fb, state, i); + dma_addr =3D drm_fb_dma_get_gem_clipped_addr(fb, state, i); + + /* + * The mixer can handle odd offsets into sub-sampled YUV + * planes, but needs the address of the first pixel in each + * sub-sampled block. Adjust the luma buffer address backwards. + */ + if (i =3D=3D 0) { + u32 x_diff, y_diff; + + x_diff =3D (state->src.x1 >> 16) & (format->hsub - 1); + y_diff =3D (state->src.y1 >> 16) & (format->vsub - 1); + dma_addr -=3D y_diff * fb->pitches[i]; + dma_addr -=3D x_diff * format->cpp[i]; + } =20 /* Set the line width */ DRM_DEBUG_DRIVER("Layer %d. line width: %d bytes\n", --=20 2.55.0.979.g7e5102b832-goog From nobody Fri Sep 25 21:41:01 2026 Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E4C74511218 for ; Tue, 8 Sep 2026 09:08:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788858491; cv=none; b=ZhUCHAnpadUAWOZ7iS6evtnd4M7GTKgBPNh2IgeZWJsiTUPxYvORdl1C1TX4RG5cJcgBDyLBrLY3IQ4TvDdqZmfKJXt/e+wxkVetSmJGi76WMbswF7ZJidRHPsOfGxsCUquI/qmFkyFr1+hEJl/aHsg1yESHvJXs5EFJBg19QQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788858491; c=relaxed/simple; bh=xMbO6EhJUi/RdJ3ufWkeSaYG56Ls5TGr7006uLTOZQw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BgIbFu2laaKO8S+Dai29fAJeWM7l6CxJZB4+lomahtqk8qxuQgwhCC3+vjzFaeE3jD+eug1qKcFe7YycgPpVoGIfX5htbdPmV8fjVEfD1zLKIlerc7IiBv/qwbFp/oHmEBHMCud2NIgWiEVNRuoysZYb8tA/A9+zNqad/lXJ3M0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=niUkD29j; arc=none smtp.client-ip=209.85.215.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="niUkD29j" Received: by mail-pg1-f170.google.com with SMTP id 41be03b00d2f7-c96c92c0980so2333432a12.3 for ; Tue, 08 Sep 2026 02:08:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1788858488; x=1789463288; darn=vger.kernel.org; h=content-transfer-encoding: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=EZHoy8f3OpVjs16q22My2K8o0ZC/itaQqMauUbs1Www=; b=niUkD29j+ocgb+VJodWgsfyZ6FBfa51mJd7qwUCkp/haBaiZWWbvtyDmr1oj7xoziR flGubBpOylntQVUW5SI0LSXeDfpsPzWfDVGWBsYjfrUvknGbSVKNY4xKt6krm+N0N2Al hBMLh1PcY4pQuHg4iqm0n0aH5/m94N44YR7vU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788858488; x=1789463288; h=content-transfer-encoding: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=EZHoy8f3OpVjs16q22My2K8o0ZC/itaQqMauUbs1Www=; b=g39QV7oiCJxERfRVZATWRCC8ksLKHM0GTnzSB1h97SAHB91NMjYKUc6+N1Tg/RkJPF L6hOBQoaPGI2I6Yz9Hz0Z9tuqa9283gZZ4HmrFkStpUGANZl5NOdpQPaa7l6+tSLeVsj lgDNIVZKpHqE+z9yV2PtLU3TA4JVKc0jMDUIdUrXcIehQfY86SNyRQGUiw6qZNm7JA0r WGHRR6nNsioXoBfy+j+eJ7+iTDnWk1o1VCQHN0QTOuAGyzSL8b/rqb5SKT5GNjP0WJBc Dg/HgYXz7NOQuCqYeKd8XWG8p1ssxXilermMi/8VG3Zj2/12aTaCpFB0C1RZTPQRt/D+ NsSw== X-Forwarded-Encrypted: i=1; AKwUvBxv1rBWqGsj0MXZxW2tG84ttRvOB/LJbCftHM+ILWlQE9mb28mnrYlFEGcIm59SwwWlWLH4nw4XdZdvNI0=@vger.kernel.org X-Gm-Message-State: AFuF++k+n1BaWZ49AsE6OWszKiFK/LTrK/kQsBFDaZR42z34OHq2fwMO E9bK6CtfR+fmLI5TVR96wnJwhNinB5/UATgqEfHzDBIRooWoVbqW0cWFQM0gzvYA5g== X-Gm-Gg: AYBFou0GtXNWhdtGGTFQmLC3YNZdYy0F8HMy1Jz5bDbeEzqw07BcqfgPulQKwXKEHLq HcW1uDU04FxTAO+6msCNPsshWwZlHONT5kq85v4dxXOePj97N3IqbKkFdfRmlLSpJl+jhddKiDz aXy8kMedjY7TUmunNOp0R5dkMU9rQ+8ZoM+kkdvIngmRw64U9iYPbdxqh+mYX4ZXQ360b5CfEMM K13DqheJz/R8l3us7Qm2Lc/GC9BJ5mSkujN70WLh3BjlddljIJ3jBf0XuHUievGnYlgmWt4Hovp sM/H45cvmGSDbsiuqJODHrFrJMVGOJODxYW6XunT/sy3o7w2wNESw8ufIpHM6LHwZzt1R95bO0t j1Ly28ZC9NLaE3khOBVXDH2SZr9v+FeHVzrhnLaJtraZBkQncNX3BLmwECsZKHntav1bcz6bL7q Rbhi6Ul1ElRYOpJTcKUO7S9mnTi0eJrgyguOhVPtmsWps6lndvPxSqx0XsBNrSV6ufvKA7nuNqk pSwDr9oB0AEYo73t2b5BfVkTfRB/8cumKdWmhRRUvzc968GCJZnk5pFyA== X-Received: by 2002:a17:90a:d003:b0:398:ba9e:75ff with SMTP id 98e67ed59e1d1-39b26273a40mr43384810a91.21.1788858488251; Tue, 08 Sep 2026 02:08:08 -0700 (PDT) Received: from wenst-7875.tpe.corp.google.com ([2a00:79e0:201d:8:e541:8c2f:4ce9:823a]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39b4b72f62esm19718804a91.5.2026.09.08.02.08.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 02:08:06 -0700 (PDT) From: Chen-Yu Tsai To: Liu Ying , Laurentiu Palcu , Lucas Stach , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: Chen-Yu Tsai , David Airlie , Simona Vetter , linux-sunxi@lists.linux.dev, imx@lists.linux.dev, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH 3/4] drm/imx/dc: plane: Switch to drm_fb_dma_get_gem_clipped_addr() Date: Tue, 8 Sep 2026 17:07:42 +0800 Message-ID: <20260908090745.1089143-4-wenst@chromium.org> X-Mailer: git-send-email 2.55.0.979.g7e5102b832-goog In-Reply-To: <20260908090745.1089143-1-wenst@chromium.org> References: <20260908090745.1089143-1-wenst@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The hardware is programmed with clipped source and destination dimensions, but the framebuffer address is calculated using drm_fb_dma_get_gem_addr(), which uses the full source dimensions. This will not match the source offset if the top and/or left sides are clipped. Switch to the new drm_fb_dma_get_gem_clipped_addr(), which provides the buffer address starting at the clipped boundary. Fixes: 711a3b878366 ("drm/imx: Add i.MX8qxp Display Controller KMS") Cc: # Needs drm_fb_dma_get_gem_clipped_addr() Signed-off-by: Chen-Yu Tsai --- drivers/gpu/drm/imx/dc/dc-plane.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/imx/dc/dc-plane.c b/drivers/gpu/drm/imx/dc/dc-= plane.c index dea7404fe659..7bab75d5dedd 100644 --- a/drivers/gpu/drm/imx/dc/dc-plane.c +++ b/drivers/gpu/drm/imx/dc/dc-plane.c @@ -65,7 +65,7 @@ static int dc_plane_check_max_source_resolution(struct dr= m_plane_state *state) static int dc_plane_check_fb(struct drm_plane_state *state) { struct drm_framebuffer *fb =3D state->fb; - dma_addr_t baseaddr =3D drm_fb_dma_get_gem_addr(fb, state, 0); + dma_addr_t baseaddr =3D drm_fb_dma_get_gem_clipped_addr(fb, state, 0); =20 /* base address alignment */ if (baseaddr & 0x3) { @@ -146,7 +146,7 @@ dc_plane_atomic_update(struct drm_plane *plane, struct = drm_atomic_commit *state) src_w =3D drm_rect_width(&new_state->src) >> 16; src_h =3D drm_rect_height(&new_state->src) >> 16; =20 - baseaddr =3D drm_fb_dma_get_gem_addr(fb, new_state, 0); + baseaddr =3D drm_fb_dma_get_gem_clipped_addr(fb, new_state, 0); =20 fu_ops =3D dc_fu_get_ops(dplane->fu); =20 --=20 2.55.0.979.g7e5102b832-goog From nobody Fri Sep 25 21:41:01 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A6184511218 for ; Tue, 8 Sep 2026 09:08:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788858496; cv=none; b=YDNyxNRluaq+UCS0WV/3IQBCR77beFx1mvCo5r/qBHsR35/AZUAi8/NnEnTZmO/3QTC+6fge1Q+voBibGhXvQAwAeNh2pUYqGAtFaYASD97yCWgT1dzazgkPz63XKtiV1VxPZmSyAbM+upJdw93Bf7QZNu0IhpFC7AyJZtdOXgc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788858496; c=relaxed/simple; bh=qJDTSQf3mOWj1wTBmShDO4bnN0jyzbEKQlcjgoU7YP0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=A+5IMaiUxYaFn0voD9ofKpms6KNE2rzC0rtH+ZeVjozbQwL8wH/bBfVGimxqvK/NDpelp9qwFHNO/PJTBPa1gwk3lbdNsdf7FM7jZip1QAJ2+wzJpLrxBv02OTH2Y3S4XSM27/aq2dHb2CKJ4PlBaWFXHZVrVDKxDZE/7NeyoU8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=dw2D+4Rx; arc=none smtp.client-ip=209.85.216.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="dw2D+4Rx" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-38d489b6b71so5015003a91.0 for ; Tue, 08 Sep 2026 02:08:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1788858494; x=1789463294; darn=vger.kernel.org; h=content-transfer-encoding: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=KZyOo+ygFnvVbouyZiGeNffeUNQ7tsTzDFqw1u+OtP0=; b=dw2D+4RxSgAAbjSIqrQeO8JCTJ7eGdQUkjzKiTTmyJMdugBKbXa8hP5ypaYq817CyY QYXtee0LTuell4gQ1aZB3iBQn7kJu4ulVQjHLIAqsyWa9JVeX1/MTnsRAFo1aLbQ3IO/ glNsKXamPZTdEP+RCQSdVX1KKCdfEsSVhOUKs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788858494; x=1789463294; h=content-transfer-encoding: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=KZyOo+ygFnvVbouyZiGeNffeUNQ7tsTzDFqw1u+OtP0=; b=Wh/K1adStvU99+zjQxVOYUjq/zOhrjL57Cj1+i1ekCbHlgMZI9QpBsPWtz0Q1Vki2l PwUuplqVAEUC2AfHrjIredkTB/jFo0wZXEY+CVS8f1XDPTrvGvZ1iRPJ6NUWjyR+RX3K yx0neWugkX+4vBW6jBKWwxXpuFqBAaasJ9dFzw9CZlCUj0g5hZLjIUV4cJU/0RtuX5zn jjtRViQpndBMxRl+glgbtwGUXBPaq4ijSa2HiYwXZURkCL5NvHqHTyVE6+Gqv5mbvhab zKmvLuvhwyZAkOPlwFIZhR1v1wNkT+ggHQEHfnWBRFzJ3/2sRRIZCoUsGcW1n9uPH7YU /wKQ== X-Forwarded-Encrypted: i=1; AKwUvBwk7iZm0lD8u6aBv/BSPCJz1aVdS2UYmcglwry2/DNfEiNrfg176ElIt5fE39uqn15CdVN+Eg3LpkuyNN8=@vger.kernel.org X-Gm-Message-State: AFuF++lVhhoHS7laKAclAUD3gi6m2z2XtRxPejSk3UpUb0vWypz+++vR ZHH3yRcrfPkwD3bprDpvaIBfWWcChN6hC9/QJCMJZCnmvLZTVUJJkpy+A+RictYF/g== X-Gm-Gg: AYBFou3CXwDkA4w8kaK0/A83CJG+wKY5dvHoekHLalLMGH8tKIiZk38KD6dKlSExG1o WWUKruYDB2YId0pVhnn8Bcw1skcl+IGYC1bdPuhHY+RrdtZgUmrhjTTPikCehSue4GT/YlPTKMg /vC0S43ROxfx499ePA5MwF8IkW3+CS5gabpJg4YY66i8rUzmKufNIkqrZ/lODTzDzM5V2oBcxOi L1EV5bftR0FZRFYK061I2YwsQYpANx0Ow++H7dWe+HMQjxK0SCANFssTz9SHY2OHWbzs2uE7nSz k3Yrz1xqcYFM2fdYetwOtFWRvuf02MiUM6kUQUpMyn8MkO31TjH+hc7CmeOdnM5WpURInPP+HcU M+pLy2yksq0w+FPmz7tE0922Fw2H9CyaGECXN+SSydb8GIXolEgITHNocAulxuFAP4CvrUN8Lnx 4ffvHmw7apFIs5hLv36Uo/e4pDHrA9V8BqzwJegMgrCtvrynAcYPeJzmMBejGGpbFYiw4xPo3qQ 9cRYTvVXGFLhtEGm7N22q2ES9EbalA/57O/rQQABfTb9JE= X-Received: by 2002:a17:90b:586c:b0:398:a2ed:7b5c with SMTP id 98e67ed59e1d1-39b2623ef65mr47890193a91.24.1788858493952; Tue, 08 Sep 2026 02:08:13 -0700 (PDT) Received: from wenst-7875.tpe.corp.google.com ([2a00:79e0:201d:8:e541:8c2f:4ce9:823a]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39b4b72f62esm19718804a91.5.2026.09.08.02.08.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Sep 2026 02:08:11 -0700 (PDT) From: Chen-Yu Tsai To: Liu Ying , Laurentiu Palcu , Lucas Stach , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann Cc: Chen-Yu Tsai , David Airlie , Simona Vetter , linux-sunxi@lists.linux.dev, imx@lists.linux.dev, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/4] drm/imx/dcss: plane: Switch to drm_fb_dma_get_gem_clipped_addr() Date: Tue, 8 Sep 2026 17:07:43 +0800 Message-ID: <20260908090745.1089143-5-wenst@chromium.org> X-Mailer: git-send-email 2.55.0.979.g7e5102b832-goog In-Reply-To: <20260908090745.1089143-1-wenst@chromium.org> References: <20260908090745.1089143-1-wenst@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The i.MX DCSS driver is open coding drm_fb_dma_get_gem_clipped_addr(), with only a slight difference of rounding down the X offset for the first plane if the format is packed, sub-sampled YUV. This is likely to correct the buffer address to the first pixel of the 2-pixel group. Otherwise the hardware will start the scan-out from the second pixel, which leads to the U/V components getting swapped around, and the chroma component of the next pixel group being used. Switch to drm_fb_dma_get_gem_clipped_addr(), and offset the address by a pixel if the X offset is odd. Signed-off-by: Chen-Yu Tsai --- drivers/gpu/drm/imx/dcss/dcss-plane.c | 34 +++++++++++---------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/imx/dcss/dcss-plane.c b/drivers/gpu/drm/imx/dc= ss/dcss-plane.c index 303e93fd036c..580d9cfb4053 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-plane.c +++ b/drivers/gpu/drm/imx/dcss/dcss-plane.c @@ -219,28 +219,22 @@ static void dcss_plane_atomic_set_base(struct dcss_pl= ane *dcss_plane) struct dcss_dev *dcss =3D plane->dev->dev_private; struct drm_framebuffer *fb =3D state->fb; const struct drm_format_info *format =3D fb->format; - struct drm_gem_dma_object *dma_obj =3D drm_fb_dma_get_gem_obj(fb, 0); unsigned long p1_ba =3D 0, p2_ba =3D 0; =20 - if (!format->is_yuv || - format->format =3D=3D DRM_FORMAT_NV12 || - format->format =3D=3D DRM_FORMAT_NV21) - p1_ba =3D dma_obj->dma_addr + fb->offsets[0] + - fb->pitches[0] * (state->src.y1 >> 16) + - format->char_per_block[0] * (state->src.x1 >> 16); - else if (format->format =3D=3D DRM_FORMAT_UYVY || - format->format =3D=3D DRM_FORMAT_VYUY || - format->format =3D=3D DRM_FORMAT_YUYV || - format->format =3D=3D DRM_FORMAT_YVYU) - p1_ba =3D dma_obj->dma_addr + fb->offsets[0] + - fb->pitches[0] * (state->src.y1 >> 16) + - 2 * format->char_per_block[0] * (state->src.x1 >> 17); - - if (format->format =3D=3D DRM_FORMAT_NV12 || - format->format =3D=3D DRM_FORMAT_NV21) - p2_ba =3D dma_obj->dma_addr + fb->offsets[1] + - (((fb->pitches[1] >> 1) * (state->src.y1 >> 17) + - (state->src.x1 >> 17)) << 1); + p1_ba =3D drm_fb_dma_get_gem_clipped_addr(fb, state, 0); + + /* + * TODO fix address until helpers know packed, sub-sampled YUV format blo= ck size + * + * The buffer address for packed, sub-sampled YUV formats such as DRM_FOR= MAT_UYVY + * need to be on the first pixel of each pixel group or block. Otherwise = the first + * pixel of the next pixel group is read and the U/V values get swapped a= round. + */ + if (drm_format_info_is_yuv_packed(format)) + p1_ba -=3D ((state->src.x1 >> 16) & 1) * format->cpp[0]; + + if (format->num_planes > 1) + p2_ba =3D drm_fb_dma_get_gem_clipped_addr(fb, state, 1); =20 dcss_dpr_addr_set(dcss->dpr, dcss_plane->ch_num, p1_ba, p2_ba, fb->pitches[0]); --=20 2.55.0.979.g7e5102b832-goog