diff options
| author | Dikshita Agarwal <[email protected]> | 2025-02-07 07:54:44 +0000 |
|---|---|---|
| committer | Hans Verkuil <[email protected]> | 2025-02-07 10:51:04 +0000 |
| commit | d7378f84e94e14998b3469dcc0d8ce609d049ccc (patch) | |
| tree | ac8c1d11da4adeaee4f5ad245ff9323053ba8b4b /drivers/media/platform/qcom/iris/iris_vidc.c | |
| parent | media: iris: implement iris v4l2 file ops (diff) | |
| download | kernel-d7378f84e94e14998b3469dcc0d8ce609d049ccc.tar.gz kernel-d7378f84e94e14998b3469dcc0d8ce609d049ccc.zip | |
media: iris: introduce iris core state management with shared queues
Introduce a core state management for iris driver with the necessary
queues needed for the host firmware communication.
There are 3 types of queues:
Command queue - driver to write any command to firmware.
Message queue - firmware to send any response to the driver.
Debug queue - for the firmware to write debug messages.
Initialize and configure the shared queues during probe.
Different states for core:
IRIS_CORE_DEINIT - default state.
IRIS_CORE_INIT - core state with core initialized. FW loaded and HW
brought out of reset, shared queues established
between host driver and firmware.
IRIS_CORE_ERROR - error state.
-----------
|
V
-----------
| DEINIT |
-----------
^
/ \
/ \
/ \
/ \
v v
----------- ----------.
| INIT |-->| ERROR |
----------- ----------.
Tested-by: Stefan Schmidt <[email protected]> # x1e80100 (Dell XPS 13 9345)
Reviewed-by: Stefan Schmidt <[email protected]>
Tested-by: Neil Armstrong <[email protected]> # on SM8550-QRD
Tested-by: Neil Armstrong <[email protected]> # on SM8550-HDK
Signed-off-by: Dikshita Agarwal <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Diffstat (limited to 'drivers/media/platform/qcom/iris/iris_vidc.c')
| -rw-r--r-- | drivers/media/platform/qcom/iris/iris_vidc.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c b/drivers/media/platform/qcom/iris/iris_vidc.c index e91d661c6280..5dd0ccbaa2fb 100644 --- a/drivers/media/platform/qcom/iris/iris_vidc.c +++ b/drivers/media/platform/qcom/iris/iris_vidc.c @@ -81,6 +81,12 @@ int iris_open(struct file *filp) struct iris_inst *inst; int ret; + ret = iris_core_init(core); + if (ret) { + dev_err(core->dev, "core init failed\n"); + return ret; + } + inst = core->iris_platform_data->get_instance(); if (!inst) return -ENOMEM; |
