media: rockchip: aiisp: add ioctl to reduce memory

Change-Id: Ie0bbdf18e6a9e0c2990f505cfdd771fb69497ca3
Signed-off-by: Hu Kejun <william.hu@rock-chips.com>
This commit is contained in:
Hu Kejun
2025-07-14 14:36:12 +08:00
committed by Tao Huang
parent a930e7e610
commit da44652e18
3 changed files with 19 additions and 0 deletions

View File

@@ -655,6 +655,9 @@ static int rkaiisp_init_pool(struct rkaiisp_device *aidev, struct rkaiisp_ispbuf
if (aidev->exealgo == AIYNR) {
stride = ((ispbuf->iir_width + 3) / 4 * 8 * 11 + 7) >> 3;
size = stride * (ispbuf->iir_height + 3) / 4;
} else if (aidev->mem_mode == COMBO_MEMODE) {
stride = ((ispbuf->iir_width + 7) / 8 * 15 * 11 + 7) >> 3;
size = stride * (ispbuf->iir_height + 7) / 8;
} else {
stride = ((ispbuf->iir_width + 1) / 2 * 15 * 11 + 7) >> 3;
size = stride * (ispbuf->iir_height + 1) / 2;
@@ -1941,6 +1944,13 @@ static long rkaiisp_ioctl_default(struct file *file, void *fh,
case RKAIISP_CMD_GET_YNRBUF_INFO:
ret = rkaiisp_get_ynrbuf_info(aidev, arg);
break;
case RKAIISP_CMD_SET_MEMORY_MODE: {
enum rkaiisp_mem_mode *mem_mode = (enum rkaiisp_mem_mode *)arg;
aidev->mem_mode = *mem_mode;
ret = 0;
}
break;
default:
ret = -EINVAL;
}

View File

@@ -147,6 +147,7 @@ struct rkaiisp_device {
enum rkaiisp_exemode exemode;
enum rkaiisp_model_mode model_mode;
enum rkaiisp_hwstate hwstate;
enum rkaiisp_mem_mode mem_mode;
u32 para_size;
u32 max_runcnt;
u32 model_runcnt;

View File

@@ -35,6 +35,9 @@
#define RKAIISP_CMD_GET_YNRBUF_INFO \
_IOR('V', BASE_VIDIOC_PRIVATE + 5, struct rkaiisp_ynrbuf_info)
#define RKAIISP_CMD_SET_MEMORY_MODE \
_IOW('V', BASE_VIDIOC_PRIVATE + 6, enum rkaiisp_mem_mode)
/**********************EVENT_PRIVATE***************************/
#define RKAIISP_V4L2_EVENT_AIISP_DONE (V4L2_EVENT_PRIVATE_START + 1)
@@ -80,6 +83,11 @@ enum rkaiisp_exemode {
BOTHEVENT_IN_KERNEL
};
enum rkaiisp_mem_mode {
SINGLE_MEMODE,
COMBO_MEMODE,
};
struct rkaiisp_airms_st {
int sequence;
int inbuf_idx;