* [PATCH] media: ipu-bridge: Add upside-down sensor quirk for Dell 16 Premium DA16250 @ 2026-03-31 19:01 Lukas Larson 2026-04-02 16:39 ` Sakari Ailus 0 siblings, 1 reply; 5+ messages in thread From: Lukas Larson @ 2026-03-31 19:01 UTC (permalink / raw) To: mchehab Cc: hverkuil+cisco, johannes.goede, sakari.ailus, linux-media, linux-kernel, Lukas Larson On the Dell 16 Premium DA16250 laptop, the camera sensor (OVTI02C1) is mounted upside-down, resulting in a flipped image in userspace applications. Add this model to the upside_down_sensor_dmi_ids list to provide the necessary 180-degree rotation quirk so the image is oriented correctly. Signed-off-by: Lukas Larson <lukaslarson@gmail.com> --- drivers/media/pci/intel/ipu-bridge.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel/ipu-bridge.c index 32cc95a766b7..ec2056c268de 100644 --- a/drivers/media/pci/intel/ipu-bridge.c +++ b/drivers/media/pci/intel/ipu-bridge.c @@ -104,6 +104,13 @@ static const struct ipu_sensor_config ipu_supported_sensors[] = { * without reporting a rotation of 180° in neither the SSDB nor the _PLD. */ static const struct dmi_system_id upside_down_sensor_dmi_ids[] = { + { + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Dell 16 Premium DA16250"), + }, + .driver_data = "OVTI02C1", + }, { .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), -- 2.53.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] media: ipu-bridge: Add upside-down sensor quirk for Dell 16 Premium DA16250 2026-03-31 19:01 [PATCH] media: ipu-bridge: Add upside-down sensor quirk for Dell 16 Premium DA16250 Lukas Larson @ 2026-04-02 16:39 ` Sakari Ailus [not found] ` <CAMCiyfoVxS_iQWVEiak+mv1i9uF2WtqMqyfCgeQyO_q5XS4LgA@mail.gmail.com> 0 siblings, 1 reply; 5+ messages in thread From: Sakari Ailus @ 2026-04-02 16:39 UTC (permalink / raw) To: Lukas Larson Cc: mchehab, hverkuil+cisco, johannes.goede, linux-media, linux-kernel Hi Lukas, Thanks for the patch. On Tue, Mar 31, 2026 at 09:01:43PM +0200, Lukas Larson wrote: > On the Dell 16 Premium DA16250 laptop, the camera sensor (OVTI02C1) is > mounted upside-down, resulting in a flipped image in userspace > applications. > > Add this model to the upside_down_sensor_dmi_ids list to provide the > necessary 180-degree rotation quirk so the image is oriented correctly. Could you try if these <URL:https://git.linuxtv.org/sailus/media_tree.git/log/?h=pld> fix your issue as well? There are a bunch of Dell laptops with this sensor and only some of them need this quirk... > > Signed-off-by: Lukas Larson <lukaslarson@gmail.com> > --- > drivers/media/pci/intel/ipu-bridge.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/media/pci/intel/ipu-bridge.c b/drivers/media/pci/intel/ipu-bridge.c > index 32cc95a766b7..ec2056c268de 100644 > --- a/drivers/media/pci/intel/ipu-bridge.c > +++ b/drivers/media/pci/intel/ipu-bridge.c > @@ -104,6 +104,13 @@ static const struct ipu_sensor_config ipu_supported_sensors[] = { > * without reporting a rotation of 180° in neither the SSDB nor the _PLD. > */ > static const struct dmi_system_id upside_down_sensor_dmi_ids[] = { > + { > + .matches = { > + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), > + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Dell 16 Premium DA16250"), > + }, > + .driver_data = "OVTI02C1", > + }, > { > .matches = { > DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), -- Kind regards, Sakari Ailus ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <CAMCiyfoVxS_iQWVEiak+mv1i9uF2WtqMqyfCgeQyO_q5XS4LgA@mail.gmail.com>]
* Re: [PATCH] media: ipu-bridge: Add upside-down sensor quirk for Dell 16 Premium DA16250 [not found] ` <CAMCiyfoVxS_iQWVEiak+mv1i9uF2WtqMqyfCgeQyO_q5XS4LgA@mail.gmail.com> @ 2026-04-07 12:33 ` Sakari Ailus 2026-04-08 6:02 ` Lukas Larson 0 siblings, 1 reply; 5+ messages in thread From: Sakari Ailus @ 2026-04-07 12:33 UTC (permalink / raw) To: Lukas Larson Cc: mchehab, hverkuil+cisco, johannes.goede, linux-media, linux-kernel Hi Lukas, On Fri, Apr 03, 2026 at 11:02:54PM +0200, Lukas Larson wrote: > Hi Sakari, > > When testing on sailus/media_tree pld I could not get the camera to power > on. > Not well versed in the stack so perhaps that is a totally separate issue. > > sudo dmesg | grep -e ov02 -e 0000:00:05 -e sailus -e ovti > [ 0.345193] pci 0000:00:05.0: [8086:7d19] type 00 class 0x048000 PCIe > Root Complex Integrated Endpoint > [ 0.345207] pci 0000:00:05.0: BAR 0 [mem 0x622c000000-0x622cffffff 64bit] > [ 0.345212] pci 0000:00:05.0: enabling Extended Tags > [ 0.424651] pci 0000:00:05.0: Adding to iommu group 4 > [ 6.887487] intel-ipu6 0000:00:05.0: enabling device (0000 -> 0002) > [ 6.892671] acpi OVTI02C1:00: ipu-bridge media running sailus custom > media_tree > [ 6.894955] intel-ipu6 0000:00:05.0: Found supported sensor OVTI02C1:00 > [ 6.895027] intel-ipu6 0000:00:05.0: Connected 1 cameras > [ 6.896600] intel-ipu6 0000:00:05.0: Sending BOOT_LOAD to CSE > [ 6.933436] intel-ipu6 0000:00:05.0: Sending AUTHENTICATE_RUN to CSE > [ 6.982574] intel-ipu6 0000:00:05.0: CSE authenticate_run done > [ 6.982583] intel-ipu6 0000:00:05.0: IPU6-v4[7d19] hardware version 6 > [ 7.158144] ov02c10 i2c-OVTI02C1:00: supply dovdd not found, using dummy > regulator > [ 7.158169] ov02c10 i2c-OVTI02C1:00: supply avdd not found, using dummy > regulator > [ 7.158173] ov02c10 i2c-OVTI02C1:00: supply dvdd not found, using dummy > regulator > [ 7.159480] ov02c10 i2c-OVTI02C1:00: Error reading reg 0x300a: -121 > [ 7.159495] ov02c10 i2c-OVTI02C1:00: failed to find sensor: -121 > [ 7.159539] ov02c10 i2c-OVTI02C1:00: probe with driver ov02c10 failed > with error -121 There seems to be another problem here. :-( > > Then tested applying just the "Prioritise _PLD over SSDB in rotationpld" > change on v6.19, > but without all the related changes to v4l2, both ssdb->degree and > pld->rotation were 0, > and image still flipped. Guessing not much useful info, sorry, appreciate > your work on this. You'll also need at least another patch, "media: v4l: fwnode: Support ACPI's _PLD for v4l2_fwnode_device_parse", in order for this to work. I've rebased the patches on plain v6.19 and pushed that to the pld branch. Would you be able to test this again? -- Kind regards, Sakari Ailus ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] media: ipu-bridge: Add upside-down sensor quirk for Dell 16 Premium DA16250 2026-04-07 12:33 ` Sakari Ailus @ 2026-04-08 6:02 ` Lukas Larson 2026-04-08 11:11 ` Sakari Ailus 0 siblings, 1 reply; 5+ messages in thread From: Lukas Larson @ 2026-04-08 6:02 UTC (permalink / raw) To: Sakari Ailus Cc: mchehab, hverkuil+cisco, johannes.goede, linux-media, linux-kernel Hi Sakari, On pld 6.19 the camera powered on, but the image was flipped upside down. Tested adding https://github.com/intel/ipu6-camera-bins and https://github.com/intel/ipu6-drivers, still upside down. Some logs from pld: cam -l [0:03:57.172445296] [3436] INFO Camera camera_manager.cpp:340 libcamera v0.7.0 [0:03:57.182450990] [3437] ERROR V4L2 v4l2_subdevice.cpp:1192 'ov02c10 21-0036': Unable to get rectangle 2 on pad 0/0: Inappro priate ioctl for device [0:03:57.182463100] [3437] WARN CameraSensor camera_sensor_legacy.cpp:402 'ov02c10 21-0036': The PixelArraySize property has been defaulted to 1928x1092 [0:03:57.182465943] [3437] ERROR V4L2 v4l2_subdevice.cpp:1192 'ov02c10 21-0036': Unable to get rectangle 1 on pad 0/0: Inappro priate ioctl for device [0:03:57.182467749] [3437] WARN CameraSensor camera_sensor_legacy.cpp:413 'ov02c10 21-0036': The PixelArrayActiveAreas proper ty has been defaulted to (0, 0)/1928x1092 [0:03:57.182470246] [3437] ERROR V4L2 v4l2_subdevice.cpp:1192 'ov02c10 21-0036': Unable to get rectangle 0 on pad 0/0: Inappro priate ioctl for device [0:03:57.182471832] [3437] WARN CameraSensor camera_sensor_legacy.cpp:421 'ov02c10 21-0036': Failed to retrieve the sensor cr op rectangle [0:03:57.182473078] [3437] WARN CameraSensor camera_sensor_legacy.cpp:427 'ov02c10 21-0036': The sensor kernel driver needs t o be fixed [0:03:57.182474331] [3437] WARN CameraSensor camera_sensor_legacy.cpp:429 'ov02c10 21-0036': See Documentation/sensor_driver_ requirements.rst in the libcamera sources for more information [0:03:57.182546924] [3437] WARN CameraSensorProperties camera_sensor_properties.cpp:538 No static properties available for 'o v02c10' [0:03:57.182551521] [3437] WARN CameraSensorProperties camera_sensor_properties.cpp:540 Please consider updating the camera s ensor properties database [0:03:57.182554540] [3437] WARN CameraSensor camera_sensor_legacy.cpp:502 'ov02c10 21-0036': No sensor delays found in static properties. Assuming unverified defaults. [0:03:57.191258326] [3437] WARN IPAProxy ipa_proxy.cpp:192 Configuration file 'ov02c10.yaml' not found for IPA module 'simple ', falling back to '/usr/share/libcamera/ipa/simple/uncalibrated.yaml' [0:03:57.191277124] [3437] ERROR V4L2 v4l2_subdevice.cpp:1192 'ov02c10 21-0036': Unable to get rectangle 0 on pad 0/0: Inappro priate ioctl for device [0:03:57.191281543] [3437] WARN CameraSensor camera_sensor_legacy.cpp:881 'ov02c10 21-0036': The analogue crop rectangle has been defaulted to the active area size [0:03:57.191291694] [3437] WARN IPASoft soft_simple.cpp:104 IPASoft: Failed to create camera sensor helper for ov02c10 [0:03:57.191397279] [3437] INFO Camera camera_manager.cpp:223 Adding camera '\_SB_.PC00.LNK1' for pipeline handler simple Available cameras: 1: External camera 'ov02c10' (\_SB_.PC00.LNK1) qcam [0:04:08.229742046] [3443] INFO Camera camera_manager.cpp:340 libcamera v0.7.0 [0:04:08.239552370] [3454] ERROR V4L2 v4l2_subdevice.cpp:1192 'ov02c10 21-0036': Unable to get rectangle 2 on pad 0/0: Inappro priate ioctl for device [0:04:08.239566225] [3454] WARN CameraSensor camera_sensor_legacy.cpp:402 'ov02c10 21-0036': The PixelArraySize property has been defaulted to 1928x1092 [0:04:08.239569234] [3454] ERROR V4L2 v4l2_subdevice.cpp:1192 'ov02c10 21-0036': Unable to get rectangle 1 on pad 0/0: Inappro priate ioctl for device [0:04:08.239571547] [3454] WARN CameraSensor camera_sensor_legacy.cpp:413 'ov02c10 21-0036': The PixelArrayActiveAreas proper ty has been defaulted to (0, 0)/1928x1092 [0:04:08.239574007] [3454] ERROR V4L2 v4l2_subdevice.cpp:1192 'ov02c10 21-0036': Unable to get rectangle 0 on pad 0/0: Inappro priate ioctl for device [0:04:08.239575842] [3454] WARN CameraSensor camera_sensor_legacy.cpp:421 'ov02c10 21-0036': Failed to retrieve the sensor cr op rectangle [0:04:08.239577195] [3454] WARN CameraSensor camera_sensor_legacy.cpp:427 'ov02c10 21-0036': The sensor kernel driver needs t o be fixed [0:04:08.239578598] [3454] WARN CameraSensor camera_sensor_legacy.cpp:429 'ov02c10 21-0036': See Documentation/sensor_driver_ requirements.rst in the libcamera sources for more information [0:04:08.239652341] [3454] WARN CameraSensorProperties camera_sensor_properties.cpp:538 No static properties available for 'o v02c10' [0:04:08.239655770] [3454] WARN CameraSensorProperties camera_sensor_properties.cpp:540 Please consider updating the camera s ensor properties database [0:04:08.239659621] [3454] WARN CameraSensor camera_sensor_legacy.cpp:502 'ov02c10 21-0036': No sensor delays found in static properties. Assuming unverified defaults. [0:04:08.248493543] [3454] WARN IPAProxy ipa_proxy.cpp:192 Configuration file 'ov02c10.yaml' not found for IPA module 'simple ', falling back to '/usr/share/libcamera/ipa/simple/uncalibrated.yaml' [0:04:08.248514916] [3454] ERROR V4L2 v4l2_subdevice.cpp:1192 'ov02c10 21-0036': Unable to get rectangle 0 on pad 0/0: Inappro priate ioctl for device [0:04:08.248520342] [3454] WARN CameraSensor camera_sensor_legacy.cpp:881 'ov02c10 21-0036': The analogue crop rectangle has been defaulted to the active area size [0:04:08.248535573] [3454] WARN IPASoft soft_simple.cpp:104 IPASoft: Failed to create camera sensor helper for ov02c10 [0:04:08.248669436] [3454] INFO Camera camera_manager.cpp:223 Adding camera '\_SB_.PC00.LNK1' for pipeline handler simple [0:04:08.266367143] [3443] INFO Camera camera.cpp:1215 configuring streams: (0) 1920x1092-ABGR8888/sRGB [0:04:08.266483080] [3454] INFO IPASoft soft_simple.cpp:258 IPASoft: Exposure 4-2320, gain 16-248 (1) Zero-copy enabled MESA: error: ZINK: vkCreateInstance failed (VK_ERROR_INCOMPATIBLE_DRIVER) libEGL warning: egl: failed to create dri2 screen libEGL warning: DRI2: failed to create screen [0:04:10.776690674] [3456] INFO eGL egl.cpp:305 EGL: EGL_VERSION: 1.5 [0:04:10.776721706] [3456] INFO eGL egl.cpp:306 EGL: EGL_VENDOR: Mesa Project [0:04:10.776727746] [3456] INFO eGL egl.cpp:307 EGL: EGL_CLIENT_APIS: OpenGL OpenGL_ES [0:04:10.776732346] [3456] INFO eGL egl.cpp:308 EGL: EGL_EXTENSIONS: EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL _EXT_config_select_group EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_protected_content EGL_EXT_query_reset_notification_strategy EGL_EXT_surface_compression EGL_IMG_context_priority EGL_ KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_ KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image_base EGL_KHR_no_config_context EGL_KHR_partial_upda te EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_gl_interop EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_MESA_x11_native_visual_id [0:04:10.779627096] [3456] INFO eGL egl.cpp:349 EGL: GL_VERSION: OpenGL ES 3.2 Mesa 26.0.4-arch1.1 [0:04:13.015244935] [3456] INFO Benchmark benchmark.cpp:83 Processed 30 frames in 151023us, 5034 us/frame Applied + acpi_handle_warn(acpi_device_handle(adev), + "on sailus pld 6.19, ssdb degree %d \n", + ssdb->degree); + sudo dmesg | grep -e sailus -e ovti -e ov02c1 -e ipu -e PLD -e orientation [ 6.010337] intel-ipu6 0000:00:05.0: enabling device (0000 -> 0002) [ 6.014964] ACPI: \_SB_.PC00.LNK1: on sailus pld 6.19, ssdb degree 0 [ 6.016208] ACPI: \_SB_.PC00.LNK1: Using default orientation [ 6.016366] intel-ipu6 0000:00:05.0: Found supported sensor OVTI02C1:00 [ 6.016432] intel-ipu6 0000:00:05.0: Connected 1 cameras [ 6.017342] intel-ipu6 0000:00:05.0: Sending BOOT_LOAD to CSE [ 6.018354] ov02c10 i2c-OVTI02C1:00: supply dovdd not found, using dummy regulator [ 6.018395] ov02c10 i2c-OVTI02C1:00: supply avdd not found, using dummy regulator [ 6.018400] ov02c10 i2c-OVTI02C1:00: supply dvdd not found, using dummy regulator [ 6.061002] intel-ipu6 0000:00:05.0: Sending AUTHENTICATE_RUN to CSE [ 6.109029] intel-ipu6 0000:00:05.0: CSE authenticate_run done [ 6.109036] intel-ipu6 0000:00:05.0: IPU6-v4[7d19] hardware version 6 Did not see the "_PLD exists; not use rotation". After adding the DA16250 explicitly the camera was the correct orientation. static const struct dmi_system_id upside_down_sensor_dmi_ids[] = { + { + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Dell 16 Premium DA16250"), + }, + .driver_data = "OVTI02C1", + }, -- Best Regards, Lukas Larson ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] media: ipu-bridge: Add upside-down sensor quirk for Dell 16 Premium DA16250 2026-04-08 6:02 ` Lukas Larson @ 2026-04-08 11:11 ` Sakari Ailus 0 siblings, 0 replies; 5+ messages in thread From: Sakari Ailus @ 2026-04-08 11:11 UTC (permalink / raw) To: Lukas Larson Cc: mchehab, hverkuil+cisco, johannes.goede, linux-media, linux-kernel Hi Lukas, On Wed, Apr 08, 2026 at 08:02:44AM +0200, Lukas Larson wrote: > Hi Sakari, > > On pld 6.19 the camera powered on, but the image was flipped upside down. > Tested adding https://github.com/intel/ipu6-camera-bins and > https://github.com/intel/ipu6-drivers, still upside down. Ack. Thanks for confirming this. I think what has happened is that the sensor's orientation was originally baked into the register lists and once that was fixed, we run into the issue. But it still appears that some systems with this sensor have it mounted upright, or at least SSDB has correct information about it. I'll take this for v7.2. -- Kind regards, Sakari Ailus ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-04-08 11:11 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-31 19:01 [PATCH] media: ipu-bridge: Add upside-down sensor quirk for Dell 16 Premium DA16250 Lukas Larson
2026-04-02 16:39 ` Sakari Ailus
[not found] ` <CAMCiyfoVxS_iQWVEiak+mv1i9uF2WtqMqyfCgeQyO_q5XS4LgA@mail.gmail.com>
2026-04-07 12:33 ` Sakari Ailus
2026-04-08 6:02 ` Lukas Larson
2026-04-08 11:11 ` Sakari Ailus
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox