diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-04-15 03:42:59 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-05-11 07:10:54 -0400 |
commit | c94dfe05c4b6c269e445691c1fc7a9d8679ba60f (patch) | |
tree | a83f4d48f32cfc647109c61218f99f8291a19cbf /drivers/video | |
parent | 89976f2990a97820b73a1768371ee505b0ffc176 (diff) |
OMAP: DSS2: DSI: Fix DSI PLL power bug
OMAP3630 has a HW bug causing DSI PLL power command POWER_ON_DIV (0x3)
to not work properly. The bug prevents us from enabling DSI PLL power
only to HS divider block.
This patch adds a dss feature for the bug and converts POWER_ON_DIV
requests to POWER_ON_ALL (0x2).
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 5 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss_features.c | 2 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss_features.h | 2 |
3 files changed, 8 insertions, 1 deletions
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index 5cf13f4b9e8..fe655b6ab2a 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c | |||
@@ -1059,6 +1059,11 @@ static int dsi_pll_power(enum dsi_pll_power_state state) | |||
1059 | { | 1059 | { |
1060 | int t = 0; | 1060 | int t = 0; |
1061 | 1061 | ||
1062 | /* DSI-PLL power command 0x3 is not working */ | ||
1063 | if (dss_has_feature(FEAT_DSI_PLL_PWR_BUG) && | ||
1064 | state == DSI_PLL_POWER_ON_DIV) | ||
1065 | state = DSI_PLL_POWER_ON_ALL; | ||
1066 | |||
1062 | REG_FLD_MOD(DSI_CLK_CTRL, state, 31, 30); /* PLL_PWR_CMD */ | 1067 | REG_FLD_MOD(DSI_CLK_CTRL, state, 31, 30); /* PLL_PWR_CMD */ |
1063 | 1068 | ||
1064 | /* PLL_PWR_STATUS */ | 1069 | /* PLL_PWR_STATUS */ |
diff --git a/drivers/video/omap2/dss/dss_features.c b/drivers/video/omap2/dss/dss_features.c index 9ed2033f50e..43a4b51de15 100644 --- a/drivers/video/omap2/dss/dss_features.c +++ b/drivers/video/omap2/dss/dss_features.c | |||
@@ -271,7 +271,7 @@ static struct omap_dss_features omap3630_dss_features = { | |||
271 | FEAT_LCDENABLESIGNAL | FEAT_PCKFREEENABLE | | 271 | FEAT_LCDENABLESIGNAL | FEAT_PCKFREEENABLE | |
272 | FEAT_PRE_MULT_ALPHA | FEAT_FUNCGATED | | 272 | FEAT_PRE_MULT_ALPHA | FEAT_FUNCGATED | |
273 | FEAT_ROWREPEATENABLE | FEAT_LINEBUFFERSPLIT | | 273 | FEAT_ROWREPEATENABLE | FEAT_LINEBUFFERSPLIT | |
274 | FEAT_RESIZECONF, | 274 | FEAT_RESIZECONF | FEAT_DSI_PLL_PWR_BUG, |
275 | 275 | ||
276 | .num_mgrs = 2, | 276 | .num_mgrs = 2, |
277 | .num_ovls = 3, | 277 | .num_ovls = 3, |
diff --git a/drivers/video/omap2/dss/dss_features.h b/drivers/video/omap2/dss/dss_features.h index 12e9c4ef0de..37922ce6b8b 100644 --- a/drivers/video/omap2/dss/dss_features.h +++ b/drivers/video/omap2/dss/dss_features.h | |||
@@ -40,6 +40,8 @@ enum dss_feat_id { | |||
40 | /* Independent core clk divider */ | 40 | /* Independent core clk divider */ |
41 | FEAT_CORE_CLK_DIV = 1 << 11, | 41 | FEAT_CORE_CLK_DIV = 1 << 11, |
42 | FEAT_LCD_CLK_SRC = 1 << 12, | 42 | FEAT_LCD_CLK_SRC = 1 << 12, |
43 | /* DSI-PLL power command 0x3 is not working */ | ||
44 | FEAT_DSI_PLL_PWR_BUG = 1 << 13, | ||
43 | }; | 45 | }; |
44 | 46 | ||
45 | /* DSS register field id */ | 47 | /* DSS register field id */ |