struct omap_dss_device * omapdss_of_find_source_for_first_ep(struct device_node *node) { struct device_node *ep; struct device_node *src_port; struct omap_dss_device *src; ep = omapdss_of_get_first_endpoint(node); if (!ep) return ERR_PTR(-EINVAL); src_port = omapdss_of_get_remote_port(ep); if (!src_port) { of_node_put(ep); return ERR_PTR(-EINVAL); } of_node_put(ep); src = omap_dss_find_output_by_port_node(src_port); of_node_put(src_port); return src ? src : ERR_PTR(-EPROBE_DEFER); }
static int hdmi_probe_of(struct platform_device *pdev) { struct device_node *node = pdev->dev.of_node; struct device_node *ep; int r; ep = omapdss_of_get_first_endpoint(node); if (!ep) return 0; r = hdmi_parse_lanes_of(pdev, ep, &hdmi.phy); if (r) goto err; of_node_put(ep); return 0; err: of_node_put(ep); return r; }