drm/rockchip: add dual channel swap config

some pcb layout dual mipi/lvds channel maybe mistake. we can set
rockchip,dual-channel-swap = <1> to swap the dual channel at dts
file.

Signed-off-by: Sandy Huang <hjc@rock-chips.com>
Change-Id: I7398b83bff0fd0dedd77834ee2a8ff14f2ae11ea
This commit is contained in:
Sandy Huang 2019-12-19 19:50:46 +08:00 committed by Jianhong Chen
parent b6b05c7154
commit 289af5f4ba
3 changed files with 6 additions and 1 deletions

View File

@ -1386,6 +1386,9 @@ static int rockchip_display_probe(struct udevice *dev)
get_crtc_mcu_mode(&s->crtc_state); get_crtc_mcu_mode(&s->crtc_state);
ret = ofnode_read_u32_default(s->crtc_state.node,
"rockchip,dual-channel-swap", 0);
s->crtc_state.dual_channel_swap = ret;
if (connector_panel_init(s)) { if (connector_panel_init(s)) {
printf("Warn: Failed to init panel drivers\n"); printf("Warn: Failed to init panel drivers\n");
free(s); free(s);

View File

@ -84,6 +84,7 @@ struct crtc_state {
int crtc_h; int crtc_h;
bool yuv_overlay; bool yuv_overlay;
struct rockchip_mcu_timing mcu_timing; struct rockchip_mcu_timing mcu_timing;
u32 dual_channel_swap;
}; };
struct panel_state { struct panel_state {

View File

@ -305,7 +305,8 @@ static int rockchip_vop_init(struct display_state *state)
VOP_CTRL_SET(vop, mipi_dual_channel_en, VOP_CTRL_SET(vop, mipi_dual_channel_en,
!!(conn_state->output_type & ROCKCHIP_OUTPUT_DSI_DUAL_CHANNEL)); !!(conn_state->output_type & ROCKCHIP_OUTPUT_DSI_DUAL_CHANNEL));
VOP_CTRL_SET(vop, data01_swap, VOP_CTRL_SET(vop, data01_swap,
!!(conn_state->output_type & ROCKCHIP_OUTPUT_DSI_DUAL_LINK)); !!(conn_state->output_type & ROCKCHIP_OUTPUT_DSI_DUAL_LINK) ||
crtc_state->dual_channel_swap);
break; break;
case DRM_MODE_CONNECTOR_DisplayPort: case DRM_MODE_CONNECTOR_DisplayPort:
VOP_CTRL_SET(vop, dp_dclk_pol, 0); VOP_CTRL_SET(vop, dp_dclk_pol, 0);