* [PATCH] drm/ingenic: Convert to Linux IRQ interfaces
@ 2021-07-06 7:44 ` Thomas Zimmermann
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Zimmermann @ 2021-07-06 7:44 UTC (permalink / raw)
To: paul, airlied, daniel; +Cc: linux-mips, dri-devel, Thomas Zimmermann
Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's
IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers
don't benefit from using it.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index c296472164d9..a09b7da21b53 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -33,7 +33,6 @@
#include <drm/drm_fourcc.h>
#include <drm/drm_gem_atomic_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
-#include <drm/drm_irq.h>
#include <drm/drm_managed.h>
#include <drm/drm_of.h>
#include <drm/drm_panel.h>
@@ -799,8 +798,6 @@ static const struct drm_driver ingenic_drm_driver_data = {
.fops = &ingenic_drm_fops,
.gem_create_object = ingenic_drm_gem_create_object,
DRM_GEM_CMA_DRIVER_OPS,
-
- .irq_handler = ingenic_drm_irq_handler,
};
static const struct drm_plane_funcs ingenic_drm_primary_plane_funcs = {
@@ -1098,7 +1095,7 @@ static int ingenic_drm_bind(struct device *dev, bool has_components)
encoder->possible_clones = clone_mask;
}
- ret = drm_irq_install(drm, irq);
+ ret = request_irq(irq, ingenic_drm_irq_handler, 0, drm->driver->name, drm);
if (ret) {
dev_err(dev, "Unable to install IRQ handler\n");
return ret;
@@ -1192,14 +1189,18 @@ static void ingenic_drm_unbind(struct device *dev)
{
struct ingenic_drm *priv = dev_get_drvdata(dev);
struct clk *parent_clk = clk_get_parent(priv->pix_clk);
+ struct drm_device *drm = &priv->drm;
+ struct platform_device *pdev = to_platform_device(drm->dev);
+
+ free_irq(platform_get_irq(pdev, 0), drm);
clk_notifier_unregister(parent_clk, &priv->clock_nb);
if (priv->lcd_clk)
clk_disable_unprepare(priv->lcd_clk);
clk_disable_unprepare(priv->pix_clk);
- drm_dev_unregister(&priv->drm);
- drm_atomic_helper_shutdown(&priv->drm);
+ drm_dev_unregister(drm);
+ drm_atomic_helper_shutdown(drm);
}
static const struct component_master_ops ingenic_master_ops = {
--
2.32.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH] drm/ingenic: Convert to Linux IRQ interfaces
@ 2021-07-06 7:44 ` Thomas Zimmermann
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Zimmermann @ 2021-07-06 7:44 UTC (permalink / raw)
To: paul, airlied, daniel; +Cc: Thomas Zimmermann, linux-mips, dri-devel
Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's
IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers
don't benefit from using it.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index c296472164d9..a09b7da21b53 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -33,7 +33,6 @@
#include <drm/drm_fourcc.h>
#include <drm/drm_gem_atomic_helper.h>
#include <drm/drm_gem_framebuffer_helper.h>
-#include <drm/drm_irq.h>
#include <drm/drm_managed.h>
#include <drm/drm_of.h>
#include <drm/drm_panel.h>
@@ -799,8 +798,6 @@ static const struct drm_driver ingenic_drm_driver_data = {
.fops = &ingenic_drm_fops,
.gem_create_object = ingenic_drm_gem_create_object,
DRM_GEM_CMA_DRIVER_OPS,
-
- .irq_handler = ingenic_drm_irq_handler,
};
static const struct drm_plane_funcs ingenic_drm_primary_plane_funcs = {
@@ -1098,7 +1095,7 @@ static int ingenic_drm_bind(struct device *dev, bool has_components)
encoder->possible_clones = clone_mask;
}
- ret = drm_irq_install(drm, irq);
+ ret = request_irq(irq, ingenic_drm_irq_handler, 0, drm->driver->name, drm);
if (ret) {
dev_err(dev, "Unable to install IRQ handler\n");
return ret;
@@ -1192,14 +1189,18 @@ static void ingenic_drm_unbind(struct device *dev)
{
struct ingenic_drm *priv = dev_get_drvdata(dev);
struct clk *parent_clk = clk_get_parent(priv->pix_clk);
+ struct drm_device *drm = &priv->drm;
+ struct platform_device *pdev = to_platform_device(drm->dev);
+
+ free_irq(platform_get_irq(pdev, 0), drm);
clk_notifier_unregister(parent_clk, &priv->clock_nb);
if (priv->lcd_clk)
clk_disable_unprepare(priv->lcd_clk);
clk_disable_unprepare(priv->pix_clk);
- drm_dev_unregister(&priv->drm);
- drm_atomic_helper_shutdown(&priv->drm);
+ drm_dev_unregister(drm);
+ drm_atomic_helper_shutdown(drm);
}
static const struct component_master_ops ingenic_master_ops = {
--
2.32.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] drm/ingenic: Convert to Linux IRQ interfaces
2021-07-06 7:44 ` Thomas Zimmermann
(?)
@ 2021-07-10 6:33 ` Sam Ravnborg
2021-07-10 10:04 ` Paul Cercueil
-1 siblings, 1 reply; 7+ messages in thread
From: Sam Ravnborg @ 2021-07-10 6:33 UTC (permalink / raw)
To: Thomas Zimmermann; +Cc: paul, airlied, dri-devel, linux-mips
Hi Thomas,
On Tue, Jul 06, 2021 at 09:44:09AM +0200, Thomas Zimmermann wrote:
> Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's
> IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers
> don't benefit from using it.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> index c296472164d9..a09b7da21b53 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -33,7 +33,6 @@
> #include <drm/drm_fourcc.h>
> #include <drm/drm_gem_atomic_helper.h>
> #include <drm/drm_gem_framebuffer_helper.h>
> -#include <drm/drm_irq.h>
> #include <drm/drm_managed.h>
> #include <drm/drm_of.h>
> #include <drm/drm_panel.h>
> @@ -799,8 +798,6 @@ static const struct drm_driver ingenic_drm_driver_data = {
> .fops = &ingenic_drm_fops,
> .gem_create_object = ingenic_drm_gem_create_object,
> DRM_GEM_CMA_DRIVER_OPS,
> -
> - .irq_handler = ingenic_drm_irq_handler,
> };
>
> static const struct drm_plane_funcs ingenic_drm_primary_plane_funcs = {
> @@ -1098,7 +1095,7 @@ static int ingenic_drm_bind(struct device *dev, bool has_components)
> encoder->possible_clones = clone_mask;
> }
>
> - ret = drm_irq_install(drm, irq);
> + ret = request_irq(irq, ingenic_drm_irq_handler, 0, drm->driver->name, drm);
> if (ret) {
> dev_err(dev, "Unable to install IRQ handler\n");
> return ret;
> @@ -1192,14 +1189,18 @@ static void ingenic_drm_unbind(struct device *dev)
> {
> struct ingenic_drm *priv = dev_get_drvdata(dev);
> struct clk *parent_clk = clk_get_parent(priv->pix_clk);
> + struct drm_device *drm = &priv->drm;
> + struct platform_device *pdev = to_platform_device(drm->dev);
> +
> + free_irq(platform_get_irq(pdev, 0), drm);
The driver was missing a drm_irq_uninstall() so the above code is
actually a small bug-fix. It should be mentioned in the changelog.
With this fixed:
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Note: I expect Paul to review too and apply.
Sam
>
> clk_notifier_unregister(parent_clk, &priv->clock_nb);
> if (priv->lcd_clk)
> clk_disable_unprepare(priv->lcd_clk);
> clk_disable_unprepare(priv->pix_clk);
>
> - drm_dev_unregister(&priv->drm);
> - drm_atomic_helper_shutdown(&priv->drm);
> + drm_dev_unregister(drm);
> + drm_atomic_helper_shutdown(drm);
> }
>
> static const struct component_master_ops ingenic_master_ops = {
> --
> 2.32.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] drm/ingenic: Convert to Linux IRQ interfaces
2021-07-10 6:33 ` Sam Ravnborg
@ 2021-07-10 10:04 ` Paul Cercueil
0 siblings, 0 replies; 7+ messages in thread
From: Paul Cercueil @ 2021-07-10 10:04 UTC (permalink / raw)
To: Sam Ravnborg; +Cc: Thomas Zimmermann, airlied, daniel, linux-mips, dri-devel
Hi,
Le sam., juil. 10 2021 at 08:33:47 +0200, Sam Ravnborg
<sam@ravnborg.org> a écrit :
> Hi Thomas,
>
> On Tue, Jul 06, 2021 at 09:44:09AM +0200, Thomas Zimmermann wrote:
>> Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's
>> IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers
>> don't benefit from using it.
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> ---
>> drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +++++++------
>> 1 file changed, 7 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>> b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>> index c296472164d9..a09b7da21b53 100644
>> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>> @@ -33,7 +33,6 @@
>> #include <drm/drm_fourcc.h>
>> #include <drm/drm_gem_atomic_helper.h>
>> #include <drm/drm_gem_framebuffer_helper.h>
>> -#include <drm/drm_irq.h>
>> #include <drm/drm_managed.h>
>> #include <drm/drm_of.h>
>> #include <drm/drm_panel.h>
>> @@ -799,8 +798,6 @@ static const struct drm_driver
>> ingenic_drm_driver_data = {
>> .fops = &ingenic_drm_fops,
>> .gem_create_object = ingenic_drm_gem_create_object,
>> DRM_GEM_CMA_DRIVER_OPS,
>> -
>> - .irq_handler = ingenic_drm_irq_handler,
>> };
>>
>> static const struct drm_plane_funcs
>> ingenic_drm_primary_plane_funcs = {
>> @@ -1098,7 +1095,7 @@ static int ingenic_drm_bind(struct device
>> *dev, bool has_components)
>> encoder->possible_clones = clone_mask;
>> }
>>
>> - ret = drm_irq_install(drm, irq);
>> + ret = request_irq(irq, ingenic_drm_irq_handler, 0,
>> drm->driver->name, drm);
>>
Can't you use the devm variant?
>> if (ret) {
>> dev_err(dev, "Unable to install IRQ handler\n");
>> return ret;
>> @@ -1192,14 +1189,18 @@ static void ingenic_drm_unbind(struct
>> device *dev)
>> {
>> struct ingenic_drm *priv = dev_get_drvdata(dev);
>> struct clk *parent_clk = clk_get_parent(priv->pix_clk);
>> + struct drm_device *drm = &priv->drm;
>> + struct platform_device *pdev = to_platform_device(drm->dev);
>> +
>> + free_irq(platform_get_irq(pdev, 0), drm);
>
> The driver was missing a drm_irq_uninstall() so the above code is
> actually a small bug-fix. It should be mentioned in the changelog.
> With this fixed:
> Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
>
> Note: I expect Paul to review too and apply.
I wasn't Cc'd? :(
-Paul
>
> Sam
>
>>
>> clk_notifier_unregister(parent_clk, &priv->clock_nb);
>> if (priv->lcd_clk)
>> clk_disable_unprepare(priv->lcd_clk);
>> clk_disable_unprepare(priv->pix_clk);
>>
>> - drm_dev_unregister(&priv->drm);
>> - drm_atomic_helper_shutdown(&priv->drm);
>> + drm_dev_unregister(drm);
>> + drm_atomic_helper_shutdown(drm);
>> }
>>
>> static const struct component_master_ops ingenic_master_ops = {
>> --
>> 2.32.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] drm/ingenic: Convert to Linux IRQ interfaces
@ 2021-07-10 10:04 ` Paul Cercueil
0 siblings, 0 replies; 7+ messages in thread
From: Paul Cercueil @ 2021-07-10 10:04 UTC (permalink / raw)
To: Sam Ravnborg; +Cc: airlied, dri-devel, Thomas Zimmermann, linux-mips
Hi,
Le sam., juil. 10 2021 at 08:33:47 +0200, Sam Ravnborg
<sam@ravnborg.org> a écrit :
> Hi Thomas,
>
> On Tue, Jul 06, 2021 at 09:44:09AM +0200, Thomas Zimmermann wrote:
>> Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's
>> IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers
>> don't benefit from using it.
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>> ---
>> drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +++++++------
>> 1 file changed, 7 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>> b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>> index c296472164d9..a09b7da21b53 100644
>> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>> @@ -33,7 +33,6 @@
>> #include <drm/drm_fourcc.h>
>> #include <drm/drm_gem_atomic_helper.h>
>> #include <drm/drm_gem_framebuffer_helper.h>
>> -#include <drm/drm_irq.h>
>> #include <drm/drm_managed.h>
>> #include <drm/drm_of.h>
>> #include <drm/drm_panel.h>
>> @@ -799,8 +798,6 @@ static const struct drm_driver
>> ingenic_drm_driver_data = {
>> .fops = &ingenic_drm_fops,
>> .gem_create_object = ingenic_drm_gem_create_object,
>> DRM_GEM_CMA_DRIVER_OPS,
>> -
>> - .irq_handler = ingenic_drm_irq_handler,
>> };
>>
>> static const struct drm_plane_funcs
>> ingenic_drm_primary_plane_funcs = {
>> @@ -1098,7 +1095,7 @@ static int ingenic_drm_bind(struct device
>> *dev, bool has_components)
>> encoder->possible_clones = clone_mask;
>> }
>>
>> - ret = drm_irq_install(drm, irq);
>> + ret = request_irq(irq, ingenic_drm_irq_handler, 0,
>> drm->driver->name, drm);
>>
Can't you use the devm variant?
>> if (ret) {
>> dev_err(dev, "Unable to install IRQ handler\n");
>> return ret;
>> @@ -1192,14 +1189,18 @@ static void ingenic_drm_unbind(struct
>> device *dev)
>> {
>> struct ingenic_drm *priv = dev_get_drvdata(dev);
>> struct clk *parent_clk = clk_get_parent(priv->pix_clk);
>> + struct drm_device *drm = &priv->drm;
>> + struct platform_device *pdev = to_platform_device(drm->dev);
>> +
>> + free_irq(platform_get_irq(pdev, 0), drm);
>
> The driver was missing a drm_irq_uninstall() so the above code is
> actually a small bug-fix. It should be mentioned in the changelog.
> With this fixed:
> Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
>
> Note: I expect Paul to review too and apply.
I wasn't Cc'd? :(
-Paul
>
> Sam
>
>>
>> clk_notifier_unregister(parent_clk, &priv->clock_nb);
>> if (priv->lcd_clk)
>> clk_disable_unprepare(priv->lcd_clk);
>> clk_disable_unprepare(priv->pix_clk);
>>
>> - drm_dev_unregister(&priv->drm);
>> - drm_atomic_helper_shutdown(&priv->drm);
>> + drm_dev_unregister(drm);
>> + drm_atomic_helper_shutdown(drm);
>> }
>>
>> static const struct component_master_ops ingenic_master_ops = {
>> --
>> 2.32.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] drm/ingenic: Convert to Linux IRQ interfaces
2021-07-10 10:04 ` Paul Cercueil
@ 2021-07-12 9:43 ` Thomas Zimmermann
-1 siblings, 0 replies; 7+ messages in thread
From: Thomas Zimmermann @ 2021-07-12 9:43 UTC (permalink / raw)
To: Paul Cercueil, Sam Ravnborg; +Cc: airlied, daniel, linux-mips, dri-devel
[-- Attachment #1.1: Type: text/plain, Size: 3755 bytes --]
Hi
Am 10.07.21 um 12:04 schrieb Paul Cercueil:
> Hi,
>
> Le sam., juil. 10 2021 at 08:33:47 +0200, Sam Ravnborg
> <sam@ravnborg.org> a écrit :
>> Hi Thomas,
>>
>> On Tue, Jul 06, 2021 at 09:44:09AM +0200, Thomas Zimmermann wrote:
>>> Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's
>>> IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers
>>> don't benefit from using it.
>>>
>>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>>> ---
>>> drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +++++++------
>>> 1 file changed, 7 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>>> b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>>> index c296472164d9..a09b7da21b53 100644
>>> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>>> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>>> @@ -33,7 +33,6 @@
>>> #include <drm/drm_fourcc.h>
>>> #include <drm/drm_gem_atomic_helper.h>
>>> #include <drm/drm_gem_framebuffer_helper.h>
>>> -#include <drm/drm_irq.h>
>>> #include <drm/drm_managed.h>
>>> #include <drm/drm_of.h>
>>> #include <drm/drm_panel.h>
>>> @@ -799,8 +798,6 @@ static const struct drm_driver
>>> ingenic_drm_driver_data = {
>>> .fops = &ingenic_drm_fops,
>>> .gem_create_object = ingenic_drm_gem_create_object,
>>> DRM_GEM_CMA_DRIVER_OPS,
>>> -
>>> - .irq_handler = ingenic_drm_irq_handler,
>>> };
>>>
>>> static const struct drm_plane_funcs ingenic_drm_primary_plane_funcs
>>> = {
>>> @@ -1098,7 +1095,7 @@ static int ingenic_drm_bind(struct device
>>> *dev, bool has_components)
>>> encoder->possible_clones = clone_mask;
>>> }
>>>
>>> - ret = drm_irq_install(drm, irq);
>>> + ret = request_irq(irq, ingenic_drm_irq_handler, 0,
>>> drm->driver->name, drm);
>>>
>
> Can't you use the devm variant?
I think so, I just tried to minimize the difference.
Best regards
Thomas
>
>>> if (ret) {
>>> dev_err(dev, "Unable to install IRQ handler\n");
>>> return ret;
>>> @@ -1192,14 +1189,18 @@ static void ingenic_drm_unbind(struct device
>>> *dev)
>>> {
>>> struct ingenic_drm *priv = dev_get_drvdata(dev);
>>> struct clk *parent_clk = clk_get_parent(priv->pix_clk);
>>> + struct drm_device *drm = &priv->drm;
>>> + struct platform_device *pdev = to_platform_device(drm->dev);
>>> +
>>> + free_irq(platform_get_irq(pdev, 0), drm);
>>
>> The driver was missing a drm_irq_uninstall() so the above code is
>> actually a small bug-fix. It should be mentioned in the changelog.
>> With this fixed:
>> Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
>>
>> Note: I expect Paul to review too and apply.
>
> I wasn't Cc'd? :(
>
> -Paul
>
>>
>> Sam
>>
>>>
>>> clk_notifier_unregister(parent_clk, &priv->clock_nb);
>>> if (priv->lcd_clk)
>>> clk_disable_unprepare(priv->lcd_clk);
>>> clk_disable_unprepare(priv->pix_clk);
>>>
>>> - drm_dev_unregister(&priv->drm);
>>> - drm_atomic_helper_shutdown(&priv->drm);
>>> + drm_dev_unregister(drm);
>>> + drm_atomic_helper_shutdown(drm);
>>> }
>>>
>>> static const struct component_master_ops ingenic_master_ops = {
>>> --
>>> 2.32.0
>
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] drm/ingenic: Convert to Linux IRQ interfaces
@ 2021-07-12 9:43 ` Thomas Zimmermann
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Zimmermann @ 2021-07-12 9:43 UTC (permalink / raw)
To: Paul Cercueil, Sam Ravnborg; +Cc: airlied, dri-devel, linux-mips
[-- Attachment #1.1: Type: text/plain, Size: 3755 bytes --]
Hi
Am 10.07.21 um 12:04 schrieb Paul Cercueil:
> Hi,
>
> Le sam., juil. 10 2021 at 08:33:47 +0200, Sam Ravnborg
> <sam@ravnborg.org> a écrit :
>> Hi Thomas,
>>
>> On Tue, Jul 06, 2021 at 09:44:09AM +0200, Thomas Zimmermann wrote:
>>> Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's
>>> IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers
>>> don't benefit from using it.
>>>
>>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
>>> ---
>>> drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +++++++------
>>> 1 file changed, 7 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>>> b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>>> index c296472164d9..a09b7da21b53 100644
>>> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>>> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
>>> @@ -33,7 +33,6 @@
>>> #include <drm/drm_fourcc.h>
>>> #include <drm/drm_gem_atomic_helper.h>
>>> #include <drm/drm_gem_framebuffer_helper.h>
>>> -#include <drm/drm_irq.h>
>>> #include <drm/drm_managed.h>
>>> #include <drm/drm_of.h>
>>> #include <drm/drm_panel.h>
>>> @@ -799,8 +798,6 @@ static const struct drm_driver
>>> ingenic_drm_driver_data = {
>>> .fops = &ingenic_drm_fops,
>>> .gem_create_object = ingenic_drm_gem_create_object,
>>> DRM_GEM_CMA_DRIVER_OPS,
>>> -
>>> - .irq_handler = ingenic_drm_irq_handler,
>>> };
>>>
>>> static const struct drm_plane_funcs ingenic_drm_primary_plane_funcs
>>> = {
>>> @@ -1098,7 +1095,7 @@ static int ingenic_drm_bind(struct device
>>> *dev, bool has_components)
>>> encoder->possible_clones = clone_mask;
>>> }
>>>
>>> - ret = drm_irq_install(drm, irq);
>>> + ret = request_irq(irq, ingenic_drm_irq_handler, 0,
>>> drm->driver->name, drm);
>>>
>
> Can't you use the devm variant?
I think so, I just tried to minimize the difference.
Best regards
Thomas
>
>>> if (ret) {
>>> dev_err(dev, "Unable to install IRQ handler\n");
>>> return ret;
>>> @@ -1192,14 +1189,18 @@ static void ingenic_drm_unbind(struct device
>>> *dev)
>>> {
>>> struct ingenic_drm *priv = dev_get_drvdata(dev);
>>> struct clk *parent_clk = clk_get_parent(priv->pix_clk);
>>> + struct drm_device *drm = &priv->drm;
>>> + struct platform_device *pdev = to_platform_device(drm->dev);
>>> +
>>> + free_irq(platform_get_irq(pdev, 0), drm);
>>
>> The driver was missing a drm_irq_uninstall() so the above code is
>> actually a small bug-fix. It should be mentioned in the changelog.
>> With this fixed:
>> Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
>>
>> Note: I expect Paul to review too and apply.
>
> I wasn't Cc'd? :(
>
> -Paul
>
>>
>> Sam
>>
>>>
>>> clk_notifier_unregister(parent_clk, &priv->clock_nb);
>>> if (priv->lcd_clk)
>>> clk_disable_unprepare(priv->lcd_clk);
>>> clk_disable_unprepare(priv->pix_clk);
>>>
>>> - drm_dev_unregister(&priv->drm);
>>> - drm_atomic_helper_shutdown(&priv->drm);
>>> + drm_dev_unregister(drm);
>>> + drm_atomic_helper_shutdown(drm);
>>> }
>>>
>>> static const struct component_master_ops ingenic_master_ops = {
>>> --
>>> 2.32.0
>
>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-07-12 9:43 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-06 7:44 [PATCH] drm/ingenic: Convert to Linux IRQ interfaces Thomas Zimmermann
2021-07-06 7:44 ` Thomas Zimmermann
2021-07-10 6:33 ` Sam Ravnborg
2021-07-10 10:04 ` Paul Cercueil
2021-07-10 10:04 ` Paul Cercueil
2021-07-12 9:43 ` Thomas Zimmermann
2021-07-12 9:43 ` Thomas Zimmermann
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.