aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/leds
diff options
context:
space:
mode:
authorDaniel Hillenbrand <daniel.hillenbrand@codeworkx.de>2012-07-21 23:04:45 +0200
committerDaniel Hillenbrand <daniel.hillenbrand@codeworkx.de>2012-07-21 23:04:45 +0200
commit0a1182796f6475b8cb2ff1781dad873a744b3197 (patch)
treee15b5256dac226c49a25b5e24594cd638e2fec2c /drivers/leds
parent633018c13fe06461d9c60692fbb114734aa37802 (diff)
downloadkernel_samsung_smdk4412-0a1182796f6475b8cb2ff1781dad873a744b3197.zip
kernel_samsung_smdk4412-0a1182796f6475b8cb2ff1781dad873a744b3197.tar.gz
kernel_samsung_smdk4412-0a1182796f6475b8cb2ff1781dad873a744b3197.tar.bz2
samsung opensource update3
Diffstat (limited to 'drivers/leds')
-rw-r--r--drivers/leds/leds-aat1290a.c2
-rw-r--r--drivers/leds/leds-an30259a.c22
2 files changed, 17 insertions, 7 deletions
diff --git a/drivers/leds/leds-aat1290a.c b/drivers/leds/leds-aat1290a.c
index 8889360..493f422 100644
--- a/drivers/leds/leds-aat1290a.c
+++ b/drivers/leds/leds-aat1290a.c
@@ -125,7 +125,7 @@ static long aat1290a_ioctl(struct file *file,
return 0;
}
-static ssize_t aat1290a_power(struct device *dev,
+ssize_t aat1290a_power(struct device *dev,
struct device_attribute *attr, const char *buf,
size_t count)
{
diff --git a/drivers/leds/leds-an30259a.c b/drivers/leds/leds-an30259a.c
index bae3203..ce05065 100644
--- a/drivers/leds/leds-an30259a.c
+++ b/drivers/leds/leds-an30259a.c
@@ -77,6 +77,7 @@
#define LED_R_CURRENT 0x28
#define LED_G_CURRENT 0x28
#define LED_B_CURRENT 0x28
+#define LED_MAX_CURRENT 0xFF
#define LED_OFF 0x00
#define MAX_NUM_LEDS 3
@@ -85,17 +86,17 @@ static struct an30259_led_conf led_conf[] = {
{
.name = "led_r",
.brightness = LED_OFF,
- .max_brightness = 0x3C,
+ .max_brightness = LED_R_CURRENT,
.flags = 0,
}, {
.name = "led_g",
.brightness = LED_OFF,
- .max_brightness = 0x3C,
+ .max_brightness = LED_G_CURRENT,
.flags = 0,
}, {
.name = "led_b",
.brightness = LED_OFF,
- .max_brightness = 0x3C,
+ .max_brightness = LED_B_CURRENT,
.flags = 0,
}
};
@@ -394,8 +395,20 @@ static void an30259a_set_led_blink(enum an30259a_led_enum led,
struct i2c_client *client;
client = b_client;
+ if (brightness == LED_OFF) {
+ leds_on(led, false, false, brightness);
+ return;
+ }
+
+ if (brightness > LED_MAX_CURRENT)
+ brightness = LED_MAX_CURRENT;
+
+ /* In user case, LED current is restricted to less than 2mA */
+ brightness = (brightness * LED_R_CURRENT) / LED_MAX_CURRENT + 1;
+
if (delay_on_time > SLPTT_MAX_VALUE)
delay_on_time = SLPTT_MAX_VALUE;
+
if (delay_off_time > SLPTT_MAX_VALUE)
delay_off_time = SLPTT_MAX_VALUE;
@@ -404,9 +417,6 @@ static void an30259a_set_led_blink(enum an30259a_led_enum led,
if (brightness == LED_OFF)
leds_on(led, false, false, brightness);
return;
- } else if (brightness == LED_OFF) {
- leds_on(led, false, false, brightness);
- return;
} else
leds_on(led, true, true, brightness);