All of lore.kernel.org
 help / color / mirror / Atom feed
From: Liviu Dudau <liviu.dudau@arm.com>
To: Souptick Joarder <jrdr.linux@gmail.com>
Cc: Brian Starkey <brian.starkey@arm.com>,
	malidp@foss.arm.com, airlied@linux.ie,
	Gustavo Padovan <gustavo@padovan.org>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Sean Paul <seanpaul@chromium.org>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Ajit Linux <ajitn.linux@gmail.com>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	linux-renesas-soc@vger.kernel.org
Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume()
Date: Mon, 13 Aug 2018 18:16:11 +0100	[thread overview]
Message-ID: <20180813171611.GE907@e110455-lin.cambridge.arm.com> (raw)
In-Reply-To: <CAFqt6zYUN3XRsbhAgp8Lne9j1KTr5Ub0P+WrtLwOOfFPFRHFsA@mail.gmail.com>

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!  /
> >>   ---------------
> >>     ¯\_(ツ)_/¯

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

WARNING: multiple messages have this Message-ID (diff)
From: Liviu Dudau <liviu.dudau@arm.com>
To: Souptick Joarder <jrdr.linux@gmail.com>
Cc: Ajit Linux <ajitn.linux@gmail.com>,
	airlied@linux.ie, linux-kernel@vger.kernel.org,
	dri-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, malidp@foss.arm.com,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Subject: Re: [PATCH] drm: Convert drm_atomic_helper_suspend/resume()
Date: Mon, 13 Aug 2018 18:16:11 +0100	[thread overview]
Message-ID: <20180813171611.GE907@e110455-lin.cambridge.arm.com> (raw)
In-Reply-To: <CAFqt6zYUN3XRsbhAgp8Lne9j1KTr5Ub0P+WrtLwOOfFPFRHFsA@mail.gmail.com>

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!  /
> >>   ---------------
> >>     ¯\_(ツ)_/¯

-- 
====================
| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---------------
    ¯\_(ツ)_/¯
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2018-08-13 17:16 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-30 19:01 [PATCH] drm: Convert drm_atomic_helper_suspend/resume() Souptick Joarder
2018-07-30 22:14 ` Laurent Pinchart
2018-07-30 22:14   ` Laurent Pinchart
2018-07-31  5:55   ` Souptick Joarder
2018-07-31 10:34 ` Liviu Dudau
2018-07-31 10:34   ` Liviu Dudau
2018-07-31 18:41   ` Souptick Joarder
2018-08-02  9:55     ` Souptick Joarder
2018-08-13 17:16       ` Liviu Dudau [this message]
2018-08-13 17:16         ` Liviu Dudau
2018-08-13 18:51         ` Souptick Joarder
2018-08-13 19:58           ` Laurent Pinchart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180813171611.GE907@e110455-lin.cambridge.arm.com \
    --to=liviu.dudau@arm.com \
    --cc=airlied@linux.ie \
    --cc=ajitn.linux@gmail.com \
    --cc=brian.starkey@arm.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gustavo@padovan.org \
    --cc=jrdr.linux@gmail.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=malidp@foss.arm.com \
    --cc=seanpaul@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.