drm/rockchip: vop: add display input/output limit
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / rockchip / rockchip_vop_reg.c
index e64fbed9b49433b01209e4bf784e4648c8262926..11e950891114d5073ec16b957b614931e8417f41 100644 (file)
@@ -266,6 +266,14 @@ static const struct vop_intr rk3288_vop_intr = {
 static const struct vop_data rk3288_vop = {
        .version = VOP_VERSION(3, 1),
        .feature = VOP_FEATURE_OUTPUT_10BIT,
+       .max_input_fb = { 4096, 8192},
+       .max_output_fb = { 3840, 2160},
+       /*
+        * TODO: rk3288 have two vop, big one support 3840x2160,
+        * little one only support 2560x1600.
+        * Now force use 3840x2160.
+        */
+       .max_disably_output = { 3840, 2160},
        .intr = &rk3288_vop_intr,
        .ctrl = &rk3288_ctrl_data,
        .win = rk3288_vop_win_data,
@@ -369,6 +377,9 @@ static const struct vop_win_data rk3368_vop_win_data[] = {
 static const struct vop_data rk3368_vop = {
        .version = VOP_VERSION(3, 2),
        .feature = VOP_FEATURE_OUTPUT_10BIT,
+       .max_input_fb = { 4096, 8192},
+       .max_output_fb = { 4096, 2160},
+       .max_disably_output = { 4096, 2160},
        .intr = &rk3368_vop_intr,
        .ctrl = &rk3288_ctrl_data,
        .win = rk3368_vop_win_data,
@@ -388,6 +399,9 @@ static const struct vop_intr rk3366_vop_intr = {
 static const struct vop_data rk3366_vop = {
        .version = VOP_VERSION(3, 4),
        .feature = VOP_FEATURE_OUTPUT_10BIT,
+       .max_input_fb = { 4096, 8192},
+       .max_output_fb = { 4096, 2160},
+       .max_disably_output = { 4096, 2160},
        .intr = &rk3366_vop_intr,
        .ctrl = &rk3288_ctrl_data,
        .win = rk3368_vop_win_data,
@@ -497,6 +511,9 @@ static const struct vop_data rk3399_vop_big = {
        .version = VOP_VERSION(3, 5),
        .csc_table = &rk3399_csc_table,
        .feature = VOP_FEATURE_OUTPUT_10BIT | VOP_FEATURE_AFBDC,
+       .max_input_fb = { 4096, 8192},
+       .max_output_fb = { 4096, 2160},
+       .max_disably_output = { 4096, 2160},
        .intr = &rk3366_vop_intr,
        .ctrl = &rk3288_ctrl_data,
        .win = rk3399_vop_win_data,
@@ -518,6 +535,9 @@ static const struct vop_win_data rk3399_vop_lit_win_data[] = {
 static const struct vop_data rk3399_vop_lit = {
        .version = VOP_VERSION(3, 6),
        .csc_table = &rk3399_csc_table,
+       .max_input_fb = { 4096, 8192},
+       .max_output_fb = { 2560, 1600},
+       .max_disably_output = { 2560, 1600},
        .intr = &rk3366_vop_intr,
        .ctrl = &rk3288_ctrl_data,
        .win = rk3399_vop_lit_win_data,
@@ -527,6 +547,9 @@ static const struct vop_data rk3399_vop_lit = {
 static const struct vop_data rk322x_vop = {
        .version = VOP_VERSION(3, 7),
        .feature = VOP_FEATURE_OUTPUT_10BIT,
+       .max_input_fb = { 4096, 8192},
+       .max_output_fb = { 4096, 2160},
+       .max_disably_output = { 4096, 2160},
        .intr = &rk3366_vop_intr,
        .ctrl = &rk3288_ctrl_data,
        .win = rk3368_vop_win_data,
@@ -611,6 +634,9 @@ static const struct vop_ctrl rk3036_ctrl_data = {
 
 static const struct vop_data rk3036_vop = {
        .version = VOP_VERSION(2, 2),
+       .max_input_fb = { 1920, 1080},
+       .max_output_fb = { 1920, 1080},
+       .max_disably_output = { 1920, 1080},
        .ctrl = &rk3036_ctrl_data,
        .intr = &rk3036_intr,
        .win = rk3036_vop_win_data,