diff options
| author | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
|---|---|---|
| committer | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
| commit | 79828b4fa835f73cdaf4bffa48696abdcbea9d02 (patch) | |
| tree | 5e0fa7156acb75ba603022bc807df8f2fedb97a8 /drivers/gpu/drm/imx/parallel-display.c | |
| parent | 721b51fcf91898299d96f4b72cb9434cda29dce6 (diff) | |
| parent | 8c1a9d6323abf0fb1e5dad96cf3f1c783505ea5a (diff) | |
Merge remote-tracking branch 'asoc/fix/rt5645' into asoc-fix-rt5645
Diffstat (limited to 'drivers/gpu/drm/imx/parallel-display.c')
| -rw-r--r-- | drivers/gpu/drm/imx/parallel-display.c | 21 | 
1 files changed, 15 insertions, 6 deletions
diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c index 74a9ce40ddc4..b4deb9cf9d71 100644 --- a/drivers/gpu/drm/imx/parallel-display.c +++ b/drivers/gpu/drm/imx/parallel-display.c @@ -21,6 +21,7 @@  #include <drm/drm_panel.h>  #include <linux/videodev2.h>  #include <video/of_display_timing.h> +#include <linux/of_graph.h>  #include "imx-drm.h" @@ -208,7 +209,7 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)  {  	struct drm_device *drm = data;  	struct device_node *np = dev->of_node; -	struct device_node *panel_node; +	struct device_node *port;  	const u8 *edidp;  	struct imx_parallel_display *imxpd;  	int ret; @@ -234,11 +235,19 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)  			imxpd->bus_format = MEDIA_BUS_FMT_RGB666_1X24_CPADHI;  	} -	panel_node = of_parse_phandle(np, "fsl,panel", 0); -	if (panel_node) { -		imxpd->panel = of_drm_find_panel(panel_node); -		if (!imxpd->panel) -			return -EPROBE_DEFER; +	/* port@1 is the output port */ +	port = of_graph_get_port_by_id(np, 1); +	if (port) { +		struct device_node *endpoint, *remote; + +		endpoint = of_get_child_by_name(port, "endpoint"); +		if (endpoint) { +			remote = of_graph_get_remote_port_parent(endpoint); +			if (remote) +				imxpd->panel = of_drm_find_panel(remote); +			if (!imxpd->panel) +				return -EPROBE_DEFER; +		}  	}  	imxpd->dev = dev;  |