media: rockchip: aiisp: add ioctl to clear unused iq params

Change-Id: I919881211c453d9885e76ccdf66c40dae5b96744
Signed-off-by: Hu Kejun <william.hu@rock-chips.com>
This commit is contained in:
Hu Kejun
2025-07-25 15:11:59 +08:00
committed by Cai YiWei
parent 541244ac65
commit 59f68a3106
3 changed files with 25 additions and 2 deletions

View File

@@ -1623,7 +1623,7 @@ static void rkaiisp_run_start(struct rkaiisp_device *aidev)
rkaiisp_update_list_reg(aidev);
}
static void rkaiisp_get_new_iqparam(struct rkaiisp_device *aidev)
static int rkaiisp_get_new_iqparam(struct rkaiisp_device *aidev)
{
struct rkaiisp_params *iq_params, *old_params;
struct rkaiisp_buffer *cur_buf = NULL;
@@ -1637,7 +1637,7 @@ static void rkaiisp_get_new_iqparam(struct rkaiisp_device *aidev)
struct rkaiisp_buffer, queue);
if (!cur_buf) {
spin_unlock_irqrestore(&aidev->config_lock, flags);
return;
return -1;
}
list_del(&cur_buf->queue);
@@ -1672,8 +1672,22 @@ static void rkaiisp_get_new_iqparam(struct rkaiisp_device *aidev)
aidev->model_runcnt = iq_params->model_runcnt;
rkaiisp_cfg_other_iqparam(aidev, &iq_params->other_cfg);
}
return 0;
}
static int rkaiisp_clear_iqparams(struct rkaiisp_device *aidev)
{
int i;
for (i = 0; i < aidev->iq_parambuf_num; i++) {
if (rkaiisp_get_new_iqparam(aidev) != 0)
break;
}
v4l2_dbg(1, rkaiisp_debug, &aidev->v4l2_dev,
"clear unused iq params\n");
return 0;
}
void rkaiisp_trigger(struct rkaiisp_device *aidev)
{
@@ -1947,6 +1961,9 @@ static long rkaiisp_ioctl_default(struct file *file, void *fh,
ret = 0;
}
break;
case RKAIISP_CMD_CLEAR_IQPARAMS:
ret = rkaiisp_clear_iqparams(aidev);
break;
default:
ret = -EINVAL;
}
@@ -1988,6 +2005,7 @@ static int rkaiisp_vb2_queue_setup(struct vb2_queue *vq,
sizes[0] = sizeof(struct rkaiisp_params) + aidev->para_size * aidev->max_runcnt;
aidev->vdev_fmt.fmt.meta.buffersize = sizes[0];
aidev->iq_parambuf_num = *num_buffers;
INIT_LIST_HEAD(&aidev->params);

View File

@@ -170,6 +170,8 @@ struct rkaiisp_device {
bool showreg;
bool init_buf;
bool is_state_err;
u8 iq_parambuf_num;
};
extern int rkaiisp_debug;

View File

@@ -38,6 +38,9 @@
#define RKAIISP_CMD_SET_MEMORY_MODE \
_IOW('V', BASE_VIDIOC_PRIVATE + 6, enum rkaiisp_mem_mode)
#define RKAIISP_CMD_CLEAR_IQPARAMS \
_IO('V', BASE_VIDIOC_PRIVATE + 7)
/**********************EVENT_PRIVATE***************************/
#define RKAIISP_V4L2_EVENT_AIISP_DONE (V4L2_EVENT_PRIVATE_START + 1)