diff options
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_dsi.c')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_dsi.c | 26 |
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 | ||
1666 | end: | 1657 | return 0; |
1667 | of_node_put(ep); | ||
1668 | |||
1669 | return ret; | ||
1670 | } | 1658 | } |
1671 | 1659 | ||
1672 | static int exynos_dsi_bind(struct device *dev, struct device *master, | 1660 | static 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 | ||
1818 | static int exynos_dsi_remove(struct platform_device *pdev) | 1806 | static 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); |