From 472d378e16ccee77fedc691bf80f3a9200488e67 Mon Sep 17 00:00:00 2001 From: Liu Ying Date: Mon, 1 Nov 2010 12:41:36 +0800 Subject: ENGR00133183 MX50 EVK: Support PWM LCD backlight 1) Add PWM and PWM backlight platform data. 2) Change PWM1 pin's mux mode to be PWMO. Signed-off-by: Liu Ying --- arch/arm/mach-mx5/mx50_rdp.c | 17 ++++++++++++----- arch/arm/plat-mxc/include/mach/iomux-mx50.h | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'arch') diff --git a/arch/arm/mach-mx5/mx50_rdp.c b/arch/arm/mach-mx5/mx50_rdp.c index 377de3c9f105..fc061bdcc3e8 100644 --- a/arch/arm/mach-mx5/mx50_rdp.c +++ b/arch/arm/mach-mx5/mx50_rdp.c @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -99,7 +100,6 @@ #define EPDC_PMIC_INT (5*32 + 17) /*GPIO_6_17 */ #define EPDC_VCOM (3*32 + 21) /*GPIO_4_21 */ #define EPDC_PWRSTAT (2*32 + 28) /*GPIO_3_28 */ -#define ELCDIF_BACKLIGHT (5*32 + 24) /*GPIO_6_24 */ #define ELCDIF_PWR_ON (1*32 + 21) /*GPIO_2_21 */ #define ELCDIF_DAT0_DUMMY (0*32 + 0) /*GPIO_1_0 */ #define ELCDIF_DAT1_DUMMY (0*32 + 1) /*GPIO_1_1 */ @@ -222,7 +222,7 @@ static struct pad_desc mx50_rdp[] = { MX50_PAD_DISP_RS__ELCDIF_VSYNC, /* ELCDIF contrast */ - MX50_PAD_PWM1__GPIO_6_24, + MX50_PAD_PWM1__PWMO, /* ELCDIF power on */ MX50_PAD_DISP_CS__GPIO_2_21, @@ -1107,6 +1107,13 @@ static struct mxc_fb_platform_data fb_data[] = { }, }; +static struct platform_pwm_backlight_data mxc_pwm_backlight_data = { + .pwm_id = 0, + .max_brightness = 255, + .dft_brightness = 128, + .pwm_period_ns = 2000000, +}; + static void mx50_arm2_usb_set_vbus(bool enable) { gpio_set_value(USB_OTG_PWR, enable); @@ -1269,9 +1276,6 @@ static void __init mx50_rdp_io_init(void) gpio_request(EPDC_PWRSTAT, "epdc-pwrstat"); gpio_direction_input(EPDC_PWRSTAT); - gpio_request(ELCDIF_BACKLIGHT, "elcdif-backlight"); - gpio_direction_output(ELCDIF_BACKLIGHT, 1); - gpio_request(ELCDIF_PWR_ON, "elcdif-power-on"); gpio_direction_output(ELCDIF_PWR_ON, 1); @@ -1357,6 +1361,9 @@ static void __init mxc_board_init(void) mxc_register_device(&epdc_device, &epdc_data); mxc_register_device(&lcd_wvga_device, &lcd_wvga_data); mxc_register_device(&elcdif_device, &fb_data[0]); + mxc_register_device(&mxc_pwm1_device, NULL); + mxc_register_device(&mxc_pwm1_backlight_device, + &mxc_pwm_backlight_data); mxc_register_device(&mxs_viim, NULL); mxc_register_device(&mxc_rngb_device, NULL); mxc_register_device(&dcp_device, NULL); diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx50.h b/arch/arm/plat-mxc/include/mach/iomux-mx50.h index 2e48220962ed..2acac7ccace7 100644 --- a/arch/arm/plat-mxc/include/mach/iomux-mx50.h +++ b/arch/arm/plat-mxc/include/mach/iomux-mx50.h @@ -85,7 +85,7 @@ typedef enum iomux_config { #define MX50_PAD_I2C2_SDA__GPIO_6_21 IOMUX_PAD(0x2F8, 0x4C, 1, 0x0, 0, NO_PAD_CTRL) #define MX50_PAD_I2C3_SCL__GPIO_6_22 IOMUX_PAD(0x2FC, 0x50, 1, 0x0, 0, NO_PAD_CTRL) #define MX50_PAD_I2C3_SDA__GPIO_6_23 IOMUX_PAD(0x300, 0x54, 1, 0x0, 0, NO_PAD_CTRL) -#define MX50_PAD_PWM1__GPIO_6_24 IOMUX_PAD(0x304, 0x58, 1, 0x0, 0, NO_PAD_CTRL) +#define MX50_PAD_PWM1__PWMO IOMUX_PAD(0x304, 0x58, 0, 0x0, 0, NO_PAD_CTRL) #define MX50_PAD_PWM2__GPIO_6_25 IOMUX_PAD(0x308, 0x5C, 1, 0x0, 0, NO_PAD_CTRL) #define MX50_PAD_OWIRE__GPIO_6_26 IOMUX_PAD(0x30C, 0x60, 1, 0x0, 0, NO_PAD_CTRL) #define MX50_PAD_EPITO__GPIO_6_27 IOMUX_PAD(0x310, 0x64, 1, 0x0, 0, NO_PAD_CTRL) -- cgit v1.2.3