d4xx : initial max9296 and max96724 IPU6/IPU7 support#3
Open
Pirouf wants to merge 55 commits intointel:mainfrom
Open
d4xx : initial max9296 and max96724 IPU6/IPU7 support#3Pirouf wants to merge 55 commits intointel:mainfrom
Pirouf wants to merge 55 commits intointel:mainfrom
Conversation
* ipu-acpi: Copy ipu-acpi over from ipu6-drivers Baseline commit c8029a6769b4a1c0f6e051cc226c48ac08e41949 Signed-off-by: hepengpx <pengpengx.he@intel.com> Signed-off-by: Khai Wen Ng <khai.wen.ng@intel.com>
* media, i2c: build dkms modules * media: i2c: Copy over max9x from ipu6-drivers Baseline on c8029a6769b4a1c0f6e051cc226c48ac08e41949 Signed-off-by: Khai Wen Ng <khai.wen.ng@intel.com> Signed-off-by: florent pirou <florent.pirou@intel.com>
…pi v6.12, v6.17 and v6.18 support Debian dkms build all dependencies from `ipu6-drivers` and `ipu7-drivers` github repositories based of baseline PTL release for iot on 2025-12-30. The upstream linux v6.12, v6.17 and v6.18 `v4l2-core` layers exact copies are maintained here to allow `v4l2_subdev_enable_streams_api=true` support (`=false` by default in kernel.org and Canonical Ubuntu) * dkms: use ipu6-drivers and ipu7-drivers git-submodule to build ISYS and PSYS depends * dkms : allow both with intel-lts and canonical linux headers * v4l2-core : add v6.17 v4l2_subdev_enable_streams_api support * v4l2-core : add v6.12 v4l2_subdev_enable_streams_api support * ipu6-isys : add intel-lts out-of-tree patches * ipu7-isys : add video VIDIOC_S_EXT_CTRLS callbacks by streamid * ipu7-isys : add d4xx pixel format support * ipu7-isys : allow virtual-channels on 16 csi2 input video capture * v4l2-core : workaround ar0234 v4l2-cci deps missing on linux-lts 6.12 images Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
f95a8b5 to
5750d8c
Compare
Pirouf
pushed a commit
to Pirouf/Intel-mipi-gmsl-modules
that referenced
this pull request
Jan 27, 2026
* d4xx: kernel6 intel#3 dmipx/ipu6-drivers@15ddce4 * d4xx: kernel6 intel#2 dmipx/ipu6-drivers@e113eca * d4xx: kernel6 dmipx/ipu6-drivers@7726252 Signed-off-by: Dmitry Perchanov <dmitry.perchanov@intel.com>
Pirouf
pushed a commit
to Pirouf/Intel-mipi-gmsl-modules
that referenced
this pull request
Jan 27, 2026
* max929x: backported kernel6 intel#3 dmipx/ipu6-drivers@cd6786f * max929x: backported kernel6 intel#2 dmipx/ipu6-drivers@6883c69 * max929x: backported kernel6 dmipx/ipu6-drivers@f5caff7 Signed-off-by: Dmitry Perchanov <dmitry.perchanov@intel.com>
Pirouf
pushed a commit
to Pirouf/Intel-mipi-gmsl-modules
that referenced
this pull request
Jan 27, 2026
* max929x: backported kernel6 intel#3 dmipx/ipu6-drivers@cd6786f * max929x: backported kernel6 intel#2 dmipx/ipu6-drivers@6883c69 * max929x: backported kernel6 dmipx/ipu6-drivers@f5caff7 Signed-off-by: Dmitry Perchanov <dmitry.perchanov@intel.com>
660d921 to
087c638
Compare
Signed-off-by: florent pirou <florent.pirou@intel.com>
* maintain intel-ipu6-dkms (20250703+iotgipu6-0eci1) backward compat Signed-off-by: florent pirou <florent.pirou@intel.com>
RealSense PRQ d4xx version is 1.0.1.20. - support for sensor vc. - support for sensor state. - sensor own v4l2 controls. - max9295/6 serdes drivers and control for multiple pipe. - aggregation support Signed-off-by: Dmitry Perchanov <dmitry.perchanov@intel.com> Signed-off-by: florent pirou <florent.pirou@intel.com>
* d4xx: kernel6 intel#3 dmipx/ipu6-drivers@15ddce4 * d4xx: kernel6 intel#2 dmipx/ipu6-drivers@e113eca * d4xx: kernel6 dmipx/ipu6-drivers@7726252 Signed-off-by: Dmitry Perchanov <dmitry.perchanov@intel.com>
* Kernel 6.6.15 release for Ubuntu (#216) Signed-off-by: zouxiaoh <xiaohong.zou@intel.com> Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
ref-by: https://patches.linaro.org/project/linux-media/patch/20231213140450.21359-3-laurent.pinchart@ideasonboard.com/ The subdev .[gs]_frame_interval are video operations, but they operate on pads (and even on streams). Not only is this confusing, it causes practical issues for drivers as the operations don't receive a subdev state pointer, requiring manual state handling. To improve the situation, turn the operations into pad operations, and extend them to receive a state pointer like other pad operations. While at it, rename the operations to .[gs]et_frame_interval at the same time to match the naming scheme of other pad operations. This isn't strictly necessary, but given that all drivers using those operations need to be modified, handling the rename separately would generate more churn for very little gain (if at all). Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
* enable `v4l2-ctl --set-ctrl v4l2_cid_link_freq=` runtime override * add D4XX_LINK_FREQ_750MHZ to MTL CSI D-PHY * add MTL CSI2 D-PHY debug messages Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
* d4xx : kernel NULL pointer dereference [ 1950.081452] #PF: supervisor write access in kernel mode [ 1950.086655] #PF: error_code(0x0002) - not-present page [ 1950.216966] Call Trace: [ 1950.219401] <TASK> [ 1950.221504] ? show_regs+0x6d/0x80 [ 1950.224902] ? __die+0x24/0x80 [ 1950.227952] ? page_fault_oops+0x99/0x1b0 [ 1950.231948] ? do_user_addr_fault+0x31d/0x6b0 [ 1950.236283] ? exc_page_fault+0x83/0x1b0 [ 1950.240190] ? asm_exc_page_fault+0x27/0x30 [ 1950.244358] ? mutex_lock+0x1d/0x50 [ 1950.247827] ? mutex_lock+0x12/0x50 [ 1950.251301] max9296_reset_control+0x26/0xf0 [max9296] [ 1950.256425] ds5_remove+0xba/0x2e0 [d4xx] [ 1950.260423] i2c_device_remove+0x25/0xc0 [ 1950.264338] device_remove+0x40/0x80 [ 1950.267899] device_release_driver_internal+0x20b/0x270 [ 1950.273096] driver_detach+0x4a/0xa0 [ 1950.276655] bus_remove_driver+0x83/0x110 [ 1950.280641] driver_unregister+0x2f/0x60 [ 1950.284542] i2c_del_driver+0x46/0x90 [ 1950.288191] ds5_i2c_driver_exit+0x10/0x18 [d4xx] Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
* deserializer link setup graceful fallback when no csi-link aggregation is possible (e.g. serializer not responding) ``` [ 75.854983] d4xx 2-0012: configure GMSL port B [ 76.092278] max9295 2-0064: max9295_setup_control: update address reassignment 0x40->0x64 [ 76.100995] max9295 2-0064: max9295_write_reg:i2c write failed, 0x0 = c8 [ 76.108082] max9295 2-0064: max9295_write_reg:i2c write failed, 0x10 = 22 [ 76.115152] max9295 2-0064: max9295_setup_control: ERROR: ser device not found [ 76.122556] d4xx 2-0012: gmsl serializer invalid source [ 76.127955] max9296 2-0048: max9296_setup_control: set SerDes GMSL A & B dual-link) [ 76.244858] max9296 2-0048: max9296_setup_control: checking serializer sources (count/ref=1/2 -> src[1]=GMSL B) [ 76.255190] max9296 2-0048: max9296_setup_control: restore SerDes GMSL A single-link [ 76.372275] d4xx 2-0012: gmsl serdes setup gracefully fallback [ 76.378294] d4xx 2-0012: max9295 communication failed : -524 [ 76.384156] max9295 2-0064: [MAX9295]: remove GMSL Serializer [ 76.390186] d4xx: probe of 2-0012 failed with error -524 [ 76.395939] intel-ipu6-isys intel-ipu6-isys0: can't create new i2c subdev ``` Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
…y api * d4xx: compile ipu7 and ipu6 isys-video * d4xx: add sensor subdev stream set/get fmt ops * d4xx: add mux subdev stream set/get fmt ops * d4xx: add mux enable and disable streams v4l2 ops * d4xx: make modules suffix versioning same as dkms Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
* d4xx : add max96724 Deserializer support * d4xx : add max96712/max96722 Deserializer support +------------------------------------------------------------------------+ | MAX967xx Deserializer | +------------------------------------------------------------------------+ | GMSL2 Input Side MIPI CSI-2 Output Side | | ___________________ ______________________ | | | | Link A ─┬─ Pipe X ──┐ | | ├─ Pipe Y | | | ├─ Pipe Z | VIDEO_PIPE_SEL Video Pipe Mapping MIPI PHY | | └─ Pipe U | (0x00F0/0x00F1) (0x090B-0x09CB) Output | | | | | Link B ─┬─ Pipe X ──┼─────────────────► Pipe 0 ──► VC0 ──┐ | | ├─ Pipe Y | | | | ├─ Pipe Z | Pipe 1 ──► VC1 ──┤ | | └─ Pipe U | | ──► CPHY0+1 ──► IPU7 CPHY0+PHY1 | | Pipe 2 ──► VC2 ──┤ x4-lanes | | Link C ─┬─ Pipe X ──┤ | (csi2-0) | | ├─ Pipe Y | Pipe 3 ──► VC3 ──┘ | | ├─ Pipe Z | | | └─ Pipe U | | | | | | Link D ─┬─ Pipe X ──┘ | | ├─ Pipe Y | | ├─ Pipe Z | | └─ Pipe U | +------------------------------------------------------------------------+ Signed-off-by: Florent Pirou <florent.pirou@intel.com>
``` [ 68.734388] d4xx 1-0012: ds5_read(): i2c read 0x5020: 0xdead [ 68.734390] d4xx 1-0012: ds5_chrdev_init() [ 68.734411] sysfs: cannot create duplicate filename '/devices/virtual/d4xx-class/D4XX d4xx-dfu a-' [ 68.734413] CPU: 6 UID: 0 PID: 2327 Comm: modprobe Tainted: G W OE 6.17.0-1006-oem #6-Ubuntu PREEMPT(voluntary) [ 68.734415] Tainted: [W]=WARN, [O]=OOT_MODULE, [E]=UNSIGNED_MODULE [ 68.734416] Hardware name: Intel Corporation Panther Lake Client Platform/PTL-UH DDR5 Embedded CRB, BIOS PTLPFWI1.R00.3332.D52.2509040547 09/04/2025 [ 68.734417] Call Trace: [ 68.734418] <TASK> [ 68.734421] dump_stack_lvl+0x76/0xa0 [ 68.734425] dump_stack+0x10/0x20 [ 68.734426] sysfs_warn_dup+0x8a/0xb0 [ 68.734430] sysfs_create_dir_ns+0xde/0xf0 [ 68.734433] kobject_add_internal+0xa8/0x2f0 [ 68.734436] kobject_add+0x92/0x100 [ 68.734437] ? get_device_parent+0xd0/0x210 [ 68.734441] device_add+0xdf/0x720 [ 68.734443] device_create_groups_vargs+0x118/0x140 [ 68.734445] device_create+0x50/0x80 [ 68.734450] ds5_probe+0xcbd/0x17f0 [d4xx] [ 68.734455] i2c_device_probe+0x198/0x390 [ 68.734457] really_probe+0xee/0x3c0 [ 68.734459] __driver_probe_device+0x8c/0x180 [ 68.734461] driver_probe_device+0x24/0xd0 [ 68.734462] __device_attach_driver+0xcd/0x170 [ 68.734463] ? __pfx___device_attach_driver+0x10/0x10 [ 68.734464] bus_for_each_drv+0x93/0xf0 [ 68.734465] __device_attach+0xb5/0x1d0 [ 68.734467] device_initial_probe+0x13/0x20 [ 68.734468] bus_probe_device+0x9f/0xb0 [ 68.734469] device_add+0x511/0x720 [ 68.734470] device_register+0x1a/0x30 [ 68.734472] i2c_new_client_device+0x209/0x460 [ 68.734474] v4l2_i2c_new_subdev_board+0x5e/0x100 [videodev] [ 68.734486] isys_probe+0xa23/0xd90 [intel_ipu7_isys] [ 68.734493] ? __pfx_isys_probe+0x10/0x10 [intel_ipu7_isys] [ 68.734497] auxiliary_bus_probe+0x3e/0xa0 [ 68.734499] really_probe+0xee/0x3c0 [ 68.734500] __driver_probe_device+0x8c/0x180 [ 68.734501] driver_probe_device+0x24/0xd0 [ 68.734503] __driver_attach+0x10b/0x210 [ 68.734504] ? __pfx___driver_attach+0x10/0x10 [ 68.734505] bus_for_each_dev+0x89/0xf0 [ 68.734506] driver_attach+0x1e/0x30 [ 68.734507] bus_add_driver+0x14e/0x290 [ 68.734508] driver_register+0x5e/0x130 [ 68.734510] __auxiliary_driver_register+0x73/0xf0 [ 68.734511] ? __pfx_isys_driver_init+0x10/0x10 [intel_ipu7_isys] [ 68.734516] isys_driver_init+0x23/0xff0 [intel_ipu7_isys] [ 68.734519] do_one_initcall+0x5a/0x340 [ 68.734522] do_init_module+0x97/0x2c0 [ 68.734526] load_module+0x99c/0xac0 [ 68.734527] init_module_from_file+0x95/0x100 [ 68.734529] idempotent_init_module+0x10f/0x300 [ 68.734531] __x64_sys_finit_module+0x73/0xe0 [ 68.734533] x64_sys_call+0x1784/0x2680 [ 68.734534] do_syscall_64+0x80/0xa20 [ 68.734537] ? __rseq_handle_notify_resume+0x36/0x70 [ 68.734540] ? arch_exit_to_user_mode_prepare.isra.0+0xc2/0xe0 [ 68.734541] ? do_syscall_64+0xb6/0xa20 [ 68.734543] ? putname+0x65/0x90 [ 68.734546] ? do_sys_openat2+0xa2/0xf0 [ 68.734549] ? __x64_sys_openat+0x54/0xa0 [ 68.734550] ? arch_exit_to_user_mode_prepare.isra.0+0xd/0xe0 [ 68.734552] ? do_syscall_64+0xb6/0xa20 [ 68.734553] ? arch_exit_to_user_mode_prepare.isra.0+0xd/0xe0 [ 68.734554] ? do_syscall_64+0xb6/0xa20 [ 68.734555] ? exc_page_fault+0x90/0x1b0 [ 68.734556] entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 68.734558] RIP: 0033:0x79620e92728d [ 68.734560] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 5b bb 0d 00 f7 d8 64 89 01 48 [ 68.734561] RSP: 002b:00007ffcdc3577e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 [ 68.734562] RAX: ffffffffffffffda RBX: 000055d7420a7340 RCX: 000079620e92728d [ 68.734563] RDX: 0000000000000004 RSI: 000055d7420b21a0 RDI: 0000000000000010 [ 68.734564] RBP: 00007ffcdc3578a0 R08: 0000000000000040 R09: 00007ffcdc357830 [ 68.734564] R10: 000079620ea03b20 R11: 0000000000000246 R12: 000055d7420b21a0 [ 68.734565] R13: 0000000000040000 R14: 000055d7420a7070 R15: 000055d7420b21a0 [ 68.734566] </TASK> [ 68.734566] kobject: kobject_add_internal failed for D4XX d4xx-dfu a- with -EEXIST, don't try to register things with the same name in the same directory. [ 68.734574] d4xx 1-0012: Could not create device [ 68.734592] d4xx 1-0012: graceful fallback due to unresponsive d4xx, isolated SerDes GMSL A single-link [ 68.734593] d4xx 1-0012: remove unresponding serializer i2c device 0x42 ``` Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
* helpers: bind d4xx either from ipu6 or ipu7, extend ipu6 upto csi port 5 Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
677761a to
6a7930b
Compare
Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
* d4xx : fix librealsense2 v4l2 backend pipeline config `rs2_pipeline_start_with_config` call returns an error in rs-depth Z16 pixel-format
```
There are 1 connected RealSense devices.
Using device 0, an Intel RealSense D457
Serial number: 242422303456
Firmware version: 5.13.1.53
The connected device doesn't support depth streaming!
```
Signed-off-by: Florent Pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
…start Signed-off-by: florent pirou <florent.pirou@intel.com>
…i output enable Signed-off-by: florent pirou <florent.pirou@intel.com>
…e csi output enable Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
…reset Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
Signed-off-by: florent pirou <florent.pirou@intel.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.