drm/vc4: Skip ULPS latching when we're in that ULPS state already.
authorEric Anholt <eric@anholt.net>
Tue, 31 Oct 2017 19:32:57 +0000 (12:32 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 30 Apr 2018 20:57:13 +0000 (13:57 -0700)
It seems that trying to go from unlatched to unlatched will time out
waiting for STOP, and we can just skip that.

Signed-off-by: Eric Anholt <eric@anholt.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20171031193258.17373-1-eric@anholt.net
Reviewed-by: Boris Brezillon <boris.brezillon@bootlin.com>
drivers/gpu/drm/vc4/vc4_dsi.c

index 94085f8bcd68cb342f6e29990a41721773bb76d8..8aa8978351185209b2c76d147468ce6e18eb8155 100644 (file)
@@ -753,6 +753,11 @@ static void vc4_dsi_ulps(struct vc4_dsi *dsi, bool ulps)
                         (dsi->lanes > 2 ? DSI1_STAT_PHY_D2_STOP : 0) |
                         (dsi->lanes > 3 ? DSI1_STAT_PHY_D3_STOP : 0));
        int ret;
+       bool ulps_currently_enabled = (DSI_PORT_READ(PHY_AFEC0) &
+                                      DSI_PORT_BIT(PHY_AFEC0_LATCH_ULPS));
+
+       if (ulps == ulps_currently_enabled)
+               return;
 
        DSI_PORT_WRITE(STAT, stat_ulps);
        DSI_PORT_WRITE(PHYC, DSI_PORT_READ(PHYC) | phyc_ulps);