Skip to content

Commit 7c1c157

Browse files
committed
Revert "drm/rockchip: enable all the possible outputs"
This reverts commit d971259. Change-Id: Ibb2d6269ed574b81d3c895cb27e66a320659ab60 Signed-off-by: Wyon Bi <[email protected]>
1 parent 1b3570e commit 7c1c157

11 files changed

+70
-90
lines changed

drivers/gpu/drm/rockchip/analogix_dp-rockchip.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encoder *encoder,
203203
* to RGA10 here.
204204
*/
205205
s->output_mode = ROCKCHIP_OUT_MODE_AAAA;
206-
s->output_type |= BIT(DRM_MODE_CONNECTOR_eDP);
206+
s->output_type = DRM_MODE_CONNECTOR_eDP;
207207
if (info->num_bus_formats)
208208
s->bus_format = info->bus_formats[0];
209209
else

drivers/gpu/drm/rockchip/cdn-dp-core.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ static int cdn_dp_connector_mode_valid(struct drm_connector *connector,
505505
continue;
506506

507507
status = funcs->mode_valid(crtc, mode,
508-
DRM_MODE_CONNECTOR_DisplayPort);
508+
DRM_MODE_CONNECTOR_HDMIA);
509509
if (status != MODE_OK)
510510
return status;
511511
}
@@ -968,7 +968,7 @@ static int cdn_dp_encoder_atomic_check(struct drm_encoder *encoder,
968968
}
969969

970970
s->output_mode = ROCKCHIP_OUT_MODE_AAAA;
971-
s->output_type |= BIT(DRM_MODE_CONNECTOR_DisplayPort);
971+
s->output_type = DRM_MODE_CONNECTOR_DisplayPort;
972972
s->tv_state = &conn_state->tv;
973973
s->eotf = TRADITIONAL_GAMMA_SDR;
974974
s->color_space = V4L2_COLORSPACE_DEFAULT;

drivers/gpu/drm/rockchip/dw-mipi-dsi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1316,7 +1316,7 @@ dw_mipi_dsi_encoder_atomic_check(struct drm_encoder *encoder,
13161316
return -EINVAL;
13171317
}
13181318

1319-
s->output_type |= BIT(DRM_MODE_CONNECTOR_DSI);
1319+
s->output_type = DRM_MODE_CONNECTOR_DSI;
13201320
if (info->num_bus_formats)
13211321
s->bus_format = info->bus_formats[0];
13221322
else

drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -820,7 +820,7 @@ dw_hdmi_rockchip_encoder_atomic_check(struct drm_encoder *encoder,
820820
if (hdmi->phy)
821821
phy_set_bus_width(hdmi->phy, bus_width);
822822

823-
s->output_type |= BIT(DRM_MODE_CONNECTOR_HDMIA);
823+
s->output_type = DRM_MODE_CONNECTOR_HDMIA;
824824
s->tv_state = &conn_state->tv;
825825

826826
hdmi->bus_format = s->bus_format;

drivers/gpu/drm/rockchip/inno_hdmi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,7 @@ inno_hdmi_encoder_atomic_check(struct drm_encoder *encoder,
591591
struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state);
592592

593593
s->output_mode = ROCKCHIP_OUT_MODE_P888;
594-
s->output_type |= BIT(DRM_MODE_CONNECTOR_HDMIA);
594+
s->output_type = DRM_MODE_CONNECTOR_HDMIA;
595595
s->bus_format = MEDIA_BUS_FMT_RGB888_1X24;
596596

597597
return 0;

drivers/gpu/drm/rockchip/rk3066_hdmi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ rk3066_hdmi_encoder_atomic_check(struct drm_encoder *encoder,
464464
struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state);
465465

466466
s->output_mode = ROCKCHIP_OUT_MODE_P888;
467-
s->output_type |= BIT(DRM_MODE_CONNECTOR_HDMIA);
467+
s->output_type = DRM_MODE_CONNECTOR_HDMIA;
468468
s->bus_format = MEDIA_BUS_FMT_RGB888_1X24;
469469

470470
return 0;

drivers/gpu/drm/rockchip/rockchip-mipi-csi-tx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -930,7 +930,7 @@ rockchip_mipi_csi_encoder_atomic_check(struct drm_encoder *encoder,
930930
break;
931931
}
932932

933-
s->output_type |= BIT(DRM_MODE_CONNECTOR_DSI);
933+
s->output_type = DRM_MODE_CONNECTOR_DSI;
934934
if (info->num_bus_formats)
935935
s->bus_format = info->bus_formats[0];
936936
else

drivers/gpu/drm/rockchip/rockchip_drm_tve.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ rockchip_tve_encoder_atomic_check(struct drm_encoder *encoder,
281281
struct drm_display_info *info = &connector->display_info;
282282

283283
s->output_mode = ROCKCHIP_OUT_MODE_P888;
284-
s->output_type |= BIT(DRM_MODE_CONNECTOR_TV);
284+
s->output_type = DRM_MODE_CONNECTOR_TV;
285285
if (info->num_bus_formats)
286286
s->bus_format = info->bus_formats[0];
287287
else

drivers/gpu/drm/rockchip/rockchip_drm_vop.c

Lines changed: 59 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -2179,14 +2179,12 @@ static int vop_plane_info_dump(struct seq_file *s, struct drm_plane *plane)
21792179

21802180
static int vop_crtc_debugfs_dump(struct drm_crtc *crtc, struct seq_file *s)
21812181
{
2182-
struct drm_device *dev = crtc->dev;
21832182
struct vop *vop = to_vop(crtc);
21842183
struct drm_crtc_state *crtc_state = crtc->state;
21852184
struct drm_display_mode *mode = &crtc->state->adjusted_mode;
21862185
struct rockchip_crtc_state *state = to_rockchip_crtc_state(crtc->state);
21872186
bool interlaced = !!(mode->flags & DRM_MODE_FLAG_INTERLACE);
21882187
struct drm_plane *plane;
2189-
struct drm_connector *connector;
21902188
int i;
21912189

21922190
DEBUG_PRINT("VOP [%s]: %s\n", dev_name(vop->dev),
@@ -2195,13 +2193,8 @@ static int vop_crtc_debugfs_dump(struct drm_crtc *crtc, struct seq_file *s)
21952193
if (!crtc_state->active)
21962194
return 0;
21972195

2198-
DEBUG_PRINT(" Connector:");
2199-
mutex_lock(&dev->mode_config.mutex);
2200-
drm_for_each_connector(connector, dev)
2201-
if (connector->state->crtc == crtc)
2202-
DEBUG_PRINT(" %s", drm_get_connector_name(connector->connector_type));
2203-
mutex_unlock(&dev->mode_config.mutex);
2204-
DEBUG_PRINT("\n");
2196+
DEBUG_PRINT(" Connector: %s\n",
2197+
drm_get_connector_name(state->output_type));
22052198
DEBUG_PRINT("\toverlay_mode[%d] bus_format[%x] output_mode[%x]",
22062199
state->yuv_overlay, state->bus_format, state->output_mode);
22072200
DEBUG_PRINT(" color_space[%d]\n",
@@ -2341,8 +2334,8 @@ vop_crtc_mode_valid(struct drm_crtc *crtc, const struct drm_display_mode *mode,
23412334
/*
23422335
* Hdmi or DisplayPort request a Accurate clock.
23432336
*/
2344-
if (output_type & BIT(DRM_MODE_CONNECTOR_HDMIA) ||
2345-
output_type & BIT(DRM_MODE_CONNECTOR_DisplayPort))
2337+
if (output_type == DRM_MODE_CONNECTOR_HDMIA ||
2338+
output_type == DRM_MODE_CONNECTOR_DisplayPort)
23462339
if (clock != request_clock)
23472340
return MODE_CLOCK_RANGE;
23482341

@@ -2727,11 +2720,10 @@ static void vop_crtc_enable(struct drm_crtc *crtc)
27272720
bool interlaced = !!(adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE);
27282721
int for_ddr_freq = 0;
27292722
bool dclk_inv;
2730-
unsigned long possible_output;
27312723

27322724
rockchip_set_system_status(sys_status);
27332725
vop_lock(vop);
2734-
DRM_DEV_INFO(vop->dev, "Update mode to %dx%d%s%d, type: 0x%x\n",
2726+
DRM_DEV_INFO(vop->dev, "Update mode to %dx%d%s%d, type: %d\n",
27352727
hdisplay, vdisplay, interlaced ? "i" : "p",
27362728
adjusted_mode->vrefresh, s->output_type);
27372729
vop_initial(crtc);
@@ -2761,70 +2753,61 @@ static void vop_crtc_enable(struct drm_crtc *crtc)
27612753
"failed to set dclk's parents\n");
27622754
}
27632755

2764-
possible_output = s->output_type;
2765-
while (possible_output) {
2766-
int i;
2767-
2768-
i = __ffs(possible_output);
2769-
possible_output &= ~BIT(i);
2756+
switch (s->output_type) {
2757+
case DRM_MODE_CONNECTOR_DPI:
2758+
VOP_CTRL_SET(vop, rgb_en, 1);
2759+
VOP_CTRL_SET(vop, rgb_pin_pol, val);
2760+
VOP_CTRL_SET(vop, rgb_dclk_pol, dclk_inv);
27702761

2771-
switch (i) {
2772-
case DRM_MODE_CONNECTOR_DPI:
2773-
VOP_CTRL_SET(vop, rgb_en, 1);
2774-
VOP_CTRL_SET(vop, rgb_pin_pol, val);
2775-
VOP_CTRL_SET(vop, rgb_dclk_pol, dclk_inv);
2776-
2777-
VOP_GRF_SET(vop, grf_dclk_inv, !dclk_inv);
2778-
break;
2779-
case DRM_MODE_CONNECTOR_LVDS:
2780-
VOP_CTRL_SET(vop, lvds_en, 1);
2781-
VOP_CTRL_SET(vop, lvds_pin_pol, val);
2782-
VOP_CTRL_SET(vop, lvds_dclk_pol, dclk_inv);
2762+
VOP_GRF_SET(vop, grf_dclk_inv, !dclk_inv);
2763+
break;
2764+
case DRM_MODE_CONNECTOR_LVDS:
2765+
VOP_CTRL_SET(vop, lvds_en, 1);
2766+
VOP_CTRL_SET(vop, lvds_pin_pol, val);
2767+
VOP_CTRL_SET(vop, lvds_dclk_pol, dclk_inv);
27832768

2784-
VOP_GRF_SET(vop, grf_dclk_inv, !dclk_inv);
2785-
break;
2786-
case DRM_MODE_CONNECTOR_eDP:
2787-
VOP_CTRL_SET(vop, edp_en, 1);
2788-
VOP_CTRL_SET(vop, edp_pin_pol, val);
2789-
VOP_CTRL_SET(vop, edp_dclk_pol, dclk_inv);
2790-
break;
2791-
case DRM_MODE_CONNECTOR_HDMIA:
2792-
VOP_CTRL_SET(vop, hdmi_en, 1);
2793-
VOP_CTRL_SET(vop, hdmi_pin_pol, val);
2794-
VOP_CTRL_SET(vop, hdmi_dclk_pol, 1);
2795-
break;
2796-
case DRM_MODE_CONNECTOR_DSI:
2797-
VOP_CTRL_SET(vop, mipi_en, 1);
2798-
VOP_CTRL_SET(vop, mipi_pin_pol, val);
2799-
VOP_CTRL_SET(vop, mipi_dclk_pol, dclk_inv);
2800-
VOP_CTRL_SET(vop, mipi_dual_channel_en,
2801-
!!(s->output_flags & ROCKCHIP_OUTPUT_DSI_DUAL_CHANNEL));
2802-
VOP_CTRL_SET(vop, data01_swap,
2803-
!!(s->output_flags & ROCKCHIP_OUTPUT_DSI_DUAL_LINK));
2804-
break;
2805-
case DRM_MODE_CONNECTOR_DisplayPort:
2806-
VOP_CTRL_SET(vop, dp_dclk_pol, 0);
2807-
VOP_CTRL_SET(vop, dp_pin_pol, val);
2808-
VOP_CTRL_SET(vop, dp_en, 1);
2809-
break;
2810-
case DRM_MODE_CONNECTOR_TV:
2811-
if (vdisplay == CVBS_PAL_VDISPLAY)
2812-
VOP_CTRL_SET(vop, tve_sw_mode, 1);
2813-
else
2814-
VOP_CTRL_SET(vop, tve_sw_mode, 0);
2815-
2816-
VOP_CTRL_SET(vop, tve_dclk_pol, 1);
2817-
VOP_CTRL_SET(vop, tve_dclk_en, 1);
2818-
/* use the same pol reg with hdmi */
2819-
VOP_CTRL_SET(vop, hdmi_pin_pol, val);
2820-
VOP_CTRL_SET(vop, sw_genlock, 1);
2821-
VOP_CTRL_SET(vop, sw_uv_offset_en, 1);
2822-
VOP_CTRL_SET(vop, dither_up_en, 1);
2823-
break;
2824-
default:
2825-
DRM_ERROR("unsupported connector_type[%d]\n", i);
2826-
break;
2827-
}
2769+
VOP_GRF_SET(vop, grf_dclk_inv, !dclk_inv);
2770+
break;
2771+
case DRM_MODE_CONNECTOR_eDP:
2772+
VOP_CTRL_SET(vop, edp_en, 1);
2773+
VOP_CTRL_SET(vop, edp_pin_pol, val);
2774+
VOP_CTRL_SET(vop, edp_dclk_pol, dclk_inv);
2775+
break;
2776+
case DRM_MODE_CONNECTOR_HDMIA:
2777+
VOP_CTRL_SET(vop, hdmi_en, 1);
2778+
VOP_CTRL_SET(vop, hdmi_pin_pol, val);
2779+
VOP_CTRL_SET(vop, hdmi_dclk_pol, 1);
2780+
break;
2781+
case DRM_MODE_CONNECTOR_DSI:
2782+
VOP_CTRL_SET(vop, mipi_en, 1);
2783+
VOP_CTRL_SET(vop, mipi_pin_pol, val);
2784+
VOP_CTRL_SET(vop, mipi_dclk_pol, dclk_inv);
2785+
VOP_CTRL_SET(vop, mipi_dual_channel_en,
2786+
!!(s->output_flags & ROCKCHIP_OUTPUT_DSI_DUAL_CHANNEL));
2787+
VOP_CTRL_SET(vop, data01_swap,
2788+
!!(s->output_flags & ROCKCHIP_OUTPUT_DSI_DUAL_LINK));
2789+
break;
2790+
case DRM_MODE_CONNECTOR_DisplayPort:
2791+
VOP_CTRL_SET(vop, dp_dclk_pol, 0);
2792+
VOP_CTRL_SET(vop, dp_pin_pol, val);
2793+
VOP_CTRL_SET(vop, dp_en, 1);
2794+
break;
2795+
case DRM_MODE_CONNECTOR_TV:
2796+
if (vdisplay == CVBS_PAL_VDISPLAY)
2797+
VOP_CTRL_SET(vop, tve_sw_mode, 1);
2798+
else
2799+
VOP_CTRL_SET(vop, tve_sw_mode, 0);
2800+
2801+
VOP_CTRL_SET(vop, tve_dclk_pol, 1);
2802+
VOP_CTRL_SET(vop, tve_dclk_en, 1);
2803+
/* use the same pol reg with hdmi */
2804+
VOP_CTRL_SET(vop, hdmi_pin_pol, val);
2805+
VOP_CTRL_SET(vop, sw_genlock, 1);
2806+
VOP_CTRL_SET(vop, sw_uv_offset_en, 1);
2807+
VOP_CTRL_SET(vop, dither_up_en, 1);
2808+
break;
2809+
default:
2810+
DRM_ERROR("unsupport connector_type[%d]\n", s->output_type);
28282811
}
28292812

28302813
vop_update_csc(crtc);
@@ -3049,7 +3032,7 @@ static void vop_dclk_source_generate(struct drm_crtc *crtc,
30493032
if (vop->pll)
30503033
vop->pll->use_count--;
30513034

3052-
if (!(s->output_type & BIT(DRM_MODE_CONNECTOR_HDMIA)) &&
3035+
if (s->output_type != DRM_MODE_CONNECTOR_HDMIA &&
30533036
!private->default_pll.use_count)
30543037
vop->pll = &private->default_pll;
30553038
else
@@ -3701,9 +3684,6 @@ static struct drm_crtc_state *vop_crtc_duplicate_state(struct drm_crtc *crtc)
37013684
return NULL;
37023685

37033686
__drm_atomic_helper_crtc_duplicate_state(crtc, &rockchip_state->base);
3704-
3705-
rockchip_state->output_type = 0;
3706-
37073687
return &rockchip_state->base;
37083688
}
37093689

drivers/gpu/drm/rockchip/rockchip_lvds.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ rockchip_lvds_encoder_atomic_check(struct drm_encoder *encoder,
204204
s->bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG;
205205

206206
s->output_mode = ROCKCHIP_OUT_MODE_P888;
207-
s->output_type |= BIT(DRM_MODE_CONNECTOR_LVDS);
207+
s->output_type = DRM_MODE_CONNECTOR_LVDS;
208208
s->tv_state = &conn_state->tv;
209209
s->eotf = TRADITIONAL_GAMMA_SDR;
210210
s->color_space = V4L2_COLORSPACE_DEFAULT;

0 commit comments

Comments
 (0)