[ARM] pxa/cm-x300: add PWM backlight support
authorIgor Grinberg <grinberg@compulab.co.il>
Tue, 10 Nov 2009 12:18:41 +0000 (14:18 +0200)
committerEric Miao <eric.y.miao@gmail.com>
Wed, 16 Dec 2009 08:49:22 +0000 (16:49 +0800)
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Signed-off-by: Mike Rapoport <mike@compulab.co.il>
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
arch/arm/mach-pxa/Kconfig
arch/arm/mach-pxa/cm-x300.c

index 6f4f475bbc3df558e32189a592bddf4742da20ea..8a0837ea0294218a6f9ed85d43ba4862d4afc3fd 100644 (file)
@@ -110,6 +110,8 @@ config MACH_CM_X300
        bool "CompuLab CM-X300 modules"
        select PXA3xx
        select CPU_PXA300
+       select CPU_PXA310
+       select HAVE_PWM
 
 config ARCH_GUMSTIX
        bool "Gumstix XScale 255 boards"
index d564d8ea5a339aa04fd63c61b2fdf478ddf039cc..d37cfa132a653227c9bc5225fc37d01909c77141 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/dm9000.h>
 #include <linux/leds.h>
 #include <linux/rtc-v3020.h>
+#include <linux/pwm_backlight.h>
 
 #include <linux/i2c.h>
 #include <linux/i2c/pca953x.h>
@@ -50,6 +51,7 @@
 #include <asm/mach/map.h>
 
 #include "generic.h"
+#include "devices.h"
 
 #define CM_X300_ETH_PHYS       0x08000010
 
@@ -160,6 +162,9 @@ static mfp_cfg_t cm_x3xx_mfp_cfg[] __initdata = {
        /* Standard I2C */
        GPIO21_I2C_SCL,
        GPIO22_I2C_SDA,
+
+       /* PWM Backlight */
+       GPIO19_PWM2_OUT,
 };
 
 static mfp_cfg_t cm_x3xx_rev_lt130_mfp_cfg[] __initdata = {
@@ -290,6 +295,30 @@ static void __init cm_x300_init_lcd(void)
 static inline void cm_x300_init_lcd(void) {}
 #endif
 
+#if defined(CONFIG_BACKLIGHT_PWM) || defined(CONFIG_BACKLIGHT_PWM_MODULE)
+static struct platform_pwm_backlight_data cm_x300_backlight_data = {
+       .pwm_id         = 2,
+       .max_brightness = 100,
+       .dft_brightness = 100,
+       .pwm_period_ns  = 10000,
+};
+
+static struct platform_device cm_x300_backlight_device = {
+       .name           = "pwm-backlight",
+       .dev            = {
+               .parent = &pxa27x_device_pwm0.dev,
+               .platform_data  = &cm_x300_backlight_data,
+       },
+};
+
+static void cm_x300_init_bl(void)
+{
+       platform_device_register(&cm_x300_backlight_device);
+}
+#else
+static inline void cm_x300_init_bl(void) {}
+#endif
+
 #if defined(CONFIG_SPI_GPIO) || defined(CONFIG_SPI_GPIO_MODULE)
 #define GPIO_LCD_BASE  (144)
 #define GPIO_LCD_DIN   (GPIO_LCD_BASE + 8)     /* aux_gpio3_0 */
@@ -654,6 +683,7 @@ static void __init cm_x300_init(void)
        cm_x300_init_rtc();
        cm_x300_init_ac97();
        cm_x300_init_wi2wi();
+       cm_x300_init_bl();
 }
 
 static void __init cm_x300_fixup(struct machine_desc *mdesc, struct tag *tags,