@@ -322,12 +322,21 @@ static const struct vop_intr rk3288_vop_intr = {
322322 .clear = VOP_REG (RK3288_INTR_CTRL0 , 0xf , 8 ),
323323};
324324
325+ static const struct vop_grf_ctrl rk3288_vop_big_grf_ctrl = {
326+ .grf_dclk_inv = VOP_REG (RK3288_GRF_SOC_CON15 , 0x1 , 12 ),
327+ };
328+
329+ static const struct vop_grf_ctrl rk3288_vop_lit_grf_ctrl = {
330+ .grf_dclk_inv = VOP_REG (RK3288_GRF_SOC_CON15 , 0x1 , 14 ),
331+ };
332+
325333static const struct vop_data rk3288_vop_big = {
326334 .version = VOP_VERSION (3 , 0 ),
327335 .feature = VOP_FEATURE_OUTPUT_10BIT | VOP_FEATURE_ALPHA_SCALE ,
328336 .max_input = {4096 , 8192 },
329337 .max_output = {3840 , 2160 },
330338 .intr = & rk3288_vop_intr ,
339+ .grf_ctrl = & rk3288_vop_big_grf_ctrl ,
331340 .ctrl = & rk3288_ctrl_data ,
332341 .win = rk3288_vop_win_data ,
333342 .win_size = ARRAY_SIZE (rk3288_vop_win_data ),
@@ -339,6 +348,7 @@ static const struct vop_data rk3288_vop_lit = {
339348 .max_input = {4096 , 8192 },
340349 .max_output = {2560 , 1600 },
341350 .intr = & rk3288_vop_intr ,
351+ .grf_ctrl = & rk3288_vop_lit_grf_ctrl ,
342352 .ctrl = & rk3288_ctrl_data ,
343353 .win = rk3288_vop_win_data ,
344354 .win_size = ARRAY_SIZE (rk3288_vop_win_data ),
@@ -460,12 +470,17 @@ static const struct vop_intr rk3366_vop_intr = {
460470 .clear = VOP_REG_MASK (RK3366_INTR_CLEAR0 , 0xffff , 0 ),
461471};
462472
473+ static const struct vop_grf_ctrl rk3368_vop_grf_ctrl = {
474+ .grf_dclk_inv = VOP_REG (RK3368_GRF_SOC_CON6 , 0x1 , 5 ),
475+ };
476+
463477static const struct vop_data rk3366_vop = {
464478 .version = VOP_VERSION (3 , 4 ),
465479 .feature = VOP_FEATURE_ALPHA_SCALE ,
466480 .max_input = {4096 , 8192 },
467481 .max_output = {4096 , 2160 },
468482 .intr = & rk3366_vop_intr ,
483+ .grf_ctrl = & rk3368_vop_grf_ctrl ,
469484 .ctrl = & rk3288_ctrl_data ,
470485 .win = rk3368_vop_win_data ,
471486 .win_size = ARRAY_SIZE (rk3368_vop_win_data ),
@@ -1550,12 +1565,17 @@ static const struct vop_win_data px30_vop_lit_win_data[] = {
15501565 { .phy = NULL },
15511566};
15521567
1568+ static const struct vop_grf_ctrl px30_grf_ctrl = {
1569+ .grf_dclk_inv = VOP_REG (PX30_GRF_PD_VO_CON1 , 0x1 , 4 ),
1570+ };
1571+
15531572static const struct vop_data px30_vop_lit = {
15541573 .version = VOP_VERSION (2 , 5 ),
15551574 .max_input = {1920 , 8192 },
15561575 .max_output = {1920 , 1080 },
15571576 .ctrl = & px30_ctrl_data ,
15581577 .intr = & rk3366_lit_intr ,
1578+ .grf_ctrl = & px30_grf_ctrl ,
15591579 .win = px30_vop_lit_win_data ,
15601580 .win_size = ARRAY_SIZE (px30_vop_lit_win_data ),
15611581};
@@ -1567,6 +1587,7 @@ static const struct vop_data px30_vop_big = {
15671587 .max_output = {1920 , 1080 },
15681588 .ctrl = & px30_ctrl_data ,
15691589 .intr = & rk3366_lit_intr ,
1590+ .grf_ctrl = & px30_grf_ctrl ,
15701591 .win = px30_vop_big_win_data ,
15711592 .win_size = ARRAY_SIZE (px30_vop_big_win_data ),
15721593};
0 commit comments