summaryrefslogtreecommitdiff
path: root/drivers/media
AgeCommit message (Collapse)Author
12 daysmedia: hackrf: fix use-after-free in hackrf_alloc_urbs() error pathAnuj Bolewar
hackrf_alloc_urbs() frees the URBs it allocated so far when one allocation fails, but leaves the entries in dev->urb_list[] and dev->urbs_initialized untouched. The caller, hackrf_start_streaming(), then calls hackrf_free_urbs() on the error path, which walks dev->urbs_initialized entries and calls usb_free_urb() a second time on the already-freed URBs, causing a use-after-free (slab-use-after-free Write in usb_free_urb()). Drop the redundant cleanup loop inside hackrf_alloc_urbs() and let hackrf_free_urbs(), which the caller already invokes on error, own the cleanup of the successfully allocated URBs. Reported-by: syzbot+832ce9fa3face1b7d44d@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=832ce9fa3face1b7d44d Fixes: 969ec1f6bd92 ("[media] hackrf: HackRF SDR driver") Cc: stable@vger.kernel.org Signed-off-by: Anuj Bolewar <bolewara@gmail.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
12 daysmedia: pvrusb2: fix URB pending flag leak on invalid endpointNguyen Quang Le Kien
In pvr2_send_request_ex(), when usb_urb_ep_type_check() fails for either the write or read control endpoint, the code returned -EINVAL directly without clearing the corresponding pending flags (ctl_write_pend_flag or ctl_read_pend_flag) or going through the done: cleanup path. This left the pending flags set while the URBs were never actually submitted. On the next call to pvr2_send_request_ex(), the URBs would be filled and submitted while the kernel still considered them active, triggering the WARNING "URB submitted while active" in usb_submit_urb(). Fix this by: - Clearing the pending flag before returning on invalid endpoint - Using goto done instead of direct return to go through proper cleanup - For the read endpoint case, unlinking the write URB if it was already submitted and waiting for its completion before returning Reported-by: syzbot+20fef510634faf733060@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=20fef510634faf733060 Signed-off-by: Nguyen Quang Le Kien <khiemtranzo532001@gmail.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
12 daysmedia: cx231xx: Fix cleanup path on failureAndi Shyti
If cx231xx_init_v4l2() fails the probe currently jumps to err_init, which only unregisters the V4L2 device. The analog devices and I2C resources are left registered while the driver state can be released. A subsequent driver bind attempts to create the same I2C mux channel links and triggers a warning when the existing "channel-0" link is encountered. The remaining devices may also access released driver state. This produces the following warning can't create symlink to channel 0 WARNING: drivers/i2c/i2c-mux.c:403 at i2c_mux_add_adapter+0xcd8/0xeb0 Call Trace: i2c_mux_add_adapter+0xcdc/0xeb0 cx231xx_dev_init+0x2fb/0x1260 cx231xx_usb_probe+0xc48/0x2140 usb_probe_interface+0x657/0xc70 ... Jump to err_video_alt instead, which performs the full device cleanup before unregistering the V4L2 device. Reported-by: Farhad Alemi <farhad.alemi@berkeley.edu> Closes: https://github.com/farhad-alemi/public_bug_reports/tree/main/185-warning-in-i2c-mux-add-adapter/ Fixes: 4d2a7d3509f5 ("[media] cx231xx: move analog init code to a separate function") Signed-off-by: Andi Shyti <andi.shyti@kernel.org> Cc: <stable@vger.kernel.org> # v3.17+ Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
12 daysmedia: cx231xx-audio: drain wq_trigger before audio finiFan Wu
audio_trigger() is deferred work (dev->wq_trigger) armed from snd_cx231xx_capture_trigger() on every PCM START/STOP; it dereferences dev->adev state and may free the URBs via cx231xx_isoc_audio_deinit(). cx231xx_audio_fini() tore down that state without draining wq_trigger, so work armed before or racing fini ran against freed state. Use disable_work_sync() in fini to drain the work and prevent further queueing. Initialize the work, lock and stream_started counter at the top of cx231xx_audio_init(), before any fallible allocation, and clear the partially-built audio state on its error path, so fini is safe even if a later step fails. This issue was found by an in-house static analysis tool. Fixes: 61b04cb24a12 ("[media] cx231xx-audio: fix some locking issues") Cc: stable@vger.kernel.org # v6.10+ Link: https://lore.kernel.org/r/8c7e1294-b906-4636-890c-b64d03b0e1d0@kernel.org Assisted-by: Codex:gpt-5.6 Signed-off-by: Fan Wu <fanwu01@zju.edu.cn> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
12 daysmedia: pci: hws: only init channels the device actually hasLinkai Gong
hws_probe() initializes max_channels (always 4) control handlers, but register/unregister only walk cur_max_video_ch (1 or 2 on smaller chips). The extra handlers are never freed. Initialize the same number of channels that cleanup uses. Fixes: ba07fd2f5742 ("media: pci: add AVMatrix HWS capture driver") Cc: stable@vger.kernel.org Signed-off-by: Linkai Gong <gonglinkai@kylinos.cn> Reviewed-by: Ben Hoff <hoff.benjamin.k@gmail.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
12 daysmedia: hws: Wait for IRQ handler before returning buffersHao-Qun Huang
hws_stop_streaming() disables capture and then collects the active and queued buffers straight away. Clearing cap_active and setting stop_requested only stops a VDONE handler that has not checked them yet; one already running on another CPU has passed those checks and cannot be recalled. That handler snapshots v->active into a local pointer and drops irq_lock before it touches the buffer, so stop_streaming can run in between. Without a next_prepared buffer both paths complete the same buffer, and the second vb2_buffer_done() hits the WARN_ON for a buffer that is no longer active. With a next_prepared buffer the snapshot is the only remaining reference to the old active buffer, so stop_streaming returns without it and vb2 reports "stop_streaming operation is leaving buffer %u in active state" before completing it with an error. Either way the driver breaks the vb2 rule that stop_streaming has to give back every buffer it owns before it returns. Wait for the handler once the hardware is disabled and before the buffers are collected. The live mode change and the channel cleanup paths already do this around the same collect helper. Fixes: ba07fd2f5742 ("media: pci: add AVMatrix HWS capture driver") Cc: stable@vger.kernel.org Assisted-by: Claude:claude-opus-5 Signed-off-by: Hao-Qun Huang <alvinhuang0603@gmail.com> Reviewed-by: Ben Hoff <hoff.benjamin.k@gmail.com> Tested-by: Ben Hoff <hoff.benjamin.k@gmail.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
12 daysmedia: hws: report measured colorimetryBen Hoff
At 1920x1080, the driver advertises V4L2_COLORSPACE_REC709 with V4L2_YCBCR_ENC_DEFAULT. The default maps to a Rec.709 matrix, but controlled A/B captures using the in-tree and baseline drivers show that both produce YUYV samples using a BT.601 matrix and full-range quantization. The captures differ by at most one code value, whereas a 601-to-709 conversion would move primary luma values by roughly 11 to 33 codes. Set the Y'CbCr encoding explicitly to V4L2_YCBCR_ENC_601 at every resolution. Keep the resolution-based colorspace so HD retains presumed Rec.709 primaries and transfer characteristics while SD continues to use SMPTE 170M. Refresh the colorspace on detected geometry changes so an SD/HD transition does not leave stale metadata. The decoder mode register is undocumented. Stop claiming that value 0x13 selects BT.709; both drivers use that value while producing the measured output. Fixes: ba07fd2f5742 ("media: pci: add AVMatrix HWS capture driver") Cc: stable@vger.kernel.org Assisted-by: Codex:gpt-5.6 Signed-off-by: Ben Hoff <hoff.benjamin.k@gmail.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
12 daysmedia: hws: fix device info register field masksBen Hoff
The baseline driver decodes the device version from bits 15:8 and the sub-version from bits 23:16 of HWS_REG_DEVICE_INFO. The current masks decode both fields one byte too low, reading the device version from a byte the baseline driver ignores and the sub-version from the device version field. hws_configure_hardware_capabilities() uses the device version to classify the hardware generation. An incorrect version can classify newer hardware as legacy, select the legacy capture path, and skip HWS_REG_DMA_MAX_SIZE programming. Correct both field masks and update the register layout documentation. Signed-off-by: Ben Hoff <hoff.benjamin.k@gmail.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
13 daysmedia: ipu6: Enable support for IPU 7 and IPU 7.5Antti Laakso
Enable support for Intel IPU 7 and IPU 7.5, found in Lunar lake and Panther lake, respectively, in the ipu6 driver. Disabling the CONFIG_VIDEO_INTEL_IPU6_IPU7 Kconfig option can be used to still default the support of IPU7 and 7.5 to the ipu7 driver, while default is enabled. The driver binding can still be configured at runtime by using force_probe and force_no_ipu7_probe options in ipu6 and ipu7 drivers, respectively. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Co-developed-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
13 daysmedia: mediatek: vcodec: bound AV1 tile-start copy to the array capacityMichael Bommarito
vdec_av1_slice_setup_tile() copies tile_cols + 1 / tile_rows + 1 entries into mi_col_starts[] / mi_row_starts[] from the bitstream tile_info. Bound the copy to the array capacity. Fixes: 0934d3759615 ("media: mediatek: vcodec: separate decoder and encoder") Assisted-by: Claude:claude-opus-4-8 Cc: stable@vger.kernel.org Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
13 daysmedia: verisilicon: rockchip: reject AV1 frames exceeding the tile capacityMichael Bommarito
rockchip_vpu981_av1_dec_set_tile_info() indexes the tile group entry array by tile1 * tile_cols + tile0, reading up to tile_cols * tile_rows entries, lays out one descriptor per tile in the AV1_MAX_TILES tile_info buffer, and programs the real tile_cols / tile_rows into the hardware. The tile group entry control is a dynamic array sized to the number of entries userspace submitted, independent of tile_cols / tile_rows, so a frame that claims more tiles than entries reads past the array. A frame that claims more than AV1_MAX_TILES tiles also leaves the hardware programmed for more tiles than the descriptor buffer holds. Reject both in prepare_run(): tile_cols * tile_rows must not exceed the submitted entry count or AV1_MAX_TILES. The entry count is read via v4l2_ctrl_find() (ctrl->elems). This mirrors the bound the mediatek AV1 decoder already enforces. Fixes: 727a400686a2 ("media: verisilicon: Add Rockchip AV1 decoder") Assisted-by: Claude:claude-opus-4-8 Cc: stable@vger.kernel.org Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com> Reviewed-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
13 daysmedia: verisilicon: rockchip: guard VPU981 AV1 divisor and tile bufferMichael Bommarito
rockchip_vpu981_av1_dec_set_tile_info() divides context_update_tile_id by tile_info->tile_cols and writes one descriptor per tile into the tile_info DMA buffer, which holds AV1_MAX_TILES entries; tile_cols and tile_rows come from the bitstream. Guard the division against a zero tile_cols by initialising the context-update values to zero and computing them only when tile_cols is non-zero, and stop the descriptor writes once the tile_info buffer is full. The tile geometry written to the hardware registers is left unmodified; the per-dimension and total tile bounds are enforced by the control validation. Fixes: 727a400686a2 ("media: verisilicon: Add Rockchip AV1 decoder") Assisted-by: Claude:claude-opus-4-8 Cc: stable@vger.kernel.org Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com> Reviewed-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
13 daysmedia: verisilicon: hantro: bound G2 HEVC tile loop to the buffer capacityMichael Bommarito
prepare_tile_info_buffer() writes one entry per tile into the tile_sizes DMA buffer, sized for a grid equal to the PPS uAPI array capacity. Use the bounded v4l2_hevc_pps_num_tile_columns() / v4l2_hevc_pps_num_tile_rows() helpers so the loops stay inside the buffer. Fixes: cb5dd5a0fa51 ("media: hantro: Introduce G2/HEVC decoder") Assisted-by: Claude:claude-opus-4-8 Cc: stable@vger.kernel.org Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com> Reviewed-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
13 daysmedia: rkvdec: bound HEVC tile loops and PPS id to the array capacityMichael Bommarito
compute_tiles_uniform() and compute_tiles_non_uniform() loop over num_tile_columns_minus1 + 1 / num_tile_rows_minus1 + 1 entries, and assemble_hw_pps() writes one COLUMN_WIDTH / ROW_HEIGHT register per tile and indexes priv_tbl->param_set[] by pic_parameter_set_id, all taken from the untrusted PPS. Use the bounded v4l2_hevc_pps_num_tile_columns() / v4l2_hevc_pps_num_tile_rows() helpers for the tile loops, and bail out of assemble_hw_pps() before indexing priv_tbl->param_set[] with an out-of-range pic_parameter_set_id, so the writes stay within the hardware tables. Fixes: 3595375c2301 ("media: rkvdec: Add HEVC backend") Fixes: c9a59dc2acc7 ("media: rkvdec: Add HEVC support for the VDPU381 variant") Assisted-by: Claude:claude-opus-4-8 Cc: stable@vger.kernel.org Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
13 daysmedia: v4l2-ctrls: validate AV1 tile countsMichael Bommarito
The stateless AV1 decoders use tile_info.tile_cols and tile_rows as loop bounds and as indices into the mi_*_starts[] and *_in_sbs_minus_1[] arrays, as the divisor for context_update_tile_id, and their product bounds the per-tile descriptor buffers, but std_validate_compound() does not bound these u8 fields. Reject a V4L2_CTRL_TYPE_AV1_FRAME whose tile_cols or tile_rows exceeds V4L2_AV1_MAX_TILE_COLS / _ROWS, or whose product exceeds V4L2_AV1_MAX_TILE_COUNT. A zero tile count is left to the consuming driver so the zero-initialised control that existing userspace submits is still accepted. Fixes: 9de30f579980 ("media: Add AV1 uAPI") Assisted-by: Claude:claude-opus-4-8 Cc: stable@vger.kernel.org Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com> Reviewed-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
13 daysmedia: v4l2-ctrls: validate HEVC tile countsMichael Bommarito
The stateless HEVC decoders read num_tile_columns_minus1 + 1 entries from column_width_minus1[] and num_tile_rows_minus1 + 1 from row_height_minus1[] and use them as tile-loop bounds, but std_validate_compound() does not bound these u8 counts. Reject a V4L2_CTRL_TYPE_HEVC_PPS with tiling enabled whose tile counts exceed the uAPI array capacity, mirroring the existing compound-control range checks. Fixes: 256fa3920874 ("media: v4l: Add definitions for HEVC stateless decoding") Assisted-by: Claude:claude-opus-4-8 Cc: stable@vger.kernel.org Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com> Reviewed-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
13 daysmedia: v4l2-h264: Fix memcmp() size in B1 reference list comparisonHaotian Zhang
In v4l2_h264_build_b_ref_lists(), the B0/B1 list equality check passes the entry count builder->num_valid to memcmp() instead of a byte size. Since struct v4l2_h264_reference is two bytes (fields and index), only half of each list is compared, so distinct lists can be wrongly treated as equal and trigger an incorrect swap(b1_reflist[0], b1_reflist[1]). Change the memcmp() size argument to sizeof(b1_reflist[0]) * builder->num_valid so that the full byte length of both reference lists is compared. Fixes: 624922a2739b ("media: v4l2-core: Add helpers to build the H264 P/B0/B1 reflists") Suggested-by: Nicolas Dufresne <nicolas@ndufresne.ca> Cc: stable@vger.kernel.org Signed-off-by: Haotian Zhang <vulab@iscas.ac.cn> Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
2026-09-04treewide: refresh kmalloc_obj() conversionsKees Cook
This is another run of the Coccinelle script for converting kmalloc() family of allocations to kmalloc_obj() via the existing rules in scripts/coccinelle/api/kmalloc_objs.cocci This catches both the set of kmalloc() uses added since the first kmalloc_obj() conversions in v7.0 and adds a large group missed in the first pass due to Coccinelle not interacting well with the cleanup.h scoped_...() family of macros[1]. I worked around this with spatch's "--macro-file" argument to a file with all the scoped_...() macros mapped to Coccinelle's YACFE_ITERATOR[2] as that was the closest viable control flow indicator I could find. Build tested allmodconfig on x86, arm64, arm, loongarch, mips, powerpc, riscv, and s390 with no new warnings. Link: https://lore.kernel.org/lkml/202609021314.8A9C0B8@keescook/ [1] Link: https://github.com/coccinelle/coccinelle/blob/master/standard.h [2] Signed-off-by: Kees Cook <kees+treewide@kernel.org>
2026-09-04media: ipu6: Add ipu7.5 mmu initialization dataAntti Laakso
The ipu7.5 mmu is different compared to ipu7. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add ipu7.5 buttress supportAntti Laakso
The ipu7.5 buttress differs from ipu7 slightly, add support for ipu7.5. Also set hardware version, firmware and model names for ipu7.5. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Set model name for ipu7Antti Laakso
We are about to enable support for ipu7 hardware, set model name accordingly. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Map ipu7 firmwareAntti Laakso
Add ipu7 firmware mapping helpers to handle differences from ipu6. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> [Sakari Ailus: Use ipu6_ prefix for ipu7 related global symbols.] Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Move isys fw mapping to pci_probeAntti Laakso
Consolidate isys and psys firmware mapping into a single location to simplify ipu7 support and error handling. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Make fw mapping function reusableAntti Laakso
Make ipu6_map_fw_region reusable as for ipu7 we want to map other buffers too, not only firmware. Also add DMA data direction and mapping attributes as arguments as these are different for ipu7. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add support for fixed iova regionAntti Laakso
The ipu7 need specific region for firmware in non-secure mode, add support for it. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Read correct SKU ID for ipu7Antti Laakso
Add SKU ID to buttress register map to get correct ID for both IPUs. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Move buttress mem alloc out from probeAntti Laakso
Buttress registers are stored in separate buffer, which is passed down to bus driver. Move allocation of this buffer to subsystem init to cleanup pci probe function a bit. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: The VC arbitration mechanism is ipu6 onlyAntti Laakso
The ipu7 doesn't support the VC arbitration mechanism that exist in ipu6. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: The SPC init is valid only for ipu6Antti Laakso
The ipu7 don't have SPC. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Skip watermark configuration for ipu7Antti Laakso
The ipu7 don't have watermark nor LTR support, skip it. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Enable ipu7 isys interruptsAntti Laakso
Add ipu7 specific isys initialization of clocks and enabling interrupts. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Parse bus type for ipu7Antti Laakso
For ipu7 bus type can be CPHY or DPHY. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add support for ipu7 csi2 receiverAntti Laakso
The csi2 receiver is different in ipu7, add support for it. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Split ipu6 csi2 stream enable/disableAntti Laakso
Instead of single function, split csi2 receiver stream enable and disable into own functions. This make it easier to add ipu7 support. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add ipu7 csi phy driverAntti Laakso
The csi receiver is completely different in ipu7 compared to ipu6, add a driver for it. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add ipu7 isr handlerAntti Laakso
Add ipu7 interrupt handler for software and CSI events. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add ipu7 csi2 register definitionsAntti Laakso
This is needed later when adding support for the ipu7 csi2 receiver. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add ipu7 fw isys opsAntti Laakso
The ipu7 isys firmware functions handle messaging with ipu7 hardware. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> [Sakari Ailus: Use ipu6_ prefix for ipu7_ related global symbols.] Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add ipu7 fw com methodsAntti Laakso
The get/put token methods read/write to ipu7 firmware message queues. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add ipu7 fw start/stop functionalityAntti Laakso
The ipu7 firmware start/stop sequence differs from ipu6. Add ipu7-specific functions to handle this. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> [Sakari Ailus: Use ipu6_ prefix for ipu7 related global symbols.] Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add isys firmware opsAntti Laakso
Add struct for ipu6 firmware ops. This is a preparation to add support for ipu7 firmware communication. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Isolate hw specific buffer handlingAntti Laakso
Move ipu6 specific buffer and stream handling down to hardware specific file, to make it possible to add ipu7 specific functionality. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Move hw specific buffer handling downAntti Laakso
Move handling of hardware specific buffers out of common code, like ipu6-isys-video.c. Now the ipu6_put_fw_msg_buf() works with fw_msg_bufs, like its counterpart ipu6_get_fw_msg_buf(). Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Move isys isr handlers to fw fileAntti Laakso
The ipu7 will have its own isr handlers. Move ipu6 isr code to hardware specific file. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Rename isys fw msg unionAntti Laakso
Later we need to abstract ipu7 firmware abi structs same way we have it now for ipu6. Renaming union per ipu helps to make the split more clear. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add check for pkg_dir before freeingAntti Laakso
We are adding support for mapping ipu7 firmware which doesn't have pkg_dir. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add ipu7 cpd handlingAntti Laakso
The firmware format differs slightly between ipu6 and ipu7. Add support for ipu7 firmware validation and handling. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> [Sakari Ailus: Use ipu6_ prefix for ipu7 related global symbols.] Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add ipu7 mmu supportAntti Laakso
The ipu7 mmu have similar page tables as ipu6, but e.g. register interface is different. Add own driver handling ipu7 mmu specifics. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Prepare mmu driver for hw variationAntti Laakso
We are about to add support for ipu7 mmu. Split ipu6 mmu hardware specific and common code to separate files. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
2026-09-04media: ipu6: Add ipu7 buttress supportAntti Laakso
The ipu7 differs from ipu6 e.g. in power management, authentication, interrupt handling and clock setup. Add support for ipu7 buttress. Signed-off-by: Antti Laakso <antti.laakso@linux.intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>