On Thu Oct 1 15:45:36 2026 +0300, Antti Laakso wrote:
> Keep the ipu7 boot helpers sub-system agnostic by passing the
> firmware context explicitly. No functional change.
> 
> Assisted-by: LLM
> Signed-off-by: Antti Laakso <[email protected]>
> Signed-off-by: Sakari Ailus <[email protected]>

Patch committed.

Thanks,
Sakari Ailus

 drivers/media/pci/intel/ipu6/ipu7-boot.c    | 26 +++++++++-----------------
 drivers/media/pci/intel/ipu6/ipu7-boot.h    |  7 +++++--
 drivers/media/pci/intel/ipu6/ipu7-fw-isys.c |  9 ++++-----
 3 files changed, 18 insertions(+), 24 deletions(-)

---

diff --git a/drivers/media/pci/intel/ipu6/ipu7-boot.c 
b/drivers/media/pci/intel/ipu6/ipu7-boot.c
index 952c73efd237..f695d668d46b 100644
--- a/drivers/media/pci/intel/ipu6/ipu7-boot.c
+++ b/drivers/media/pci/intel/ipu6/ipu7-boot.c
@@ -12,7 +12,6 @@
 #include "ipu6-bus.h"
 #include "ipu6-buttress.h"
 #include "ipu6-dma.h"
-#include "ipu6-isys.h"
 #include "ipu6-platform-buttress-regs.h"
 #include "ipu7-boot.h"
 #include "ipu7-platform-regs.h"
@@ -163,11 +162,10 @@ static void ipu7_boot_cell_stop(const struct 
ipu6_bus_device *adev)
        writel(val, base + regs->status_ctrl_reg);
 }
 
-static int ipu7_boot_cell_init(const struct ipu6_bus_device *adev)
+static int ipu7_boot_cell_init(const struct ipu6_bus_device *adev,
+                              const struct ipu7_fw_com_context *fwctx)
 {
        const struct boot_regs *regs = &boot_regs[adev->ctrl->subsys_id];
-       struct ipu6_isys *isys = ipu6_bus_get_drvdata(adev);
-       struct ipu7_fw_com_context *fwctx = isys->fwctx;
        void __iomem *base = adev->isp->base;
 
        writel(fwctx->fw_entry, base + regs->fw_start_address_reg);
@@ -191,12 +189,11 @@ static void init_cfg_versions(struct ipu7_boot_abi_cfg 
*boot_cfg, u32 length, u8
 }
 
 int ipu6_ipu7_init_boot_config(struct ipu6_bus_device *adev,
+                              struct ipu7_fw_com_context *fwctx,
                               struct ipu7_fw_com_queue_config *qconfigs,
                               int num_queues, u32 uc_freq,
                               dma_addr_t subsys_config, u8 major)
 {
-       struct ipu6_isys *isys = ipu6_bus_get_drvdata(adev);
-       struct ipu7_fw_com_context *fwctx = isys->fwctx;
        struct ipu7_boot_abi_cfg *boot_config;
        struct ipu7_fw_com_queue_params_config *cfgs;
        struct device *dev = &adev->auxdev.dev;
@@ -269,16 +266,12 @@ int ipu6_ipu7_init_boot_config(struct ipu6_bus_device 
*adev,
 }
 EXPORT_SYMBOL_NS_GPL(ipu6_ipu7_init_boot_config, "INTEL_IPU6");
 
-void ipu6_ipu7_release_boot_config(struct ipu6_bus_device *adev)
+void ipu6_ipu7_release_boot_config(struct ipu6_bus_device *adev,
+                                  struct ipu7_fw_com_context *fwctx)
 {
-       struct ipu6_isys *isys = ipu6_bus_get_drvdata(adev);
-       struct ipu7_fw_com_context *fwctx;
-
-       if (!isys || !isys->fwctx)
+       if (!fwctx)
                return;
 
-       fwctx = isys->fwctx;
-
        if (fwctx->queue_mem) {
                ipu6_dma_free(adev, fwctx->queue_mem_size,
                              fwctx->queue_mem,
@@ -297,18 +290,17 @@ void ipu6_ipu7_release_boot_config(struct ipu6_bus_device 
*adev)
 }
 EXPORT_SYMBOL_NS_GPL(ipu6_ipu7_release_boot_config, "INTEL_IPU6");
 
-int ipu6_ipu7_boot_start_fw(const struct ipu6_bus_device *adev)
+int ipu6_ipu7_boot_start_fw(const struct ipu6_bus_device *adev,
+                           struct ipu7_fw_com_context *fwctx)
 {
        const struct device *dev = &adev->auxdev.dev;
-       struct ipu6_isys *isys = ipu6_bus_get_drvdata(adev);
-       struct ipu7_fw_com_context *fwctx = isys->fwctx;
        u32 timeout = IPU7_FW_START_STOP_TIMEOUT;
        void __iomem *base = adev->isp->base;
        u32 boot_state, last_boot_state;
        u32 indices_addr, msg_ver, id;
        int ret;
 
-       ret = ipu7_boot_cell_init(adev);
+       ret = ipu7_boot_cell_init(adev, fwctx);
        if (ret)
                return ret;
 
diff --git a/drivers/media/pci/intel/ipu6/ipu7-boot.h 
b/drivers/media/pci/intel/ipu6/ipu7-boot.h
index f2172b53bed5..48b7cbbde3d3 100644
--- a/drivers/media/pci/intel/ipu6/ipu7-boot.h
+++ b/drivers/media/pci/intel/ipu6/ipu7-boot.h
@@ -36,11 +36,14 @@ struct ipu7_boot_abi_cfg {
 } __packed;
 
 int ipu6_ipu7_init_boot_config(struct ipu6_bus_device *adev,
+                              struct ipu7_fw_com_context *fwctx,
                               struct ipu7_fw_com_queue_config *qconfigs,
                               int num_queues, u32 uc_freq,
                               dma_addr_t subsys_config, u8 major);
-void ipu6_ipu7_release_boot_config(struct ipu6_bus_device *adev);
-int ipu6_ipu7_boot_start_fw(const struct ipu6_bus_device *adev);
+void ipu6_ipu7_release_boot_config(struct ipu6_bus_device *adev,
+                                  struct ipu7_fw_com_context *fwctx);
+int ipu6_ipu7_boot_start_fw(const struct ipu6_bus_device *adev,
+                           struct ipu7_fw_com_context *fwctx);
 int ipu6_ipu7_boot_stop_fw(const struct ipu6_bus_device *adev);
 
 #endif
diff --git a/drivers/media/pci/intel/ipu6/ipu7-fw-isys.c 
b/drivers/media/pci/intel/ipu6/ipu7-fw-isys.c
index 97bdcb6f2831..69b2f0501961 100644
--- a/drivers/media/pci/intel/ipu6/ipu7-fw-isys.c
+++ b/drivers/media/pci/intel/ipu6/ipu7-fw-isys.c
@@ -25,7 +25,7 @@ static void ipu7_fw_isys_cleanup(struct ipu6_isys *isys)
        if (!fwctx)
                return;
 
-       ipu6_ipu7_release_boot_config(adev);
+       ipu6_ipu7_release_boot_config(adev, fwctx);
 
        if (fwctx->fw_config) {
                ipu6_dma_free(adev, sizeof(*fwctx->fw_config), fwctx->fw_config,
@@ -41,7 +41,7 @@ static void ipu7_fw_isys_cleanup(struct ipu6_isys *isys)
 
 static int ipu7_fw_isys_open(struct ipu6_isys *isys)
 {
-       return ipu6_ipu7_boot_start_fw(isys->adev);
+       return ipu6_ipu7_boot_start_fw(isys->adev, isys->fwctx);
 }
 
 static int ipu7_fw_isys_close(struct ipu6_isys *isys)
@@ -133,9 +133,8 @@ static int ipu7_fw_isys_init(struct ipu6_isys *isys, 
unsigned int num_streams)
 
        isys->fwctx = fwctx;
 
-       /* IPU8 firmware expects boot-message major version 2, not 1 */
-       ret = ipu6_ipu7_init_boot_config(adev, queue_configs, num_queues,
-                                        freq, fw_config_dma_addr,
+       ret = ipu6_ipu7_init_boot_config(adev, fwctx, queue_configs,
+                                        num_queues, freq, fw_config_dma_addr,
                                         IS_IPU8(adev->isp) ? 2U : 1U);
        if (ret) {
                ipu7_fw_isys_cleanup(isys);
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to