Since GPI0, GPI1 and GPI8 are for hardware version control. They would create current leaking if they are setup as output. It's resloved by adding gta03 specific fb_gpio_setup function in fb platform data.
Signed-off-by: Matt Hsu <[email protected]> Reported-by: Dkay Chen <[email protected]> --- arch/arm/mach-s3c6410/mach-om-gta03.c | 23 ++++++++++++++++++++++- 1 files changed, 22 insertions(+), 1 deletions(-) diff --git a/arch/arm/mach-s3c6410/mach-om-gta03.c b/arch/arm/mach-s3c6410/mach-om-gta03.c index d9677aa..4f90239 100644 --- a/arch/arm/mach-s3c6410/mach-om-gta03.c +++ b/arch/arm/mach-s3c6410/mach-om-gta03.c @@ -449,8 +449,29 @@ static struct s3c_fb_pd_win om_gta03_fb_win0 = { .default_bpp = 16, }; +static void om_gta03_fb_gpio_setup(void) +{ + unsigned int gpio; + + /* GPI0, GPI1, GPI8 are for hardware version contrl. + * They should be set as input in order to prevent + * current leaking + */ + for (gpio = S3C64XX_GPI(2); gpio <= S3C64XX_GPI(15); gpio++) { + if (gpio != S3C64XX_GPI(8)) { + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); + } + } + + for (gpio = S3C64XX_GPJ(0); gpio <= S3C64XX_GPJ(11); gpio++) { + s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(2)); + s3c_gpio_setpull(gpio, S3C_GPIO_PULL_NONE); + } +} + static struct s3c_fb_platdata om_gta03_lcd_pdata __initdata = { - .setup_gpio = s3c64xx_fb_gpio_setup_24bpp, + .setup_gpio = om_gta03_fb_gpio_setup, .win[0] = &om_gta03_fb_win0, .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB, .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC, -- 1.5.6.5
