aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos/exynos_drm_dsi.c
diff options
context:
space:
mode:
authorGustavo Padovan <gustavo.padovan@collabora.co.uk>2015-08-10 20:37:04 -0400
committerInki Dae <inki.dae@samsung.com>2015-08-15 21:23:36 -0400
commitb6595dc7e1ccc0964862a5bd436a8f004b36c02f (patch)
treef1156afe0c662d2851942d5ed4dd0683ec5e03c4 /drivers/gpu/drm/exynos/exynos_drm_dsi.c
parent08dd20099f3ce55a2ded0045b5a087aefea38cd8 (diff)
drm/exynos: split display's .dpms() into .enable() and .disable()
The DRM Core doesn't have a dpms() operation anymore, everything now is enable() or disable(). Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_dsi.c')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_dsi.c44
1 files changed, 13 insertions, 31 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index 0e58b36cb8c2..281b97d3465b 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -1518,16 +1518,17 @@ static void exynos_dsi_poweroff(struct exynos_dsi *dsi)
1518 dev_err(dsi->dev, "cannot disable regulators %d\n", ret); 1518 dev_err(dsi->dev, "cannot disable regulators %d\n", ret);
1519} 1519}
1520 1520
1521static int exynos_dsi_enable(struct exynos_dsi *dsi) 1521static void exynos_dsi_enable(struct exynos_drm_display *display)
1522{ 1522{
1523 struct exynos_dsi *dsi = display_to_dsi(display);
1523 int ret; 1524 int ret;
1524 1525
1525 if (dsi->state & DSIM_STATE_ENABLED) 1526 if (dsi->state & DSIM_STATE_ENABLED)
1526 return 0; 1527 return;
1527 1528
1528 ret = exynos_dsi_poweron(dsi); 1529 ret = exynos_dsi_poweron(dsi);
1529 if (ret < 0) 1530 if (ret < 0)
1530 return ret; 1531 return;
1531 1532
1532 dsi->state |= DSIM_STATE_ENABLED; 1533 dsi->state |= DSIM_STATE_ENABLED;
1533 1534
@@ -1535,7 +1536,7 @@ static int exynos_dsi_enable(struct exynos_dsi *dsi)
1535 if (ret < 0) { 1536 if (ret < 0) {
1536 dsi->state &= ~DSIM_STATE_ENABLED; 1537 dsi->state &= ~DSIM_STATE_ENABLED;
1537 exynos_dsi_poweroff(dsi); 1538 exynos_dsi_poweroff(dsi);
1538 return ret; 1539 return;
1539 } 1540 }
1540 1541
1541 exynos_dsi_set_display_mode(dsi); 1542 exynos_dsi_set_display_mode(dsi);
@@ -1547,16 +1548,16 @@ static int exynos_dsi_enable(struct exynos_dsi *dsi)
1547 exynos_dsi_set_display_enable(dsi, false); 1548 exynos_dsi_set_display_enable(dsi, false);
1548 drm_panel_unprepare(dsi->panel); 1549 drm_panel_unprepare(dsi->panel);
1549 exynos_dsi_poweroff(dsi); 1550 exynos_dsi_poweroff(dsi);
1550 return ret; 1551 return;
1551 } 1552 }
1552 1553
1553 dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE; 1554 dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE;
1554
1555 return 0;
1556} 1555}
1557 1556
1558static void exynos_dsi_disable(struct exynos_dsi *dsi) 1557static void exynos_dsi_disable(struct exynos_drm_display *display)
1559{ 1558{
1559 struct exynos_dsi *dsi = display_to_dsi(display);
1560
1560 if (!(dsi->state & DSIM_STATE_ENABLED)) 1561 if (!(dsi->state & DSIM_STATE_ENABLED))
1561 return; 1562 return;
1562 1563
@@ -1571,26 +1572,6 @@ static void exynos_dsi_disable(struct exynos_dsi *dsi)
1571 exynos_dsi_poweroff(dsi); 1572 exynos_dsi_poweroff(dsi);
1572} 1573}
1573 1574
1574static void exynos_dsi_dpms(struct exynos_drm_display *display, int mode)
1575{
1576 struct exynos_dsi *dsi = display_to_dsi(display);
1577
1578 if (dsi->panel) {
1579 switch (mode) {
1580 case DRM_MODE_DPMS_ON:
1581 exynos_dsi_enable(dsi);
1582 break;
1583 case DRM_MODE_DPMS_STANDBY:
1584 case DRM_MODE_DPMS_SUSPEND:
1585 case DRM_MODE_DPMS_OFF:
1586 exynos_dsi_disable(dsi);
1587 break;
1588 default:
1589 break;
1590 }
1591 }
1592}
1593
1594static enum drm_connector_status 1575static enum drm_connector_status
1595exynos_dsi_detect(struct drm_connector *connector, bool force) 1576exynos_dsi_detect(struct drm_connector *connector, bool force)
1596{ 1577{
@@ -1604,7 +1585,7 @@ exynos_dsi_detect(struct drm_connector *connector, bool force)
1604 struct exynos_drm_display *display; 1585 struct exynos_drm_display *display;
1605 1586
1606 display = platform_get_drvdata(to_platform_device(dsi->dev)); 1587 display = platform_get_drvdata(to_platform_device(dsi->dev));
1607 exynos_dsi_dpms(display, DRM_MODE_DPMS_OFF); 1588 exynos_dsi_disable(display);
1608 drm_panel_detach(dsi->panel); 1589 drm_panel_detach(dsi->panel);
1609 dsi->panel = NULL; 1590 dsi->panel = NULL;
1610 } 1591 }
@@ -1698,7 +1679,8 @@ static void exynos_dsi_mode_set(struct exynos_drm_display *display,
1698static struct exynos_drm_display_ops exynos_dsi_display_ops = { 1679static struct exynos_drm_display_ops exynos_dsi_display_ops = {
1699 .create_connector = exynos_dsi_create_connector, 1680 .create_connector = exynos_dsi_create_connector,
1700 .mode_set = exynos_dsi_mode_set, 1681 .mode_set = exynos_dsi_mode_set,
1701 .dpms = exynos_dsi_dpms 1682 .enable = exynos_dsi_enable,
1683 .disable = exynos_dsi_disable,
1702}; 1684};
1703 1685
1704MODULE_DEVICE_TABLE(of, exynos_dsi_of_match); 1686MODULE_DEVICE_TABLE(of, exynos_dsi_of_match);
@@ -1849,7 +1831,7 @@ static void exynos_dsi_unbind(struct device *dev, struct device *master,
1849 struct exynos_drm_display *display = dev_get_drvdata(dev); 1831 struct exynos_drm_display *display = dev_get_drvdata(dev);
1850 struct exynos_dsi *dsi = display_to_dsi(display); 1832 struct exynos_dsi *dsi = display_to_dsi(display);
1851 1833
1852 exynos_dsi_dpms(display, DRM_MODE_DPMS_OFF); 1834 exynos_dsi_disable(display);
1853 1835
1854 mipi_dsi_host_unregister(&dsi->dsi_host); 1836 mipi_dsi_host_unregister(&dsi->dsi_host);
1855} 1837}