summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/omap2/displays/panel-generic-dpi.c24
-rw-r--r--drivers/video/omap2/dss/dss.c33
2 files changed, 54 insertions, 3 deletions
diff --git a/drivers/video/omap2/displays/panel-generic-dpi.c b/drivers/video/omap2/displays/panel-generic-dpi.c
index 4a9b9ff5946..687c9c7d219 100644
--- a/drivers/video/omap2/displays/panel-generic-dpi.c
+++ b/drivers/video/omap2/displays/panel-generic-dpi.c
@@ -181,6 +181,30 @@ static struct panel_config generic_dpi_panels[] = {
.power_off_delay = 0,
.name = "samsung_lte430wq_f0c",
},
+
+ /* Vesa 720p 1280x768 */
+ {
+ {
+ .x_res = 1280,
+ .y_res = 768,
+
+ .pixel_clock = 71000,
+
+ .hfp = 128,
+ .hsw = 64,
+ .hbp = 192,
+
+ .vfp = 3,
+ .vsw = 7,
+ .vbp = 20,
+ },
+ .acbi = 0x0,
+ .acb = 0x0,
+ .config = OMAP_DSS_LCD_TFT,
+ .power_on_delay = 0,
+ .power_off_delay = 0,
+ .name = "dvi_720p",
+ },
};
struct panel_drv_data {
diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c
index 3f1fee63c67..db0a9ef210c 100644
--- a/drivers/video/omap2/dss/dss.c
+++ b/drivers/video/omap2/dss/dss.c
@@ -68,6 +68,7 @@ static struct {
struct clk *dss_sys_clk;
struct clk *dss_tv_fck;
struct clk *dss_video_fck;
+ struct clk *dss_dss_clk;
unsigned num_clks_enabled;
unsigned long cache_req_pck;
@@ -816,6 +817,7 @@ static int dss_get_clocks(void)
dss.dss_sys_clk = NULL;
dss.dss_tv_fck = NULL;
dss.dss_video_fck = NULL;
+ dss.dss_dss_clk = NULL;
r = dss_get_clock(&dss.dss_ick, "ick");
if (r)
@@ -848,6 +850,12 @@ static int dss_get_clocks(void)
goto err;
}
+ if (pdata->opt_clock_available("dss_clk")) {
+ r = dss_get_clock(&dss.dss_dss_clk, "dss_clk");
+ if (r)
+ goto err;
+ }
+
return 0;
err:
@@ -861,7 +869,8 @@ err:
clk_put(dss.dss_tv_fck);
if (dss.dss_video_fck)
clk_put(dss.dss_video_fck);
-
+ if (dss.dss_dss_clk)
+ clk_put(dss.dss_dss_clk);
return r;
}
@@ -873,6 +882,8 @@ static void dss_put_clocks(void)
clk_put(dss.dss_tv_fck);
if (dss.dss_sys_clk)
clk_put(dss.dss_sys_clk);
+ if (dss.dss_dss_clk)
+ clk_put(dss.dss_dss_clk);
clk_put(dss.dss_fck);
clk_put(dss.dss_ick);
}
@@ -920,8 +931,16 @@ static void dss_clk_enable_no_ctx(enum dss_clock clks)
if (clks & DSS_CLK_ICK)
clk_enable(dss.dss_ick);
- if (clks & DSS_CLK_FCK)
+ /*
+ * XXX: tie dss_dss_clk to FCK - this will change with following
+ * pm_runtime patches. Needed for OMAP4 boot up due to stricter
+ * clock cutting in pm framework post 2.6.38-rc5.
+ */
+ if (clks & DSS_CLK_FCK) {
clk_enable(dss.dss_fck);
+ if (dss.dss_dss_clk)
+ clk_enable(dss.dss_dss_clk);
+ }
if ((clks & DSS_CLK_SYSCK) && dss.dss_sys_clk)
clk_enable(dss.dss_sys_clk);
if ((clks & DSS_CLK_TVFCK) && dss.dss_tv_fck)
@@ -956,8 +975,16 @@ static void dss_clk_disable_no_ctx(enum dss_clock clks)
if (clks & DSS_CLK_ICK)
clk_disable(dss.dss_ick);
- if (clks & DSS_CLK_FCK)
+ /*
+ * XXX: tie dss_dss_clk to FCK - this will change with following
+ * pm_runtime patches. Needed for OMAP4 boot up due to stricter
+ * clock cutting in pm framework post 2.6.38-rc5.
+ */
+ if (clks & DSS_CLK_FCK) {
clk_disable(dss.dss_fck);
+ if (dss.dss_dss_clk)
+ clk_disable(dss.dss_dss_clk);
+ }
if ((clks & DSS_CLK_SYSCK) && dss.dss_sys_clk)
clk_disable(dss.dss_sys_clk);
if ((clks & DSS_CLK_TVFCK) && dss.dss_tv_fck)