Re: [PATCH v2 11/17] drm/vc4: Move HVS state to main header
From: Maíra Canal
Date: Mon Nov 28 2022 - 15:17:27 EST
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);
>