Commit 7636b3b4 authored by Archit Taneja's avatar Archit Taneja Committed by Tomi Valkeinen

OMAP2PLUS: DSS2: Remove hack config "CONFIG_OMAP2_DSS_USE_DSI_PLL"

The clock sources for DISPC_FCLK and LCD1_CLK are now specified in the board file.
There is no need for the hack config "CONFIG_OMAP2_DSS_USE_DSI_PLL" anymore.
Introduce function dpi_use_dsi_pll() which checks for the clock sources to decide
whether DSI PLL is to be used or not.
Signed-off-by: default avatarArchit Taneja <archit@ti.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 6cb07b25
...@@ -90,14 +90,6 @@ config OMAP2_DSS_DSI ...@@ -90,14 +90,6 @@ config OMAP2_DSS_DSI
See http://www.mipi.org/ for DSI spesifications. See http://www.mipi.org/ for DSI spesifications.
config OMAP2_DSS_USE_DSI_PLL
bool "Use DSI PLL for PCLK (EXPERIMENTAL)"
default n
depends on OMAP2_DSS_DSI
help
Use DSI PLL to generate pixel clock. Currently only for DPI output.
DSI PLL can be used to generate higher and more precise pixel clocks.
config OMAP2_DSS_FAKE_VSYNC config OMAP2_DSS_FAKE_VSYNC
bool "Fake VSYNC irq from manual update displays" bool "Fake VSYNC irq from manual update displays"
default n default n
......
...@@ -39,7 +39,17 @@ static struct { ...@@ -39,7 +39,17 @@ static struct {
struct regulator *vdds_dsi_reg; struct regulator *vdds_dsi_reg;
} dpi; } dpi;
#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL static bool dpi_use_dsi_pll(struct omap_dss_device *dssdev)
{
if (dssdev->clocks.dispc.dispc_fclk_src ==
OMAP_DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC ||
dssdev->clocks.dispc.channel.lcd_clk_src ==
OMAP_DSS_CLK_SRC_DSI_PLL_HSDIV_DISPC)
return true;
else
return false;
}
static int dpi_set_dsi_clk(struct omap_dss_device *dssdev, bool is_tft, static int dpi_set_dsi_clk(struct omap_dss_device *dssdev, bool is_tft,
unsigned long pck_req, unsigned long *fck, int *lck_div, unsigned long pck_req, unsigned long *fck, int *lck_div,
int *pck_div) int *pck_div)
...@@ -69,7 +79,7 @@ static int dpi_set_dsi_clk(struct omap_dss_device *dssdev, bool is_tft, ...@@ -69,7 +79,7 @@ static int dpi_set_dsi_clk(struct omap_dss_device *dssdev, bool is_tft,
return 0; return 0;
} }
#else
static int dpi_set_dispc_clk(struct omap_dss_device *dssdev, bool is_tft, static int dpi_set_dispc_clk(struct omap_dss_device *dssdev, bool is_tft,
unsigned long pck_req, unsigned long *fck, int *lck_div, unsigned long pck_req, unsigned long *fck, int *lck_div,
int *pck_div) int *pck_div)
...@@ -96,13 +106,12 @@ static int dpi_set_dispc_clk(struct omap_dss_device *dssdev, bool is_tft, ...@@ -96,13 +106,12 @@ static int dpi_set_dispc_clk(struct omap_dss_device *dssdev, bool is_tft,
return 0; return 0;
} }
#endif
static int dpi_set_mode(struct omap_dss_device *dssdev) static int dpi_set_mode(struct omap_dss_device *dssdev)
{ {
struct omap_video_timings *t = &dssdev->panel.timings; struct omap_video_timings *t = &dssdev->panel.timings;
int lck_div, pck_div; int lck_div = 0, pck_div = 0;
unsigned long fck; unsigned long fck = 0;
unsigned long pck; unsigned long pck;
bool is_tft; bool is_tft;
int r = 0; int r = 0;
...@@ -114,13 +123,12 @@ static int dpi_set_mode(struct omap_dss_device *dssdev) ...@@ -114,13 +123,12 @@ static int dpi_set_mode(struct omap_dss_device *dssdev)
is_tft = (dssdev->panel.config & OMAP_DSS_LCD_TFT) != 0; is_tft = (dssdev->panel.config & OMAP_DSS_LCD_TFT) != 0;
#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL if (dpi_use_dsi_pll(dssdev))
r = dpi_set_dsi_clk(dssdev, is_tft, t->pixel_clock * 1000, &fck, r = dpi_set_dsi_clk(dssdev, is_tft, t->pixel_clock * 1000,
&lck_div, &pck_div); &fck, &lck_div, &pck_div);
#else else
r = dpi_set_dispc_clk(dssdev, is_tft, t->pixel_clock * 1000, &fck, r = dpi_set_dispc_clk(dssdev, is_tft, t->pixel_clock * 1000,
&lck_div, &pck_div); &fck, &lck_div, &pck_div);
#endif
if (r) if (r)
goto err0; goto err0;
...@@ -179,12 +187,13 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev) ...@@ -179,12 +187,13 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev)
if (r) if (r)
goto err2; goto err2;
#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL if (dpi_use_dsi_pll(dssdev)) {
dss_clk_enable(DSS_CLK_SYSCK); dss_clk_enable(DSS_CLK_SYSCK);
r = dsi_pll_init(dssdev, 0, 1); r = dsi_pll_init(dssdev, 0, 1);
if (r) if (r)
goto err3; goto err3;
#endif }
r = dpi_set_mode(dssdev); r = dpi_set_mode(dssdev);
if (r) if (r)
goto err4; goto err4;
...@@ -196,11 +205,11 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev) ...@@ -196,11 +205,11 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev)
return 0; return 0;
err4: err4:
#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL if (dpi_use_dsi_pll(dssdev))
dsi_pll_uninit(); dsi_pll_uninit();
err3: err3:
dss_clk_disable(DSS_CLK_SYSCK); if (dpi_use_dsi_pll(dssdev))
#endif dss_clk_disable(DSS_CLK_SYSCK);
err2: err2:
dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK); dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK);
if (cpu_is_omap34xx()) if (cpu_is_omap34xx())
...@@ -216,11 +225,11 @@ void omapdss_dpi_display_disable(struct omap_dss_device *dssdev) ...@@ -216,11 +225,11 @@ void omapdss_dpi_display_disable(struct omap_dss_device *dssdev)
{ {
dssdev->manager->disable(dssdev->manager); dssdev->manager->disable(dssdev->manager);
#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL if (dpi_use_dsi_pll(dssdev)) {
dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK); dss_select_dispc_clk_source(OMAP_DSS_CLK_SRC_FCK);
dsi_pll_uninit(); dsi_pll_uninit();
dss_clk_disable(DSS_CLK_SYSCK); dss_clk_disable(DSS_CLK_SYSCK);
#endif }
dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK); dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK);
...@@ -251,6 +260,7 @@ int dpi_check_timings(struct omap_dss_device *dssdev, ...@@ -251,6 +260,7 @@ int dpi_check_timings(struct omap_dss_device *dssdev,
int lck_div, pck_div; int lck_div, pck_div;
unsigned long fck; unsigned long fck;
unsigned long pck; unsigned long pck;
struct dispc_clock_info dispc_cinfo;
if (!dispc_lcd_timings_ok(timings)) if (!dispc_lcd_timings_ok(timings))
return -EINVAL; return -EINVAL;
...@@ -260,10 +270,8 @@ int dpi_check_timings(struct omap_dss_device *dssdev, ...@@ -260,10 +270,8 @@ int dpi_check_timings(struct omap_dss_device *dssdev,
is_tft = (dssdev->panel.config & OMAP_DSS_LCD_TFT) != 0; is_tft = (dssdev->panel.config & OMAP_DSS_LCD_TFT) != 0;
#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL if (dpi_use_dsi_pll(dssdev)) {
{
struct dsi_clock_info dsi_cinfo; struct dsi_clock_info dsi_cinfo;
struct dispc_clock_info dispc_cinfo;
r = dsi_pll_calc_clock_div_pck(is_tft, r = dsi_pll_calc_clock_div_pck(is_tft,
timings->pixel_clock * 1000, timings->pixel_clock * 1000,
&dsi_cinfo, &dispc_cinfo); &dsi_cinfo, &dispc_cinfo);
...@@ -272,13 +280,8 @@ int dpi_check_timings(struct omap_dss_device *dssdev, ...@@ -272,13 +280,8 @@ int dpi_check_timings(struct omap_dss_device *dssdev,
return r; return r;
fck = dsi_cinfo.dsi_pll_hsdiv_dispc_clk; fck = dsi_cinfo.dsi_pll_hsdiv_dispc_clk;
lck_div = dispc_cinfo.lck_div; } else {
pck_div = dispc_cinfo.pck_div;
}
#else
{
struct dss_clock_info dss_cinfo; struct dss_clock_info dss_cinfo;
struct dispc_clock_info dispc_cinfo;
r = dss_calc_clock_div(is_tft, timings->pixel_clock * 1000, r = dss_calc_clock_div(is_tft, timings->pixel_clock * 1000,
&dss_cinfo, &dispc_cinfo); &dss_cinfo, &dispc_cinfo);
...@@ -286,10 +289,10 @@ int dpi_check_timings(struct omap_dss_device *dssdev, ...@@ -286,10 +289,10 @@ int dpi_check_timings(struct omap_dss_device *dssdev,
return r; return r;
fck = dss_cinfo.fck; fck = dss_cinfo.fck;
lck_div = dispc_cinfo.lck_div;
pck_div = dispc_cinfo.pck_div;
} }
#endif
lck_div = dispc_cinfo.lck_div;
pck_div = dispc_cinfo.pck_div;
pck = fck / lck_div / pck_div / 1000; pck = fck / lck_div / pck_div / 1000;
......
...@@ -1417,12 +1417,6 @@ int dsi_pll_init(struct omap_dss_device *dssdev, bool enable_hsclk, ...@@ -1417,12 +1417,6 @@ int dsi_pll_init(struct omap_dss_device *dssdev, bool enable_hsclk,
DSSDBG("PLL init\n"); DSSDBG("PLL init\n");
#ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL
/*
* HACK: this is just a quick hack to get the USE_DSI_PLL
* option working. USE_DSI_PLL is itself a big hack, and
* should be removed.
*/
if (dsi.vdds_dsi_reg == NULL) { if (dsi.vdds_dsi_reg == NULL) {
struct regulator *vdds_dsi; struct regulator *vdds_dsi;
...@@ -1435,7 +1429,6 @@ int dsi_pll_init(struct omap_dss_device *dssdev, bool enable_hsclk, ...@@ -1435,7 +1429,6 @@ int dsi_pll_init(struct omap_dss_device *dssdev, bool enable_hsclk,
dsi.vdds_dsi_reg = vdds_dsi; dsi.vdds_dsi_reg = vdds_dsi;
} }
#endif
enable_clocks(1); enable_clocks(1);
dsi_enable_pll_clock(1); dsi_enable_pll_clock(1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment