Commit 79ee89cd authored by Archit Taneja's avatar Archit Taneja Committed by Tomi Valkeinen

OMAPDSS: DISPC: Fix scaling constraints for OMAP4

The calculation of required DISPC_FCLK for downscaling is done by multplying the
pixel clock with an integer factor. This isn't true for OMAP4 where the required
clock is calculated using the exact ratio of downscaling done.

Fix this calculation for OMAP4. Also, do a minor clean up of calc_fclk().
Signed-off-by: default avatarArchit Taneja <archit@ti.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent c124f23d
...@@ -1694,6 +1694,7 @@ static unsigned long calc_fclk(enum omap_channel channel, u16 width, ...@@ -1694,6 +1694,7 @@ static unsigned long calc_fclk(enum omap_channel channel, u16 width,
u16 height, u16 out_width, u16 out_height) u16 height, u16 out_width, u16 out_height)
{ {
unsigned int hf, vf; unsigned int hf, vf;
unsigned long pclk = dispc_mgr_pclk_rate(channel);
/* /*
* FIXME how to determine the 'A' factor * FIXME how to determine the 'A' factor
...@@ -1716,13 +1717,16 @@ static unsigned long calc_fclk(enum omap_channel channel, u16 width, ...@@ -1716,13 +1717,16 @@ static unsigned long calc_fclk(enum omap_channel channel, u16 width,
if (cpu_is_omap24xx()) { if (cpu_is_omap24xx()) {
if (vf > 1 && hf > 1) if (vf > 1 && hf > 1)
return dispc_mgr_pclk_rate(channel) * 4; return pclk * 4;
else else
return dispc_mgr_pclk_rate(channel) * 2; return pclk * 2;
} else if (cpu_is_omap34xx()) { } else if (cpu_is_omap34xx()) {
return dispc_mgr_pclk_rate(channel) * vf * hf; return pclk * vf * hf;
} else { } else {
return dispc_mgr_pclk_rate(channel) * hf; if (hf > 1)
return DIV_ROUND_UP(pclk, out_width) * width;
else
return pclk;
} }
} }
......
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