diff options
Diffstat (limited to 'arch/arm')
| -rw-r--r-- | arch/arm/mach-omap2/board-zoom-display.c | 56 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/board-zoom-peripherals.c | 53 |
2 files changed, 52 insertions, 57 deletions
diff --git a/arch/arm/mach-omap2/board-zoom-display.c b/arch/arm/mach-omap2/board-zoom-display.c index 8cef477d6b00..9a7174faac51 100644 --- a/arch/arm/mach-omap2/board-zoom-display.c +++ b/arch/arm/mach-omap2/board-zoom-display.c | |||
| @@ -12,7 +12,6 @@ | |||
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
| 14 | #include <linux/gpio.h> | 14 | #include <linux/gpio.h> |
| 15 | #include <linux/i2c/twl.h> | ||
| 16 | #include <linux/spi/spi.h> | 15 | #include <linux/spi/spi.h> |
| 17 | #include <linux/platform_data/spi-omap2-mcspi.h> | 16 | #include <linux/platform_data/spi-omap2-mcspi.h> |
| 18 | #include <video/omapdss.h> | 17 | #include <video/omapdss.h> |
| @@ -49,59 +48,6 @@ static void zoom_panel_disable_lcd(struct omap_dss_device *dssdev) | |||
| 49 | { | 48 | { |
| 50 | } | 49 | } |
| 51 | 50 | ||
| 52 | /* Register offsets in TWL4030_MODULE_INTBR */ | ||
| 53 | #define TWL_INTBR_PMBR1 0xD | ||
| 54 | #define TWL_INTBR_GPBR1 0xC | ||
| 55 | |||
| 56 | /* Register offsets in TWL_MODULE_PWM */ | ||
| 57 | #define TWL_LED_PWMON 0x3 | ||
| 58 | #define TWL_LED_PWMOFF 0x4 | ||
| 59 | |||
| 60 | static int zoom_set_bl_intensity(struct omap_dss_device *dssdev, int level) | ||
| 61 | { | ||
| 62 | #ifdef CONFIG_TWL4030_CORE | ||
| 63 | unsigned char c; | ||
| 64 | u8 mux_pwm, enb_pwm; | ||
| 65 | |||
| 66 | if (level > 100) | ||
| 67 | return -1; | ||
| 68 | |||
| 69 | twl_i2c_read_u8(TWL4030_MODULE_INTBR, &mux_pwm, TWL_INTBR_PMBR1); | ||
| 70 | twl_i2c_read_u8(TWL4030_MODULE_INTBR, &enb_pwm, TWL_INTBR_GPBR1); | ||
| 71 | |||
| 72 | if (level == 0) { | ||
| 73 | /* disable pwm1 output and clock */ | ||
| 74 | enb_pwm = enb_pwm & 0xF5; | ||
| 75 | /* change pwm1 pin to gpio pin */ | ||
| 76 | mux_pwm = mux_pwm & 0xCF; | ||
| 77 | twl_i2c_write_u8(TWL4030_MODULE_INTBR, | ||
| 78 | enb_pwm, TWL_INTBR_GPBR1); | ||
| 79 | twl_i2c_write_u8(TWL4030_MODULE_INTBR, | ||
| 80 | mux_pwm, TWL_INTBR_PMBR1); | ||
| 81 | return 0; | ||
| 82 | } | ||
| 83 | |||
| 84 | if (!((enb_pwm & 0xA) && (mux_pwm & 0x30))) { | ||
| 85 | /* change gpio pin to pwm1 pin */ | ||
| 86 | mux_pwm = mux_pwm | 0x30; | ||
| 87 | /* enable pwm1 output and clock*/ | ||
| 88 | enb_pwm = enb_pwm | 0x0A; | ||
| 89 | twl_i2c_write_u8(TWL4030_MODULE_INTBR, | ||
| 90 | mux_pwm, TWL_INTBR_PMBR1); | ||
| 91 | twl_i2c_write_u8(TWL4030_MODULE_INTBR, | ||
| 92 | enb_pwm, TWL_INTBR_GPBR1); | ||
| 93 | } | ||
| 94 | |||
| 95 | c = ((50 * (100 - level)) / 100) + 1; | ||
| 96 | twl_i2c_write_u8(TWL_MODULE_PWM, 0x7F, TWL_LED_PWMOFF); | ||
| 97 | twl_i2c_write_u8(TWL_MODULE_PWM, c, TWL_LED_PWMON); | ||
| 98 | #else | ||
| 99 | pr_warn("Backlight not enabled\n"); | ||
| 100 | #endif | ||
| 101 | |||
| 102 | return 0; | ||
| 103 | } | ||
| 104 | |||
| 105 | static struct omap_dss_device zoom_lcd_device = { | 51 | static struct omap_dss_device zoom_lcd_device = { |
| 106 | .name = "lcd", | 52 | .name = "lcd", |
| 107 | .driver_name = "NEC_8048_panel", | 53 | .driver_name = "NEC_8048_panel", |
| @@ -109,8 +55,6 @@ static struct omap_dss_device zoom_lcd_device = { | |||
| 109 | .phy.dpi.data_lines = 24, | 55 | .phy.dpi.data_lines = 24, |
| 110 | .platform_enable = zoom_panel_enable_lcd, | 56 | .platform_enable = zoom_panel_enable_lcd, |
| 111 | .platform_disable = zoom_panel_disable_lcd, | 57 | .platform_disable = zoom_panel_disable_lcd, |
| 112 | .max_backlight_level = 100, | ||
| 113 | .set_backlight = zoom_set_bl_intensity, | ||
| 114 | }; | 58 | }; |
| 115 | 59 | ||
| 116 | static struct omap_dss_device *zoom_dss_devices[] = { | 60 | static struct omap_dss_device *zoom_dss_devices[] = { |
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c index cdc0c1021863..a90375d5b2b6 100644 --- a/arch/arm/mach-omap2/board-zoom-peripherals.c +++ b/arch/arm/mach-omap2/board-zoom-peripherals.c | |||
| @@ -22,6 +22,9 @@ | |||
| 22 | #include <linux/platform_data/gpio-omap.h> | 22 | #include <linux/platform_data/gpio-omap.h> |
| 23 | #include <linux/platform_data/omap-twl4030.h> | 23 | #include <linux/platform_data/omap-twl4030.h> |
| 24 | #include <linux/usb/phy.h> | 24 | #include <linux/usb/phy.h> |
| 25 | #include <linux/pwm.h> | ||
| 26 | #include <linux/leds_pwm.h> | ||
| 27 | #include <linux/pwm_backlight.h> | ||
| 25 | 28 | ||
| 26 | #include <asm/mach-types.h> | 29 | #include <asm/mach-types.h> |
| 27 | #include <asm/mach/arch.h> | 30 | #include <asm/mach/arch.h> |
| @@ -193,6 +196,53 @@ static struct platform_device omap_vwlan_device = { | |||
| 193 | }, | 196 | }, |
| 194 | }; | 197 | }; |
| 195 | 198 | ||
| 199 | static struct pwm_lookup zoom_pwm_lookup[] = { | ||
| 200 | PWM_LOOKUP("twl-pwm", 0, "leds_pwm", "zoom::keypad"), | ||
| 201 | PWM_LOOKUP("twl-pwm", 1, "pwm-backlight", "backlight"), | ||
| 202 | }; | ||
| 203 | |||
| 204 | static struct led_pwm zoom_pwm_leds[] = { | ||
| 205 | { | ||
| 206 | .name = "zoom::keypad", | ||
| 207 | .max_brightness = 127, | ||
| 208 | .pwm_period_ns = 7812500, | ||
| 209 | }, | ||
| 210 | }; | ||
| 211 | |||
| 212 | static struct led_pwm_platform_data zoom_pwm_data = { | ||
| 213 | .num_leds = ARRAY_SIZE(zoom_pwm_leds), | ||
| 214 | .leds = zoom_pwm_leds, | ||
| 215 | }; | ||
| 216 | |||
| 217 | static struct platform_device zoom_leds_pwm = { | ||
| 218 | .name = "leds_pwm", | ||
| 219 | .id = -1, | ||
| 220 | .dev = { | ||
| 221 | .platform_data = &zoom_pwm_data, | ||
| 222 | }, | ||
| 223 | }; | ||
| 224 | |||
| 225 | static struct platform_pwm_backlight_data zoom_backlight_data = { | ||
| 226 | .pwm_id = 1, | ||
| 227 | .max_brightness = 127, | ||
| 228 | .dft_brightness = 127, | ||
| 229 | .pwm_period_ns = 7812500, | ||
| 230 | }; | ||
| 231 | |||
| 232 | static struct platform_device zoom_backlight_pwm = { | ||
| 233 | .name = "pwm-backlight", | ||
| 234 | .id = -1, | ||
| 235 | .dev = { | ||
| 236 | .platform_data = &zoom_backlight_data, | ||
| 237 | }, | ||
| 238 | }; | ||
| 239 | |||
| 240 | static struct platform_device *zoom_devices[] __initdata = { | ||
| 241 | &omap_vwlan_device, | ||
| 242 | &zoom_leds_pwm, | ||
| 243 | &zoom_backlight_pwm, | ||
| 244 | }; | ||
| 245 | |||
| 196 | static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = { | 246 | static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = { |
| 197 | .board_ref_clock = WL12XX_REFCLOCK_26, /* 26 MHz */ | 247 | .board_ref_clock = WL12XX_REFCLOCK_26, /* 26 MHz */ |
| 198 | }; | 248 | }; |
| @@ -301,7 +351,8 @@ void __init zoom_peripherals_init(void) | |||
| 301 | 351 | ||
| 302 | omap_hsmmc_init(mmc); | 352 | omap_hsmmc_init(mmc); |
| 303 | omap_i2c_init(); | 353 | omap_i2c_init(); |
| 304 | platform_device_register(&omap_vwlan_device); | 354 | pwm_add_table(zoom_pwm_lookup, ARRAY_SIZE(zoom_pwm_lookup)); |
| 355 | platform_add_devices(zoom_devices, ARRAY_SIZE(zoom_devices)); | ||
| 305 | usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb"); | 356 | usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb"); |
| 306 | usb_musb_init(NULL); | 357 | usb_musb_init(NULL); |
| 307 | enable_board_wakeup_source(); | 358 | enable_board_wakeup_source(); |
