Message ID | 20201201131249.438273-2-maxime@cerno.tech (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/vc4: hdmi: Support the 10/12 bit output | expand |
Am 01.12.20 um 14:12 schrieb Maxime Ripard: > Since the CRTC setup in vc4 is split between the PixelValves/TXP and the > HVS, only the PV/TXP atomic hooks were updated in the previous commits, but > it makes sense to update the HVS ones too. > > Signed-off-by: Maxime Ripard <maxime@cerno.tech> Looks correct. Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/vc4/vc4_crtc.c | 4 +--- > drivers/gpu/drm/vc4/vc4_drv.h | 4 ++-- > drivers/gpu/drm/vc4/vc4_hvs.c | 8 +++++--- > drivers/gpu/drm/vc4/vc4_txp.c | 8 ++------ > 4 files changed, 10 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c > index 06088854c647..e02e499885ed 100644 > --- a/drivers/gpu/drm/vc4/vc4_crtc.c > +++ b/drivers/gpu/drm/vc4/vc4_crtc.c > @@ -503,8 +503,6 @@ static void vc4_crtc_atomic_disable(struct drm_crtc *crtc, > static void vc4_crtc_atomic_enable(struct drm_crtc *crtc, > struct drm_atomic_state *state) > { > - struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, > - crtc); > struct drm_device *dev = crtc->dev; > struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); > struct drm_encoder *encoder = vc4_get_crtc_encoder(crtc); > @@ -517,7 +515,7 @@ static void vc4_crtc_atomic_enable(struct drm_crtc *crtc, > */ > drm_crtc_vblank_on(crtc); > > - vc4_hvs_atomic_enable(crtc, old_state); > + vc4_hvs_atomic_enable(crtc, state); > > if (vc4_encoder->pre_crtc_configure) > vc4_encoder->pre_crtc_configure(encoder); > diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h > index c5f2944d5bc6..c47c85533805 100644 > --- a/drivers/gpu/drm/vc4/vc4_drv.h > +++ b/drivers/gpu/drm/vc4/vc4_drv.h > @@ -918,8 +918,8 @@ extern struct platform_driver vc4_hvs_driver; > void vc4_hvs_stop_channel(struct drm_device *dev, unsigned int output); > int vc4_hvs_get_fifo_from_output(struct drm_device *dev, unsigned int output); > int vc4_hvs_atomic_check(struct drm_crtc *crtc, struct drm_crtc_state *state); > -void vc4_hvs_atomic_enable(struct drm_crtc *crtc, struct drm_crtc_state *old_state); > -void vc4_hvs_atomic_disable(struct drm_crtc *crtc, struct drm_crtc_state *old_state); > +void vc4_hvs_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_state *state); > +void vc4_hvs_atomic_disable(struct drm_crtc *crtc, struct drm_atomic_state *state); > void vc4_hvs_atomic_flush(struct drm_crtc *crtc, struct drm_crtc_state *state); > void vc4_hvs_dump_state(struct drm_device *dev); > void vc4_hvs_unmask_underrun(struct drm_device *dev, int channel); > diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c > index b72b2bd05a81..04396dec63fc 100644 > --- a/drivers/gpu/drm/vc4/vc4_hvs.c > +++ b/drivers/gpu/drm/vc4/vc4_hvs.c > @@ -391,11 +391,12 @@ static void vc4_hvs_update_dlist(struct drm_crtc *crtc) > } > > void vc4_hvs_atomic_enable(struct drm_crtc *crtc, > - struct drm_crtc_state *old_state) > + struct drm_atomic_state *state) > { > struct drm_device *dev = crtc->dev; > struct vc4_dev *vc4 = to_vc4_dev(dev); > - struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state); > + struct drm_crtc_state *new_crtc_state = drm_atomic_get_new_crtc_state(state, crtc); > + struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(new_crtc_state); > struct drm_display_mode *mode = &crtc->state->adjusted_mode; > bool oneshot = vc4_state->feed_txp; > > @@ -404,9 +405,10 @@ void vc4_hvs_atomic_enable(struct drm_crtc *crtc, > } > > void vc4_hvs_atomic_disable(struct drm_crtc *crtc, > - struct drm_crtc_state *old_state) > + struct drm_atomic_state *state) > { > struct drm_device *dev = crtc->dev; > + struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, crtc); > struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(old_state); > unsigned int chan = vc4_state->assigned_channel; > > diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c > index 34612edcabbd..4a26750b5e93 100644 > --- a/drivers/gpu/drm/vc4/vc4_txp.c > +++ b/drivers/gpu/drm/vc4/vc4_txp.c > @@ -406,23 +406,19 @@ static int vc4_txp_atomic_check(struct drm_crtc *crtc, > static void vc4_txp_atomic_enable(struct drm_crtc *crtc, > struct drm_atomic_state *state) > { > - struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, > - crtc); > drm_crtc_vblank_on(crtc); > - vc4_hvs_atomic_enable(crtc, old_state); > + vc4_hvs_atomic_enable(crtc, state); > } > > static void vc4_txp_atomic_disable(struct drm_crtc *crtc, > struct drm_atomic_state *state) > { > - struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, > - crtc); > struct drm_device *dev = crtc->dev; > > /* Disable vblank irq handling before crtc is disabled. */ > drm_crtc_vblank_off(crtc); > > - vc4_hvs_atomic_disable(crtc, old_state); > + vc4_hvs_atomic_disable(crtc, state); > > /* > * Make sure we issue a vblank event after disabling the CRTC if >
diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c index 06088854c647..e02e499885ed 100644 --- a/drivers/gpu/drm/vc4/vc4_crtc.c +++ b/drivers/gpu/drm/vc4/vc4_crtc.c @@ -503,8 +503,6 @@ static void vc4_crtc_atomic_disable(struct drm_crtc *crtc, static void vc4_crtc_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_state *state) { - struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, - crtc); struct drm_device *dev = crtc->dev; struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); struct drm_encoder *encoder = vc4_get_crtc_encoder(crtc); @@ -517,7 +515,7 @@ static void vc4_crtc_atomic_enable(struct drm_crtc *crtc, */ drm_crtc_vblank_on(crtc); - vc4_hvs_atomic_enable(crtc, old_state); + vc4_hvs_atomic_enable(crtc, state); if (vc4_encoder->pre_crtc_configure) vc4_encoder->pre_crtc_configure(encoder); diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h index c5f2944d5bc6..c47c85533805 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.h +++ b/drivers/gpu/drm/vc4/vc4_drv.h @@ -918,8 +918,8 @@ extern struct platform_driver vc4_hvs_driver; void vc4_hvs_stop_channel(struct drm_device *dev, unsigned int output); int vc4_hvs_get_fifo_from_output(struct drm_device *dev, unsigned int output); int vc4_hvs_atomic_check(struct drm_crtc *crtc, struct drm_crtc_state *state); -void vc4_hvs_atomic_enable(struct drm_crtc *crtc, struct drm_crtc_state *old_state); -void vc4_hvs_atomic_disable(struct drm_crtc *crtc, struct drm_crtc_state *old_state); +void vc4_hvs_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_state *state); +void vc4_hvs_atomic_disable(struct drm_crtc *crtc, struct drm_atomic_state *state); void vc4_hvs_atomic_flush(struct drm_crtc *crtc, struct drm_crtc_state *state); void vc4_hvs_dump_state(struct drm_device *dev); void vc4_hvs_unmask_underrun(struct drm_device *dev, int channel); diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c index b72b2bd05a81..04396dec63fc 100644 --- a/drivers/gpu/drm/vc4/vc4_hvs.c +++ b/drivers/gpu/drm/vc4/vc4_hvs.c @@ -391,11 +391,12 @@ static void vc4_hvs_update_dlist(struct drm_crtc *crtc) } void vc4_hvs_atomic_enable(struct drm_crtc *crtc, - struct drm_crtc_state *old_state) + struct drm_atomic_state *state) { struct drm_device *dev = crtc->dev; struct vc4_dev *vc4 = to_vc4_dev(dev); - struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state); + struct drm_crtc_state *new_crtc_state = drm_atomic_get_new_crtc_state(state, crtc); + struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(new_crtc_state); struct drm_display_mode *mode = &crtc->state->adjusted_mode; bool oneshot = vc4_state->feed_txp; @@ -404,9 +405,10 @@ void vc4_hvs_atomic_enable(struct drm_crtc *crtc, } void vc4_hvs_atomic_disable(struct drm_crtc *crtc, - struct drm_crtc_state *old_state) + struct drm_atomic_state *state) { struct drm_device *dev = crtc->dev; + struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, crtc); struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(old_state); unsigned int chan = vc4_state->assigned_channel; diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c index 34612edcabbd..4a26750b5e93 100644 --- a/drivers/gpu/drm/vc4/vc4_txp.c +++ b/drivers/gpu/drm/vc4/vc4_txp.c @@ -406,23 +406,19 @@ static int vc4_txp_atomic_check(struct drm_crtc *crtc, static void vc4_txp_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_state *state) { - struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, - crtc); drm_crtc_vblank_on(crtc); - vc4_hvs_atomic_enable(crtc, old_state); + vc4_hvs_atomic_enable(crtc, state); } static void vc4_txp_atomic_disable(struct drm_crtc *crtc, struct drm_atomic_state *state) { - struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, - crtc); struct drm_device *dev = crtc->dev; /* Disable vblank irq handling before crtc is disabled. */ drm_crtc_vblank_off(crtc); - vc4_hvs_atomic_disable(crtc, old_state); + vc4_hvs_atomic_disable(crtc, state); /* * Make sure we issue a vblank event after disabling the CRTC if
Since the CRTC setup in vc4 is split between the PixelValves/TXP and the HVS, only the PV/TXP atomic hooks were updated in the previous commits, but it makes sense to update the HVS ones too. Signed-off-by: Maxime Ripard <maxime@cerno.tech> --- drivers/gpu/drm/vc4/vc4_crtc.c | 4 +--- drivers/gpu/drm/vc4/vc4_drv.h | 4 ++-- drivers/gpu/drm/vc4/vc4_hvs.c | 8 +++++--- drivers/gpu/drm/vc4/vc4_txp.c | 8 ++------ 4 files changed, 10 insertions(+), 14 deletions(-)