msm: board-8930-pmic: Add data to control RGB leds
Control RGB leds through sysfs entries. Add necessary
drive lines, names, current and PWM cycles.
Change-Id: I6b6174e276c2998e25619eb3e65bfe468820b84c
Signed-off-by: Amy Maloche <amaloche@codeaurora.org>
diff --git a/arch/arm/mach-msm/board-8930-pmic.c b/arch/arm/mach-msm/board-8930-pmic.c
index 6f94f37..6be2637 100644
--- a/arch/arm/mach-msm/board-8930-pmic.c
+++ b/arch/arm/mach-msm/board-8930-pmic.c
@@ -229,11 +229,24 @@
};
#define PM8038_WLED_MAX_CURRENT 25
+#define PM8XXX_LED_PWM_PERIOD 1000
+#define PM8XXX_LED_PWM_DUTY_MS 20
+#define PM8038_RGB_LED_MAX_CURRENT 12
static struct led_info pm8038_led_info[] = {
[0] = {
.name = "wled",
},
+ [1] = {
+ .name = "led:rgb_red",
+ .default_trigger = "battery-charging",
+ },
+ [2] = {
+ .name = "led:rgb_green",
+ },
+ [3] = {
+ .name = "led:rgb_blue",
+ },
};
static struct led_platform_data pm8038_led_core_pdata = {
@@ -251,6 +264,22 @@
.num_strings = 1,
};
+static int pm8038_led0_pwm_duty_pcts[56] = {
+ 1, 4, 8, 12, 16, 20, 24, 28, 32, 36,
+ 40, 44, 46, 52, 56, 60, 64, 68, 72, 76,
+ 80, 84, 88, 92, 96, 100, 100, 100, 98, 95,
+ 92, 88, 84, 82, 78, 74, 70, 66, 62, 58,
+ 58, 54, 50, 48, 42, 38, 34, 30, 26, 22,
+ 14, 10, 6, 4, 1
+};
+
+static struct pm8xxx_pwm_duty_cycles pm8038_led0_pwm_duty_cycles = {
+ .duty_pcts = (int *)&pm8038_led0_pwm_duty_pcts,
+ .num_duty_pcts = ARRAY_SIZE(pm8038_led0_pwm_duty_pcts),
+ .duty_ms = PM8XXX_LED_PWM_DUTY_MS,
+ .start_idx = 0,
+};
+
static struct pm8xxx_led_config pm8038_led_configs[] = {
[0] = {
.id = PM8XXX_ID_WLED,
@@ -259,6 +288,30 @@
.default_state = 1,
.wled_cfg = &wled_cfg,
},
+ [1] = {
+ .id = PM8XXX_ID_RGB_LED_RED,
+ .mode = PM8XXX_LED_MODE_PWM1,
+ .max_current = PM8038_RGB_LED_MAX_CURRENT,
+ .pwm_channel = 5,
+ .pwm_period_us = PM8XXX_LED_PWM_PERIOD,
+ .pwm_duty_cycles = &pm8038_led0_pwm_duty_cycles,
+ },
+ [2] = {
+ .id = PM8XXX_ID_RGB_LED_GREEN,
+ .mode = PM8XXX_LED_MODE_PWM1,
+ .max_current = PM8038_RGB_LED_MAX_CURRENT,
+ .pwm_channel = 4,
+ .pwm_period_us = PM8XXX_LED_PWM_PERIOD,
+ .pwm_duty_cycles = &pm8038_led0_pwm_duty_cycles,
+ },
+ [3] = {
+ .id = PM8XXX_ID_RGB_LED_BLUE,
+ .mode = PM8XXX_LED_MODE_PWM1,
+ .max_current = PM8038_RGB_LED_MAX_CURRENT,
+ .pwm_channel = 3,
+ .pwm_period_us = PM8XXX_LED_PWM_PERIOD,
+ .pwm_duty_cycles = &pm8038_led0_pwm_duty_cycles,
+ },
};
static struct pm8xxx_led_platform_data pm8xxx_leds_pdata = {