mbox series

[v13,00/13] Add PSR support for eDP

Message ID 1676219337-6526-1-git-send-email-quic_vpolimer@quicinc.com (mailing list archive)
Headers show
Series Add PSR support for eDP | expand

Message

Vinod Polimera Feb. 12, 2023, 4:28 p.m. UTC
Changes in v2:
  - Use dp bridge to set psr entry/exit instead of dpu_enocder.
  - Don't modify whitespaces.
  - Set self refresh aware from atomic_check.
  - Set self refresh aware only if psr is supported.
  - Provide a stub for msm_dp_display_set_psr.
  - Move dp functions to bridge code.

Changes in v3:
  - Change callback names to reflect atomic interfaces.
  - Move bridge callback change to separate patch as suggested by Dmitry.
  - Remove psr function declaration from msm_drv.h.
  - Set self_refresh_aware flag only if psr is supported.
  - Modify the variable names to simpler form.
  - Define bit fields for PSR settings.
  - Add comments explaining the steps to enter/exit psr.
  - Change DRM_INFO to drm_dbg_db. 

Changes in v4:
  - Move the get crtc functions to drm_atomic.
  - Add atomic functions for DP bridge too.
  - Add ternary operator to choose eDP or DP ops.
  - Return true/false instead of 1/0.
  - mode_valid missing in the eDP bridge ops.
  - Move the functions to get crtc into drm_atomic.c.
  - Fix compilation issues.
  - Remove dpu_assign_crtc and get crtc from drm_enc instead of dpu_enc.
  - Check for crtc state enable while reserving resources.

Changes in v5:
  - Move the mode_valid changes into a different patch.
  - Complete psr_op_comp only when isr is set.
  - Move the DP atomic callback changes to a different patch.
  - Get crtc from drm connector state crtc.
  - Move to separate patch for check for crtc state enable while
reserving resources.

Changes in v6:
  - Remove crtc from dpu_encoder_virt struct.
  - fix crtc check during vblank toggle crtc.
  - Misc changes. 

Changes in v7:
  - Add fix for underrun issue on kasan build.

Changes in v8:
  - Drop the enc spinlock as it won't serve any purpose in
protetcing conn state.(Dmitry/Doug)

Changes in v9:
  - Update commit message and fix alignment using spaces.(Marijn)
  - Misc changes.(Marijn)

Changes in v10:
  - Get crtc cached in dpu_enc during obj init.(Dmitry)

Changes in v11:
  - Remove crtc cached in dpu_enc during obj init.
  - Update dpu_enc crtc state on crtc enable/disable during self refresh.

Changes in v12:
  - Update sc7180 intf mask to get intf timing gen status
based on DPU_INTF_STATUS_SUPPORTED bit.(Dmitry)
  - Remove "clear active interface in the datapath cleanup" change
as it is already included.

Changes in v13:
  - Move core changes to top of the series.(Dmitry)
  - Drop self refresh aware disable change after psr entry.(Dmitry)

Vinod Polimera (13):
  drm: add helper functions to retrieve old and new crtc
  drm/bridge: use atomic enable/disable callbacks for panel bridge
  drm/bridge: add psr support for panel bridge callbacks
  drm/msm/disp/dpu: check for crtc enable rather than crtc active to
    release shared resources
  drm/msm/disp/dpu: get timing engine status from intf status register
  drm/msm/disp/dpu: wait for extra vsync till timing engine status is
    disabled
  drm/msm/disp/dpu: reset the datapath after timing engine disable
  drm/msm/dp: use atomic callbacks for DP bridge ops
  drm/msm/dp: Add basic PSR support for eDP
  drm/msm/dp: use the eDP bridge ops to validate eDP modes
  drm/msm/disp/dpu: use atomic enable/disable callbacks for encoder
    functions
  drm/msm/disp/dpu: add PSR support for eDP interface in dpu driver
  drm/msm/disp/dpu: update dpu_enc crtc state on crtc enable/disable
    during self refresh

 drivers/gpu/drm/bridge/panel.c                     |  68 +++++++-
 drivers/gpu/drm/drm_atomic.c                       |  60 ++++++++
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c           |  40 ++++-
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c        |  26 +++-
 .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c   |  22 +++
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c     |   3 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h     |  12 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c        |   8 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c            |   2 +-
 drivers/gpu/drm/msm/dp/dp_catalog.c                |  80 ++++++++++
 drivers/gpu/drm/msm/dp/dp_catalog.h                |   4 +
 drivers/gpu/drm/msm/dp/dp_ctrl.c                   |  80 ++++++++++
 drivers/gpu/drm/msm/dp/dp_ctrl.h                   |   3 +
 drivers/gpu/drm/msm/dp/dp_display.c                |  36 +++--
 drivers/gpu/drm/msm/dp/dp_display.h                |   2 +
 drivers/gpu/drm/msm/dp/dp_drm.c                    | 171 ++++++++++++++++++++-
 drivers/gpu/drm/msm/dp/dp_drm.h                    |   9 +-
 drivers/gpu/drm/msm/dp/dp_link.c                   |  36 +++++
 drivers/gpu/drm/msm/dp/dp_panel.c                  |  22 +++
 drivers/gpu/drm/msm/dp/dp_panel.h                  |   6 +
 drivers/gpu/drm/msm/dp/dp_reg.h                    |  27 ++++
 include/drm/drm_atomic.h                           |   7 +
 22 files changed, 681 insertions(+), 43 deletions(-)

Comments

Doug Anderson March 1, 2023, 7:06 p.m. UTC | #1
Hi,

On Sun, Feb 12, 2023 at 8:29 AM Vinod Polimera
<quic_vpolimer@quicinc.com> wrote:
>
> Changes in v2:
>   - Use dp bridge to set psr entry/exit instead of dpu_enocder.
>   - Don't modify whitespaces.
>   - Set self refresh aware from atomic_check.
>   - Set self refresh aware only if psr is supported.
>   - Provide a stub for msm_dp_display_set_psr.
>   - Move dp functions to bridge code.
>
> Changes in v3:
>   - Change callback names to reflect atomic interfaces.
>   - Move bridge callback change to separate patch as suggested by Dmitry.
>   - Remove psr function declaration from msm_drv.h.
>   - Set self_refresh_aware flag only if psr is supported.
>   - Modify the variable names to simpler form.
>   - Define bit fields for PSR settings.
>   - Add comments explaining the steps to enter/exit psr.
>   - Change DRM_INFO to drm_dbg_db.
>
> Changes in v4:
>   - Move the get crtc functions to drm_atomic.
>   - Add atomic functions for DP bridge too.
>   - Add ternary operator to choose eDP or DP ops.
>   - Return true/false instead of 1/0.
>   - mode_valid missing in the eDP bridge ops.
>   - Move the functions to get crtc into drm_atomic.c.
>   - Fix compilation issues.
>   - Remove dpu_assign_crtc and get crtc from drm_enc instead of dpu_enc.
>   - Check for crtc state enable while reserving resources.
>
> Changes in v5:
>   - Move the mode_valid changes into a different patch.
>   - Complete psr_op_comp only when isr is set.
>   - Move the DP atomic callback changes to a different patch.
>   - Get crtc from drm connector state crtc.
>   - Move to separate patch for check for crtc state enable while
> reserving resources.
>
> Changes in v6:
>   - Remove crtc from dpu_encoder_virt struct.
>   - fix crtc check during vblank toggle crtc.
>   - Misc changes.
>
> Changes in v7:
>   - Add fix for underrun issue on kasan build.
>
> Changes in v8:
>   - Drop the enc spinlock as it won't serve any purpose in
> protetcing conn state.(Dmitry/Doug)
>
> Changes in v9:
>   - Update commit message and fix alignment using spaces.(Marijn)
>   - Misc changes.(Marijn)
>
> Changes in v10:
>   - Get crtc cached in dpu_enc during obj init.(Dmitry)
>
> Changes in v11:
>   - Remove crtc cached in dpu_enc during obj init.
>   - Update dpu_enc crtc state on crtc enable/disable during self refresh.
>
> Changes in v12:
>   - Update sc7180 intf mask to get intf timing gen status
> based on DPU_INTF_STATUS_SUPPORTED bit.(Dmitry)
>   - Remove "clear active interface in the datapath cleanup" change
> as it is already included.
>
> Changes in v13:
>   - Move core changes to top of the series.(Dmitry)
>   - Drop self refresh aware disable change after psr entry.(Dmitry)
>
> Vinod Polimera (13):
>   drm: add helper functions to retrieve old and new crtc
>   drm/bridge: use atomic enable/disable callbacks for panel bridge
>   drm/bridge: add psr support for panel bridge callbacks
>   drm/msm/disp/dpu: check for crtc enable rather than crtc active to
>     release shared resources
>   drm/msm/disp/dpu: get timing engine status from intf status register
>   drm/msm/disp/dpu: wait for extra vsync till timing engine status is
>     disabled
>   drm/msm/disp/dpu: reset the datapath after timing engine disable
>   drm/msm/dp: use atomic callbacks for DP bridge ops
>   drm/msm/dp: Add basic PSR support for eDP
>   drm/msm/dp: use the eDP bridge ops to validate eDP modes
>   drm/msm/disp/dpu: use atomic enable/disable callbacks for encoder
>     functions
>   drm/msm/disp/dpu: add PSR support for eDP interface in dpu driver
>   drm/msm/disp/dpu: update dpu_enc crtc state on crtc enable/disable
>     during self refresh

I'm curious what the plan is for landing this series. I could land the
first two in drm-misc if you want, but I'm a lowly committer and so I
couldn't make an immutable branch for you nor can I officially Ack the
changes to land in your branch. That means you'd be blocked for an
extra version. Do you already have a plan? If not, then maybe we need
to get in touch with one of the maintainers [1] of drm-misc? That's
documented [2] to be in their set of responsibilities.

[1] https://drm.pages.freedesktop.org/maintainer-tools/repositories.html#drm-misc-repository
[2] https://drm.pages.freedesktop.org/maintainer-tools/maintainer-drm-misc.html#maintainer-s-duties

-Doug
Doug Anderson March 1, 2023, 8:32 p.m. UTC | #2
Hi,

On Wed, Mar 1, 2023 at 11:06 AM Doug Anderson <dianders@chromium.org> wrote:
>
> Hi,
>
> On Sun, Feb 12, 2023 at 8:29 AM Vinod Polimera
> <quic_vpolimer@quicinc.com> wrote:
> >
> > Changes in v2:
> >   - Use dp bridge to set psr entry/exit instead of dpu_enocder.
> >   - Don't modify whitespaces.
> >   - Set self refresh aware from atomic_check.
> >   - Set self refresh aware only if psr is supported.
> >   - Provide a stub for msm_dp_display_set_psr.
> >   - Move dp functions to bridge code.
> >
> > Changes in v3:
> >   - Change callback names to reflect atomic interfaces.
> >   - Move bridge callback change to separate patch as suggested by Dmitry.
> >   - Remove psr function declaration from msm_drv.h.
> >   - Set self_refresh_aware flag only if psr is supported.
> >   - Modify the variable names to simpler form.
> >   - Define bit fields for PSR settings.
> >   - Add comments explaining the steps to enter/exit psr.
> >   - Change DRM_INFO to drm_dbg_db.
> >
> > Changes in v4:
> >   - Move the get crtc functions to drm_atomic.
> >   - Add atomic functions for DP bridge too.
> >   - Add ternary operator to choose eDP or DP ops.
> >   - Return true/false instead of 1/0.
> >   - mode_valid missing in the eDP bridge ops.
> >   - Move the functions to get crtc into drm_atomic.c.
> >   - Fix compilation issues.
> >   - Remove dpu_assign_crtc and get crtc from drm_enc instead of dpu_enc.
> >   - Check for crtc state enable while reserving resources.
> >
> > Changes in v5:
> >   - Move the mode_valid changes into a different patch.
> >   - Complete psr_op_comp only when isr is set.
> >   - Move the DP atomic callback changes to a different patch.
> >   - Get crtc from drm connector state crtc.
> >   - Move to separate patch for check for crtc state enable while
> > reserving resources.
> >
> > Changes in v6:
> >   - Remove crtc from dpu_encoder_virt struct.
> >   - fix crtc check during vblank toggle crtc.
> >   - Misc changes.
> >
> > Changes in v7:
> >   - Add fix for underrun issue on kasan build.
> >
> > Changes in v8:
> >   - Drop the enc spinlock as it won't serve any purpose in
> > protetcing conn state.(Dmitry/Doug)
> >
> > Changes in v9:
> >   - Update commit message and fix alignment using spaces.(Marijn)
> >   - Misc changes.(Marijn)
> >
> > Changes in v10:
> >   - Get crtc cached in dpu_enc during obj init.(Dmitry)
> >
> > Changes in v11:
> >   - Remove crtc cached in dpu_enc during obj init.
> >   - Update dpu_enc crtc state on crtc enable/disable during self refresh.
> >
> > Changes in v12:
> >   - Update sc7180 intf mask to get intf timing gen status
> > based on DPU_INTF_STATUS_SUPPORTED bit.(Dmitry)
> >   - Remove "clear active interface in the datapath cleanup" change
> > as it is already included.
> >
> > Changes in v13:
> >   - Move core changes to top of the series.(Dmitry)
> >   - Drop self refresh aware disable change after psr entry.(Dmitry)
> >
> > Vinod Polimera (13):
> >   drm: add helper functions to retrieve old and new crtc
> >   drm/bridge: use atomic enable/disable callbacks for panel bridge
> >   drm/bridge: add psr support for panel bridge callbacks
> >   drm/msm/disp/dpu: check for crtc enable rather than crtc active to
> >     release shared resources
> >   drm/msm/disp/dpu: get timing engine status from intf status register
> >   drm/msm/disp/dpu: wait for extra vsync till timing engine status is
> >     disabled
> >   drm/msm/disp/dpu: reset the datapath after timing engine disable
> >   drm/msm/dp: use atomic callbacks for DP bridge ops
> >   drm/msm/dp: Add basic PSR support for eDP
> >   drm/msm/dp: use the eDP bridge ops to validate eDP modes
> >   drm/msm/disp/dpu: use atomic enable/disable callbacks for encoder
> >     functions
> >   drm/msm/disp/dpu: add PSR support for eDP interface in dpu driver
> >   drm/msm/disp/dpu: update dpu_enc crtc state on crtc enable/disable
> >     during self refresh
>
> I'm curious what the plan is for landing this series. I could land the
> first two in drm-misc if you want, but I'm a lowly committer and so I
> couldn't make an immutable branch for you nor can I officially Ack the
> changes to land in your branch. That means you'd be blocked for an
> extra version. Do you already have a plan? If not, then maybe we need
> to get in touch with one of the maintainers [1] of drm-misc? That's
> documented [2] to be in their set of responsibilities.
>
> [1] https://drm.pages.freedesktop.org/maintainer-tools/repositories.html#drm-misc-repository
> [2] https://drm.pages.freedesktop.org/maintainer-tools/maintainer-drm-misc.html#maintainer-s-duties

The above question about how we'd land this is still a good one, but
perhaps less relevant quite yet because, at least in my testing, the
current series doesn't work. :-/

I know previous versions worked, so I went back and tried older
versions. It turns out that v12 _does_ work for me, but v13 doesn't
work. The difference is very small. I'm assuming you made some changes
in v13 and they looked so small that you just sent v13 out without
testing? ...or, of course, there's always a possibility that I messed
up in testing this myself, though I did repeat my results and they
were consistent.

FWIW, my testing was roughly to do this on a device that had a
PSR-enabled eDP display:

echo "dp_catalog_ctrl_set_psr" > /sys/kernel/debug/tracing/set_ftrace_filter
echo function > /sys/kernel/debug/tracing/current_tracer
echo 1 > /sys/kernel/debug/tracing/tracing_on
cat /sys/kernel/debug/tracing/trace_pipe

I should see a splat in the trace buffers each time PSR is entered or
exited. On v12 I get splats as the cursor on my screen blinks. On v13,
it's just silence.

Please confirm that you tested v13. If you're confident that v13 works
then I can dig further myself.

-Doug
Dmitry Baryshkov March 1, 2023, 8:34 p.m. UTC | #3
On 01/03/2023 21:06, Doug Anderson wrote:
> Hi,
> 
> On Sun, Feb 12, 2023 at 8:29 AM Vinod Polimera
> <quic_vpolimer@quicinc.com> wrote:
>>
>> Changes in v2:
>>    - Use dp bridge to set psr entry/exit instead of dpu_enocder.
>>    - Don't modify whitespaces.
>>    - Set self refresh aware from atomic_check.
>>    - Set self refresh aware only if psr is supported.
>>    - Provide a stub for msm_dp_display_set_psr.
>>    - Move dp functions to bridge code.
>>
>> Changes in v3:
>>    - Change callback names to reflect atomic interfaces.
>>    - Move bridge callback change to separate patch as suggested by Dmitry.
>>    - Remove psr function declaration from msm_drv.h.
>>    - Set self_refresh_aware flag only if psr is supported.
>>    - Modify the variable names to simpler form.
>>    - Define bit fields for PSR settings.
>>    - Add comments explaining the steps to enter/exit psr.
>>    - Change DRM_INFO to drm_dbg_db.
>>
>> Changes in v4:
>>    - Move the get crtc functions to drm_atomic.
>>    - Add atomic functions for DP bridge too.
>>    - Add ternary operator to choose eDP or DP ops.
>>    - Return true/false instead of 1/0.
>>    - mode_valid missing in the eDP bridge ops.
>>    - Move the functions to get crtc into drm_atomic.c.
>>    - Fix compilation issues.
>>    - Remove dpu_assign_crtc and get crtc from drm_enc instead of dpu_enc.
>>    - Check for crtc state enable while reserving resources.
>>
>> Changes in v5:
>>    - Move the mode_valid changes into a different patch.
>>    - Complete psr_op_comp only when isr is set.
>>    - Move the DP atomic callback changes to a different patch.
>>    - Get crtc from drm connector state crtc.
>>    - Move to separate patch for check for crtc state enable while
>> reserving resources.
>>
>> Changes in v6:
>>    - Remove crtc from dpu_encoder_virt struct.
>>    - fix crtc check during vblank toggle crtc.
>>    - Misc changes.
>>
>> Changes in v7:
>>    - Add fix for underrun issue on kasan build.
>>
>> Changes in v8:
>>    - Drop the enc spinlock as it won't serve any purpose in
>> protetcing conn state.(Dmitry/Doug)
>>
>> Changes in v9:
>>    - Update commit message and fix alignment using spaces.(Marijn)
>>    - Misc changes.(Marijn)
>>
>> Changes in v10:
>>    - Get crtc cached in dpu_enc during obj init.(Dmitry)
>>
>> Changes in v11:
>>    - Remove crtc cached in dpu_enc during obj init.
>>    - Update dpu_enc crtc state on crtc enable/disable during self refresh.
>>
>> Changes in v12:
>>    - Update sc7180 intf mask to get intf timing gen status
>> based on DPU_INTF_STATUS_SUPPORTED bit.(Dmitry)
>>    - Remove "clear active interface in the datapath cleanup" change
>> as it is already included.
>>
>> Changes in v13:
>>    - Move core changes to top of the series.(Dmitry)
>>    - Drop self refresh aware disable change after psr entry.(Dmitry)
>>
>> Vinod Polimera (13):
>>    drm: add helper functions to retrieve old and new crtc
>>    drm/bridge: use atomic enable/disable callbacks for panel bridge
>>    drm/bridge: add psr support for panel bridge callbacks
>>    drm/msm/disp/dpu: check for crtc enable rather than crtc active to
>>      release shared resources
>>    drm/msm/disp/dpu: get timing engine status from intf status register
>>    drm/msm/disp/dpu: wait for extra vsync till timing engine status is
>>      disabled
>>    drm/msm/disp/dpu: reset the datapath after timing engine disable
>>    drm/msm/dp: use atomic callbacks for DP bridge ops
>>    drm/msm/dp: Add basic PSR support for eDP
>>    drm/msm/dp: use the eDP bridge ops to validate eDP modes
>>    drm/msm/disp/dpu: use atomic enable/disable callbacks for encoder
>>      functions
>>    drm/msm/disp/dpu: add PSR support for eDP interface in dpu driver
>>    drm/msm/disp/dpu: update dpu_enc crtc state on crtc enable/disable
>>      during self refresh
> 
> I'm curious what the plan is for landing this series. I could land the
> first two in drm-misc if you want, but I'm a lowly committer and so I
> couldn't make an immutable branch for you nor can I officially Ack the
> changes to land in your branch. That means you'd be blocked for an
> extra version. Do you already have a plan? If not, then maybe we need
> to get in touch with one of the maintainers [1] of drm-misc? That's
> documented [2] to be in their set of responsibilities. 
> 
> [1] https://drm.pages.freedesktop.org/maintainer-tools/repositories.html#drm-misc-repository
> [2] https://drm.pages.freedesktop.org/maintainer-tools/maintainer-drm-misc.html#maintainer-s-duties

My plan was to ask Thomas or Daniel to make an immutable branch. I just 
didn't want to ping them before rc1.

> 
> -Doug
Vinod Polimera March 2, 2023, 4:38 p.m. UTC | #4
> -----Original Message-----
> From: Doug Anderson <dianders@chromium.org>
> Sent: Thursday, March 2, 2023 2:02 AM
> To: Vinod Polimera (QUIC) <quic_vpolimer@quicinc.com>
> Cc: dri-devel@lists.freedesktop.org; linux-arm-msm@vger.kernel.org;
> freedreno@lists.freedesktop.org; devicetree@vger.kernel.org; linux-
> kernel@vger.kernel.org; robdclark@gmail.com; swboyd@chromium.org;
> Kalyan Thota (QUIC) <quic_kalyant@quicinc.com>;
> dmitry.baryshkov@linaro.org; Kuogee Hsieh (QUIC)
> <quic_khsieh@quicinc.com>; Vishnuvardhan Prodduturi (QUIC)
> <quic_vproddut@quicinc.com>; Bjorn Andersson (QUIC)
> <quic_bjorande@quicinc.com>; Abhinav Kumar (QUIC)
> <quic_abhinavk@quicinc.com>; Sankeerth Billakanti (QUIC)
> <quic_sbillaka@quicinc.com>
> Subject: Re: [PATCH v13 00/13] Add PSR support for eDP
> 
> Hi,
> 
> On Wed, Mar 1, 2023 at 11:06 AM Doug Anderson
> <dianders@chromium.org> wrote:
> >
> > Hi,
> >
> > On Sun, Feb 12, 2023 at 8:29 AM Vinod Polimera
> > <quic_vpolimer@quicinc.com> wrote:
> > >
> > > Changes in v2:
> > >   - Use dp bridge to set psr entry/exit instead of dpu_enocder.
> > >   - Don't modify whitespaces.
> > >   - Set self refresh aware from atomic_check.
> > >   - Set self refresh aware only if psr is supported.
> > >   - Provide a stub for msm_dp_display_set_psr.
> > >   - Move dp functions to bridge code.
> > >
> > > Changes in v3:
> > >   - Change callback names to reflect atomic interfaces.
> > >   - Move bridge callback change to separate patch as suggested by Dmitry.
> > >   - Remove psr function declaration from msm_drv.h.
> > >   - Set self_refresh_aware flag only if psr is supported.
> > >   - Modify the variable names to simpler form.
> > >   - Define bit fields for PSR settings.
> > >   - Add comments explaining the steps to enter/exit psr.
> > >   - Change DRM_INFO to drm_dbg_db.
> > >
> > > Changes in v4:
> > >   - Move the get crtc functions to drm_atomic.
> > >   - Add atomic functions for DP bridge too.
> > >   - Add ternary operator to choose eDP or DP ops.
> > >   - Return true/false instead of 1/0.
> > >   - mode_valid missing in the eDP bridge ops.
> > >   - Move the functions to get crtc into drm_atomic.c.
> > >   - Fix compilation issues.
> > >   - Remove dpu_assign_crtc and get crtc from drm_enc instead of
> dpu_enc.
> > >   - Check for crtc state enable while reserving resources.
> > >
> > > Changes in v5:
> > >   - Move the mode_valid changes into a different patch.
> > >   - Complete psr_op_comp only when isr is set.
> > >   - Move the DP atomic callback changes to a different patch.
> > >   - Get crtc from drm connector state crtc.
> > >   - Move to separate patch for check for crtc state enable while
> > > reserving resources.
> > >
> > > Changes in v6:
> > >   - Remove crtc from dpu_encoder_virt struct.
> > >   - fix crtc check during vblank toggle crtc.
> > >   - Misc changes.
> > >
> > > Changes in v7:
> > >   - Add fix for underrun issue on kasan build.
> > >
> > > Changes in v8:
> > >   - Drop the enc spinlock as it won't serve any purpose in
> > > protetcing conn state.(Dmitry/Doug)
> > >
> > > Changes in v9:
> > >   - Update commit message and fix alignment using spaces.(Marijn)
> > >   - Misc changes.(Marijn)
> > >
> > > Changes in v10:
> > >   - Get crtc cached in dpu_enc during obj init.(Dmitry)
> > >
> > > Changes in v11:
> > >   - Remove crtc cached in dpu_enc during obj init.
> > >   - Update dpu_enc crtc state on crtc enable/disable during self refresh.
> > >
> > > Changes in v12:
> > >   - Update sc7180 intf mask to get intf timing gen status
> > > based on DPU_INTF_STATUS_SUPPORTED bit.(Dmitry)
> > >   - Remove "clear active interface in the datapath cleanup" change
> > > as it is already included.
> > >
> > > Changes in v13:
> > >   - Move core changes to top of the series.(Dmitry)
> > >   - Drop self refresh aware disable change after psr entry.(Dmitry)
> > >
> > > Vinod Polimera (13):
> > >   drm: add helper functions to retrieve old and new crtc
> > >   drm/bridge: use atomic enable/disable callbacks for panel bridge
> > >   drm/bridge: add psr support for panel bridge callbacks
> > >   drm/msm/disp/dpu: check for crtc enable rather than crtc active to
> > >     release shared resources
> > >   drm/msm/disp/dpu: get timing engine status from intf status register
> > >   drm/msm/disp/dpu: wait for extra vsync till timing engine status is
> > >     disabled
> > >   drm/msm/disp/dpu: reset the datapath after timing engine disable
> > >   drm/msm/dp: use atomic callbacks for DP bridge ops
> > >   drm/msm/dp: Add basic PSR support for eDP
> > >   drm/msm/dp: use the eDP bridge ops to validate eDP modes
> > >   drm/msm/disp/dpu: use atomic enable/disable callbacks for encoder
> > >     functions
> > >   drm/msm/disp/dpu: add PSR support for eDP interface in dpu driver
> > >   drm/msm/disp/dpu: update dpu_enc crtc state on crtc enable/disable
> > >     during self refresh
> >
> > I'm curious what the plan is for landing this series. I could land the
> > first two in drm-misc if you want, but I'm a lowly committer and so I
> > couldn't make an immutable branch for you nor can I officially Ack the
> > changes to land in your branch. That means you'd be blocked for an
> > extra version. Do you already have a plan? If not, then maybe we need
> > to get in touch with one of the maintainers [1] of drm-misc? That's
> > documented [2] to be in their set of responsibilities.
> >
> > [1] https://drm.pages.freedesktop.org/maintainer-
> tools/repositories.html#drm-misc-repository
> > [2] https://drm.pages.freedesktop.org/maintainer-tools/maintainer-drm-
> misc.html#maintainer-s-duties
> 
> The above question about how we'd land this is still a good one, but
> perhaps less relevant quite yet because, at least in my testing, the
> current series doesn't work. :-/
> 
> I know previous versions worked, so I went back and tried older
> versions. It turns out that v12 _does_ work for me, but v13 doesn't
> work. The difference is very small. I'm assuming you made some changes
> in v13 and they looked so small that you just sent v13 out without
> testing? ...or, of course, there's always a possibility that I messed
> up in testing this myself, though I did repeat my results and they
> were consistent.
> 
> FWIW, my testing was roughly to do this on a device that had a
> PSR-enabled eDP display:
> 
> echo "dp_catalog_ctrl_set_psr" >
> /sys/kernel/debug/tracing/set_ftrace_filter
> echo function > /sys/kernel/debug/tracing/current_tracer
> echo 1 > /sys/kernel/debug/tracing/tracing_on
> cat /sys/kernel/debug/tracing/trace_pipe
> 
> I should see a splat in the trace buffers each time PSR is entered or
> exited. On v12 I get splats as the cursor on my screen blinks. On v13,
> it's just silence.
> 
> Please confirm that you tested v13. If you're confident that v13 works
> then I can dig further myself.

Thanks, Doug for catching this. 
I didn't per say test V13 as I did not make any changes apart from dropping a patch for flicker.
 Apparently flicker fix was reusing self-refresh aware variable and dropping the patch caused
not to initialize it. It was an honest mistake.

I pushed a new patch to set self-refresh aware as part of v14. 
It includes all the untouched patches of v13 plus one additional patch to set self-refresh aware.
I have tested these changes and PSR is getting exercised.

Thanks Again,
Vinod

> 
> -Doug