[PATCH 07/42] drm/mediatek: ddp_comp: Move internal component register in function
AngeloGioacchino Del Regno
angelogioacchino.delregno at collabora.com
Wed Jul 1 05:20:22 PDT 2026
In preparation for adding an helper serving the purpose of finally
removing duplicated code to check for internal/simple components,
and for improving human readability in the up coming refactoring,
move the internal/simple component registration logic to its own
mtk_ddp_comp_init_internal_comp() function.
This brings no functional changes.
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>
---
drivers/gpu/drm/mediatek/mtk_ddp_comp.c | 55 +++++++++++++++----------
1 file changed, 33 insertions(+), 22 deletions(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_ddp_comp.c
index d716fd9f8a70..2ba2123238b3 100644
--- a/drivers/gpu/drm/mediatek/mtk_ddp_comp.c
+++ b/drivers/gpu/drm/mediatek/mtk_ddp_comp.c
@@ -629,6 +629,38 @@ static void mtk_ddp_comp_clk_put(void *_clk)
clk_put(clk);
}
+static int mtk_ddp_comp_init_internal_comp(struct device *dev, struct device *comp_dev)
+{
+ struct device_node *comp_node = comp_dev->of_node;
+ struct mtk_ddp_comp_dev *priv;
+ int ret;
+
+ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+ if (!priv)
+ return -ENOMEM;
+
+ priv->regs = devm_of_iomap(dev, comp_node, 0, NULL);
+ if (IS_ERR(priv->regs))
+ return PTR_ERR(priv->regs);
+
+ priv->clk = of_clk_get(comp_node, 0);
+ if (IS_ERR(priv->clk))
+ return PTR_ERR(priv->clk);
+
+ ret = devm_add_action_or_reset(dev, mtk_ddp_comp_clk_put, priv->clk);
+ if (ret)
+ return ret;
+
+#if IS_REACHABLE(CONFIG_MTK_CMDQ)
+ ret = cmdq_dev_get_client_reg(comp_dev, &priv->cmdq_reg, 0);
+ if (ret)
+ dev_dbg(comp_dev, "get mediatek,gce-client-reg fail!\n");
+#endif
+ dev_set_drvdata(comp_dev, priv);
+
+ return 0;
+};
+
int mtk_ddp_comp_init(struct device *dev, struct device_node *node,
struct mtk_drm_comp_list *hlist,
unsigned int comp_id)
@@ -636,7 +668,6 @@ int mtk_ddp_comp_init(struct device *dev, struct device_node *node,
struct platform_device *comp_pdev;
struct mtk_ddp_comp *comp;
enum mtk_ddp_comp_type type;
- struct mtk_ddp_comp_dev *priv;
int ret;
if (comp_id >= DDP_COMPONENT_DRM_ID_MAX)
@@ -686,29 +717,9 @@ int mtk_ddp_comp_init(struct device *dev, struct device_node *node,
type == MTK_DISP_DSI)
goto end;
- priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
- if (!priv)
- return -ENOMEM;
-
- priv->regs = devm_of_iomap(dev, node, 0, NULL);
- if (IS_ERR(priv->regs))
- return PTR_ERR(priv->regs);
-
- priv->clk = of_clk_get(node, 0);
- if (IS_ERR(priv->clk))
- return PTR_ERR(priv->clk);
-
- ret = devm_add_action_or_reset(dev, mtk_ddp_comp_clk_put, priv->clk);
+ ret = mtk_ddp_comp_init_internal_comp(dev, comp->dev);
if (ret)
return ret;
-
-#if IS_REACHABLE(CONFIG_MTK_CMDQ)
- ret = cmdq_dev_get_client_reg(comp->dev, &priv->cmdq_reg, 0);
- if (ret)
- dev_dbg(comp->dev, "get mediatek,gce-client-reg fail!\n");
-#endif
-
- platform_set_drvdata(comp_pdev, priv);
end:
hash_add(hlist->ddp_list, &comp->lnode, comp->id);
--
2.54.0
More information about the linux-arm-kernel
mailing list