drm/vc4: kms: Improve logging
authorMaxime Ripard <maxime@cerno.tech>
Mon, 28 Mar 2022 15:36:59 +0000 (17:36 +0200)
committerMaxime Ripard <maxime@cerno.tech>
Fri, 8 Apr 2022 11:38:07 +0000 (13:38 +0200)
When debugging, finding out what muxing decisions were made and what the
actual core clock rate is is always useful, so let's add some more
messages.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://lore.kernel.org/r/20220328153659.2382206-7-maxime@cerno.tech
drivers/gpu/drm/vc4/vc4_kms.c

index ffd54aab775968dfc81fb2b252c3962e72d5badf..c169bd72e53b16d51d2d6d4af74421b15ade2066 100644 (file)
@@ -439,6 +439,9 @@ static void vc4_atomic_commit_tail(struct drm_atomic_state *state)
                 * requirements.
                 */
                clk_set_min_rate(hvs->core_clk, new_hvs_state->core_clock_rate);
+
+               drm_dbg(dev, "Core clock actual rate: %lu Hz\n",
+                       clk_get_rate(hvs->core_clk));
        }
 }
 
@@ -822,9 +825,18 @@ static int vc4_pv_muxing_atomic_check(struct drm_device *dev,
                unsigned int matching_channels;
                unsigned int channel;
 
+               drm_dbg(dev, "%s: Trying to find a channel.\n", crtc->name);
+
                /* Nothing to do here, let's skip it */
-               if (old_crtc_state->enable == new_crtc_state->enable)
+               if (old_crtc_state->enable == new_crtc_state->enable) {
+                       if (new_crtc_state->enable)
+                               drm_dbg(dev, "%s: Already enabled, reusing channel %d.\n",
+                                       crtc->name, new_vc4_crtc_state->assigned_channel);
+                       else
+                               drm_dbg(dev, "%s: Disabled, ignoring.\n", crtc->name);
+
                        continue;
+               }
 
                /* Muxing will need to be modified, mark it as such */
                new_vc4_crtc_state->update_muxing = true;
@@ -832,6 +844,10 @@ static int vc4_pv_muxing_atomic_check(struct drm_device *dev,
                /* If we're disabling our CRTC, we put back our channel */
                if (!new_crtc_state->enable) {
                        channel = old_vc4_crtc_state->assigned_channel;
+
+                       drm_dbg(dev, "%s: Disabling, Freeing channel %d\n",
+                               crtc->name, channel);
+
                        hvs_new_state->fifo_state[channel].in_use = false;
                        new_vc4_crtc_state->assigned_channel = VC4_HVS_CHANNEL_DISABLED;
                        continue;
@@ -866,6 +882,8 @@ static int vc4_pv_muxing_atomic_check(struct drm_device *dev,
                        return -EINVAL;
 
                channel = ffs(matching_channels) - 1;
+
+               drm_dbg(dev, "Assigned HVS channel %d to CRTC %s\n", channel, crtc->name);
                new_vc4_crtc_state->assigned_channel = channel;
                unassigned_channels &= ~BIT(channel);
                hvs_new_state->fifo_state[channel].in_use = true;