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]