]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/vc4: Implement atomic_print_state for HVS channel state
authorMaxime Ripard <maxime@cerno.tech>
Mon, 28 Mar 2022 12:43:04 +0000 (14:43 +0200)
committerMaxime Ripard <maxime@cerno.tech>
Thu, 31 Mar 2022 08:19:45 +0000 (10:19 +0200)
The HVS state configuration is useful when debugging what's going on in
the vc4 hardware pipeline. Add an implementation of .atomic_print_state.

Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://lore.kernel.org/r/20220328124304.2309418-5-maxime@cerno.tech
drivers/gpu/drm/vc4/vc4_kms.c

index 26b771c919b1cb0899d3c4fdcf1a1aebbf26adc1..bffd81d4bfcfc0a58b1e8a66965eff1ca98a93bc 100644 (file)
@@ -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)