Revert "media: rockchip: isp: dynamic memory alloc for params and stats function"

This reverts commit 57bacabe6e.

Signed-off-by: Cai YiWei <cyw@rock-chips.com>
Change-Id: I97801770b8ed4e618bf99c4ab72c3c3d80c81d82
This commit is contained in:
Cai YiWei
2022-03-18 20:46:21 +08:00
committed by Tao Huang
parent 8ab16742cf
commit 6ec9dad4d4
2 changed files with 70 additions and 69 deletions

View File

@@ -3763,68 +3763,32 @@ void rkisp_params_cfgsram_v21(struct rkisp_isp_params_vdev *params_vdev)
isp_rawawb_cfg_sram(params_vdev, &params->meas.rawawb, true);
}
static int
rkisp_alloc_internal_buf(struct rkisp_isp_params_vdev *params_vdev,
const struct isp21_isp_params_cfg *new_params)
static void
rkisp_alloc_bay3d_buf(struct rkisp_isp_params_vdev *params_vdev,
const struct isp21_isp_params_cfg *new_params)
{
struct rkisp_device *ispdev = params_vdev->dev;
struct rkisp_isp_subdev *isp_sdev = &ispdev->isp_sdev;
struct rkisp_isp_params_val_v21 *priv_val;
u64 module_en_update, module_ens;
u32 w, h, size;
int ret, i;
int ret;
priv_val = (struct rkisp_isp_params_val_v21 *)params_vdev->priv_val;
module_en_update = new_params->module_en_update;
module_ens = new_params->module_ens;
priv_val->buf_3dlut_idx = 0;
for (i = 0; i < RKISP_PARAM_3DLUT_BUF_NUM; i++) {
priv_val->buf_3dlut[i].is_need_vaddr = true;
priv_val->buf_3dlut[i].size = RKISP_PARAM_3DLUT_BUF_SIZE;
ret = rkisp_alloc_buffer(ispdev, &priv_val->buf_3dlut[i]);
if (ret) {
dev_err(ispdev->dev, "can not alloc buffer\n");
goto err_3dlut;
}
}
priv_val->buf_lsclut_idx = 0;
for (i = 0; i < RKISP_PARAM_LSC_LUT_BUF_NUM; i++) {
priv_val->buf_lsclut[i].is_need_vaddr = true;
priv_val->buf_lsclut[i].size = RKISP_PARAM_LSC_LUT_BUF_SIZE;
ret = rkisp_alloc_buffer(ispdev, &priv_val->buf_lsclut[i]);
if (ret) {
dev_err(ispdev->dev, "can not alloc buffer\n");
goto err_lsclut;
}
}
if ((module_en_update & ISP2X_MODULE_BAY3D) &&
(module_ens & ISP2X_MODULE_BAY3D)) {
w = isp_sdev->in_crop.width;
h = isp_sdev->in_crop.height;
size = 2 * ALIGN((ALIGN(w, 16) + (w + 15) / 8) * h, 16);
priv_val = (struct rkisp_isp_params_val_v21 *)params_vdev->priv_val;
rkisp_free_buffer(ispdev, &priv_val->buf_3dnr);
priv_val->buf_3dnr.size = size;
ret = rkisp_alloc_buffer(ispdev, &priv_val->buf_3dnr);
if (ret) {
if (ret)
dev_err(ispdev->dev, "can not alloc bay3d buffer\n");
goto err_bay3d;
}
}
return 0;
err_bay3d:
rkisp_free_buffer(ispdev, &priv_val->buf_3dnr);
i = RKISP_PARAM_LSC_LUT_BUF_NUM;
err_lsclut:
for (i -= 1; i >= 0; i--)
rkisp_free_buffer(ispdev, &priv_val->buf_lsclut[i]);
i = RKISP_PARAM_3DLUT_BUF_NUM;
err_3dlut:
for (i -= 1; i >= 0; i--)
rkisp_free_buffer(ispdev, &priv_val->buf_3dlut[i]);
return ret;
}
static bool
@@ -3869,7 +3833,7 @@ rkisp_params_first_cfg_v2x(struct rkisp_isp_params_vdev *params_vdev)
struct rkisp_isp_params_val_v21 *priv_val =
(struct rkisp_isp_params_val_v21 *)params_vdev->priv_val;
rkisp_alloc_internal_buf(params_vdev, params_vdev->isp21_params);
rkisp_alloc_bay3d_buf(params_vdev, params_vdev->isp21_params);
dev->is_bigmode = rkisp_params_check_bigmode_v21(params_vdev);
spin_lock(&params_vdev->config_lock);
/* override the default things */
@@ -4017,16 +3981,9 @@ rkisp_params_stream_stop_v2x(struct rkisp_isp_params_vdev *params_vdev)
{
struct rkisp_device *ispdev = params_vdev->dev;
struct rkisp_isp_params_val_v21 *priv_val;
int i;
priv_val = (struct rkisp_isp_params_val_v21 *)params_vdev->priv_val;
rkisp_free_buffer(ispdev, &priv_val->buf_3dnr);
for (i = 0; i < RKISP_PARAM_3DLUT_BUF_NUM; i++)
rkisp_free_buffer(ispdev, &priv_val->buf_3dlut[i]);
for (i = 0; i < RKISP_PARAM_LSC_LUT_BUF_NUM; i++)
rkisp_free_buffer(ispdev, &priv_val->buf_lsclut[i]);
for (i = 0; i < RKISP_STATS_DDR_BUF_NUM; i++)
rkisp_free_buffer(ispdev, &ispdev->stats_vdev.stats_buf[i]);
}
static void
@@ -4232,7 +4189,9 @@ static struct rkisp_isp_params_ops rkisp_isp_params_ops_tbl = {
int rkisp_init_params_vdev_v21(struct rkisp_isp_params_vdev *params_vdev)
{
struct device *dev = params_vdev->dev->dev;
struct rkisp_isp_params_val_v21 *priv_val;
int i, ret;
priv_val = kzalloc(sizeof(*priv_val), GFP_KERNEL);
if (!priv_val)
@@ -4244,18 +4203,62 @@ int rkisp_init_params_vdev_v21(struct rkisp_isp_params_vdev *params_vdev)
return -ENOMEM;
}
priv_val->buf_3dlut_idx = 0;
for (i = 0; i < RKISP_PARAM_3DLUT_BUF_NUM; i++) {
priv_val->buf_3dlut[i].is_need_vaddr = true;
priv_val->buf_3dlut[i].size = RKISP_PARAM_3DLUT_BUF_SIZE;
ret = rkisp_alloc_buffer(params_vdev->dev, &priv_val->buf_3dlut[i]);
if (ret) {
dev_err(dev, "can not alloc buffer\n");
goto err;
}
}
priv_val->buf_lsclut_idx = 0;
for (i = 0; i < RKISP_PARAM_LSC_LUT_BUF_NUM; i++) {
priv_val->buf_lsclut[i].is_need_vaddr = true;
priv_val->buf_lsclut[i].size = RKISP_PARAM_LSC_LUT_BUF_SIZE;
ret = rkisp_alloc_buffer(params_vdev->dev, &priv_val->buf_lsclut[i]);
if (ret) {
dev_err(dev, "can not alloc buffer\n");
goto err;
}
}
params_vdev->priv_val = (void *)priv_val;
params_vdev->ops = &rkisp_isp_params_ops_tbl;
params_vdev->priv_ops = &rkisp_v21_isp_params_ops;
rkisp_clear_first_param_v2x(params_vdev);
return 0;
err:
for (i = 0; i < RKISP_PARAM_3DLUT_BUF_NUM; i++)
rkisp_free_buffer(params_vdev->dev, &priv_val->buf_3dlut[i]);
for (i = 0; i < RKISP_PARAM_LSC_LUT_BUF_NUM; i++)
rkisp_free_buffer(params_vdev->dev, &priv_val->buf_lsclut[i]);
vfree(params_vdev->isp21_params);
return ret;
}
void rkisp_uninit_params_vdev_v21(struct rkisp_isp_params_vdev *params_vdev)
{
if (params_vdev->isp21_params)
vfree(params_vdev->isp21_params);
kfree(params_vdev->priv_val);
struct rkisp_isp_params_val_v21 *priv_val;
int i;
priv_val = params_vdev->priv_val;
if (!priv_val)
return;
rkisp_deinit_ldch_buf(params_vdev);
for (i = 0; i < RKISP_PARAM_3DLUT_BUF_NUM; i++)
rkisp_free_buffer(params_vdev->dev, &priv_val->buf_3dlut[i]);
for (i = 0; i < RKISP_PARAM_LSC_LUT_BUF_NUM; i++)
rkisp_free_buffer(params_vdev->dev, &priv_val->buf_lsclut[i]);
vfree(params_vdev->isp21_params);
kfree(priv_val);
params_vdev->priv_val = NULL;
}

View File

@@ -1126,19 +1126,11 @@ static struct rkisp_isp_stats_ops rkisp_isp_stats_ops_tbl = {
void rkisp_stats_first_ddr_config_v21(struct rkisp_isp_stats_vdev *stats_vdev)
{
int i;
stats_vdev->rd_stats_from_ddr = false;
stats_vdev->priv_ops = &rkisp_stats_reg_ops_v21;
if (!IS_HDR_RDBK(stats_vdev->dev->hdr.op_mode)) {
for (i = 0; i < RKISP_STATS_DDR_BUF_NUM; i++) {
stats_vdev->stats_buf[i].is_need_vaddr = true;
stats_vdev->stats_buf[i].size = RKISP_RD_STATS_BUF_SIZE;
if (rkisp_alloc_buffer(stats_vdev->dev, &stats_vdev->stats_buf[i]))
goto err;
}
if (!IS_HDR_RDBK(stats_vdev->dev->hdr.op_mode) &&
stats_vdev->stats_buf[0].mem_priv) {
stats_vdev->priv_ops = &rkisp_stats_ddr_ops_v21;
stats_vdev->rd_stats_from_ddr = true;
stats_vdev->rd_buf_idx = 0;
@@ -1151,15 +1143,12 @@ void rkisp_stats_first_ddr_config_v21(struct rkisp_isp_stats_vdev *stats_vdev)
rkisp_set_bits(stats_vdev->dev, CTRL_SWS_CFG, SW_3A_DDR_WRITE_EN,
SW_3A_DDR_WRITE_EN, false);
}
return;
err:
for (i -= 1; i >= 0; i--)
rkisp_free_buffer(stats_vdev->dev, &stats_vdev->stats_buf[i]);
dev_err(stats_vdev->dev->dev, "alloc stats ddr buf fail\n");
}
void rkisp_init_stats_vdev_v21(struct rkisp_isp_stats_vdev *stats_vdev)
{
int i;
stats_vdev->vdev_fmt.fmt.meta.dataformat =
V4L2_META_FMT_RK_ISP1_STAT_3A;
stats_vdev->vdev_fmt.fmt.meta.buffersize =
@@ -1168,10 +1157,19 @@ void rkisp_init_stats_vdev_v21(struct rkisp_isp_stats_vdev *stats_vdev)
stats_vdev->ops = &rkisp_isp_stats_ops_tbl;
stats_vdev->priv_ops = &rkisp_stats_reg_ops_v21;
stats_vdev->rd_stats_from_ddr = false;
for (i = 0; i < RKISP_STATS_DDR_BUF_NUM; i++) {
stats_vdev->stats_buf[i].is_need_vaddr = true;
stats_vdev->stats_buf[i].size = RKISP_RD_STATS_BUF_SIZE;
rkisp_alloc_buffer(stats_vdev->dev, &stats_vdev->stats_buf[i]);
}
}
void rkisp_uninit_stats_vdev_v21(struct rkisp_isp_stats_vdev *stats_vdev)
{
int i;
for (i = 0; i < RKISP_STATS_DDR_BUF_NUM; i++)
rkisp_free_buffer(stats_vdev->dev, &stats_vdev->stats_buf[i]);
}