drm/vc4: Skip ULPS latching when we're in that ULPS state already.
authorEric Anholt <eric@anholt.net>
Tue, 31 Oct 2017 18:33:10 +0000 (11:33 -0700)
committerRaspbian kernel package updater <root@raspbian.org>
Sat, 31 Mar 2018 14:57:32 +0000 (15:57 +0100)
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>
drivers/gpu/drm/vc4/vc4_dsi.c

index 16af8d2d629ccd80d99b02e3ce27fed27f8385b0..f5cf11dff45b1814752ce11d0cb7ad051888e4bf 100644 (file)
@@ -838,6 +838,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);