1
0

disp: msm: avoid msm_drv probe if sde_rsc is not probed yet

Msm_drv device node has dependency on sde_rsc device
node for power resource enable if sde_rsc device
device is enabled. This change moves the msm_drv device
to probe defer state during component addition if
sde_rsc device is not probed yet. It also removes
the master_drm device node access from sde_rsc device.

Change-Id: Ibb7457279b3376f45e82e5c9373aabd84a37ed36
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Este cometimento está contido em:
Dhaval Patel
2020-04-22 20:29:00 -07:00
ascendente a590ad8a8a
cometimento d4566743e0
3 ficheiros modificados com 29 adições e 16 eliminações

Ver ficheiro

@@ -1927,6 +1927,30 @@ static const struct component_master_ops msm_drm_ops = {
.unbind = msm_drm_unbind,
};
static int msm_drm_component_dependency_check(struct device *dev)
{
struct device_node *node;
struct device_node *np = dev->of_node;
unsigned int i;
if (!of_device_is_compatible(dev->of_node, "qcom,sde-kms"))
return 0;
for (i = 0; ; i++) {
node = of_parse_phandle(np, "connectors", i);
if (!node)
break;
if (of_node_name_eq(node,"qcom,sde_rscc") &&
of_device_is_available(node) &&
!of_node_check_flag(node, OF_POPULATED)) {
dev_err(dev, "qcom,sde_rscc device not probed yet\n");
return -EPROBE_DEFER;
}
}
return 0;
}
/*
* Platform driver:
*/
@@ -1936,6 +1960,10 @@ static int msm_pdev_probe(struct platform_device *pdev)
int ret;
struct component_match *match = NULL;
ret = msm_drm_component_dependency_check(&pdev->dev);
if (ret)
return ret;
ret = msm_drm_device_init(pdev, &msm_driver);
if (ret)
return ret;