diff mbox series

drm: Convert drm_atomic_helper_suspend/resume()

Message ID 20180730190137.GA25420@jordon-HP-15-Notebook-PC (mailing list archive)
State New, archived
Headers show
Series drm: Convert drm_atomic_helper_suspend/resume() | expand

Commit Message

Souptick Joarder July 30, 2018, 7:01 p.m. UTC
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 <jrdr.linux@gmail.com>
Signed-off-by: Ajit Negi <ajitn.linux@gmail.com>
---
 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(-)

Comments

Liviu Dudau July 31, 2018, 10:34 a.m. UTC | #1
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 <jrdr.linux@gmail.com>
> Signed-off-by: Ajit Negi <ajitn.linux@gmail.com>
> ---
>  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
>
Souptick Joarder July 31, 2018, 6:41 p.m. UTC | #2
On Tue, Jul 31, 2018 at 4:04 PM, Liviu Dudau <liviu.dudau@arm.com> 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 <jrdr.linux@gmail.com>
>> Signed-off-by: Ajit Negi <ajitn.linux@gmail.com>
>> ---
>>  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!  /
>   ---------------
>     ¯\_(ツ)_/¯
Souptick Joarder Aug. 2, 2018, 9:55 a.m. UTC | #3
On Wed, Aug 1, 2018 at 12:11 AM, Souptick Joarder <jrdr.linux@gmail.com> wrote:
> On Tue, Jul 31, 2018 at 4:04 PM, Liviu Dudau <liviu.dudau@arm.com> 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 <jrdr.linux@gmail.com>
>>> Signed-off-by: Ajit Negi <ajitn.linux@gmail.com>
>>> ---
>>>  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!  /
>>   ---------------
>>     ¯\_(ツ)_/¯
Liviu Dudau Aug. 13, 2018, 5:16 p.m. UTC | #4
On Thu, Aug 02, 2018 at 03:25:24PM +0530, Souptick Joarder wrote:
> On Wed, Aug 1, 2018 at 12:11 AM, Souptick Joarder <jrdr.linux@gmail.com> wrote:
> > On Tue, Jul 31, 2018 at 4:04 PM, Liviu Dudau <liviu.dudau@arm.com> 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 <jrdr.linux@gmail.com>
> >>> Signed-off-by: Ajit Negi <ajitn.linux@gmail.com>
> >>> ---
> >>>  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!  /
> >>   ---------------
> >>     ¯\_(ツ)_/¯
Souptick Joarder Aug. 13, 2018, 6:51 p.m. UTC | #5
Hi Laurent,

On Mon, Aug 13, 2018 at 10:46 PM, Liviu Dudau <liviu.dudau@arm.com> 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 <jrdr.linux@gmail.com> wrote:
>> > On Tue, Jul 31, 2018 at 4:04 PM, Liviu Dudau <liviu.dudau@arm.com> 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 <jrdr.linux@gmail.com>
>> >>> Signed-off-by: Ajit Negi <ajitn.linux@gmail.com>
>> >>> ---
>> >>>  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!  /
>   ---------------
>     ¯\_(ツ)_/¯
Laurent Pinchart Aug. 13, 2018, 7:58 p.m. UTC | #6
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 <liviu.dudau@arm.com> 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 <jrdr.linux@gmail.com>
> >>>>> Signed-off-by: Ajit Negi <ajitn.linux@gmail.com>
> >>>>> ---
> >>>>> 
> >>>>>  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]
diff mbox series

Patch

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);