diff options
Diffstat (limited to 'drivers/gpu/drm/imx')
| -rw-r--r-- | drivers/gpu/drm/imx/ipuv3/parallel-display.c | 18 | 
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/gpu/drm/imx/ipuv3/parallel-display.c b/drivers/gpu/drm/imx/ipuv3/parallel-display.c index 6d8325c76697..7fc6af703307 100644 --- a/drivers/gpu/drm/imx/ipuv3/parallel-display.c +++ b/drivers/gpu/drm/imx/ipuv3/parallel-display.c @@ -25,19 +25,18 @@  struct imx_parallel_display_encoder {  	struct drm_encoder encoder; -	struct drm_bridge bridge; -	struct imx_parallel_display *pd;  };  struct imx_parallel_display {  	struct device *dev;  	u32 bus_format;  	struct drm_bridge *next_bridge; +	struct drm_bridge bridge;  };  static inline struct imx_parallel_display *bridge_to_imxpd(struct drm_bridge *b)  { -	return container_of(b, struct imx_parallel_display_encoder, bridge)->pd; +	return container_of(b, struct imx_parallel_display, bridge);  }  static const u32 imx_pd_bus_fmts[] = { @@ -195,15 +194,13 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)  	if (IS_ERR(imxpd_encoder))  		return PTR_ERR(imxpd_encoder); -	imxpd_encoder->pd = imxpd;  	encoder = &imxpd_encoder->encoder; -	bridge = &imxpd_encoder->bridge; +	bridge = &imxpd->bridge;  	ret = imx_drm_encoder_parse_of(drm, encoder, imxpd->dev->of_node);  	if (ret)  		return ret; -	bridge->funcs = &imx_pd_bridge_funcs;  	drm_bridge_attach(encoder, bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR);  	connector = drm_bridge_connector_init(drm, encoder); @@ -228,9 +225,10 @@ static int imx_pd_probe(struct platform_device *pdev)  	u32 bus_format = 0;  	const char *fmt; -	imxpd = devm_kzalloc(dev, sizeof(*imxpd), GFP_KERNEL); -	if (!imxpd) -		return -ENOMEM; +	imxpd = devm_drm_bridge_alloc(dev, struct imx_parallel_display, bridge, +				      &imx_pd_bridge_funcs); +	if (IS_ERR(imxpd)) +		return PTR_ERR(imxpd);  	/* port@1 is the output port */  	imxpd->next_bridge = devm_drm_of_get_bridge(dev, np, 1, 0); @@ -258,6 +256,8 @@ static int imx_pd_probe(struct platform_device *pdev)  	platform_set_drvdata(pdev, imxpd); +	devm_drm_bridge_add(dev, &imxpd->bridge); +  	return component_add(dev, &imx_pd_ops);  }  | 
