Skip to content

Commit 14c6947

Browse files
vsyrjalalutzbichler
authored andcommitted
drm/i915/vrr: Plumb the DSB into intel_vrr_send_push()
Plumb the DSB down into intel_vrr_send_push() so that we can perform the opration on the DSB. TRANS_PUSH, being a transcoder register, needs non-posted writes to make it through. Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Ankit Nautiyal <[email protected]>
1 parent 71d1dea commit 14c6947

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

drivers/gpu/drm/i915/display/intel_crtc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -714,7 +714,7 @@ void intel_pipe_update_end(struct intel_atomic_state *state,
714714
* which would cause the next frame to terminate already at vmin
715715
* vblank start instead of vmax vblank start.
716716
*/
717-
intel_vrr_send_push(new_crtc_state);
717+
intel_vrr_send_push(NULL, new_crtc_state);
718718

719719
local_irq_enable();
720720

drivers/gpu/drm/i915/display/intel_vrr.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -390,16 +390,24 @@ void intel_vrr_set_transcoder_timings(const struct intel_crtc_state *crtc_state)
390390
crtc_state->vrr.flipline - 1);
391391
}
392392

393-
void intel_vrr_send_push(const struct intel_crtc_state *crtc_state)
393+
void intel_vrr_send_push(struct intel_dsb *dsb,
394+
const struct intel_crtc_state *crtc_state)
394395
{
395396
struct intel_display *display = to_intel_display(crtc_state);
396397
enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
397398

398399
if (!crtc_state->vrr.enable)
399400
return;
400401

401-
intel_de_write(display, TRANS_PUSH(display, cpu_transcoder),
402-
TRANS_PUSH_EN | TRANS_PUSH_SEND);
402+
if (dsb)
403+
intel_dsb_nonpost_start(dsb);
404+
405+
intel_de_write_dsb(display, dsb,
406+
TRANS_PUSH(display, cpu_transcoder),
407+
TRANS_PUSH_EN | TRANS_PUSH_SEND);
408+
409+
if (dsb)
410+
intel_dsb_nonpost_end(dsb);
403411
}
404412

405413
bool intel_vrr_is_push_sent(const struct intel_crtc_state *crtc_state)

drivers/gpu/drm/i915/display/intel_vrr.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ struct drm_connector_state;
1212
struct intel_atomic_state;
1313
struct intel_connector;
1414
struct intel_crtc_state;
15+
struct intel_dsb;
1516

1617
bool intel_vrr_is_capable(struct intel_connector *connector);
1718
bool intel_vrr_is_in_range(struct intel_connector *connector, int vrefresh);
@@ -22,7 +23,8 @@ void intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
2223
void intel_vrr_compute_config_late(struct intel_crtc_state *crtc_state);
2324
void intel_vrr_set_transcoder_timings(const struct intel_crtc_state *crtc_state);
2425
void intel_vrr_enable(const struct intel_crtc_state *crtc_state);
25-
void intel_vrr_send_push(const struct intel_crtc_state *crtc_state);
26+
void intel_vrr_send_push(struct intel_dsb *dsb,
27+
const struct intel_crtc_state *crtc_state);
2628
bool intel_vrr_is_push_sent(const struct intel_crtc_state *crtc_state);
2729
void intel_vrr_disable(const struct intel_crtc_state *old_crtc_state);
2830
void intel_vrr_get_config(struct intel_crtc_state *crtc_state);

0 commit comments

Comments
 (0)