2018-07-30 19:00:10

by Souptick Joarder

[permalink] [raw]
Subject: [PATCH] drm: Convert drm_atomic_helper_suspend/resume()

convert drm_atomic_helper_suspend/resume() to use
drm_mode_config_helper_suspend/resume().

With this conversion, drm_fbdev_cma_set_suspend_unlocked()
will left with no consumer. So this function can be removed.

Signed-off-by: Souptick Joarder <[email protected]>
Signed-off-by: Ajit Negi <[email protected]>
---
drivers/gpu/drm/arm/hdlcd_drv.c | 26 ++------------------------
drivers/gpu/drm/drm_fb_cma_helper.c | 18 ------------------
drivers/gpu/drm/rcar-du/rcar_du_drv.c | 21 ++-------------------
include/drm/drm_fb_cma_helper.h | 2 --
4 files changed, 4 insertions(+), 63 deletions(-)

diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index feaa8bc..4e617e0 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -427,37 +427,15 @@ static int hdlcd_remove(struct platform_device *pdev)
static int __maybe_unused hdlcd_pm_suspend(struct device *dev)
{
struct drm_device *drm = dev_get_drvdata(dev);
- struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;

- if (!hdlcd)
- return 0;
-
- drm_kms_helper_poll_disable(drm);
- drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 1);
-
- hdlcd->state = drm_atomic_helper_suspend(drm);
- if (IS_ERR(hdlcd->state)) {
- drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
- drm_kms_helper_poll_enable(drm);
- return PTR_ERR(hdlcd->state);
- }
-
- return 0;
+ return drm_mode_config_helper_suspend(drm);
}

static int __maybe_unused hdlcd_pm_resume(struct device *dev)
{
struct drm_device *drm = dev_get_drvdata(dev);
- struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
-
- if (!hdlcd)
- return 0;

- drm_atomic_helper_resume(drm, hdlcd->state);
- drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
- drm_kms_helper_poll_enable(drm);
-
- return 0;
+ return drm_mode_config_helper_resume(drm);
}

static SIMPLE_DEV_PM_OPS(hdlcd_pm_ops, hdlcd_pm_suspend, hdlcd_pm_resume);
diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
index 186d00a..f604a84 100644
--- a/drivers/gpu/drm/drm_fb_cma_helper.c
+++ b/drivers/gpu/drm/drm_fb_cma_helper.c
@@ -529,21 +529,3 @@ void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state)
drm_fb_helper_set_suspend(&fbdev_cma->fb_helper, state);
}
EXPORT_SYMBOL(drm_fbdev_cma_set_suspend);
-
-/**
- * drm_fbdev_cma_set_suspend_unlocked - wrapper around
- * drm_fb_helper_set_suspend_unlocked
- * @fbdev_cma: The drm_fbdev_cma struct, may be NULL
- * @state: desired state, zero to resume, non-zero to suspend
- *
- * Calls drm_fb_helper_set_suspend, which is a wrapper around
- * fb_set_suspend implemented by fbdev core.
- */
-void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
- bool state)
-{
- if (fbdev_cma)
- drm_fb_helper_set_suspend_unlocked(&fbdev_cma->fb_helper,
- state);
-}
-EXPORT_SYMBOL(drm_fbdev_cma_set_suspend_unlocked);
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index 02aee6c..288220f 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -357,32 +357,15 @@ static void rcar_du_lastclose(struct drm_device *dev)
static int rcar_du_pm_suspend(struct device *dev)
{
struct rcar_du_device *rcdu = dev_get_drvdata(dev);
- struct drm_atomic_state *state;

- drm_kms_helper_poll_disable(rcdu->ddev);
- drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, true);
-
- state = drm_atomic_helper_suspend(rcdu->ddev);
- if (IS_ERR(state)) {
- drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
- drm_kms_helper_poll_enable(rcdu->ddev);
- return PTR_ERR(state);
- }
-
- rcdu->suspend_state = state;
-
- return 0;
+ return drm_mode_config_helper_suspend(rcdu->ddev);
}

static int rcar_du_pm_resume(struct device *dev)
{
struct rcar_du_device *rcdu = dev_get_drvdata(dev);

- drm_atomic_helper_resume(rcdu->ddev, rcdu->suspend_state);
- drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
- drm_kms_helper_poll_enable(rcdu->ddev);
-
- return 0;
+ return drm_mode_config_helper_resume(rcdu->ddev);
}
#endif

diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
index d532f88a..15c4569 100644
--- a/include/drm/drm_fb_cma_helper.h
+++ b/include/drm/drm_fb_cma_helper.h
@@ -33,8 +33,6 @@ struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma);
void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state);
-void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
- bool state);

struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
unsigned int plane);
--
1.9.1



2018-07-30 22:15:46

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume()

Hi Souptick,

Thank you for the patch.

On Monday, 30 July 2018 22:01:37 EEST Souptick Joarder wrote:
> convert drm_atomic_helper_suspend/resume() to use
> drm_mode_config_helper_suspend/resume().
>
> With this conversion, drm_fbdev_cma_set_suspend_unlocked()
> will left with no consumer. So this function can be removed.
>
> Signed-off-by: Souptick Joarder <[email protected]>
> Signed-off-by: Ajit Negi <[email protected]>
> ---
> drivers/gpu/drm/arm/hdlcd_drv.c | 26 ++------------------------
> drivers/gpu/drm/drm_fb_cma_helper.c | 18 ------------------
> drivers/gpu/drm/rcar-du/rcar_du_drv.c | 21 ++-------------------
> include/drm/drm_fb_cma_helper.h | 2 --
> 4 files changed, 4 insertions(+), 63 deletions(-)
>
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c
> b/drivers/gpu/drm/arm/hdlcd_drv.c index feaa8bc..4e617e0 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -427,37 +427,15 @@ static int hdlcd_remove(struct platform_device *pdev)
> static int __maybe_unused hdlcd_pm_suspend(struct device *dev)
> {
> struct drm_device *drm = dev_get_drvdata(dev);
> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
>
> - if (!hdlcd)
> - return 0;
> -
> - drm_kms_helper_poll_disable(drm);
> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 1);
> -
> - hdlcd->state = drm_atomic_helper_suspend(drm);
> - if (IS_ERR(hdlcd->state)) {
> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
> - drm_kms_helper_poll_enable(drm);
> - return PTR_ERR(hdlcd->state);
> - }
> -
> - return 0;
> + return drm_mode_config_helper_suspend(drm);
> }
>
> static int __maybe_unused hdlcd_pm_resume(struct device *dev)
> {
> struct drm_device *drm = dev_get_drvdata(dev);
> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
> -
> - if (!hdlcd)
> - return 0;
>
> - drm_atomic_helper_resume(drm, hdlcd->state);
> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
> - drm_kms_helper_poll_enable(drm);
> -
> - return 0;
> + return drm_mode_config_helper_resume(drm);
> }
>
> static SIMPLE_DEV_PM_OPS(hdlcd_pm_ops, hdlcd_pm_suspend, hdlcd_pm_resume);
> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c
> b/drivers/gpu/drm/drm_fb_cma_helper.c index 186d00a..f604a84 100644
> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
> @@ -529,21 +529,3 @@ void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma
> *fbdev_cma, bool state) drm_fb_helper_set_suspend(&fbdev_cma->fb_helper,
> state);
> }
> EXPORT_SYMBOL(drm_fbdev_cma_set_suspend);
> -
> -/**
> - * drm_fbdev_cma_set_suspend_unlocked - wrapper around
> - * drm_fb_helper_set_suspend_unlocked
> - * @fbdev_cma: The drm_fbdev_cma struct, may be NULL
> - * @state: desired state, zero to resume, non-zero to suspend
> - *
> - * Calls drm_fb_helper_set_suspend, which is a wrapper around
> - * fb_set_suspend implemented by fbdev core.
> - */
> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
> - bool state)
> -{
> - if (fbdev_cma)
> - drm_fb_helper_set_suspend_unlocked(&fbdev_cma->fb_helper,
> - state);
> -}
> -EXPORT_SYMBOL(drm_fbdev_cma_set_suspend_unlocked);
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> b/drivers/gpu/drm/rcar-du/rcar_du_drv.c index 02aee6c..288220f 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -357,32 +357,15 @@ static void rcar_du_lastclose(struct drm_device *dev)
> static int rcar_du_pm_suspend(struct device *dev)
> {
> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
> - struct drm_atomic_state *state;
>
> - drm_kms_helper_poll_disable(rcdu->ddev);
> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, true);
> -
> - state = drm_atomic_helper_suspend(rcdu->ddev);
> - if (IS_ERR(state)) {
> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
> - drm_kms_helper_poll_enable(rcdu->ddev);
> - return PTR_ERR(state);
> - }
> -
> - rcdu->suspend_state = state;

If you further remove the suspend_state field from the rcar_du_device
structure, you'll get my

Reviewed-by: Laurent Pinchart <[email protected]>

> -
> - return 0;
> + return drm_mode_config_helper_suspend(rcdu->ddev);
> }
>
> static int rcar_du_pm_resume(struct device *dev)
> {
> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
>
> - drm_atomic_helper_resume(rcdu->ddev, rcdu->suspend_state);
> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
> - drm_kms_helper_poll_enable(rcdu->ddev);
> -
> - return 0;
> + return drm_mode_config_helper_resume(rcdu->ddev);
> }
> #endif
>
> diff --git a/include/drm/drm_fb_cma_helper.h
> b/include/drm/drm_fb_cma_helper.h index d532f88a..15c4569 100644
> --- a/include/drm/drm_fb_cma_helper.h
> +++ b/include/drm/drm_fb_cma_helper.h
> @@ -33,8 +33,6 @@ struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device
> *dev, void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
> void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma); void
> drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state);
> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
> - bool state);
>
> struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer
> *fb, unsigned int plane);

--
Regards,

Laurent Pinchart




2018-07-31 05:56:16

by Souptick Joarder

[permalink] [raw]
Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume()

> If you further remove the suspend_state field from the rcar_du_device
> structure, you'll get my
>
> Reviewed-by: Laurent Pinchart <[email protected]>
>

Sorry, missed it.

>> -
>> - return 0;
>> + return drm_mode_config_helper_suspend(rcdu->ddev);
>> }
>>
>> static int rcar_du_pm_resume(struct device *dev)
>> {
>> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
>>
>> - drm_atomic_helper_resume(rcdu->ddev, rcdu->suspend_state);
>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
>> - drm_kms_helper_poll_enable(rcdu->ddev);
>> -
>> - return 0;
>> + return drm_mode_config_helper_resume(rcdu->ddev);
>> }
>> #endif
>>
>> diff --git a/include/drm/drm_fb_cma_helper.h
>> b/include/drm/drm_fb_cma_helper.h index d532f88a..15c4569 100644
>> --- a/include/drm/drm_fb_cma_helper.h
>> +++ b/include/drm/drm_fb_cma_helper.h
>> @@ -33,8 +33,6 @@ struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device
>> *dev, void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
>> void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma); void
>> drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state);
>> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
>> - bool state);
>>
>> struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer
>> *fb, unsigned int plane);
>
> --
> Regards,
>
> Laurent Pinchart
>
>
>

2018-07-31 10:36:25

by Liviu Dudau

[permalink] [raw]
Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume()

Hi Souptick,

On Tue, Jul 31, 2018 at 12:31:37AM +0530, Souptick Joarder wrote:
> convert drm_atomic_helper_suspend/resume() to use
> drm_mode_config_helper_suspend/resume().
>
> With this conversion, drm_fbdev_cma_set_suspend_unlocked()
> will left with no consumer. So this function can be removed.
>
> Signed-off-by: Souptick Joarder <[email protected]>
> Signed-off-by: Ajit Negi <[email protected]>
> ---
> drivers/gpu/drm/arm/hdlcd_drv.c | 26 ++------------------------
> drivers/gpu/drm/drm_fb_cma_helper.c | 18 ------------------
> drivers/gpu/drm/rcar-du/rcar_du_drv.c | 21 ++-------------------
> include/drm/drm_fb_cma_helper.h | 2 --
> 4 files changed, 4 insertions(+), 63 deletions(-)
>
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> index feaa8bc..4e617e0 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -427,37 +427,15 @@ static int hdlcd_remove(struct platform_device *pdev)
> static int __maybe_unused hdlcd_pm_suspend(struct device *dev)
> {
> struct drm_device *drm = dev_get_drvdata(dev);
> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
>
> - if (!hdlcd)
> - return 0;
> -
> - drm_kms_helper_poll_disable(drm);
> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 1);
> -
> - hdlcd->state = drm_atomic_helper_suspend(drm);
> - if (IS_ERR(hdlcd->state)) {
> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
> - drm_kms_helper_poll_enable(drm);
> - return PTR_ERR(hdlcd->state);
> - }
> -
> - return 0;
> + return drm_mode_config_helper_suspend(drm);
> }
>
> static int __maybe_unused hdlcd_pm_resume(struct device *dev)
> {
> struct drm_device *drm = dev_get_drvdata(dev);
> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
> -
> - if (!hdlcd)
> - return 0;
>
> - drm_atomic_helper_resume(drm, hdlcd->state);
> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
> - drm_kms_helper_poll_enable(drm);
> -
> - return 0;
> + return drm_mode_config_helper_resume(drm);
> }

This patch is similar to the one Noralf Trønnes submitted, and his is
also cleaning up the state variable in hdlcd_drm_private. The patch has
been queued as commit f69d9686e5d9 in git://linux-arm.org/linux-ld.git
for-upstream/hdlcd and I will send a pull request today for it.

Best regards,
Liviu

>
> static SIMPLE_DEV_PM_OPS(hdlcd_pm_ops, hdlcd_pm_suspend, hdlcd_pm_resume);
> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
> index 186d00a..f604a84 100644
> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
> @@ -529,21 +529,3 @@ void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state)
> drm_fb_helper_set_suspend(&fbdev_cma->fb_helper, state);
> }
> EXPORT_SYMBOL(drm_fbdev_cma_set_suspend);
> -
> -/**
> - * drm_fbdev_cma_set_suspend_unlocked - wrapper around
> - * drm_fb_helper_set_suspend_unlocked
> - * @fbdev_cma: The drm_fbdev_cma struct, may be NULL
> - * @state: desired state, zero to resume, non-zero to suspend
> - *
> - * Calls drm_fb_helper_set_suspend, which is a wrapper around
> - * fb_set_suspend implemented by fbdev core.
> - */
> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
> - bool state)
> -{
> - if (fbdev_cma)
> - drm_fb_helper_set_suspend_unlocked(&fbdev_cma->fb_helper,
> - state);
> -}
> -EXPORT_SYMBOL(drm_fbdev_cma_set_suspend_unlocked);
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> index 02aee6c..288220f 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -357,32 +357,15 @@ static void rcar_du_lastclose(struct drm_device *dev)
> static int rcar_du_pm_suspend(struct device *dev)
> {
> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
> - struct drm_atomic_state *state;
>
> - drm_kms_helper_poll_disable(rcdu->ddev);
> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, true);
> -
> - state = drm_atomic_helper_suspend(rcdu->ddev);
> - if (IS_ERR(state)) {
> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
> - drm_kms_helper_poll_enable(rcdu->ddev);
> - return PTR_ERR(state);
> - }
> -
> - rcdu->suspend_state = state;
> -
> - return 0;
> + return drm_mode_config_helper_suspend(rcdu->ddev);
> }
>
> static int rcar_du_pm_resume(struct device *dev)
> {
> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
>
> - drm_atomic_helper_resume(rcdu->ddev, rcdu->suspend_state);
> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
> - drm_kms_helper_poll_enable(rcdu->ddev);
> -
> - return 0;
> + return drm_mode_config_helper_resume(rcdu->ddev);
> }
> #endif
>
> diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
> index d532f88a..15c4569 100644
> --- a/include/drm/drm_fb_cma_helper.h
> +++ b/include/drm/drm_fb_cma_helper.h
> @@ -33,8 +33,6 @@ struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
> void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
> void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma);
> void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state);
> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
> - bool state);
>
> struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
> unsigned int plane);
> --
> 1.9.1
>

--
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯

2018-07-31 18:42:56

by Souptick Joarder

[permalink] [raw]
Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume()

On Tue, Jul 31, 2018 at 4:04 PM, Liviu Dudau <[email protected]> wrote:
> Hi Souptick,
>
> On Tue, Jul 31, 2018 at 12:31:37AM +0530, Souptick Joarder wrote:
>> convert drm_atomic_helper_suspend/resume() to use
>> drm_mode_config_helper_suspend/resume().
>>
>> With this conversion, drm_fbdev_cma_set_suspend_unlocked()
>> will left with no consumer. So this function can be removed.
>>
>> Signed-off-by: Souptick Joarder <[email protected]>
>> Signed-off-by: Ajit Negi <[email protected]>
>> ---
>> drivers/gpu/drm/arm/hdlcd_drv.c | 26 ++------------------------
>> drivers/gpu/drm/drm_fb_cma_helper.c | 18 ------------------
>> drivers/gpu/drm/rcar-du/rcar_du_drv.c | 21 ++-------------------
>> include/drm/drm_fb_cma_helper.h | 2 --
>> 4 files changed, 4 insertions(+), 63 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
>> index feaa8bc..4e617e0 100644
>> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
>> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
>> @@ -427,37 +427,15 @@ static int hdlcd_remove(struct platform_device *pdev)
>> static int __maybe_unused hdlcd_pm_suspend(struct device *dev)
>> {
>> struct drm_device *drm = dev_get_drvdata(dev);
>> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
>>
>> - if (!hdlcd)
>> - return 0;
>> -
>> - drm_kms_helper_poll_disable(drm);
>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 1);
>> -
>> - hdlcd->state = drm_atomic_helper_suspend(drm);
>> - if (IS_ERR(hdlcd->state)) {
>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
>> - drm_kms_helper_poll_enable(drm);
>> - return PTR_ERR(hdlcd->state);
>> - }
>> -
>> - return 0;
>> + return drm_mode_config_helper_suspend(drm);
>> }
>>
>> static int __maybe_unused hdlcd_pm_resume(struct device *dev)
>> {
>> struct drm_device *drm = dev_get_drvdata(dev);
>> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
>> -
>> - if (!hdlcd)
>> - return 0;
>>
>> - drm_atomic_helper_resume(drm, hdlcd->state);
>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
>> - drm_kms_helper_poll_enable(drm);
>> -
>> - return 0;
>> + return drm_mode_config_helper_resume(drm);
>> }
>
> This patch is similar to the one Noralf Trønnes submitted, and his is
> also cleaning up the state variable in hdlcd_drm_private. The patch has
> been queued as commit f69d9686e5d9 in git://linux-arm.org/linux-ld.git
> for-upstream/hdlcd and I will send a pull request today for it.
>
> Best regards,
> Liviu

unable to clone this repository.
can you please post the patchwork link ?

>
>>
>> static SIMPLE_DEV_PM_OPS(hdlcd_pm_ops, hdlcd_pm_suspend, hdlcd_pm_resume);
>> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
>> index 186d00a..f604a84 100644
>> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
>> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
>> @@ -529,21 +529,3 @@ void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state)
>> drm_fb_helper_set_suspend(&fbdev_cma->fb_helper, state);
>> }
>> EXPORT_SYMBOL(drm_fbdev_cma_set_suspend);
>> -
>> -/**
>> - * drm_fbdev_cma_set_suspend_unlocked - wrapper around
>> - * drm_fb_helper_set_suspend_unlocked
>> - * @fbdev_cma: The drm_fbdev_cma struct, may be NULL
>> - * @state: desired state, zero to resume, non-zero to suspend
>> - *
>> - * Calls drm_fb_helper_set_suspend, which is a wrapper around
>> - * fb_set_suspend implemented by fbdev core.
>> - */
>> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
>> - bool state)
>> -{
>> - if (fbdev_cma)
>> - drm_fb_helper_set_suspend_unlocked(&fbdev_cma->fb_helper,
>> - state);
>> -}
>> -EXPORT_SYMBOL(drm_fbdev_cma_set_suspend_unlocked);
>> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
>> index 02aee6c..288220f 100644
>> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
>> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
>> @@ -357,32 +357,15 @@ static void rcar_du_lastclose(struct drm_device *dev)
>> static int rcar_du_pm_suspend(struct device *dev)
>> {
>> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
>> - struct drm_atomic_state *state;
>>
>> - drm_kms_helper_poll_disable(rcdu->ddev);
>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, true);
>> -
>> - state = drm_atomic_helper_suspend(rcdu->ddev);
>> - if (IS_ERR(state)) {
>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
>> - drm_kms_helper_poll_enable(rcdu->ddev);
>> - return PTR_ERR(state);
>> - }
>> -
>> - rcdu->suspend_state = state;
>> -
>> - return 0;
>> + return drm_mode_config_helper_suspend(rcdu->ddev);
>> }
>>
>> static int rcar_du_pm_resume(struct device *dev)
>> {
>> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
>>
>> - drm_atomic_helper_resume(rcdu->ddev, rcdu->suspend_state);
>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
>> - drm_kms_helper_poll_enable(rcdu->ddev);
>> -
>> - return 0;
>> + return drm_mode_config_helper_resume(rcdu->ddev);
>> }
>> #endif
>>
>> diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
>> index d532f88a..15c4569 100644
>> --- a/include/drm/drm_fb_cma_helper.h
>> +++ b/include/drm/drm_fb_cma_helper.h
>> @@ -33,8 +33,6 @@ struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
>> void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
>> void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma);
>> void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state);
>> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
>> - bool state);
>>
>> struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
>> unsigned int plane);
>> --
>> 1.9.1
>>
>
> --
> ====================
> | I would like to |
> | fix the world, |
> | but they're not |
> | giving me the |
> \ source code! /
> ---------------
> ¯\_(ツ)_/¯

2018-08-02 09:57:13

by Souptick Joarder

[permalink] [raw]
Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume()

On Wed, Aug 1, 2018 at 12:11 AM, Souptick Joarder <[email protected]> wrote:
> On Tue, Jul 31, 2018 at 4:04 PM, Liviu Dudau <[email protected]> wrote:
>> Hi Souptick,
>>
>> On Tue, Jul 31, 2018 at 12:31:37AM +0530, Souptick Joarder wrote:
>>> convert drm_atomic_helper_suspend/resume() to use
>>> drm_mode_config_helper_suspend/resume().
>>>
>>> With this conversion, drm_fbdev_cma_set_suspend_unlocked()
>>> will left with no consumer. So this function can be removed.
>>>
>>> Signed-off-by: Souptick Joarder <[email protected]>
>>> Signed-off-by: Ajit Negi <[email protected]>
>>> ---
>>> drivers/gpu/drm/arm/hdlcd_drv.c | 26 ++------------------------
>>> drivers/gpu/drm/drm_fb_cma_helper.c | 18 ------------------
>>> drivers/gpu/drm/rcar-du/rcar_du_drv.c | 21 ++-------------------
>>> include/drm/drm_fb_cma_helper.h | 2 --
>>> 4 files changed, 4 insertions(+), 63 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
>>> index feaa8bc..4e617e0 100644
>>> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
>>> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
>>> @@ -427,37 +427,15 @@ static int hdlcd_remove(struct platform_device *pdev)
>>> static int __maybe_unused hdlcd_pm_suspend(struct device *dev)
>>> {
>>> struct drm_device *drm = dev_get_drvdata(dev);
>>> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
>>>
>>> - if (!hdlcd)
>>> - return 0;
>>> -
>>> - drm_kms_helper_poll_disable(drm);
>>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 1);
>>> -
>>> - hdlcd->state = drm_atomic_helper_suspend(drm);
>>> - if (IS_ERR(hdlcd->state)) {
>>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
>>> - drm_kms_helper_poll_enable(drm);
>>> - return PTR_ERR(hdlcd->state);
>>> - }
>>> -
>>> - return 0;
>>> + return drm_mode_config_helper_suspend(drm);
>>> }
>>>
>>> static int __maybe_unused hdlcd_pm_resume(struct device *dev)
>>> {
>>> struct drm_device *drm = dev_get_drvdata(dev);
>>> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
>>> -
>>> - if (!hdlcd)
>>> - return 0;
>>>
>>> - drm_atomic_helper_resume(drm, hdlcd->state);
>>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
>>> - drm_kms_helper_poll_enable(drm);
>>> -
>>> - return 0;
>>> + return drm_mode_config_helper_resume(drm);
>>> }
>>
>> This patch is similar to the one Noralf Trønnes submitted, and his is
>> also cleaning up the state variable in hdlcd_drm_private. The patch has
>> been queued as commit f69d9686e5d9 in git://linux-arm.org/linux-ld.git
>> for-upstream/hdlcd and I will send a pull request today for it.
>>
>> Best regards,
>> Liviu
>
> unable to clone this repository.
> can you please post the patchwork link ?

Liviu, is commit f69d9686e5d9 in
git://linux-arm.org/linux-ld.gitfor-upstream/hdlcd
contains only changes in drivers/gpu/drm/arm/hdlcd_drv.c driver ??

>
>>
>>>
>>> static SIMPLE_DEV_PM_OPS(hdlcd_pm_ops, hdlcd_pm_suspend, hdlcd_pm_resume);
>>> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
>>> index 186d00a..f604a84 100644
>>> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
>>> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
>>> @@ -529,21 +529,3 @@ void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state)
>>> drm_fb_helper_set_suspend(&fbdev_cma->fb_helper, state);
>>> }
>>> EXPORT_SYMBOL(drm_fbdev_cma_set_suspend);
>>> -
>>> -/**
>>> - * drm_fbdev_cma_set_suspend_unlocked - wrapper around
>>> - * drm_fb_helper_set_suspend_unlocked
>>> - * @fbdev_cma: The drm_fbdev_cma struct, may be NULL
>>> - * @state: desired state, zero to resume, non-zero to suspend
>>> - *
>>> - * Calls drm_fb_helper_set_suspend, which is a wrapper around
>>> - * fb_set_suspend implemented by fbdev core.
>>> - */
>>> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
>>> - bool state)
>>> -{
>>> - if (fbdev_cma)
>>> - drm_fb_helper_set_suspend_unlocked(&fbdev_cma->fb_helper,
>>> - state);
>>> -}
>>> -EXPORT_SYMBOL(drm_fbdev_cma_set_suspend_unlocked);
>>> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
>>> index 02aee6c..288220f 100644
>>> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
>>> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
>>> @@ -357,32 +357,15 @@ static void rcar_du_lastclose(struct drm_device *dev)
>>> static int rcar_du_pm_suspend(struct device *dev)
>>> {
>>> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
>>> - struct drm_atomic_state *state;
>>>
>>> - drm_kms_helper_poll_disable(rcdu->ddev);
>>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, true);
>>> -
>>> - state = drm_atomic_helper_suspend(rcdu->ddev);
>>> - if (IS_ERR(state)) {
>>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
>>> - drm_kms_helper_poll_enable(rcdu->ddev);
>>> - return PTR_ERR(state);
>>> - }
>>> -
>>> - rcdu->suspend_state = state;
>>> -
>>> - return 0;
>>> + return drm_mode_config_helper_suspend(rcdu->ddev);
>>> }
>>>
>>> static int rcar_du_pm_resume(struct device *dev)
>>> {
>>> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
>>>
>>> - drm_atomic_helper_resume(rcdu->ddev, rcdu->suspend_state);
>>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
>>> - drm_kms_helper_poll_enable(rcdu->ddev);
>>> -
>>> - return 0;
>>> + return drm_mode_config_helper_resume(rcdu->ddev);
>>> }
>>> #endif
>>>
>>> diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
>>> index d532f88a..15c4569 100644
>>> --- a/include/drm/drm_fb_cma_helper.h
>>> +++ b/include/drm/drm_fb_cma_helper.h
>>> @@ -33,8 +33,6 @@ struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
>>> void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
>>> void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma);
>>> void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state);
>>> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
>>> - bool state);
>>>
>>> struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
>>> unsigned int plane);
>>> --
>>> 1.9.1
>>>
>>
>> --
>> ====================
>> | I would like to |
>> | fix the world, |
>> | but they're not |
>> | giving me the |
>> \ source code! /
>> ---------------
>> ¯\_(ツ)_/¯

2018-08-13 17:36:38

by Liviu Dudau

[permalink] [raw]
Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume()

On Thu, Aug 02, 2018 at 03:25:24PM +0530, Souptick Joarder wrote:
> On Wed, Aug 1, 2018 at 12:11 AM, Souptick Joarder <[email protected]> wrote:
> > On Tue, Jul 31, 2018 at 4:04 PM, Liviu Dudau <[email protected]> wrote:
> >> Hi Souptick,
> >>
> >> On Tue, Jul 31, 2018 at 12:31:37AM +0530, Souptick Joarder wrote:
> >>> convert drm_atomic_helper_suspend/resume() to use
> >>> drm_mode_config_helper_suspend/resume().
> >>>
> >>> With this conversion, drm_fbdev_cma_set_suspend_unlocked()
> >>> will left with no consumer. So this function can be removed.
> >>>
> >>> Signed-off-by: Souptick Joarder <[email protected]>
> >>> Signed-off-by: Ajit Negi <[email protected]>
> >>> ---
> >>> drivers/gpu/drm/arm/hdlcd_drv.c | 26 ++------------------------
> >>> drivers/gpu/drm/drm_fb_cma_helper.c | 18 ------------------
> >>> drivers/gpu/drm/rcar-du/rcar_du_drv.c | 21 ++-------------------
> >>> include/drm/drm_fb_cma_helper.h | 2 --
> >>> 4 files changed, 4 insertions(+), 63 deletions(-)
> >>>
> >>> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
> >>> index feaa8bc..4e617e0 100644
> >>> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> >>> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> >>> @@ -427,37 +427,15 @@ static int hdlcd_remove(struct platform_device *pdev)
> >>> static int __maybe_unused hdlcd_pm_suspend(struct device *dev)
> >>> {
> >>> struct drm_device *drm = dev_get_drvdata(dev);
> >>> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
> >>>
> >>> - if (!hdlcd)
> >>> - return 0;
> >>> -
> >>> - drm_kms_helper_poll_disable(drm);
> >>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 1);
> >>> -
> >>> - hdlcd->state = drm_atomic_helper_suspend(drm);
> >>> - if (IS_ERR(hdlcd->state)) {
> >>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
> >>> - drm_kms_helper_poll_enable(drm);
> >>> - return PTR_ERR(hdlcd->state);
> >>> - }
> >>> -
> >>> - return 0;
> >>> + return drm_mode_config_helper_suspend(drm);
> >>> }
> >>>
> >>> static int __maybe_unused hdlcd_pm_resume(struct device *dev)
> >>> {
> >>> struct drm_device *drm = dev_get_drvdata(dev);
> >>> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
> >>> -
> >>> - if (!hdlcd)
> >>> - return 0;
> >>>
> >>> - drm_atomic_helper_resume(drm, hdlcd->state);
> >>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
> >>> - drm_kms_helper_poll_enable(drm);
> >>> -
> >>> - return 0;
> >>> + return drm_mode_config_helper_resume(drm);
> >>> }
> >>
> >> This patch is similar to the one Noralf Trønnes submitted, and his is
> >> also cleaning up the state variable in hdlcd_drm_private. The patch has
> >> been queued as commit f69d9686e5d9 in git://linux-arm.org/linux-ld.git
> >> for-upstream/hdlcd and I will send a pull request today for it.
> >>
> >> Best regards,
> >> Liviu
> >
> > unable to clone this repository.
> > can you please post the patchwork link ?

Sorry, I was on holiday until today.

>
> Liviu, is commit f69d9686e5d9 in
> git://linux-arm.org/linux-ld.gitfor-upstream/hdlcd
> contains only changes in drivers/gpu/drm/arm/hdlcd_drv.c driver ??

That's right, that tree only deals with HDLCD changes. The rest of the
patch is up to you to upstream into drm-misc.

Best regards,
Liviu


>
> >
> >>
> >>>
> >>> static SIMPLE_DEV_PM_OPS(hdlcd_pm_ops, hdlcd_pm_suspend, hdlcd_pm_resume);
> >>> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
> >>> index 186d00a..f604a84 100644
> >>> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
> >>> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
> >>> @@ -529,21 +529,3 @@ void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state)
> >>> drm_fb_helper_set_suspend(&fbdev_cma->fb_helper, state);
> >>> }
> >>> EXPORT_SYMBOL(drm_fbdev_cma_set_suspend);
> >>> -
> >>> -/**
> >>> - * drm_fbdev_cma_set_suspend_unlocked - wrapper around
> >>> - * drm_fb_helper_set_suspend_unlocked
> >>> - * @fbdev_cma: The drm_fbdev_cma struct, may be NULL
> >>> - * @state: desired state, zero to resume, non-zero to suspend
> >>> - *
> >>> - * Calls drm_fb_helper_set_suspend, which is a wrapper around
> >>> - * fb_set_suspend implemented by fbdev core.
> >>> - */
> >>> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
> >>> - bool state)
> >>> -{
> >>> - if (fbdev_cma)
> >>> - drm_fb_helper_set_suspend_unlocked(&fbdev_cma->fb_helper,
> >>> - state);
> >>> -}
> >>> -EXPORT_SYMBOL(drm_fbdev_cma_set_suspend_unlocked);
> >>> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> >>> index 02aee6c..288220f 100644
> >>> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> >>> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> >>> @@ -357,32 +357,15 @@ static void rcar_du_lastclose(struct drm_device *dev)
> >>> static int rcar_du_pm_suspend(struct device *dev)
> >>> {
> >>> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
> >>> - struct drm_atomic_state *state;
> >>>
> >>> - drm_kms_helper_poll_disable(rcdu->ddev);
> >>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, true);
> >>> -
> >>> - state = drm_atomic_helper_suspend(rcdu->ddev);
> >>> - if (IS_ERR(state)) {
> >>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
> >>> - drm_kms_helper_poll_enable(rcdu->ddev);
> >>> - return PTR_ERR(state);
> >>> - }
> >>> -
> >>> - rcdu->suspend_state = state;
> >>> -
> >>> - return 0;
> >>> + return drm_mode_config_helper_suspend(rcdu->ddev);
> >>> }
> >>>
> >>> static int rcar_du_pm_resume(struct device *dev)
> >>> {
> >>> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
> >>>
> >>> - drm_atomic_helper_resume(rcdu->ddev, rcdu->suspend_state);
> >>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
> >>> - drm_kms_helper_poll_enable(rcdu->ddev);
> >>> -
> >>> - return 0;
> >>> + return drm_mode_config_helper_resume(rcdu->ddev);
> >>> }
> >>> #endif
> >>>
> >>> diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
> >>> index d532f88a..15c4569 100644
> >>> --- a/include/drm/drm_fb_cma_helper.h
> >>> +++ b/include/drm/drm_fb_cma_helper.h
> >>> @@ -33,8 +33,6 @@ struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
> >>> void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
> >>> void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma);
> >>> void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state);
> >>> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
> >>> - bool state);
> >>>
> >>> struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
> >>> unsigned int plane);
> >>> --
> >>> 1.9.1
> >>>
> >>
> >> --
> >> ====================
> >> | I would like to |
> >> | fix the world, |
> >> | but they're not |
> >> | giving me the |
> >> \ source code! /
> >> ---------------
> >> ¯\_(ツ)_/¯

--
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯

2018-08-13 18:52:54

by Souptick Joarder

[permalink] [raw]
Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume()

Hi Laurent,

On Mon, Aug 13, 2018 at 10:46 PM, Liviu Dudau <[email protected]> wrote:
> On Thu, Aug 02, 2018 at 03:25:24PM +0530, Souptick Joarder wrote:
>> On Wed, Aug 1, 2018 at 12:11 AM, Souptick Joarder <[email protected]> wrote:
>> > On Tue, Jul 31, 2018 at 4:04 PM, Liviu Dudau <[email protected]> wrote:
>> >> Hi Souptick,
>> >>
>> >> On Tue, Jul 31, 2018 at 12:31:37AM +0530, Souptick Joarder wrote:
>> >>> convert drm_atomic_helper_suspend/resume() to use
>> >>> drm_mode_config_helper_suspend/resume().
>> >>>
>> >>> With this conversion, drm_fbdev_cma_set_suspend_unlocked()
>> >>> will left with no consumer. So this function can be removed.
>> >>>
>> >>> Signed-off-by: Souptick Joarder <[email protected]>
>> >>> Signed-off-by: Ajit Negi <[email protected]>
>> >>> ---
>> >>> drivers/gpu/drm/arm/hdlcd_drv.c | 26 ++------------------------
>> >>> drivers/gpu/drm/drm_fb_cma_helper.c | 18 ------------------
>> >>> drivers/gpu/drm/rcar-du/rcar_du_drv.c | 21 ++-------------------
>> >>> include/drm/drm_fb_cma_helper.h | 2 --
>> >>> 4 files changed, 4 insertions(+), 63 deletions(-)
>> >>>
>> >>> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
>> >>> index feaa8bc..4e617e0 100644
>> >>> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
>> >>> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
>> >>> @@ -427,37 +427,15 @@ static int hdlcd_remove(struct platform_device *pdev)
>> >>> static int __maybe_unused hdlcd_pm_suspend(struct device *dev)
>> >>> {
>> >>> struct drm_device *drm = dev_get_drvdata(dev);
>> >>> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
>> >>>
>> >>> - if (!hdlcd)
>> >>> - return 0;
>> >>> -
>> >>> - drm_kms_helper_poll_disable(drm);
>> >>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 1);
>> >>> -
>> >>> - hdlcd->state = drm_atomic_helper_suspend(drm);
>> >>> - if (IS_ERR(hdlcd->state)) {
>> >>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
>> >>> - drm_kms_helper_poll_enable(drm);
>> >>> - return PTR_ERR(hdlcd->state);
>> >>> - }
>> >>> -
>> >>> - return 0;
>> >>> + return drm_mode_config_helper_suspend(drm);
>> >>> }
>> >>>
>> >>> static int __maybe_unused hdlcd_pm_resume(struct device *dev)
>> >>> {
>> >>> struct drm_device *drm = dev_get_drvdata(dev);
>> >>> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private : NULL;
>> >>> -
>> >>> - if (!hdlcd)
>> >>> - return 0;
>> >>>
>> >>> - drm_atomic_helper_resume(drm, hdlcd->state);
>> >>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
>> >>> - drm_kms_helper_poll_enable(drm);
>> >>> -
>> >>> - return 0;
>> >>> + return drm_mode_config_helper_resume(drm);
>> >>> }
>> >>
>> >> This patch is similar to the one Noralf Trønnes submitted, and his is
>> >> also cleaning up the state variable in hdlcd_drm_private. The patch has
>> >> been queued as commit f69d9686e5d9 in git://linux-arm.org/linux-ld.git
>> >> for-upstream/hdlcd and I will send a pull request today for it.
>> >>
>> >> Best regards,
>> >> Liviu
>> >
>> > unable to clone this repository.
>> > can you please post the patchwork link ?
>
> Sorry, I was on holiday until today.
>
>>
>> Liviu, is commit f69d9686e5d9 in
>> git://linux-arm.org/linux-ld.gitfor-upstream/hdlcd
>> contains only changes in drivers/gpu/drm/arm/hdlcd_drv.c driver ??
>
> That's right, that tree only deals with HDLCD changes. The rest of the
> patch is up to you to upstream into drm-misc.
>
> Best regards,
> Liviu

As Liviu mentioned, drivers/gpu/drm/arm/hdlcd_drv.c is only changed,
so we left with drivers/gpu/drm/rcar-du/rcar_du_drv.c and remove
drm_fbdev_cma_set_suspend_unlocked().

Would you like to see both rcar_du driver change and removing
drm_fbdev_cma_set_suspend_unlocked() in a single commit ??
or 2 different commit ?

>
>>
>> >
>> >>
>> >>>
>> >>> static SIMPLE_DEV_PM_OPS(hdlcd_pm_ops, hdlcd_pm_suspend, hdlcd_pm_resume);
>> >>> diff --git a/drivers/gpu/drm/drm_fb_cma_helper.c b/drivers/gpu/drm/drm_fb_cma_helper.c
>> >>> index 186d00a..f604a84 100644
>> >>> --- a/drivers/gpu/drm/drm_fb_cma_helper.c
>> >>> +++ b/drivers/gpu/drm/drm_fb_cma_helper.c
>> >>> @@ -529,21 +529,3 @@ void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state)
>> >>> drm_fb_helper_set_suspend(&fbdev_cma->fb_helper, state);
>> >>> }
>> >>> EXPORT_SYMBOL(drm_fbdev_cma_set_suspend);
>> >>> -
>> >>> -/**
>> >>> - * drm_fbdev_cma_set_suspend_unlocked - wrapper around
>> >>> - * drm_fb_helper_set_suspend_unlocked
>> >>> - * @fbdev_cma: The drm_fbdev_cma struct, may be NULL
>> >>> - * @state: desired state, zero to resume, non-zero to suspend
>> >>> - *
>> >>> - * Calls drm_fb_helper_set_suspend, which is a wrapper around
>> >>> - * fb_set_suspend implemented by fbdev core.
>> >>> - */
>> >>> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
>> >>> - bool state)
>> >>> -{
>> >>> - if (fbdev_cma)
>> >>> - drm_fb_helper_set_suspend_unlocked(&fbdev_cma->fb_helper,
>> >>> - state);
>> >>> -}
>> >>> -EXPORT_SYMBOL(drm_fbdev_cma_set_suspend_unlocked);
>> >>> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
>> >>> index 02aee6c..288220f 100644
>> >>> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
>> >>> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
>> >>> @@ -357,32 +357,15 @@ static void rcar_du_lastclose(struct drm_device *dev)
>> >>> static int rcar_du_pm_suspend(struct device *dev)
>> >>> {
>> >>> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
>> >>> - struct drm_atomic_state *state;
>> >>>
>> >>> - drm_kms_helper_poll_disable(rcdu->ddev);
>> >>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, true);
>> >>> -
>> >>> - state = drm_atomic_helper_suspend(rcdu->ddev);
>> >>> - if (IS_ERR(state)) {
>> >>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
>> >>> - drm_kms_helper_poll_enable(rcdu->ddev);
>> >>> - return PTR_ERR(state);
>> >>> - }
>> >>> -
>> >>> - rcdu->suspend_state = state;
>> >>> -
>> >>> - return 0;
>> >>> + return drm_mode_config_helper_suspend(rcdu->ddev);
>> >>> }
>> >>>
>> >>> static int rcar_du_pm_resume(struct device *dev)
>> >>> {
>> >>> struct rcar_du_device *rcdu = dev_get_drvdata(dev);
>> >>>
>> >>> - drm_atomic_helper_resume(rcdu->ddev, rcdu->suspend_state);
>> >>> - drm_fbdev_cma_set_suspend_unlocked(rcdu->fbdev, false);
>> >>> - drm_kms_helper_poll_enable(rcdu->ddev);
>> >>> -
>> >>> - return 0;
>> >>> + return drm_mode_config_helper_resume(rcdu->ddev);
>> >>> }
>> >>> #endif
>> >>>
>> >>> diff --git a/include/drm/drm_fb_cma_helper.h b/include/drm/drm_fb_cma_helper.h
>> >>> index d532f88a..15c4569 100644
>> >>> --- a/include/drm/drm_fb_cma_helper.h
>> >>> +++ b/include/drm/drm_fb_cma_helper.h
>> >>> @@ -33,8 +33,6 @@ struct drm_fbdev_cma *drm_fbdev_cma_init(struct drm_device *dev,
>> >>> void drm_fbdev_cma_restore_mode(struct drm_fbdev_cma *fbdev_cma);
>> >>> void drm_fbdev_cma_hotplug_event(struct drm_fbdev_cma *fbdev_cma);
>> >>> void drm_fbdev_cma_set_suspend(struct drm_fbdev_cma *fbdev_cma, bool state);
>> >>> -void drm_fbdev_cma_set_suspend_unlocked(struct drm_fbdev_cma *fbdev_cma,
>> >>> - bool state);
>> >>>
>> >>> struct drm_gem_cma_object *drm_fb_cma_get_gem_obj(struct drm_framebuffer *fb,
>> >>> unsigned int plane);
>> >>> --
>> >>> 1.9.1
>> >>>
>> >>
>> >> --
>> >> ====================
>> >> | I would like to |
>> >> | fix the world, |
>> >> | but they're not |
>> >> | giving me the |
>> >> \ source code! /
>> >> ---------------
>> >> ¯\_(ツ)_/¯
>
> --
> ====================
> | I would like to |
> | fix the world, |
> | but they're not |
> | giving me the |
> \ source code! /
> ---------------
> ¯\_(ツ)_/¯

2018-08-13 20:31:11

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume()

Hi Souptick,

On Monday, 13 August 2018 21:51:31 EEST Souptick Joarder wrote:
> On Mon, Aug 13, 2018 at 10:46 PM, Liviu Dudau <[email protected]> wrote:
> > On Thu, Aug 02, 2018 at 03:25:24PM +0530, Souptick Joarder wrote:
> >> On Wed, Aug 1, 2018 at 12:11 AM, Souptick Joarder wrote:
> >>> On Tue, Jul 31, 2018 at 4:04 PM, Liviu Dudau wrote:
> >>>> On Tue, Jul 31, 2018 at 12:31:37AM +0530, Souptick Joarder wrote:
> >>>>> convert drm_atomic_helper_suspend/resume() to use
> >>>>> drm_mode_config_helper_suspend/resume().
> >>>>>
> >>>>> With this conversion, drm_fbdev_cma_set_suspend_unlocked()
> >>>>> will left with no consumer. So this function can be removed.
> >>>>>
> >>>>> Signed-off-by: Souptick Joarder <[email protected]>
> >>>>> Signed-off-by: Ajit Negi <[email protected]>
> >>>>> ---
> >>>>>
> >>>>> drivers/gpu/drm/arm/hdlcd_drv.c | 26 ++------------------------
> >>>>> drivers/gpu/drm/drm_fb_cma_helper.c | 18 ------------------
> >>>>> drivers/gpu/drm/rcar-du/rcar_du_drv.c | 21 ++-------------------
> >>>>> include/drm/drm_fb_cma_helper.h | 2 --
> >>>>> 4 files changed, 4 insertions(+), 63 deletions(-)
> >>>>>
> >>>>> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c
> >>>>> b/drivers/gpu/drm/arm/hdlcd_drv.c index feaa8bc..4e617e0 100644
> >>>>> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> >>>>> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> >>>>> @@ -427,37 +427,15 @@ static int hdlcd_remove(struct platform_device
> >>>>> *pdev)
> >>>>> static int __maybe_unused hdlcd_pm_suspend(struct device *dev)
> >>>>> {
> >>>>> struct drm_device *drm = dev_get_drvdata(dev);
> >>>>> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private :
> >>>>> NULL;
> >>>>>
> >>>>> - if (!hdlcd)
> >>>>> - return 0;
> >>>>> -
> >>>>> - drm_kms_helper_poll_disable(drm);
> >>>>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 1);
> >>>>> -
> >>>>> - hdlcd->state = drm_atomic_helper_suspend(drm);
> >>>>> - if (IS_ERR(hdlcd->state)) {
> >>>>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
> >>>>> - drm_kms_helper_poll_enable(drm);
> >>>>> - return PTR_ERR(hdlcd->state);
> >>>>> - }
> >>>>> -
> >>>>> - return 0;
> >>>>> + return drm_mode_config_helper_suspend(drm);
> >>>>> }
> >>>>>
> >>>>> static int __maybe_unused hdlcd_pm_resume(struct device *dev)
> >>>>> {
> >>>>> struct drm_device *drm = dev_get_drvdata(dev);
> >>>>> - struct hdlcd_drm_private *hdlcd = drm ? drm->dev_private :
> >>>>> NULL;
> >>>>> -
> >>>>> - if (!hdlcd)
> >>>>> - return 0;
> >>>>>
> >>>>> - drm_atomic_helper_resume(drm, hdlcd->state);
> >>>>> - drm_fbdev_cma_set_suspend_unlocked(hdlcd->fbdev, 0);
> >>>>> - drm_kms_helper_poll_enable(drm);
> >>>>> -
> >>>>> - return 0;
> >>>>> + return drm_mode_config_helper_resume(drm);
> >>>>> }
> >>>>
> >>>> This patch is similar to the one Noralf Tr?nnes submitted, and his is
> >>>> also cleaning up the state variable in hdlcd_drm_private. The patch
> >>>> has been queued as commit f69d9686e5d9 in git://linux-arm.org/
> >>>> linux-ld.git for-upstream/hdlcd and I will send a pull request today
> >>>> for it.
> >>>
> >>> unable to clone this repository.
> >>> can you please post the patchwork link ?
> >
> > Sorry, I was on holiday until today.
> >
> >> Liviu, is commit f69d9686e5d9 in
> >> git://linux-arm.org/linux-ld.gitfor-upstream/hdlcd
> >> contains only changes in drivers/gpu/drm/arm/hdlcd_drv.c driver ??
> >
> > That's right, that tree only deals with HDLCD changes. The rest of the
> > patch is up to you to upstream into drm-misc.
>
> As Liviu mentioned, drivers/gpu/drm/arm/hdlcd_drv.c is only changed,
> so we left with drivers/gpu/drm/rcar-du/rcar_du_drv.c and remove
> drm_fbdev_cma_set_suspend_unlocked().
>
> Would you like to see both rcar_du driver change and removing
> drm_fbdev_cma_set_suspend_unlocked() in a single commit ??
> or 2 different commit ?

I have a slight preference for two patches, but I'm fine with either. If you
decide to go for two patches, please make sure they get upstreamed at the same
time.

Thanks for handling this.

[snip]

--
Regards,

Laurent Pinchart