drm/mediatek: Separate getting larb device to a function
authorCK Hu <ck.hu@mediatek.com>
Tue, 17 Nov 2020 07:55:26 +0000 (15:55 +0800)
committerChun-Kuang Hu <chunkuang.hu@kernel.org>
Mon, 28 Dec 2020 23:11:13 +0000 (07:11 +0800)
To make the code cleaner, separate getting larb device to
a function.

Signed-off-by: CK Hu <ck.hu@mediatek.com>
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c

index 1730b3d..a11b4f8 100644 (file)
@@ -465,19 +465,41 @@ unsigned int mtk_drm_find_possible_crtc_by_comp(struct drm_device *drm,
        return ret;
 }
 
+static int mtk_ddp_get_larb_dev(struct device_node *node, struct mtk_ddp_comp *comp,
+                               struct device *dev)
+{
+       struct device_node *larb_node;
+       struct platform_device *larb_pdev;
+
+       larb_node = of_parse_phandle(node, "mediatek,larb", 0);
+       if (!larb_node) {
+               dev_err(dev, "Missing mediadek,larb phandle in %pOF node\n", node);
+               return -EINVAL;
+       }
+
+       larb_pdev = of_find_device_by_node(larb_node);
+       if (!larb_pdev) {
+               dev_warn(dev, "Waiting for larb device %pOF\n", larb_node);
+               of_node_put(larb_node);
+               return -EPROBE_DEFER;
+       }
+       of_node_put(larb_node);
+       comp->larb_dev = &larb_pdev->dev;
+
+       return 0;
+}
+
 int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp,
                      enum mtk_ddp_comp_id comp_id, const struct mtk_ddp_comp_funcs *funcs)
 {
        struct platform_device *comp_pdev;
        struct device *dev;
        enum mtk_ddp_comp_type type;
-       struct device_node *larb_node;
-       struct platform_device *larb_pdev;
 #if IS_REACHABLE(CONFIG_MTK_CMDQ)
        struct resource res;
        struct cmdq_client_reg cmdq_reg;
-       int ret;
 #endif
+       int ret;
 
        if (comp_id < 0 || comp_id >= DDP_COMPONENT_ID_MAX)
                return -EINVAL;
@@ -529,30 +551,15 @@ int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp,
 #endif
 
        /* Only DMA capable components need the LARB property */
-       comp->larb_dev = NULL;
-       if (type != MTK_DISP_OVL &&
-           type != MTK_DISP_OVL_2L &&
-           type != MTK_DISP_RDMA &&
-           type != MTK_DISP_WDMA)
-               return 0;
-
-       larb_node = of_parse_phandle(node, "mediatek,larb", 0);
-       if (!larb_node) {
-               dev_err(dev,
-                       "Missing mediadek,larb phandle in %pOF node\n", node);
-               return -EINVAL;
+       if (type == MTK_DISP_OVL ||
+           type == MTK_DISP_OVL_2L ||
+           type == MTK_DISP_RDMA ||
+           type == MTK_DISP_WDMA) {
+               ret = mtk_ddp_get_larb_dev(node, comp, dev);
+               if (ret)
+                       return ret;
        }
 
-       larb_pdev = of_find_device_by_node(larb_node);
-       if (!larb_pdev) {
-               dev_warn(dev, "Waiting for larb device %pOF\n", larb_node);
-               of_node_put(larb_node);
-               return -EPROBE_DEFER;
-       }
-       of_node_put(larb_node);
-
-       comp->larb_dev = &larb_pdev->dev;
-
        return 0;
 }