Files
openwrt-armor-g5/target/linux/bcm27xx/patches-6.6/950-0241-media-bcm2835-unicam-Retain-packing-information-on-G.patch
domenico 27c9d80f51
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
Initial commit
2025-06-24 12:51:15 +02:00

49 lines
1.5 KiB
Diff

From 2bf88d30fd82fd9dc4e02c45ec98c97482693e64 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date: Tue, 19 May 2020 11:46:47 +0100
Subject: [PATCH 0241/1085] media: bcm2835-unicam: Retain packing information
on G_FMT
The change to retrieve the pixel format always on g_fmt didn't
check whether the native or unpacked version of the format
had been requested, and always returned the packed one.
Correct this so that the packing setting is retained whereever
possible.
Fixes "9d59e89 media: bcm2835-unicam: Re-fetch mbus code from subdev
on a g_fmt call"
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
.../media/platform/bcm2835/bcm2835-unicam.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
--- a/drivers/media/platform/bcm2835/bcm2835-unicam.c
+++ b/drivers/media/platform/bcm2835/bcm2835-unicam.c
@@ -982,8 +982,23 @@ static int unicam_g_fmt_vid_cap(struct f
if (!fmt)
return -EINVAL;
- node->fmt = fmt;
- node->v_fmt.fmt.pix.pixelformat = fmt->fourcc;
+ if (node->fmt != fmt) {
+ /*
+ * The sensor format has changed so the pixelformat needs to
+ * be updated. Try and retain the packed/unpacked choice if
+ * at all possible.
+ */
+ if (node->fmt->repacked_fourcc ==
+ node->v_fmt.fmt.pix.pixelformat)
+ /* Using the repacked format */
+ node->v_fmt.fmt.pix.pixelformat = fmt->repacked_fourcc;
+ else
+ /* Using the native format */
+ node->v_fmt.fmt.pix.pixelformat = fmt->fourcc;
+
+ node->fmt = fmt;
+ }
+
*f = node->v_fmt;
return 0;