Skip to content

Backport vd65g4 camera driver support - #7463

Merged
pelwell merged 8 commits into
raspberrypi:rpi-6.18.yfrom
6by9:rpi-6.18.y-st-cameras
Aug 3, 2026
Merged

Backport vd65g4 camera driver support#7463
pelwell merged 8 commits into
raspberrypi:rpi-6.18.yfrom
6by9:rpi-6.18.y-st-cameras

Conversation

@6by9

@6by9 6by9 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Requested by ST.

Draft for the moment as I'm seeing minor issues.

Commit 5489abf upstream

Switch compatible from a const to an enum to accommodate both the vd55g1
and the vd65g4, which is the color variant.

Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
Commit e138e7f upstream

The vd65g4 is the bayer version of the vd55g1.
As opposed to the vd55g1, the vd65g4 does not need any patch. Check the
sensor id at probe and choose to patch or not on power_on() according to
it.
It's bayer matrix's order is RGGB. This commit handles hflip and vflip
by switching the bayer pattern accordingly.

Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
Commit e4a4f2e3b9bc65e0b82ae8c3a2945955870df36f upstream.

In the driver initialization, the index of the default media bus code
from the supported media bus code array is passed directly to the
vd55g1_get_fmt_code() function instead of the proper media bus code.

This works correctly as a proper media bus code is set after
initialization but could not have been the case. This also resulted in
mutliple "Unsupported mbus format" error messages.

Retrieve the media bus code from the media bus code array, and pass this
media bus code to vd55g1_get_fmt_code() instead of the code index.

Rename VD55G1_MBUS_CODE_DEF to VD55G1_MBUS_CODE_IDX_DEF and
VD55G1_MODE_DEF to VD55G1_MODE_IDX_DEF while at it to avoid future
confusions. Display the guilty error code in warning message.

Cc: stable@vger.kernel.org
Fixes: e138e7f ("media: i2c: vd55g1: Add support for vd65g4 RGB variant")
Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Commit 3e275097e206a67f2b691c8167313871ee421cd7 upstream.

vd55g1_update_pad_fmt() is called in vd55g1_init_state(). But
vd55g1_set_pad_fmt(), called at the end of vd55g1_init_state(), also
calls vd55g1_update_pad_fmt() itself.

Enhance readability and clear confusion by only preparing the format in
vd55g1_init_state() and let vd55g1_set_pad_fmt() update it instead,
effectively calling it only 1 time instead of 2.

Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Commit 113a84d6ba739d333eef2a595e3ccd4f97a306c2 upstream

Apply digital gain to all channels, each channel representing a color.

Cc: stable@vger.kernel.org
Fixes: e138e7f ("media: i2c: vd55g1: Add support for vd65g4 RGB variant")
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Commit eaa329aff7bb272f7ba6881de14eb3a4c6626ed5 upstream

Define it as a new monochrome variant of vd65g4.

Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Commit 7a1e5239ae63c68035ac5b8902ff779b394adfd4 upstream

vd55g4 is the same device as vd65g4 but outputs in monochrome instead of
RGB. Adapt the driver structure according to this new variant, and add
its support.

Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Commit 92a59c24cb688b5faecdb6047a377fc76bc093da upstream

Running the sensor on 10 bits mode resulted in FPS being 25% faster than
it should be. This issue did not appear in 8 bits mode. This is mostly
noticeable with libcamera as it can set a target FPS value directly.

This is caused by the V4L2_CID_PIXEL_RATE control being dynamically
changed according to the media bus code, while it should be the same
regardless of the code.

Since we already compute the pixel_clock, use it directly for
V4L2_CID_PIXEL_RATE instead.

Suggested-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
@6by9
6by9 force-pushed the rpi-6.18.y-st-cameras branch from 74e2031 to 21acbf0 Compare August 3, 2026 10:48
@6by9
6by9 marked this pull request as ready for review August 3, 2026 13:31
@6by9
6by9 requested a review from naushir August 3, 2026 13:31
@6by9

6by9 commented Aug 3, 2026

Copy link
Copy Markdown
Contributor Author

Pulled in the latest change from mainline, and dropped the draft flag.

The 320x240 mode on vd55g1 is still delivering the wrong frame rate, but the others are fine.

@naushir naushir left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@pelwell
pelwell merged commit 3e4afe4 into raspberrypi:rpi-6.18.y Aug 3, 2026
12 checks passed
popcornmix added a commit to raspberrypi/firmware that referenced this pull request Aug 3, 2026
kernel: Strict pinmux support for pinctrl-bcm2835
See: raspberrypi/linux#7530

kernel: dtoverlays: mcp2515: Add spi6 support
See: raspberrypi/linux#7534

kernel: configs: Enable USB Type-C/PD support for FUSB302-based HATs
See: raspberrypi/linux#7532

kernel: Backport vd65g4 camera driver support
See: raspberrypi/linux#7463
popcornmix added a commit to raspberrypi/rpi-firmware that referenced this pull request Aug 3, 2026
kernel: Strict pinmux support for pinctrl-bcm2835
See: raspberrypi/linux#7530

kernel: dtoverlays: mcp2515: Add spi6 support
See: raspberrypi/linux#7534

kernel: configs: Enable USB Type-C/PD support for FUSB302-based HATs
See: raspberrypi/linux#7532

kernel: Backport vd65g4 camera driver support
See: raspberrypi/linux#7463
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants