Hi Am 03.11.20 um 09:57 schrieb tiantao (H): > > > 在 2020/11/3 15:56, Thomas Zimmermann 写道: >> Hi >> >> Thanks, the code looks good already. There just are a few nits below. >> > Thanks for the help with the review code. > Add the new api devm_drm_irq_install and himbc use the new interface as > one patch or two? Better make two patches from it. Best regards Thomas > >> Am 03.11.20 um 03:10 schrieb Tian Tao: >>> Add new api devm_drm_irq_install() to register interrupts, >>> no need to call drm_irq_uninstall() when the drm module is removed. >>> >>> v2: >>> fixed the wrong parameter. >>> >>> Signed-off-by: Tian Tao <tiantao6@xxxxxxxxxxxxx> >>> --- >>> drivers/gpu/drm/drm_drv.c | 23 +++++++++++++++++++++++ >>> include/drm/drm_drv.h | 3 ++- >>> 2 files changed, 25 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c >>> index cd162d4..0fe5243 100644 >>> --- a/drivers/gpu/drm/drm_drv.c >>> +++ b/drivers/gpu/drm/drm_drv.c >> >> The implementation should rather go to drm_irq.c >> >>> @@ -39,6 +39,7 @@ >>> #include <drm/drm_color_mgmt.h> >>> #include <drm/drm_drv.h> >>> #include <drm/drm_file.h> >>> +#include <drm/drm_irq.h> >>> #include <drm/drm_managed.h> >>> #include <drm/drm_mode_object.h> >>> #include <drm/drm_print.h> >>> @@ -678,6 +679,28 @@ static int devm_drm_dev_init(struct device *parent, >>> return ret; >>> } >>> +static void devm_drm_dev_irq_uninstall(void *data) >>> +{ >>> + drm_irq_uninstall(data); >>> +} >>> + >>> +int devm_drm_irq_install(struct device *parent, >>> + struct drm_device *dev, int irq) >>> +{ >>> + int ret; >>> + >>> + ret = drm_irq_install(dev, irq); >>> + if (ret) >>> + return ret; >>> + >>> + ret = devm_add_action(parent, devm_drm_dev_irq_uninstall, dev); >>> + if (ret) >>> + devm_drm_dev_irq_uninstall(dev); >>> + >>> + return ret; >>> +} >>> +EXPORT_SYMBOL(devm_drm_irq_install); >>> + >>> void *__devm_drm_dev_alloc(struct device *parent, struct drm_driver >>> *driver, >>> size_t size, size_t offset) >>> { >>> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h >>> index 0230762..fec1776 100644 >>> --- a/include/drm/drm_drv.h >>> +++ b/include/drm/drm_drv.h >> >> And the declaration should go to drm_irq.h >> >> We generally don't merge unused code, so you should convert at least one >> KMS driver, say hibmc, to use the new interface. >> >> Best regards >> Thomas >> >>> @@ -513,7 +513,8 @@ struct drm_driver { >>> void *__devm_drm_dev_alloc(struct device *parent, struct >>> drm_driver *driver, >>> size_t size, size_t offset); >>> - >>> +int devm_drm_irq_install(struct device *parent, struct drm_device *dev, >>> + int irq); >>> /** >>> * devm_drm_dev_alloc - Resource managed allocation of a >>> &drm_device instance >>> * @parent: Parent device object >>> >> > -- 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:
OpenPGP_0x680DC11D530B7A23.asc
Description: application/pgp-keys
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel