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