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 <[email protected]>
---
 drivers/gpu/drm/vc4/vc4_kms.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
index d94f78eac936..29ecc34a4069 100644
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
@@ -421,6 +421,9 @@ static void vc4_atomic_commit_tail(struct drm_atomic_state 
*state)
                        new_hvs_state->core_clock_rate);
 
                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));
        }
 }
 
@@ -787,9 +790,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;
@@ -797,6 +809,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;
@@ -831,6 +847,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;
-- 
2.35.1

Reply via email to