Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25d391cb authored by Vasily Khoruzhick's avatar Vasily Khoruzhick Committed by Ben Dooks
Browse files

ARM: S3C2410: H1940: Fix lcd_power_set function



Current implementation of lcd_power_set is not reliable, sometimes
it does not enable LCD at all.
Mimic WinCE behavior to fix this issue.

Signed-off-by: default avatarVasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
parent a8e99850
Loading
Loading
Loading
Loading
+15 −11
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#include <linux/leds.h>
#include <linux/pda_power.h>
#include <linux/s3c_adc_battery.h>
#include <linux/delay.h>

#include <video/platform_lcd.h>

@@ -211,7 +212,7 @@ static struct s3c2410fb_mach_info h1940_fb_info __initdata = {

	.lpcsel =	0x02,
	.gpccon =	0xaa940659,
	.gpccon_mask=	0xffffffff,
	.gpccon_mask =	0xffffc0f0,
	.gpcup =	0x0000ffff,
	.gpcup_mask =	0xffffffff,
	.gpdcon =	0xaa84aaa0,
@@ -526,14 +527,14 @@ static struct platform_device h1940_backlight = {
static void h1940_lcd_power_set(struct plat_lcd_data *pd,
					unsigned int power)
{
	int value;
	int value, retries = 100;

	if (!power) {
		gpio_set_value(S3C2410_GPC(0), 0);
		/* wait for 3ac */
		do {
			value = gpio_get_value(S3C2410_GPC(6));
		} while (value);
		} while (value && retries--);

		gpio_set_value(H1940_LATCH_LCD_P2, 0);
		gpio_set_value(H1940_LATCH_LCD_P3, 0);
@@ -551,6 +552,9 @@ static void h1940_lcd_power_set(struct plat_lcd_data *pd,
		gpio_set_value(H1940_LATCH_LCD_P0, 1);
		gpio_set_value(H1940_LATCH_LCD_P1, 1);

		gpio_direction_input(S3C2410_GPC(1));
		gpio_direction_input(S3C2410_GPC(4));
		mdelay(10);
		s3c_gpio_cfgpin(S3C2410_GPC(1), S3C_GPIO_SFN(2));
		s3c_gpio_cfgpin(S3C2410_GPC(4), S3C_GPIO_SFN(2));