mbox series

[0/6] Samsung Exynos 7870 DECON driver support

Message ID 20240919-exynosdrm-decon-v1-0-6c5861c1cb04@disroot.org
Headers show
Series Samsung Exynos 7870 DECON driver support | expand

Message

Kaustabh Chakraborty Sept. 19, 2024, 3:10 p.m. UTC
This patch series aims at adding support for Exynos7870's DECON in the
Exynos7 DECON driver. It introduces a driver data struct so that support
for DECON on other SoCs can be added to it in the future.

It also fixes a few bugs in the driver, such as functions recieving bad
pointers.

Tested on Samsung Galaxy J7 Prime and Samsung Galaxy A2 Core.

Signed-off-by: Kaustabh Chakraborty <kauschluss@disroot.org>
---
Kaustabh Chakraborty (6):
      drm/exynos: exynos7_drm_decon: fix uninitialized crtc reference in functions
      drm/exynos: exynos7_drm_decon: fix suspended condition in decon_commit()
      drm/exynos: exynos7_drm_decon: fix ideal_clk by converting it to Hz
      drm/exynos: exynos7_drm_decon: properly clear channels during bind
      drm/exynos: exynos7_drm_decon: add driver data and support for Exynos7870
      dt-bindings: display: samsung,exynos7-decon: add exynos7870 compatible

 .../display/samsung/samsung,exynos7-decon.yaml     |   4 +-
 drivers/gpu/drm/exynos/exynos7_drm_decon.c         | 124 +++++++++++++--------
 drivers/gpu/drm/exynos/regs-decon7.h               |  15 ++-
 3 files changed, 90 insertions(+), 53 deletions(-)
---
base-commit: 4f3e012d4cfd1d9bf837870c961f462ca9f23ebe
change-id: 20240917-exynosdrm-decon-4c228dd1d2bf

Best regards,

Comments

Krzysztof Kozlowski Sept. 20, 2024, 12:40 p.m. UTC | #1
On 19/09/2024 17:11, Kaustabh Chakraborty wrote:
> decon_commit() gets called during atomic_enable. At this stage, DECON is
> suspended, and thus the function refuses to run. Fix the suspended
> condition checking in decon_commit().
> 
> Signed-off-by: Kaustabh Chakraborty <kauschluss@disroot.org>
> ---

If this is a fix, then you miss fixes tag and cc-stable. However the
explanation seems just incomplete. This looked like a intentional code,
so you should explain really why original approach was wrong.

Best regards,
Krzysztof
Kaustabh Chakraborty Sept. 25, 2024, 7:22 p.m. UTC | #2
On 2024-09-20 12:40, Krzysztof Kozlowski wrote:
> On 19/09/2024 17:11, Kaustabh Chakraborty wrote:
>> decon_commit() gets called during atomic_enable. At this stage, DECON is
>> suspended, and thus the function refuses to run. Fix the suspended
>> condition checking in decon_commit().
>> 
>> Signed-off-by: Kaustabh Chakraborty <kauschluss@disroot.org>
>> ---
> 
> If this is a fix, then you miss fixes tag and cc-stable. However the
> explanation seems just incomplete. This looked like a intentional code,
> so you should explain really why original approach was wrong.

Fixes: 96976c3d9aff ("drm/exynos: Add DECON driver")

Now that I read the commit description of the above commit, which mentions
that the DECON driver is based on the FIMD driver, I think it makes more
sense to rewrite the suspend logic exactly as done in the FIMD driver.
Will do it in v2.

Here's a commit description which may be better suited, let me know:

A flag variable in struct decon_context, called 'suspended' is set to false
at the end of decon_atomic_enable() and is set back to true at the end of
decon_atomic_disable().

Functions called in decon_atomic_enable(), such as decon_enable_vblank()
and decon_commit() are guarded by suspend condition checking, where it
refuses to proceed if 'suspended' is set to true. Since 'suspended' isn't
set to true until the end of the calling function, the called functions
aren't even executed.

The original commit, 96976c3d9aff ("drm/exynos: Add DECON driver")
implementing the DECON driver, is based on the FIMD driver, but changes
the suspend flag logic which causes this issue. Implement the suspend
logic present in FIMD, which changes the flag at the beginning of
atomic_enable and atomic_disable instead.

> 
> Best regards,
> Krzysztof
대인기/Tizen Platform Lab(SR)/삼성전자 Nov. 1, 2024, 5:08 a.m. UTC | #3
Hi Kaustabh Chakraborty,

Sorry for late.

> -----Original Message-----
> From: Kaustabh Chakraborty <kauschluss@disroot.org>
> Sent: Friday, September 20, 2024 12:11 AM
> To: Inki Dae <inki.dae@samsung.com>; Seung-Woo Kim
> <sw0312.kim@samsung.com>; Kyungmin Park <kyungmin.park@samsung.com>; David
> Airlie <airlied@gmail.com>; Simona Vetter <simona@ffwll.ch>; Krzysztof
> Kozlowski <krzk@kernel.org>; Alim Akhtar <alim.akhtar@samsung.com>;
> Maarten Lankhorst <maarten.lankhorst@linux.intel.com>; Maxime Ripard
> <mripard@kernel.org>; Thomas Zimmermann <tzimmermann@suse.de>; Rob Herring
> <robh@kernel.org>; Conor Dooley <conor@kernel.org>
> Cc: dri-devel@lists.freedesktop.org; linux-arm-kernel@lists.infradead.org;
> linux-samsung-soc@vger.kernel.org; linux-kernel@vger.kernel.org;
> devicetree@vger.kernel.org; Kaustabh Chakraborty <kauschluss@disroot.org>
> Subject: [PATCH 0/6] Samsung Exynos 7870 DECON driver support
> 
> This patch series aims at adding support for Exynos7870's DECON in the
> Exynos7 DECON driver. It introduces a driver data struct so that support
> for DECON on other SoCs can be added to it in the future.
> 
> It also fixes a few bugs in the driver, such as functions recieving bad
> pointers.
> 
> Tested on Samsung Galaxy J7 Prime and Samsung Galaxy A2 Core.
> 
> Signed-off-by: Kaustabh Chakraborty <kauschluss@disroot.org>
> ---
> Kaustabh Chakraborty (6):
>       drm/exynos: exynos7_drm_decon: fix uninitialized crtc reference in
> functions
>       drm/exynos: exynos7_drm_decon: fix suspended condition in
> decon_commit()
>       drm/exynos: exynos7_drm_decon: fix ideal_clk by converting it to Hz
>       drm/exynos: exynos7_drm_decon: properly clear channels during bind
>       drm/exynos: exynos7_drm_decon: add driver data and support for
> Exynos7870
>       dt-bindings: display: samsung,exynos7-decon: add exynos7870
> compatible

I will apply all except for the two patches below,
[PATCH 2/6] drm/exynos: exynos7_drm_decon: fix suspended condition in decon_commit()
[PATCH 6/6] dt-bindings: display: samsung,exynos7-decon: add exynos7870 compatible

Thanks,
Inki Dae

> 
>  .../display/samsung/samsung,exynos7-decon.yaml     |   4 +-
>  drivers/gpu/drm/exynos/exynos7_drm_decon.c         | 124 +++++++++++++-----
> ---
>  drivers/gpu/drm/exynos/regs-decon7.h               |  15 ++-
>  3 files changed, 90 insertions(+), 53 deletions(-)
> ---
> base-commit: 4f3e012d4cfd1d9bf837870c961f462ca9f23ebe
> change-id: 20240917-exynosdrm-decon-4c228dd1d2bf
> 
> Best regards,
> --
> Kaustabh Chakraborty <kauschluss@disroot.org>
Rob Herring (Arm) Nov. 5, 2024, 8:11 p.m. UTC | #4
On Fri, Nov 1, 2024 at 12:08 AM 대인기/Tizen Platform Lab(SR)/삼성전자
<inki.dae@samsung.com> wrote:
>
> Hi Kaustabh Chakraborty,
>
> Sorry for late.
>
> > -----Original Message-----
> > From: Kaustabh Chakraborty <kauschluss@disroot.org>
> > Sent: Friday, September 20, 2024 12:11 AM
> > To: Inki Dae <inki.dae@samsung.com>; Seung-Woo Kim
> > <sw0312.kim@samsung.com>; Kyungmin Park <kyungmin.park@samsung.com>; David
> > Airlie <airlied@gmail.com>; Simona Vetter <simona@ffwll.ch>; Krzysztof
> > Kozlowski <krzk@kernel.org>; Alim Akhtar <alim.akhtar@samsung.com>;
> > Maarten Lankhorst <maarten.lankhorst@linux.intel.com>; Maxime Ripard
> > <mripard@kernel.org>; Thomas Zimmermann <tzimmermann@suse.de>; Rob Herring
> > <robh@kernel.org>; Conor Dooley <conor@kernel.org>
> > Cc: dri-devel@lists.freedesktop.org; linux-arm-kernel@lists.infradead.org;
> > linux-samsung-soc@vger.kernel.org; linux-kernel@vger.kernel.org;
> > devicetree@vger.kernel.org; Kaustabh Chakraborty <kauschluss@disroot.org>
> > Subject: [PATCH 0/6] Samsung Exynos 7870 DECON driver support
> >
> > This patch series aims at adding support for Exynos7870's DECON in the
> > Exynos7 DECON driver. It introduces a driver data struct so that support
> > for DECON on other SoCs can be added to it in the future.
> >
> > It also fixes a few bugs in the driver, such as functions recieving bad
> > pointers.
> >
> > Tested on Samsung Galaxy J7 Prime and Samsung Galaxy A2 Core.
> >
> > Signed-off-by: Kaustabh Chakraborty <kauschluss@disroot.org>
> > ---
> > Kaustabh Chakraborty (6):
> >       drm/exynos: exynos7_drm_decon: fix uninitialized crtc reference in
> > functions
> >       drm/exynos: exynos7_drm_decon: fix suspended condition in
> > decon_commit()
> >       drm/exynos: exynos7_drm_decon: fix ideal_clk by converting it to Hz
> >       drm/exynos: exynos7_drm_decon: properly clear channels during bind
> >       drm/exynos: exynos7_drm_decon: add driver data and support for
> > Exynos7870
> >       dt-bindings: display: samsung,exynos7-decon: add exynos7870
> > compatible
>
> I will apply all except for the two patches below,
> [PATCH 2/6] drm/exynos: exynos7_drm_decon: fix suspended condition in decon_commit()
> [PATCH 6/6] dt-bindings: display: samsung,exynos7-decon: add exynos7870 compatible

Now we have a warning in linux-next that samsung,exynos7870-decon is
not documented.

Please apply the binding patch. Or let me know if it missed 6.13 for
DRM tree and I'll apply it.

Rob
대인기/Tizen Platform Lab(SR)/삼성전자 Nov. 5, 2024, 11:54 p.m. UTC | #5
Hi Rob Herring,

> -----Original Message-----
> From: Rob Herring <robh@kernel.org>
> Sent: Wednesday, November 6, 2024 5:11 AM
> To: 대인기/Tizen Platform Lab(SR)/삼성전자 <inki.dae@samsung.com>
> Cc: Kaustabh Chakraborty <kauschluss@disroot.org>; Seung-Woo Kim
> <sw0312.kim@samsung.com>; Kyungmin Park <kyungmin.park@samsung.com>; David
> Airlie <airlied@gmail.com>; Simona Vetter <simona@ffwll.ch>; Krzysztof
> Kozlowski <krzk@kernel.org>; Alim Akhtar <alim.akhtar@samsung.com>;
> Maarten Lankhorst <maarten.lankhorst@linux.intel.com>; Maxime Ripard
> <mripard@kernel.org>; Thomas Zimmermann <tzimmermann@suse.de>; Conor
> Dooley <conor@kernel.org>; dri-devel@lists.freedesktop.org; linux-arm-
> kernel@lists.infradead.org; linux-samsung-soc@vger.kernel.org; linux-
> kernel@vger.kernel.org; devicetree@vger.kernel.org
> Subject: Re: [PATCH 0/6] Samsung Exynos 7870 DECON driver support
> 
> On Fri, Nov 1, 2024 at 12:08 AM 대인기/Tizen Platform Lab(SR)/삼성전자
> <inki.dae@samsung.com> wrote:
> >
> > Hi Kaustabh Chakraborty,
> >
> > Sorry for late.
> >
> > > -----Original Message-----
> > > From: Kaustabh Chakraborty <kauschluss@disroot.org>
> > > Sent: Friday, September 20, 2024 12:11 AM
> > > To: Inki Dae <inki.dae@samsung.com>; Seung-Woo Kim
> > > <sw0312.kim@samsung.com>; Kyungmin Park <kyungmin.park@samsung.com>;
> David
> > > Airlie <airlied@gmail.com>; Simona Vetter <simona@ffwll.ch>; Krzysztof
> > > Kozlowski <krzk@kernel.org>; Alim Akhtar <alim.akhtar@samsung.com>;
> > > Maarten Lankhorst <maarten.lankhorst@linux.intel.com>; Maxime Ripard
> > > <mripard@kernel.org>; Thomas Zimmermann <tzimmermann@suse.de>; Rob
> Herring
> > > <robh@kernel.org>; Conor Dooley <conor@kernel.org>
> > > Cc: dri-devel@lists.freedesktop.org; linux-arm-
> kernel@lists.infradead.org;
> > > linux-samsung-soc@vger.kernel.org; linux-kernel@vger.kernel.org;
> > > devicetree@vger.kernel.org; Kaustabh Chakraborty
> <kauschluss@disroot.org>
> > > Subject: [PATCH 0/6] Samsung Exynos 7870 DECON driver support
> > >
> > > This patch series aims at adding support for Exynos7870's DECON in the
> > > Exynos7 DECON driver. It introduces a driver data struct so that
> support
> > > for DECON on other SoCs can be added to it in the future.
> > >
> > > It also fixes a few bugs in the driver, such as functions recieving
> bad
> > > pointers.
> > >
> > > Tested on Samsung Galaxy J7 Prime and Samsung Galaxy A2 Core.
> > >
> > > Signed-off-by: Kaustabh Chakraborty <kauschluss@disroot.org>
> > > ---
> > > Kaustabh Chakraborty (6):
> > >       drm/exynos: exynos7_drm_decon: fix uninitialized crtc reference
> in
> > > functions
> > >       drm/exynos: exynos7_drm_decon: fix suspended condition in
> > > decon_commit()
> > >       drm/exynos: exynos7_drm_decon: fix ideal_clk by converting it to
> Hz
> > >       drm/exynos: exynos7_drm_decon: properly clear channels during
> bind
> > >       drm/exynos: exynos7_drm_decon: add driver data and support for
> > > Exynos7870
> > >       dt-bindings: display: samsung,exynos7-decon: add exynos7870
> > > compatible
> >
> > I will apply all except for the two patches below,
> > [PATCH 2/6] drm/exynos: exynos7_drm_decon: fix suspended condition in
> decon_commit()
> > [PATCH 6/6] dt-bindings: display: samsung,exynos7-decon: add exynos7870
> compatible
> 
> Now we have a warning in linux-next that samsung,exynos7870-decon is
> not documented.
> 
> Please apply the binding patch. Or let me know if it missed 6.13 for
> DRM tree and I'll apply it.
> 

Ah... sorry for this. I didn't check the warning. Will apply the binding patch. I was awaiting the submission of DTS.

Thanks,
Inki Dae

> Rob