On Thu, Mar 24, 2022 at 03:47:24PM +0100, Maxime Ripard wrote: > The HVS state configuration is useful when debugging what's going on in > the vc4 hardware pipeline. Add an implementation of .atomic_print_state. > > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx> On the two vc4 patches: Acked-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/vc4/vc4_kms.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c > index 26b771c919b1..bffd81d4bfcf 100644 > --- a/drivers/gpu/drm/vc4/vc4_kms.c > +++ b/drivers/gpu/drm/vc4/vc4_kms.c > @@ -701,9 +701,26 @@ static void vc4_hvs_channels_destroy_state(struct drm_private_obj *obj, > kfree(hvs_state); > } > > +static void vc4_hvs_channels_print_state(struct drm_printer *p, > + const struct drm_private_state *state) > +{ > + struct vc4_hvs_state *hvs_state = to_vc4_hvs_state(state); > + unsigned int i; > + > + drm_printf(p, "HVS State\n"); > + drm_printf(p, "\tCore Clock Rate: %lu\n", hvs_state->core_clock_rate); > + > + for (i = 0; i < HVS_NUM_CHANNELS; i++) { > + drm_printf(p, "\tChannel %d\n", i); > + drm_printf(p, "\t\tin use=%d\n", hvs_state->fifo_state[i].in_use); > + drm_printf(p, "\t\tload=%lu\n", hvs_state->fifo_state[i].fifo_load); > + } > +} > + > static const struct drm_private_state_funcs vc4_hvs_state_funcs = { > .atomic_duplicate_state = vc4_hvs_channels_duplicate_state, > .atomic_destroy_state = vc4_hvs_channels_destroy_state, > + .atomic_print_state = vc4_hvs_channels_print_state, > }; > > static void vc4_hvs_channels_obj_fini(struct drm_device *dev, void *unused) > -- > 2.35.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch