aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos/exynos_drm_dsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_dsi.c')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_dsi.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index fc4fda738906..d404de86d5f9 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -1633,7 +1633,6 @@ static int exynos_dsi_parse_dt(struct exynos_dsi *dsi)
1633{ 1633{
1634 struct device *dev = dsi->dev; 1634 struct device *dev = dsi->dev;
1635 struct device_node *node = dev->of_node; 1635 struct device_node *node = dev->of_node;
1636 struct device_node *ep;
1637 int ret; 1636 int ret;
1638 1637
1639 ret = exynos_dsi_of_read_u32(node, "samsung,pll-clock-frequency", 1638 ret = exynos_dsi_of_read_u32(node, "samsung,pll-clock-frequency",
@@ -1641,32 +1640,21 @@ static int exynos_dsi_parse_dt(struct exynos_dsi *dsi)
1641 if (ret < 0) 1640 if (ret < 0)
1642 return ret; 1641 return ret;
1643 1642
1644 ep = of_graph_get_endpoint_by_regs(node, DSI_PORT_OUT, 0); 1643 ret = exynos_dsi_of_read_u32(node, "samsung,burst-clock-frequency",
1645 if (!ep) {
1646 dev_err(dev, "no output port with endpoint specified\n");
1647 return -EINVAL;
1648 }
1649
1650 ret = exynos_dsi_of_read_u32(ep, "samsung,burst-clock-frequency",
1651 &dsi->burst_clk_rate); 1644 &dsi->burst_clk_rate);
1652 if (ret < 0) 1645 if (ret < 0)
1653 goto end; 1646 return ret;
1654 1647
1655 ret = exynos_dsi_of_read_u32(ep, "samsung,esc-clock-frequency", 1648 ret = exynos_dsi_of_read_u32(node, "samsung,esc-clock-frequency",
1656 &dsi->esc_clk_rate); 1649 &dsi->esc_clk_rate);
1657 if (ret < 0) 1650 if (ret < 0)
1658 goto end; 1651 return ret;
1659
1660 of_node_put(ep);
1661 1652
1662 dsi->bridge_node = of_graph_get_remote_node(node, DSI_PORT_OUT, 0); 1653 dsi->bridge_node = of_graph_get_remote_node(node, DSI_PORT_OUT, 0);
1663 if (!dsi->bridge_node) 1654 if (!dsi->bridge_node)
1664 return -EINVAL; 1655 return -EINVAL;
1665 1656
1666end: 1657 return 0;
1667 of_node_put(ep);
1668
1669 return ret;
1670} 1658}
1671 1659
1672static int exynos_dsi_bind(struct device *dev, struct device *master, 1660static int exynos_dsi_bind(struct device *dev, struct device *master,
@@ -1817,6 +1805,10 @@ static int exynos_dsi_probe(struct platform_device *pdev)
1817 1805
1818static int exynos_dsi_remove(struct platform_device *pdev) 1806static int exynos_dsi_remove(struct platform_device *pdev)
1819{ 1807{
1808 struct exynos_dsi *dsi = platform_get_drvdata(pdev);
1809
1810 of_node_put(dsi->bridge_node);
1811
1820 pm_runtime_disable(&pdev->dev); 1812 pm_runtime_disable(&pdev->dev);
1821 1813
1822 component_del(&pdev->dev, &exynos_dsi_component_ops); 1814 component_del(&pdev->dev, &exynos_dsi_component_ops);