diff options
Diffstat (limited to 'drivers/video/omap2/dss')
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index 20291570f7a7..bbed3a13f9a4 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c | |||
@@ -1743,42 +1743,52 @@ static void dsi_vc_initial_config(int channel) | |||
1743 | dsi.vc[channel].mode = DSI_VC_MODE_L4; | 1743 | dsi.vc[channel].mode = DSI_VC_MODE_L4; |
1744 | } | 1744 | } |
1745 | 1745 | ||
1746 | static void dsi_vc_config_l4(int channel) | 1746 | static int dsi_vc_config_l4(int channel) |
1747 | { | 1747 | { |
1748 | if (dsi.vc[channel].mode == DSI_VC_MODE_L4) | 1748 | if (dsi.vc[channel].mode == DSI_VC_MODE_L4) |
1749 | return; | 1749 | return 0; |
1750 | 1750 | ||
1751 | DSSDBGF("%d", channel); | 1751 | DSSDBGF("%d", channel); |
1752 | 1752 | ||
1753 | dsi_vc_enable(channel, 0); | 1753 | dsi_vc_enable(channel, 0); |
1754 | 1754 | ||
1755 | if (REG_GET(DSI_VC_CTRL(channel), 15, 15)) /* VC_BUSY */ | 1755 | /* VC_BUSY */ |
1756 | if (wait_for_bit_change(DSI_VC_CTRL(channel), 15, 0) != 0) { | ||
1756 | DSSERR("vc(%d) busy when trying to config for L4\n", channel); | 1757 | DSSERR("vc(%d) busy when trying to config for L4\n", channel); |
1758 | return -EIO; | ||
1759 | } | ||
1757 | 1760 | ||
1758 | REG_FLD_MOD(DSI_VC_CTRL(channel), 0, 1, 1); /* SOURCE, 0 = L4 */ | 1761 | REG_FLD_MOD(DSI_VC_CTRL(channel), 0, 1, 1); /* SOURCE, 0 = L4 */ |
1759 | 1762 | ||
1760 | dsi_vc_enable(channel, 1); | 1763 | dsi_vc_enable(channel, 1); |
1761 | 1764 | ||
1762 | dsi.vc[channel].mode = DSI_VC_MODE_L4; | 1765 | dsi.vc[channel].mode = DSI_VC_MODE_L4; |
1766 | |||
1767 | return 0; | ||
1763 | } | 1768 | } |
1764 | 1769 | ||
1765 | static void dsi_vc_config_vp(int channel) | 1770 | static int dsi_vc_config_vp(int channel) |
1766 | { | 1771 | { |
1767 | if (dsi.vc[channel].mode == DSI_VC_MODE_VP) | 1772 | if (dsi.vc[channel].mode == DSI_VC_MODE_VP) |
1768 | return; | 1773 | return 0; |
1769 | 1774 | ||
1770 | DSSDBGF("%d", channel); | 1775 | DSSDBGF("%d", channel); |
1771 | 1776 | ||
1772 | dsi_vc_enable(channel, 0); | 1777 | dsi_vc_enable(channel, 0); |
1773 | 1778 | ||
1774 | if (REG_GET(DSI_VC_CTRL(channel), 15, 15)) /* VC_BUSY */ | 1779 | /* VC_BUSY */ |
1780 | if (wait_for_bit_change(DSI_VC_CTRL(channel), 15, 0) != 0) { | ||
1775 | DSSERR("vc(%d) busy when trying to config for VP\n", channel); | 1781 | DSSERR("vc(%d) busy when trying to config for VP\n", channel); |
1782 | return -EIO; | ||
1783 | } | ||
1776 | 1784 | ||
1777 | REG_FLD_MOD(DSI_VC_CTRL(channel), 1, 1, 1); /* SOURCE, 1 = video port */ | 1785 | REG_FLD_MOD(DSI_VC_CTRL(channel), 1, 1, 1); /* SOURCE, 1 = video port */ |
1778 | 1786 | ||
1779 | dsi_vc_enable(channel, 1); | 1787 | dsi_vc_enable(channel, 1); |
1780 | 1788 | ||
1781 | dsi.vc[channel].mode = DSI_VC_MODE_VP; | 1789 | dsi.vc[channel].mode = DSI_VC_MODE_VP; |
1790 | |||
1791 | return 0; | ||
1782 | } | 1792 | } |
1783 | 1793 | ||
1784 | 1794 | ||