drm/rockchip: vop2: update default axi id for rk3576

If Cluster rid is bigger than 0xf, VOP will dead at the
system bandwidth very terrible scene.

old:
    Cluster0 win0: 0x10, 0x11     [AXI0]
    Cluster0 win1: 0x12, 0x13     [AXI0]
    Cluster1 win0: 6, 7           [AXI0]
    Cluster1 win1: 8, 9           [AXI0]
    Esmart0:       a, b           [AXI0]
    Esmart1:       c, d           [AXI0]
    Esmart2:       a, b           [AXI1]
    Esmart3:       c, d           [AXI1]
    Lut dma rid:   0x1, 0x2, 0x3  [AXI0]
    DCI dma rid:   0x4            [AXI0]
    Metadata rid:  0x5            [AXI0]

new:
    Cluster0 win0: 0x0a, 0x0b     [AXI0]
    Cluster0 win1: 0x0c, 0x0d     [AXI0]
    Cluster1 win0: 6, 7           [AXI0]
    Cluster1 win1: 8, 9           [AXI0]
    Esmart0:       0x10, 0x11     [AXI0]
    Esmart1:       0x12, 0x13     [AXI0]
    Esmart2:       a, b           [AXI1]
    Esmart3:       c, d           [AXI1]
    Lut dma rid:   0x1, 0x2, 0x3  [AXI0]
    DCI dma rid:   0x4            [AXI0]
    Metadata rid:  0x5            [AXI0]

If Esmart rid is bigger than 0xf, we should disable esmart dma stride
4k.

Signed-off-by: Sandy Huang <hjc@rock-chips.com>
Change-Id: I05c810a556f382ea84963e37933a73c9023fae46
This commit is contained in:
Sandy Huang
2024-05-24 09:29:56 +08:00
parent c50cc550bf
commit 6788007ec5

View File

@@ -3657,6 +3657,25 @@ static const struct vop2_win_regs rk3576_cluster1_win_data = {
* * After prescale down:
* * nearest-neighbor/bilinear/bicubic for scale up
* * nearest-neighbor/bilinear for scale down
*
* AXI config::
*
* * Cluster0 win0: 0xa, 0xb [AXI0]
* * Cluster0 win1: 0xc, 0xd [AXI0]
* * Cluster1 win0: 0x6, 0x7 [AXI0]
* * Cluster1 win1: 0x8, 0x9 [AXI0]
* * Esmart0: 0x10, 0x11 [AXI0]
* * Esmart1: 0x12, 0x13 [AXI0]
* * Esmart2: 0xa, 0xb [AXI1]
* * Esmart3: 0xc, 0xd [AXI1]
* * Lut dma rid: 0x1, 0x2, 0x3 [AXI0]
* * DCI dma rid: 0x4 [AXI0]
* * Metadata rid: 0x5 [AXI0]
*
* * Limit:
* * (1) 0x0 and 0xf can't be used;
* * (2) cluster and lut/dci/metadata rid must smaller than 0xf, If Cluster rid is bigger than 0xf,
* * VOP will dead at the system bandwidth very terrible scene.
*/
static const struct vop2_win_data rk3576_vop_win_data[] = {
{
@@ -3680,8 +3699,8 @@ static const struct vop2_win_data rk3576_vop_win_data[] = {
.pd_id = VOP2_PD_ESMART,
.type = DRM_PLANE_TYPE_PRIMARY,
.axi_id = 0,
.axi_yrgb_id = 0x0a,
.axi_uv_id = 0x0b,
.axi_yrgb_id = 0x10,
.axi_uv_id = 0x11,
.possible_vp_mask = BIT(ROCKCHIP_VOP_VP0) | BIT(ROCKCHIP_VOP_VP2),
.max_upscale_factor = 8,
.max_downscale_factor = 8,
@@ -3709,8 +3728,8 @@ static const struct vop2_win_data rk3576_vop_win_data[] = {
.pd_id = VOP2_PD_ESMART,
.type = DRM_PLANE_TYPE_PRIMARY,
.axi_id = 0,
.axi_yrgb_id = 0x0c,
.axi_uv_id = 0x0d,
.axi_yrgb_id = 0x12,
.axi_uv_id = 0x13,
.possible_vp_mask = BIT(ROCKCHIP_VOP_VP1) | BIT(ROCKCHIP_VOP_VP2),
.max_upscale_factor = 8,
.max_downscale_factor = 8,
@@ -3792,8 +3811,8 @@ static const struct vop2_win_data rk3576_vop_win_data[] = {
.vsd_pre_filter_mode = VOP3_PRE_SCALE_DOWN_AVG,/* gt or avg */
.regs = &rk3576_cluster0_win_data,
.pd_id = VOP2_PD_CLUSTER,
.axi_yrgb_id = 0x10,
.axi_uv_id = 0x11,
.axi_yrgb_id = 0x0a,
.axi_uv_id = 0x0b,
.dci_rid_id = 0x4,/* dci axi id length is 4 bits */
.possible_vp_mask = BIT(ROCKCHIP_VOP_VP0) | BIT(ROCKCHIP_VOP_VP1),
.max_upscale_factor = 8,
@@ -3819,8 +3838,8 @@ static const struct vop2_win_data rk3576_vop_win_data[] = {
.hsd_pre_filter_mode = VOP3_PRE_SCALE_DOWN_AVG,/* gt or avg */
.vsd_pre_filter_mode = VOP3_PRE_SCALE_DOWN_AVG,/* gt or avg */
.regs = &rk3576_cluster0_win_data,
.axi_yrgb_id = 0x12,
.axi_uv_id = 0x13,
.axi_yrgb_id = 0x0c,
.axi_uv_id = 0x0d,
.possible_vp_mask = BIT(ROCKCHIP_VOP_VP0) | BIT(ROCKCHIP_VOP_VP1),
.max_upscale_factor = 8,
.max_downscale_factor = 8,