fbdev: sh_mobile_hdmi: Add media controller support

Started by Laurent Pinchart on Sep 19, 2011

Subsystems (2)

Maintainers (2)

DORMANTno replies

open the first message on its own page

Message details and related content
Initialize the entity associated with the HDMI transmitter.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/video/sh_mobile_hdmi.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
index c17e3ad..c30c6a0 100644
--- a/drivers/video/sh_mobile_hdmi.c
+++ b/drivers/video/sh_mobile_hdmi.c
@@ -209,6 +209,7 @@ enum hotplug_state {
 
 struct sh_hdmi {
 	struct sh_mobile_lcdc_entity entity;
+	struct media_pad pads[2];
 
 	void __iomem *base;
 	enum hotplug_state hp_state;	/* hot-plug status */
@@ -1129,9 +1130,10 @@ static int __init sh_hdmi_probe(struct platform_device *pdev)
 {
 	struct sh_mobile_hdmi_info *pdata = pdev->dev.platform_data;
 	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	int irq = platform_get_irq(pdev, 0), ret;
+	int irq = platform_get_irq(pdev, 0);
 	struct sh_hdmi *hdmi;
 	long rate;
+	int ret;
 
 	if (!res || !pdata || irq < 0)
 		return -ENODEV;
@@ -1146,6 +1148,17 @@ static int __init sh_hdmi_probe(struct platform_device *pdev)
 	hdmi->entity.owner = THIS_MODULE;
 	hdmi->entity.ops = &sh_hdmi_ops;
 
+	/* Initialize the panel media entity. */
+	hdmi->pads[0].flags = MEDIA_PAD_FL_SINK;
+	hdmi->pads[1].flags = MEDIA_PAD_FL_SOURCE;
+	ret = media_entity_init(&hdmi->entity.entity, 2, hdmi->pads, 0);
+	if (ret < 0) {
+		dev_err(&pdev->dev, "Unable to initialize HDMI entity\n");
+		goto egetclk;
+	}
+
+	hdmi->entity.entity.name = "HDMI transmitter";
+
 	hdmi->hdmi_clk = clk_get(&pdev->dev, "ick");
 	if (IS_ERR(hdmi->hdmi_clk)) {
 		ret = PTR_ERR(hdmi->hdmi_clk);
@@ -1224,6 +1237,7 @@ ereqreg:
 erate:
 	clk_put(hdmi->hdmi_clk);
 egetclk:
+	media_entity_cleanup(&hdmi->entity.entity);
 	kfree(hdmi);
 
 	return ret;
@@ -1247,6 +1261,7 @@ static int __exit sh_hdmi_remove(struct platform_device *pdev)
 	clk_put(hdmi->hdmi_clk);
 	iounmap(hdmi->base);
 	release_mem_region(res->start, resource_size(res));
+	media_entity_cleanup(&hdmi->entity.entity);
 	kfree(hdmi);
 
 	return 0;
-- 
1.7.3.4
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help