On 11/28/22 11:53, Maxime Ripard wrote: > In order to introduce unit tests for the HVS state computation, we'll > need access to the vc4_hvs_state struct definition and its associated > helpers. > > Let's move them in our driver header. > > Reviewed-by: Javier Martinez Canillas <javierm@xxxxxxxxxx> > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx> Reviewed-by: Maíra Canal <mcanal@xxxxxxxxxx> Best Regards, - Maíra Canal > --- > drivers/gpu/drm/vc4/vc4_drv.h | 23 +++++++++++++++++++++++ > drivers/gpu/drm/vc4/vc4_kms.c | 25 +++---------------------- > 2 files changed, 26 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h > index 6af615c2eb65..051c2e3b6d43 100644 > --- a/drivers/gpu/drm/vc4/vc4_drv.h > +++ b/drivers/gpu/drm/vc4/vc4_drv.h > @@ -355,6 +355,29 @@ struct vc4_hvs { > bool vc5_hdmi_enable_4096by2160; > }; > > +#define HVS_NUM_CHANNELS 3 > + > +struct vc4_hvs_state { > + struct drm_private_state base; > + unsigned long core_clock_rate; > + > + struct { > + unsigned in_use: 1; > + unsigned long fifo_load; > + struct drm_crtc_commit *pending_commit; > + } fifo_state[HVS_NUM_CHANNELS]; > +}; > + > +static inline struct vc4_hvs_state * > +to_vc4_hvs_state(const struct drm_private_state *priv) > +{ > + return container_of(priv, struct vc4_hvs_state, base); > +} > + > +struct vc4_hvs_state *vc4_hvs_get_global_state(struct drm_atomic_state *state); > +struct vc4_hvs_state *vc4_hvs_get_old_global_state(const struct drm_atomic_state *state); > +struct vc4_hvs_state *vc4_hvs_get_new_global_state(const struct drm_atomic_state *state); > + > struct vc4_plane { > struct drm_plane base; > }; > diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c > index 7282545c54a1..53d9f30460cf 100644 > --- a/drivers/gpu/drm/vc4/vc4_kms.c > +++ b/drivers/gpu/drm/vc4/vc4_kms.c > @@ -25,8 +25,6 @@ > #include "vc4_drv.h" > #include "vc4_regs.h" > > -#define HVS_NUM_CHANNELS 3 > - > struct vc4_ctm_state { > struct drm_private_state base; > struct drm_color_ctm *ctm; > @@ -39,23 +37,6 @@ to_vc4_ctm_state(const struct drm_private_state *priv) > return container_of(priv, struct vc4_ctm_state, base); > } > > -struct vc4_hvs_state { > - struct drm_private_state base; > - unsigned long core_clock_rate; > - > - struct { > - unsigned in_use: 1; > - unsigned long fifo_load; > - struct drm_crtc_commit *pending_commit; > - } fifo_state[HVS_NUM_CHANNELS]; > -}; > - > -static struct vc4_hvs_state * > -to_vc4_hvs_state(const struct drm_private_state *priv) > -{ > - return container_of(priv, struct vc4_hvs_state, base); > -} > - > struct vc4_load_tracker_state { > struct drm_private_state base; > u64 hvs_load; > @@ -191,7 +172,7 @@ vc4_ctm_commit(struct vc4_dev *vc4, struct drm_atomic_state *state) > VC4_SET_FIELD(ctm_state->fifo, SCALER_OLEDOFFS_DISPFIFO)); > } > > -static struct vc4_hvs_state * > +struct vc4_hvs_state * > vc4_hvs_get_new_global_state(const struct drm_atomic_state *state) > { > struct vc4_dev *vc4 = to_vc4_dev(state->dev); > @@ -204,7 +185,7 @@ vc4_hvs_get_new_global_state(const struct drm_atomic_state *state) > return to_vc4_hvs_state(priv_state); > } > > -static struct vc4_hvs_state * > +struct vc4_hvs_state * > vc4_hvs_get_old_global_state(const struct drm_atomic_state *state) > { > struct vc4_dev *vc4 = to_vc4_dev(state->dev); > @@ -217,7 +198,7 @@ vc4_hvs_get_old_global_state(const struct drm_atomic_state *state) > return to_vc4_hvs_state(priv_state); > } > > -static struct vc4_hvs_state * > +struct vc4_hvs_state * > vc4_hvs_get_global_state(struct drm_atomic_state *state) > { > struct vc4_dev *vc4 = to_vc4_dev(state->dev); >