hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/media/platform/rockchip/isp/regs.c
....@@ -45,8 +45,7 @@
4545
4646 if (async && dev->hw_dev->is_single)
4747 val = CIF_DUAL_CROP_GEN_CFG_UPD;
48
- rkisp_unite_set_bits(dev, stream->config->dual_crop.ctrl,
49
- mask, val, false, dev->hw_dev->is_unite);
48
+ rkisp_unite_set_bits(dev, stream->config->dual_crop.ctrl, mask, val, false);
5049 }
5150
5251 void rkisp_config_dcrop(struct rkisp_stream *stream,
....@@ -54,7 +53,7 @@
5453 {
5554 struct rkisp_device *dev = stream->ispdev;
5655 u32 val = stream->config->dual_crop.yuvmode_mask;
57
- bool is_unite = dev->hw_dev->is_unite;
56
+ bool is_unite = !!dev->hw_dev->unite;
5857 struct v4l2_rect tmp = *rect;
5958 u32 reg;
6059
....@@ -69,9 +68,9 @@
6968 rkisp_write(dev, reg, tmp.width, false);
7069
7170 reg = stream->config->dual_crop.v_offset;
72
- rkisp_unite_write(dev, reg, tmp.top, false, is_unite);
71
+ rkisp_unite_write(dev, reg, tmp.top, false);
7372 reg = stream->config->dual_crop.v_size;
74
- rkisp_unite_write(dev, reg, tmp.height, false, is_unite);
73
+ rkisp_unite_write(dev, reg, tmp.height, false);
7574
7675 if (async && dev->hw_dev->is_single)
7776 val |= CIF_DUAL_CROP_GEN_CFG_UPD;
....@@ -149,8 +148,7 @@
149148
150149 if (async && dev->hw_dev->is_single)
151150 val = CIF_RSZ_CTRL_CFG_UPD_AUTO;
152
- rkisp_unite_set_bits(dev, stream->config->rsz.ctrl, 0,
153
- val, false, dev->hw_dev->is_unite);
151
+ rkisp_unite_set_bits(dev, stream->config->rsz.ctrl, 0, val, false);
154152 }
155153
156154 static void set_scale(struct rkisp_stream *stream, struct v4l2_rect *in_y,
....@@ -220,17 +218,8 @@
220218 rkisp_write(dev, scale_vc_addr, scale_vc, false);
221219 }
222220
223
- if (dev->hw_dev->is_unite) {
224
- u32 hy_size_reg = stream->id == RKISP_STREAM_MP ?
225
- ISP3X_MAIN_RESIZE_HY_SIZE : ISP3X_SELF_RESIZE_HY_SIZE;
226
- u32 hc_size_reg = stream->id == RKISP_STREAM_MP ?
227
- ISP3X_MAIN_RESIZE_HC_SIZE : ISP3X_SELF_RESIZE_HC_SIZE;
228
- u32 hy_offs_mi_reg = stream->id == RKISP_STREAM_MP ?
229
- ISP3X_MAIN_RESIZE_HY_OFFS_MI : ISP3X_SELF_RESIZE_HY_OFFS_MI;
230
- u32 hc_offs_mi_reg = stream->id == RKISP_STREAM_MP ?
231
- ISP3X_MAIN_RESIZE_HC_OFFS_MI : ISP3X_SELF_RESIZE_HC_OFFS_MI;
232
- u32 in_crop_offs_reg = stream->id == RKISP_STREAM_MP ?
233
- ISP3X_MAIN_RESIZE_IN_CROP_OFFSET : ISP3X_SELF_RESIZE_IN_CROP_OFFSET;
221
+ if (dev->hw_dev->unite) {
222
+ u32 hy_size_reg, hc_size_reg, hy_offs_mi_reg, hc_offs_mi_reg, in_crop_offs_reg;
234223 u32 isp_in_w = in_y->width / 2 + RKMOUDLE_UNITE_EXTEND_PIXEL;
235224 u32 scl_w = out_y->width / 2;
236225 u32 left_y = scale_hy == 1 ? scl_w : DIV_ROUND_UP(scl_w * 65536, scale_hy);
....@@ -248,6 +237,34 @@
248237 u32 extend = RKMOUDLE_UNITE_EXTEND_PIXEL;
249238 u32 right_scl_in_y;
250239 u32 right_scl_in_c;
240
+
241
+ switch (stream->id) {
242
+ case RKISP_STREAM_MP:
243
+ hy_size_reg = ISP3X_MAIN_RESIZE_HY_SIZE;
244
+ hc_size_reg = ISP3X_MAIN_RESIZE_HC_SIZE;
245
+ hy_offs_mi_reg = ISP3X_MAIN_RESIZE_HY_OFFS_MI;
246
+ hc_offs_mi_reg = ISP3X_MAIN_RESIZE_HC_OFFS_MI;
247
+ in_crop_offs_reg = ISP3X_MAIN_RESIZE_IN_CROP_OFFSET;
248
+ break;
249
+ case RKISP_STREAM_SP:
250
+ hy_size_reg = ISP3X_SELF_RESIZE_HY_SIZE;
251
+ hc_size_reg = ISP3X_SELF_RESIZE_HC_SIZE;
252
+ hy_offs_mi_reg = ISP3X_SELF_RESIZE_HY_OFFS_MI;
253
+ hc_offs_mi_reg = ISP3X_SELF_RESIZE_HC_OFFS_MI;
254
+ in_crop_offs_reg = ISP3X_SELF_RESIZE_IN_CROP_OFFSET;
255
+ break;
256
+ case RKISP_STREAM_BP:
257
+ hy_size_reg = ISP32_BP_RESIZE_HY_SIZE;
258
+ hc_size_reg = ISP32_BP_RESIZE_HC_SIZE;
259
+ hy_offs_mi_reg = ISP32_BP_RESIZE_HY_OFFS_MI;
260
+ hc_offs_mi_reg = ISP32_BP_RESIZE_HC_OFFS_MI;
261
+ in_crop_offs_reg = ISP32_BP_RESIZE_IN_CROP_OFFSET;
262
+ break;
263
+ default:
264
+ v4l2_warn(&dev->v4l2_dev, "%s no support unite for stream:%d\n",
265
+ __func__, stream->id);
266
+ return;
267
+ }
251268
252269 if (right_crop_y < RKMOUDLE_UNITE_EXTEND_PIXEL) {
253270 u32 reg;
....@@ -362,7 +379,6 @@
362379 {
363380 struct rkisp_device *dev = stream->ispdev;
364381 int i = 0;
365
- bool is_unite = dev->hw_dev->is_unite;
366382
367383 if (dev->isp_ver == ISP_V32_L && stream->id == RKISP_STREAM_SP) {
368384 set_bilinear_scale(stream, in_y, in_c, out_y, out_c, async);
....@@ -377,8 +393,8 @@
377393
378394 /* Linear interpolation */
379395 for (i = 0; i < 64; i++) {
380
- rkisp_unite_write(dev, stream->config->rsz.scale_lut_addr, i, true, is_unite);
381
- rkisp_unite_write(dev, stream->config->rsz.scale_lut, i, true, is_unite);
396
+ rkisp_unite_write(dev, stream->config->rsz.scale_lut_addr, i, true);
397
+ rkisp_unite_write(dev, stream->config->rsz.scale_lut, i, true);
382398 }
383399
384400 set_scale(stream, in_y, in_c, out_y, out_c);
....@@ -388,9 +404,7 @@
388404
389405 void rkisp_disable_rsz(struct rkisp_stream *stream, bool async)
390406 {
391
- bool is_unite = stream->ispdev->hw_dev->is_unite;
392
-
393
- rkisp_unite_write(stream->ispdev, stream->config->rsz.ctrl, 0, false, is_unite);
407
+ rkisp_unite_write(stream->ispdev, stream->config->rsz.ctrl, 0, false);
394408 if (stream->ispdev->isp_ver == ISP_V32_L && stream->id == RKISP_STREAM_SP)
395409 return;
396410 update_rsz_shadow(stream, async);