Commit 9d263813 authored by Alexander Shiyan's avatar Alexander Shiyan Committed by Bryan Wu

leds: leds-mc13783: Prepare driver to support MC13892 LEDs

This patch rewrite driver code to be ready to add support for
MC13892 LEDs and probe from devicetree.

(cooloney@gmail.com: fix one coding style issue when apply this patch)
Signed-off-by: default avatarAlexander Shiyan <shc_work@mail.ru>
Tested-by: default avatarPhilippe Retornaz <philippe.retornaz@epfl.ch>
Signed-off-by: default avatarBryan Wu <cooloney@gmail.com>
parent fb277f5b
...@@ -268,10 +268,11 @@ static struct mc13xxx_led_platform_data moboard_led[] = { ...@@ -268,10 +268,11 @@ static struct mc13xxx_led_platform_data moboard_led[] = {
static struct mc13xxx_leds_platform_data moboard_leds = { static struct mc13xxx_leds_platform_data moboard_leds = {
.num_leds = ARRAY_SIZE(moboard_led), .num_leds = ARRAY_SIZE(moboard_led),
.led = moboard_led, .led = moboard_led,
.flags = MC13783_LED_SLEWLIMTC, .led_control[0] = MC13783_LED_C0_ENABLE | MC13783_LED_C0_ABMODE(0),
.abmode = MC13783_LED_AB_DISABLED, .led_control[1] = MC13783_LED_C1_SLEWLIM,
.tc1_period = MC13783_LED_PERIOD_10MS, .led_control[2] = MC13783_LED_C2_SLEWLIM,
.tc2_period = MC13783_LED_PERIOD_10MS, .led_control[3] = MC13783_LED_C3_PERIOD(0),
.led_control[4] = MC13783_LED_C3_PERIOD(0),
}; };
static struct mc13xxx_buttons_platform_data moboard_buttons = { static struct mc13xxx_buttons_platform_data moboard_buttons = {
......
This diff is collapsed.
...@@ -78,20 +78,23 @@ struct mc13xxx_regulator_platform_data { ...@@ -78,20 +78,23 @@ struct mc13xxx_regulator_platform_data {
struct mc13xxx_regulator_init_data *regulators; struct mc13xxx_regulator_init_data *regulators;
}; };
enum {
/* MC13783 LED IDs */
MC13783_LED_MD,
MC13783_LED_AD,
MC13783_LED_KP,
MC13783_LED_R1,
MC13783_LED_G1,
MC13783_LED_B1,
MC13783_LED_R2,
MC13783_LED_G2,
MC13783_LED_B2,
MC13783_LED_R3,
MC13783_LED_G3,
MC13783_LED_B3,
};
struct mc13xxx_led_platform_data { struct mc13xxx_led_platform_data {
#define MC13783_LED_MD 0
#define MC13783_LED_AD 1
#define MC13783_LED_KP 2
#define MC13783_LED_R1 3
#define MC13783_LED_G1 4
#define MC13783_LED_B1 5
#define MC13783_LED_R2 6
#define MC13783_LED_G2 7
#define MC13783_LED_B2 8
#define MC13783_LED_R3 9
#define MC13783_LED_G3 10
#define MC13783_LED_B3 11
#define MC13783_LED_MAX MC13783_LED_B3
int id; int id;
const char *name; const char *name;
const char *default_trigger; const char *default_trigger;
...@@ -100,46 +103,36 @@ struct mc13xxx_led_platform_data { ...@@ -100,46 +103,36 @@ struct mc13xxx_led_platform_data {
char max_current; char max_current;
}; };
#define MAX_LED_CONTROL_REGS 6
struct mc13xxx_leds_platform_data { struct mc13xxx_leds_platform_data {
int num_leds;
struct mc13xxx_led_platform_data *led; struct mc13xxx_led_platform_data *led;
int num_leds;
#define MC13783_LED_TRIODE_MD (1 << 0) /* LED Control 0 */
#define MC13783_LED_TRIODE_AD (1 << 1) #define MC13783_LED_C0_ENABLE (1 << 0)
#define MC13783_LED_TRIODE_KP (1 << 2) #define MC13783_LED_C0_TRIODE_MD (1 << 7)
#define MC13783_LED_BOOST_EN (1 << 3) #define MC13783_LED_C0_TRIODE_AD (1 << 8)
#define MC13783_LED_TC1HALF (1 << 4) #define MC13783_LED_C0_TRIODE_KP (1 << 9)
#define MC13783_LED_SLEWLIMTC (1 << 5) #define MC13783_LED_C0_BOOST (1 << 10)
#define MC13783_LED_SLEWLIMBL (1 << 6) #define MC13783_LED_C0_ABMODE(x) (((x) & 0x7) << 11)
#define MC13783_LED_TRIODE_TC1 (1 << 7) #define MC13783_LED_C0_ABREF(x) (((x) & 0x3) << 14)
#define MC13783_LED_TRIODE_TC2 (1 << 8) /* LED Control 1 */
#define MC13783_LED_TRIODE_TC3 (1 << 9) #define MC13783_LED_C1_TC1HALF (1 << 18)
int flags; #define MC13783_LED_C1_SLEWLIM (1 << 23)
/* LED Control 2 */
#define MC13783_LED_AB_DISABLED 0 #define MC13783_LED_C2_PERIOD(x) (((x) & 0x3) << 21)
#define MC13783_LED_AB_MD1 1 #define MC13783_LED_C2_SLEWLIM (1 << 23)
#define MC13783_LED_AB_MD12 2 /* LED Control 3 */
#define MC13783_LED_AB_MD123 3 #define MC13783_LED_C3_PERIOD(x) (((x) & 0x3) << 21)
#define MC13783_LED_AB_MD1234 4 #define MC13783_LED_C3_TRIODE_TC1 (1 << 23)
#define MC13783_LED_AB_MD1234_AD1 5 /* LED Control 4 */
#define MC13783_LED_AB_MD1234_AD12 6 #define MC13783_LED_C4_PERIOD(x) (((x) & 0x3) << 21)
#define MC13783_LED_AB_MD1_AD 7 #define MC13783_LED_C4_TRIODE_TC2 (1 << 23)
char abmode; /* LED Control 5 */
#define MC13783_LED_C5_PERIOD(x) (((x) & 0x3) << 21)
#define MC13783_LED_ABREF_200MV 0 #define MC13783_LED_C5_TRIODE_TC3 (1 << 23)
#define MC13783_LED_ABREF_400MV 1 u32 led_control[MAX_LED_CONTROL_REGS];
#define MC13783_LED_ABREF_600MV 2
#define MC13783_LED_ABREF_800MV 3
char abref;
#define MC13783_LED_PERIOD_10MS 0
#define MC13783_LED_PERIOD_100MS 1
#define MC13783_LED_PERIOD_500MS 2
#define MC13783_LED_PERIOD_2S 3
char bl_period;
char tc1_period;
char tc2_period;
char tc3_period;
}; };
struct mc13xxx_buttons_platform_data { struct mc13xxx_buttons_platform_data {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment