mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 16:10:58 +00:00
sunxi: display: Correct clk_delay calculations for lcd displays
We should only subtract 2 from the vblank time when using tcon1. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Ian Campbell <ijc@hellion.org.uk>
This commit is contained in:
parent
bf689342a3
commit
ab2a2be988
1 changed files with 7 additions and 4 deletions
|
@ -663,11 +663,14 @@ static void sunxi_lcdc_backlight_enable(void)
|
||||||
gpio_direction_output(pin, PWM_ON);
|
gpio_direction_output(pin, PWM_ON);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sunxi_lcdc_get_clk_delay(const struct ctfb_res_modes *mode)
|
static int sunxi_lcdc_get_clk_delay(const struct ctfb_res_modes *mode, int tcon)
|
||||||
{
|
{
|
||||||
int delay;
|
int delay;
|
||||||
|
|
||||||
delay = mode->lower_margin + mode->vsync_len + mode->upper_margin - 2;
|
delay = mode->lower_margin + mode->vsync_len + mode->upper_margin;
|
||||||
|
if (tcon == 1)
|
||||||
|
delay -= 2;
|
||||||
|
|
||||||
return (delay > 30) ? 30 : delay;
|
return (delay > 30) ? 30 : delay;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -692,7 +695,7 @@ static void sunxi_lcdc_tcon0_mode_set(const struct ctfb_res_modes *mode,
|
||||||
clrsetbits_le32(&lcdc->ctrl, SUNXI_LCDC_CTRL_IO_MAP_MASK,
|
clrsetbits_le32(&lcdc->ctrl, SUNXI_LCDC_CTRL_IO_MAP_MASK,
|
||||||
SUNXI_LCDC_CTRL_IO_MAP_TCON0);
|
SUNXI_LCDC_CTRL_IO_MAP_TCON0);
|
||||||
|
|
||||||
clk_delay = sunxi_lcdc_get_clk_delay(mode);
|
clk_delay = sunxi_lcdc_get_clk_delay(mode, 0);
|
||||||
writel(SUNXI_LCDC_TCON0_CTRL_ENABLE |
|
writel(SUNXI_LCDC_TCON0_CTRL_ENABLE |
|
||||||
SUNXI_LCDC_TCON0_CTRL_CLK_DELAY(clk_delay), &lcdc->tcon0_ctrl);
|
SUNXI_LCDC_TCON0_CTRL_CLK_DELAY(clk_delay), &lcdc->tcon0_ctrl);
|
||||||
|
|
||||||
|
@ -770,7 +773,7 @@ static void sunxi_lcdc_tcon1_mode_set(const struct ctfb_res_modes *mode,
|
||||||
clrsetbits_le32(&lcdc->ctrl, SUNXI_LCDC_CTRL_IO_MAP_MASK,
|
clrsetbits_le32(&lcdc->ctrl, SUNXI_LCDC_CTRL_IO_MAP_MASK,
|
||||||
SUNXI_LCDC_CTRL_IO_MAP_TCON1);
|
SUNXI_LCDC_CTRL_IO_MAP_TCON1);
|
||||||
|
|
||||||
clk_delay = sunxi_lcdc_get_clk_delay(mode);
|
clk_delay = sunxi_lcdc_get_clk_delay(mode, 1);
|
||||||
writel(SUNXI_LCDC_TCON1_CTRL_ENABLE |
|
writel(SUNXI_LCDC_TCON1_CTRL_ENABLE |
|
||||||
SUNXI_LCDC_TCON1_CTRL_CLK_DELAY(clk_delay), &lcdc->tcon1_ctrl);
|
SUNXI_LCDC_TCON1_CTRL_CLK_DELAY(clk_delay), &lcdc->tcon1_ctrl);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue