diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c index 5d8f071ceb6951..681176cd35c126 100644 --- a/drivers/gpu/drm/vc4/vc4_crtc.c +++ b/drivers/gpu/drm/vc4/vc4_crtc.c @@ -448,6 +448,7 @@ static void vc4_crtc_config_pv(struct drm_crtc *crtc, struct drm_encoder *encode */ CRTC_WRITE(PV_V_CONTROL, PV_VCONTROL_CONTINUOUS | + (vc4->gen >= VC4_GEN_6 ? PV_VCONTROL_ODD_TIMING : 0) | (is_dsi ? PV_VCONTROL_DSI : 0) | PV_VCONTROL_INTERLACE | (odd_field_first @@ -459,6 +460,7 @@ static void vc4_crtc_config_pv(struct drm_crtc *crtc, struct drm_encoder *encode } else { CRTC_WRITE(PV_V_CONTROL, PV_VCONTROL_CONTINUOUS | + (vc4->gen >= VC4_GEN_6 ? PV_VCONTROL_ODD_TIMING : 0) | (is_dsi ? PV_VCONTROL_DSI : 0)); CRTC_WRITE(PV_VSYNCD_EVEN, 0); } @@ -1332,7 +1334,7 @@ const struct vc4_pv_data bcm2712_pv0_data = { .hvs_output = 0, }, .fifo_depth = 64, - .pixels_per_clock = 2, + .pixels_per_clock = 1, .encoder_types = { [0] = VC4_ENCODER_TYPE_HDMI0, }, @@ -1345,7 +1347,7 @@ const struct vc4_pv_data bcm2712_pv1_data = { .hvs_output = 1, }, .fifo_depth = 64, - .pixels_per_clock = 2, + .pixels_per_clock = 1, .encoder_types = { [0] = VC4_ENCODER_TYPE_HDMI1, }, diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 585794b2496630..780eb5d9980b27 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -3958,7 +3958,7 @@ static const struct vc4_hdmi_variant bcm2712_hdmi0_variant = { PHY_LANE_2, PHY_LANE_CK, }, - .unsupported_odd_h_timings = true, + .unsupported_odd_h_timings = false, .external_irq_controller = true, .init_resources = vc5_hdmi_init_resources, @@ -3985,7 +3985,7 @@ static const struct vc4_hdmi_variant bcm2712_hdmi1_variant = { PHY_LANE_2, PHY_LANE_CK, }, - .unsupported_odd_h_timings = true, + .unsupported_odd_h_timings = false, .external_irq_controller = true, .init_resources = vc5_hdmi_init_resources, diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h index f73d5795a27b1c..fc8c54d99ec3f3 100644 --- a/drivers/gpu/drm/vc4/vc4_regs.h +++ b/drivers/gpu/drm/vc4/vc4_regs.h @@ -155,6 +155,7 @@ # define PV_CONTROL_EN BIT(0) #define PV_V_CONTROL 0x04 +# define PV_VCONTROL_ODD_TIMING BIT(29) # define PV_VCONTROL_ODD_DELAY_MASK VC4_MASK(22, 6) # define PV_VCONTROL_ODD_DELAY_SHIFT 6 # define PV_VCONTROL_ODD_FIRST BIT(5)