diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-27 14:34:20 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-27 14:34:20 -0400 |
| commit | 3ddab4788d4980b1b3dc324fdd105adab3812418 (patch) | |
| tree | 91b25590723d2a81ecd4d42753412cb8c4897bf0 | |
| parent | d1e0fe252e1c410164127b3000613afeaf47e49f (diff) | |
| parent | a7cca8aec9d08231207503e4823e7b47bfa7e596 (diff) | |
Merge branch 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds
* 'for-linus' of git://git.o-hand.com/linux-rpurdie-leds:
leds: Add mx31moboard MC13783 led support
leds: Add mc13783 LED support
leds: leds-ss4200: fix led_classdev_unregister twice in error handling
leds: leds-lp3944: properly handle lp3944_configure fail in lp3944_probe
leds: led-class: set permissions on max_brightness file to 0444
leds: leds-gpio: Change blink_set callback to be able to turn off blinking
leds: Add LED driver for the Soekris net5501 board
leds: 88pm860x - fix checking in probe function
| -rw-r--r-- | arch/arm/mach-mx3/mach-mx31moboard.c | 45 | ||||
| -rw-r--r-- | arch/arm/mach-orion5x/dns323-setup.c | 22 | ||||
| -rw-r--r-- | drivers/leds/Kconfig | 17 | ||||
| -rw-r--r-- | drivers/leds/Makefile | 2 | ||||
| -rw-r--r-- | drivers/leds/led-class.c | 2 | ||||
| -rw-r--r-- | drivers/leds/leds-88pm860x.c | 11 | ||||
| -rw-r--r-- | drivers/leds/leds-gpio.c | 31 | ||||
| -rw-r--r-- | drivers/leds/leds-lp3944.c | 9 | ||||
| -rw-r--r-- | drivers/leds/leds-mc13783.c | 403 | ||||
| -rw-r--r-- | drivers/leds/leds-net5501.c | 94 | ||||
| -rw-r--r-- | drivers/leds/leds-ss4200.c | 2 | ||||
| -rw-r--r-- | drivers/mfd/mc13783-core.c | 4 | ||||
| -rw-r--r-- | include/linux/leds.h | 12 | ||||
| -rw-r--r-- | include/linux/mfd/mc13783.h | 66 |
14 files changed, 691 insertions, 29 deletions
diff --git a/arch/arm/mach-mx3/mach-mx31moboard.c b/arch/arm/mach-mx3/mach-mx31moboard.c index 33a8d35498a7..62b5e40165df 100644 --- a/arch/arm/mach-mx3/mach-mx31moboard.c +++ b/arch/arm/mach-mx3/mach-mx31moboard.c | |||
| @@ -220,11 +220,54 @@ static struct mc13783_regulator_init_data moboard_regulators[] = { | |||
| 220 | }, | 220 | }, |
| 221 | }; | 221 | }; |
| 222 | 222 | ||
| 223 | static struct mc13783_led_platform_data moboard_led[] = { | ||
| 224 | { | ||
| 225 | .id = MC13783_LED_R1, | ||
| 226 | .name = "coreboard-led-4:red", | ||
| 227 | .max_current = 2, | ||
| 228 | }, | ||
| 229 | { | ||
| 230 | .id = MC13783_LED_G1, | ||
| 231 | .name = "coreboard-led-4:green", | ||
| 232 | .max_current = 2, | ||
| 233 | }, | ||
| 234 | { | ||
| 235 | .id = MC13783_LED_B1, | ||
| 236 | .name = "coreboard-led-4:blue", | ||
| 237 | .max_current = 2, | ||
| 238 | }, | ||
| 239 | { | ||
| 240 | .id = MC13783_LED_R2, | ||
| 241 | .name = "coreboard-led-5:red", | ||
| 242 | .max_current = 3, | ||
| 243 | }, | ||
| 244 | { | ||
| 245 | .id = MC13783_LED_G2, | ||
| 246 | .name = "coreboard-led-5:green", | ||
| 247 | .max_current = 3, | ||
| 248 | }, | ||
| 249 | { | ||
| 250 | .id = MC13783_LED_B2, | ||
| 251 | .name = "coreboard-led-5:blue", | ||
| 252 | .max_current = 3, | ||
| 253 | }, | ||
| 254 | }; | ||
| 255 | |||
| 256 | static struct mc13783_leds_platform_data moboard_leds = { | ||
| 257 | .num_leds = ARRAY_SIZE(moboard_led), | ||
| 258 | .led = moboard_led, | ||
| 259 | .flags = MC13783_LED_SLEWLIMTC, | ||
| 260 | .abmode = MC13783_LED_AB_DISABLED, | ||
| 261 | .tc1_period = MC13783_LED_PERIOD_10MS, | ||
| 262 | .tc2_period = MC13783_LED_PERIOD_10MS, | ||
| 263 | }; | ||
| 264 | |||
| 223 | static struct mc13783_platform_data moboard_pmic = { | 265 | static struct mc13783_platform_data moboard_pmic = { |
| 224 | .regulators = moboard_regulators, | 266 | .regulators = moboard_regulators, |
| 225 | .num_regulators = ARRAY_SIZE(moboard_regulators), | 267 | .num_regulators = ARRAY_SIZE(moboard_regulators), |
| 268 | .leds = &moboard_leds, | ||
| 226 | .flags = MC13783_USE_REGULATOR | MC13783_USE_RTC | | 269 | .flags = MC13783_USE_REGULATOR | MC13783_USE_RTC | |
| 227 | MC13783_USE_ADC, | 270 | MC13783_USE_ADC | MC13783_USE_LED, |
| 228 | }; | 271 | }; |
| 229 | 272 | ||
| 230 | static struct spi_board_info moboard_spi_board_info[] __initdata = { | 273 | static struct spi_board_info moboard_spi_board_info[] __initdata = { |
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c index 685f34a9634b..fe0de1698edc 100644 --- a/arch/arm/mach-orion5x/dns323-setup.c +++ b/arch/arm/mach-orion5x/dns323-setup.c | |||
| @@ -240,22 +240,23 @@ error_fail: | |||
| 240 | 240 | ||
| 241 | #define ORION_BLINK_HALF_PERIOD 100 /* ms */ | 241 | #define ORION_BLINK_HALF_PERIOD 100 /* ms */ |
| 242 | 242 | ||
| 243 | static int dns323_gpio_blink_set(unsigned gpio, | 243 | static int dns323_gpio_blink_set(unsigned gpio, int state, |
| 244 | unsigned long *delay_on, unsigned long *delay_off) | 244 | unsigned long *delay_on, unsigned long *delay_off) |
| 245 | { | 245 | { |
| 246 | static int value = 0; | ||
| 247 | 246 | ||
| 248 | if (!*delay_on && !*delay_off) | 247 | if (delay_on && delay_off && !*delay_on && !*delay_off) |
| 249 | *delay_on = *delay_off = ORION_BLINK_HALF_PERIOD; | 248 | *delay_on = *delay_off = ORION_BLINK_HALF_PERIOD; |
| 250 | 249 | ||
| 251 | if (ORION_BLINK_HALF_PERIOD == *delay_on | 250 | switch(state) { |
| 252 | && ORION_BLINK_HALF_PERIOD == *delay_off) { | 251 | case GPIO_LED_NO_BLINK_LOW: |
| 253 | value = !value; | 252 | case GPIO_LED_NO_BLINK_HIGH: |
| 254 | orion_gpio_set_blink(gpio, value); | 253 | orion_gpio_set_blink(gpio, 0); |
| 255 | return 0; | 254 | gpio_set_value(gpio, state); |
| 255 | break; | ||
| 256 | case GPIO_LED_BLINK: | ||
| 257 | orion_gpio_set_blink(gpio, 1); | ||
| 256 | } | 258 | } |
| 257 | 259 | return 0; | |
| 258 | return -EINVAL; | ||
| 259 | } | 260 | } |
| 260 | 261 | ||
| 261 | static struct gpio_led dns323_leds[] = { | 262 | static struct gpio_led dns323_leds[] = { |
| @@ -263,6 +264,7 @@ static struct gpio_led dns323_leds[] = { | |||
| 263 | .name = "power:blue", | 264 | .name = "power:blue", |
| 264 | .gpio = DNS323_GPIO_LED_POWER2, | 265 | .gpio = DNS323_GPIO_LED_POWER2, |
| 265 | .default_trigger = "timer", | 266 | .default_trigger = "timer", |
| 267 | .active_low = 1, | ||
| 266 | }, { | 268 | }, { |
| 267 | .name = "right:amber", | 269 | .name = "right:amber", |
| 268 | .gpio = DNS323_GPIO_LED_RIGHT_AMBER, | 270 | .gpio = DNS323_GPIO_LED_RIGHT_AMBER, |
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig index 505eb64c329c..f98d17a7108b 100644 --- a/drivers/leds/Kconfig +++ b/drivers/leds/Kconfig | |||
| @@ -67,6 +67,16 @@ config LEDS_NET48XX | |||
| 67 | This option enables support for the Soekris net4801 and net4826 error | 67 | This option enables support for the Soekris net4801 and net4826 error |
| 68 | LED. | 68 | LED. |
| 69 | 69 | ||
| 70 | config LEDS_NET5501 | ||
| 71 | tristate "LED Support for Soekris net5501 series Error LED" | ||
| 72 | depends on LEDS_CLASS && LEDS_TRIGGERS | ||
| 73 | depends on LEDS_GPIO_PLATFORM && GPIO_CS5535 | ||
| 74 | select LEDS_TRIGGER_DEFAULT_ON | ||
| 75 | default n | ||
| 76 | help | ||
| 77 | Add support for the Soekris net5501 board (detection, error led | ||
| 78 | and GPIO). | ||
| 79 | |||
| 70 | config LEDS_FSG | 80 | config LEDS_FSG |
| 71 | tristate "LED Support for the Freecom FSG-3" | 81 | tristate "LED Support for the Freecom FSG-3" |
| 72 | depends on MACH_FSG | 82 | depends on MACH_FSG |
| @@ -285,6 +295,13 @@ config LEDS_DELL_NETBOOKS | |||
| 285 | This adds support for the Latitude 2100 and similar | 295 | This adds support for the Latitude 2100 and similar |
| 286 | notebooks that have an external LED. | 296 | notebooks that have an external LED. |
| 287 | 297 | ||
| 298 | config LEDS_MC13783 | ||
| 299 | tristate "LED Support for MC13783 PMIC" | ||
| 300 | depends on MFD_MC13783 | ||
| 301 | help | ||
| 302 | This option enable support for on-chip LED drivers found | ||
| 303 | on Freescale Semiconductor MC13783 PMIC. | ||
| 304 | |||
| 288 | config LEDS_TRIGGERS | 305 | config LEDS_TRIGGERS |
| 289 | bool "LED Trigger support" | 306 | bool "LED Trigger support" |
| 290 | help | 307 | help |
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile index 0cd8b9957380..2493de499374 100644 --- a/drivers/leds/Makefile +++ b/drivers/leds/Makefile | |||
| @@ -13,6 +13,7 @@ obj-$(CONFIG_LEDS_MIKROTIK_RB532) += leds-rb532.o | |||
| 13 | obj-$(CONFIG_LEDS_S3C24XX) += leds-s3c24xx.o | 13 | obj-$(CONFIG_LEDS_S3C24XX) += leds-s3c24xx.o |
| 14 | obj-$(CONFIG_LEDS_AMS_DELTA) += leds-ams-delta.o | 14 | obj-$(CONFIG_LEDS_AMS_DELTA) += leds-ams-delta.o |
| 15 | obj-$(CONFIG_LEDS_NET48XX) += leds-net48xx.o | 15 | obj-$(CONFIG_LEDS_NET48XX) += leds-net48xx.o |
| 16 | obj-$(CONFIG_LEDS_NET5501) += leds-net5501.o | ||
| 16 | obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o | 17 | obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o |
| 17 | obj-$(CONFIG_LEDS_ALIX2) += leds-alix2.o | 18 | obj-$(CONFIG_LEDS_ALIX2) += leds-alix2.o |
| 18 | obj-$(CONFIG_LEDS_H1940) += leds-h1940.o | 19 | obj-$(CONFIG_LEDS_H1940) += leds-h1940.o |
| @@ -35,6 +36,7 @@ obj-$(CONFIG_LEDS_INTEL_SS4200) += leds-ss4200.o | |||
| 35 | obj-$(CONFIG_LEDS_LT3593) += leds-lt3593.o | 36 | obj-$(CONFIG_LEDS_LT3593) += leds-lt3593.o |
| 36 | obj-$(CONFIG_LEDS_ADP5520) += leds-adp5520.o | 37 | obj-$(CONFIG_LEDS_ADP5520) += leds-adp5520.o |
| 37 | obj-$(CONFIG_LEDS_DELL_NETBOOKS) += dell-led.o | 38 | obj-$(CONFIG_LEDS_DELL_NETBOOKS) += dell-led.o |
| 39 | obj-$(CONFIG_LEDS_MC13783) += leds-mc13783.o | ||
| 38 | |||
