hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/media/platform/rockchip/isp/isp_params_v3x.c
....@@ -1291,6 +1291,12 @@
12911291 value &= ISP3X_RAWAE_BIG_EN;
12921292
12931293 wnd_num_idx = arg->wnd_num;
1294
+ if (wnd_num_idx >= ARRAY_SIZE(ae_wnd_num)) {
1295
+ wnd_num_idx = ARRAY_SIZE(ae_wnd_num) - 1;
1296
+ dev_err(params_vdev->dev->dev,
1297
+ "%s invalid wnd_num:%d, set to %d\n",
1298
+ __func__, arg->wnd_num, wnd_num_idx);
1299
+ }
12941300 value |= ISP3X_RAWAE_BIG_WND0_NUM(wnd_num_idx);
12951301
12961302 if (arg->subwin_en[0])
....@@ -1430,13 +1436,12 @@
14301436 return;
14311437
14321438 for (i = 0; i < ISP3X_RAWAWB_WEIGHT_NUM / 5; i++) {
1433
- isp3_param_write(params_vdev,
1434
- (arg->sw_rawawb_wp_blk_wei_w[5 * i] & 0x3f) << 0 |
1435
- (arg->sw_rawawb_wp_blk_wei_w[5 * i + 1] & 0x3f) << 6 |
1436
- (arg->sw_rawawb_wp_blk_wei_w[5 * i + 2] & 0x3f) << 12 |
1437
- (arg->sw_rawawb_wp_blk_wei_w[5 * i + 3] & 0x3f) << 18 |
1438
- (arg->sw_rawawb_wp_blk_wei_w[5 * i + 4] & 0x3f) << 24,
1439
- ISP3X_RAWAWB_WRAM_DATA_BASE, id);
1439
+ val = (arg->sw_rawawb_wp_blk_wei_w[5 * i] & 0x3f) << 0 |
1440
+ (arg->sw_rawawb_wp_blk_wei_w[5 * i + 1] & 0x3f) << 6 |
1441
+ (arg->sw_rawawb_wp_blk_wei_w[5 * i + 2] & 0x3f) << 12 |
1442
+ (arg->sw_rawawb_wp_blk_wei_w[5 * i + 3] & 0x3f) << 18 |
1443
+ (arg->sw_rawawb_wp_blk_wei_w[5 * i + 4] & 0x3f) << 24;
1444
+ isp3_param_write_direct(params_vdev, val, ISP3X_RAWAWB_WRAM_DATA_BASE, id);
14401445 }
14411446 }
14421447
....@@ -2288,10 +2293,9 @@
22882293
22892294 if (params_vdev->dev->hw_dev->is_single)
22902295 isp_rawawb_cfg_sram(params_vdev, arg, false, id);
2291
- else
2292
- memcpy(arg_rec->sw_rawawb_wp_blk_wei_w,
2293
- arg->sw_rawawb_wp_blk_wei_w,
2294
- ISP3X_RAWAWB_WEIGHT_NUM);
2296
+ memcpy(arg_rec->sw_rawawb_wp_blk_wei_w,
2297
+ arg->sw_rawawb_wp_blk_wei_w,
2298
+ ISP3X_RAWAWB_WEIGHT_NUM);
22952299
22962300 /* avoid to override the old enable value */
22972301 value = isp3_param_read(params_vdev, ISP3X_RAWAWB_CTRL, id);
....@@ -2426,6 +2430,12 @@
24262430 return;
24272431
24282432 wnd_num_idx = arg->wnd_num;
2433
+ if (wnd_num_idx >= ARRAY_SIZE(hist_wnd_num)) {
2434
+ wnd_num_idx = ARRAY_SIZE(hist_wnd_num) - 1;
2435
+ dev_err(params_vdev->dev->dev,
2436
+ "%s invalid wnd_num:%d, set to %d\n",
2437
+ __func__, arg->wnd_num, wnd_num_idx);
2438
+ }
24292439 memset(weight15x15, 0, sizeof(weight15x15));
24302440 for (i = 0; i < hist_wnd_num[wnd_num_idx]; i++) {
24312441 for (j = 0; j < hist_wnd_num[wnd_num_idx]; j++) {
....@@ -2473,6 +2483,12 @@
24732483 }
24742484
24752485 wnd_num_idx = arg->wnd_num;
2486
+ if (wnd_num_idx >= ARRAY_SIZE(hist_wnd_num)) {
2487
+ wnd_num_idx = ARRAY_SIZE(hist_wnd_num) - 1;
2488
+ dev_err(params_vdev->dev->dev,
2489
+ "%s invalid wnd_num:%d, set to %d\n",
2490
+ __func__, arg->wnd_num, wnd_num_idx);
2491
+ }
24762492 /* avoid to override the old enable value */
24772493 hist_ctrl = isp3_param_read(params_vdev, addr + ISP3X_RAWHIST_BIG_CTRL, id);
24782494 hist_ctrl &= ISP3X_RAWHIST_EN;
....@@ -2502,8 +2518,7 @@
25022518
25032519 if (dev->hw_dev->is_single)
25042520 isp_rawhstbig_cfg_sram(params_vdev, arg, blk_no, false, id);
2505
- else
2506
- *arg_rec = *arg;
2521
+ *arg_rec = *arg;
25072522 }
25082523
25092524 static void