1. 29 Apr, 2024 1 commit
    • Luca Ceresoli's avatar
      Revert "drm/bridge: ti-sn65dsi83: Fix enable error path" · 2940ee03
      Luca Ceresoli authored
      This reverts commit 8a91b29f.
      
      The regulator_disable() added by the original commit solves one kind of
      regulator imbalance but adds another one as it allows the regulator to be
      disabled one more time than it is enabled in the following scenario:
      
       1. Start video pipeline -> sn65dsi83_atomic_pre_enable -> regulator_enable
       2. PLL lock fails -> regulator_disable
       3. Stop video pipeline -> sn65dsi83_atomic_disable -> regulator_disable
      
      The reason is clear from the code flow, which looks like this (after
      removing unrelated code):
      
        static void sn65dsi83_atomic_pre_enable()
        {
            regulator_enable(ctx->vcc);
      
            if (PLL failed locking) {
                regulator_disable(ctx->vcc);  <---- added by patch being reverted
                return;
            }
        }
      
        static void sn65dsi83_atomic_disable()
        {
            regulator_disable(ctx->vcc);
        }
      
      The use case for introducing the additional regulator_disable() was
      removing the module for debugging (see link below for the discussion). If
      the module is removed after a .atomic_pre_enable, i.e. with an active
      pipeline from the DRM point of view, .atomic_disable is not called and thus
      the regulator would not be disabled.
      
      According to the discussion however there is no actual use case for
      removing the module with an active pipeline, except for
      debugging/development.
      
      On the other hand, the occurrence of a PLL lock failure is possible due to
      any physical reason (e.g. a temporary hardware failure for electrical
      reasons) so handling it gracefully should be supported. As there is no way
      for .atomic[_pre]_enable to report an error to the core, the only clean way
      to support it is calling regulator_disabled() only in .atomic_disable,
      unconditionally, as it was before.
      
      Link: https://lore.kernel.org/all/15244220.uLZWGnKmhe@steina-w/
      Fixes: 8a91b29f ("drm/bridge: ti-sn65dsi83: Fix enable error path")
      Reviewed-by: default avatarAlexander Stein <alexander.stein@ew.tq-group.com>
      Signed-off-by: default avatarLuca Ceresoli <luca.ceresoli@bootlin.com>
      Signed-off-by: default avatarRobert Foss <rfoss@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240426122259.46808-1-luca.ceresoli@bootlin.com
      2940ee03
  2. 27 Apr, 2024 2 commits
  3. 26 Apr, 2024 11 commits
  4. 25 Apr, 2024 4 commits
  5. 24 Apr, 2024 14 commits
  6. 23 Apr, 2024 8 commits