drm/mediatek: Separate getting larb device to a function
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>
This commit is contained in:
parent
6ea6f82767
commit
926df14ec5
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue