Commit b19e6f7d authored by Dmitry Baryshkov's avatar Dmitry Baryshkov

drm/msm/dpu: use devres-managed allocation for interrupts data

Use devm_kzalloc to create interrupts data structure. This allows us to
remove corresponding kfree and drop dpu_hw_intr_destroy() function.
Reviewed-by: default avatarJessica Zhang <quic_jesszhan@quicinc.com>
Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/570038/
Link: https://lore.kernel.org/r/20231201211845.1026967-4-dmitry.baryshkov@linaro.org
parent b830b06f
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
#include <linux/debugfs.h> #include <linux/debugfs.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <drm/drm_managed.h>
#include "dpu_core_irq.h" #include "dpu_core_irq.h"
#include "dpu_kms.h" #include "dpu_kms.h"
#include "dpu_hw_interrupts.h" #include "dpu_hw_interrupts.h"
...@@ -472,8 +474,9 @@ u32 dpu_core_irq_read(struct dpu_kms *dpu_kms, ...@@ -472,8 +474,9 @@ u32 dpu_core_irq_read(struct dpu_kms *dpu_kms,
return intr_status; return intr_status;
} }
struct dpu_hw_intr *dpu_hw_intr_init(void __iomem *addr, struct dpu_hw_intr *dpu_hw_intr_init(struct drm_device *dev,
const struct dpu_mdss_cfg *m) void __iomem *addr,
const struct dpu_mdss_cfg *m)
{ {
struct dpu_hw_intr *intr; struct dpu_hw_intr *intr;
unsigned int i; unsigned int i;
...@@ -481,7 +484,7 @@ struct dpu_hw_intr *dpu_hw_intr_init(void __iomem *addr, ...@@ -481,7 +484,7 @@ struct dpu_hw_intr *dpu_hw_intr_init(void __iomem *addr,
if (!addr || !m) if (!addr || !m)
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
intr = kzalloc(sizeof(*intr), GFP_KERNEL); intr = drmm_kzalloc(dev, sizeof(*intr), GFP_KERNEL);
if (!intr) if (!intr)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
...@@ -512,11 +515,6 @@ struct dpu_hw_intr *dpu_hw_intr_init(void __iomem *addr, ...@@ -512,11 +515,6 @@ struct dpu_hw_intr *dpu_hw_intr_init(void __iomem *addr,
return intr; return intr;
} }
void dpu_hw_intr_destroy(struct dpu_hw_intr *intr)
{
kfree(intr);
}
int dpu_core_irq_register_callback(struct dpu_kms *dpu_kms, int dpu_core_irq_register_callback(struct dpu_kms *dpu_kms,
unsigned int irq_idx, unsigned int irq_idx,
void (*irq_cb)(void *arg), void (*irq_cb)(void *arg),
......
...@@ -70,15 +70,12 @@ struct dpu_hw_intr { ...@@ -70,15 +70,12 @@ struct dpu_hw_intr {
/** /**
* dpu_hw_intr_init(): Initializes the interrupts hw object * dpu_hw_intr_init(): Initializes the interrupts hw object
* @dev: Corresponding device for devres management
* @addr: mapped register io address of MDP * @addr: mapped register io address of MDP
* @m: pointer to MDSS catalog data * @m: pointer to MDSS catalog data
*/ */
struct dpu_hw_intr *dpu_hw_intr_init(void __iomem *addr, struct dpu_hw_intr *dpu_hw_intr_init(struct drm_device *dev,
const struct dpu_mdss_cfg *m); void __iomem *addr,
const struct dpu_mdss_cfg *m);
/**
* dpu_hw_intr_destroy(): Cleanup interrutps hw object
* @intr: pointer to interrupts hw object
*/
void dpu_hw_intr_destroy(struct dpu_hw_intr *intr);
#endif #endif
...@@ -795,8 +795,6 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms) ...@@ -795,8 +795,6 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms)
{ {
int i; int i;
if (dpu_kms->hw_intr)
dpu_hw_intr_destroy(dpu_kms->hw_intr);
dpu_kms->hw_intr = NULL; dpu_kms->hw_intr = NULL;
/* safe to call these more than once during shutdown */ /* safe to call these more than once during shutdown */
...@@ -1134,7 +1132,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms) ...@@ -1134,7 +1132,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
goto err_pm_put; goto err_pm_put;
} }
dpu_kms->hw_intr = dpu_hw_intr_init(dpu_kms->mmio, dpu_kms->catalog); dpu_kms->hw_intr = dpu_hw_intr_init(dev, dpu_kms->mmio, dpu_kms->catalog);
if (IS_ERR(dpu_kms->hw_intr)) { if (IS_ERR(dpu_kms->hw_intr)) {
rc = PTR_ERR(dpu_kms->hw_intr); rc = PTR_ERR(dpu_kms->hw_intr);
DPU_ERROR("hw_intr init failed: %d\n", rc); DPU_ERROR("hw_intr init failed: %d\n", rc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment