[coreboot-gerrit] Patch set updated for coreboot: i2c/ww_ring: LED changes for Gale EVT3

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Tue Oct 4 21:27:49 CEST 2016


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/16697

-gerrit

commit 3d533b491379bf6a6b504a48500bd45238d4804a
Author: Suresh Rajashekara <sureshraj at google.com>
Date:   Mon Aug 15 16:18:11 2016 -0700

    i2c/ww_ring: LED changes for Gale EVT3
    
    Gale EVT3 has only one LED controller (earlier we had 2).
    Removing the support for the second controller and also the
    corresponding microcode. The color values used are the same
    as onHub (Arkham to be specific).
    
    BUG=b:30890905
    TEST=Move the device to different states manually by appropriate
    actions (like dev mode, rec mode etc) and observe the differnet
    colors.
    BRANCH=None
    
    Change-Id: I853035610ea7ea7c8d29c30d2de13c9e2e786b2b
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: 593905d2d69daa7482318aa5f5c5cd7cf984043e
    Original-Change-Id: If8f22abd605faac6f6215ef600041740ce15ea0c
    Original-Signed-off-by: Suresh Rajashekara <sureshraj at google.com>
    Original-Reviewed-on: https://chromium-review.googlesource.com/370821
    Original-Commit-Ready: Suresh Rajashekara <sureshraj at chromium.org>
    Original-Tested-by: Suresh Rajashekara <sureshraj at chromium.org>
    Original-Reviewed-by: Kan Yan <kyan at google.com>
---
 src/drivers/i2c/ww_ring/ww_ring_programs.c | 232 ++++++-----------------------
 src/drivers/i2c/ww_ring/ww_ring_programs.h |   2 +-
 2 files changed, 49 insertions(+), 185 deletions(-)

diff --git a/src/drivers/i2c/ww_ring/ww_ring_programs.c b/src/drivers/i2c/ww_ring/ww_ring_programs.c
index a35998c..5b0c8a8 100644
--- a/src/drivers/i2c/ww_ring/ww_ring_programs.c
+++ b/src/drivers/i2c/ww_ring/ww_ring_programs.c
@@ -46,36 +46,36 @@
  * Solid LED display, the arguments of the set_pwm commands set intensity and
  * color of the display:
 
-row_red:   dw 0000000001001001b
-row_green: dw 0000000010010010b
-row_blue:  dw 0000000100100100b
+row_red:   dw 0000000000000001b
+row_green: dw 0000000000000010b
+row_blue:  dw 0000000000000100b
 
 .segment program1
 	mux_map_addr row_red
-	set_pwm 1
+	set_pwm 0
 	end
 
 .segment program2
 	mux_map_addr row_green
-	set_pwm 1
+	set_pwm 0
 	end
 
 .segment program3
 	mux_map_addr row_blue
-	set_pwm 1
+	set_pwm 0
 	end
 */
 
 /* RGB set to 000000, resulting in all LEDs off. */
 static const uint8_t solid_000000_text[] = {
-	0x00, 0x49, 0x00, 0x92, 0x01, 0x24, 0x9F, 0x80,
+	0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x9F, 0x80,
 	0x40,    0, 0xC0, 0x00, 0x9F, 0x81, 0x40,    0,
 	0xC0, 0x00, 0x9F, 0x82, 0x40,    0, 0xC0, 0x00
 };
 
 /* Rgb set to 128, resulting in a brightish white color. */
 static const uint8_t solid_808080_text[] = {
-	0x00, 0x49, 0x00, 0x92, 0x01, 0x24, 0x9F, 0x80,
+	0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x9F, 0x80,
 	0x40,  128, 0xC0, 0x00, 0x9F, 0x81, 0x40,  128,
 	0xC0, 0x00, 0x9F, 0x82, 0x40,  128, 0xC0, 0x00
 };
@@ -100,20 +100,10 @@ static const TiLp55231Program solid_000000_program = {
  * The three internal engines seem to be competing for resources and get out
  * of sync in seconds if left running asynchronously.
  *
- * When there are two separate controllers, with three engine each, they all
- * run away from each other in no time, resulting in some completely chaotic
- * LED behavior.
- *
  * When solid patterns are deployed with instanteneous color intensity
  * changes, all three LEDs can be controlled by one engine in sequential
  * accesses. But the controllers still neeed to be synchronized.
  *
- * The first controller is loaded and started first, but it sits waiting for
- * the trigger from the second controller to actually start the cycle. Once
- * both controllers start running, the first controller is the master, sending
- * sych triggers to the second one each time the LED is supposed to be turned
- * on or off.
- *
  * The maximum timer duration of lp55231 is .48 seconds. To achieve longer
  * blinking intervals the loops delays are deployed. Only the first controller
  * intervals need to be changed, as the second one is in lockstep with the
@@ -126,29 +116,26 @@ static const TiLp55231Program solid_000000_program = {
  */
 /*
  * blink_solid1.src
-row_red:   dw 0000000001001001b
-row_green: dw 0000000010010010b
-row_blue:  dw 0000000100100100b
+row_red:   dw 0000000000000001b
+row_green: dw 0000000000000010b
+row_blue:  dw 0000000000000100b
 
 .segment program1
 	ld ra, 2   # LED on duration
-	ld rb, 10  # LED off duration
+	ld rb, 2   # LED off duration
 	mux_map_addr row_red
-	trigger w{e}
 loop:
-	trigger s{e}
-	ld rc, 98	; red intensity
+	ld rc, 180	; red intensity
 	set_pwm rc
 	mux_map_addr row_green
-	ld rc, 0	; green intensity
+	ld rc, 80	; green intensity
 	set_pwm rc
 	mux_map_addr row_blue
-	ld rc, 234	; blue intensity
+	ld rc, 0	; blue intensity
 	set_pwm rc
 wait1:
 	wait 0.1
 	branch ra, wait1
-	trigger s{e}
 	set_pwm 0
 	mux_map_addr row_green
 	set_pwm 0
@@ -158,203 +145,82 @@ wait2:
 	wait 0.1
 	branch rb, wait2
 	branch 0, loop
-
-.segment program2
-	 end
-
-.segment program3
-	 end*/
-/*
- * blink_solid2.src
-
-row_red:   dw 0000000001001001b
-row_green: dw 0000000010010010b
-row_blue:  dw 0000000100100100b
-
-.segment program1
-	ld ra, 98
-	ld rb, 0
-	ld rc, 234
-	trigger s{e}
-	mux_map_addr row_red
-loop:
-	trigger w{e}
-	set_pwm ra	; red intensity
-	mux_map_addr row_green
-	set_pwm rb	; green intensity
-	mux_map_addr row_blue
-	set_pwm rc	; blue intensity
-wait1:
-	wait 0.1
-	branch 1, wait1
-	trigger w{e}
-	set_pwm 0
-	mux_map_addr row_green
-	set_pwm 0
-	mux_map_addr row_red
-	set_pwm 0
-wait2:
-	wait 0.1
-	branch 1, wait2
-	branch 0, loop
-
 .segment program2
 	 end
-
 .segment program3
 	 end
 */
 static const uint8_t blink_wipeout1_text[] = {
-	0x00,  0x49,  0x00,  0x92,  0x01,  0x24,  0x90,  0x02,
-	0x94,  0x02,  0x9f,  0x80,  0xf0,  0x00,  0xe0,  0x40,
-	0x98,   255,  0x84,  0x62,  0x9f,  0x81,  0x98,   80,
-	0x84,  0x62,  0x9f,  0x82,  0x98,     0,  0x84,  0x62,
-	0x4c,  0x00,  0x86,  0x34,  0xe0,  0x40,  0x40,  0x00,
-	0x9f,  0x81,  0x40,  0x00,  0x9f,  0x80,  0x40,  0x00,
-	0x4c,  0x00,  0x86,  0x55,  0xa0,  0x04,  0xc0,  0x00,
-	0xc0,  0x00,  0x00,
-};
-
-static const uint8_t blink_wipeout2_text[] = {
-	0x00,  0x49,  0x00,  0x92,  0x01,  0x24,  0x90,   255,
-	0x94,    80,  0x98,     0,  0xe0,  0x40,  0x9f,  0x80,
-	0xf0,  0x00,  0x84,  0x60,  0x9f,  0x81,  0x84,  0x61,
-	0x9f,  0x82,  0x84,  0x62,  0x4c,  0x00,  0xa0,  0x8b,
-	0xf0,  0x00,  0x40,  0x00,  0x9f,  0x81,  0x40,  0x00,
-	0x9f,  0x80,  0x40,  0x00,  0x4c,  0x00,  0xa0,  0x93,
-	0xa0,  0x05,  0xc0,  0x00,  0xc0,  0x00,  0x00,
+	0x00,  0x01,  0x00,  0x02,  0x00,  0x04,  0x90,  0x02,
+	0x94,  0x02,  0x9f,  0x80,  0x98,   180,  0x84,  0x62,
+	0x9f,  0x81,  0x98,    80,  0x84,  0x62,  0x9f,  0x82,
+	0x98,     0,  0x84,  0x62,  0x4c,  0x00,  0x86,  0x2c,
+	0x40,  0x00,  0x9f,  0x81,  0x40,  0x00,  0x9f,  0x80,
+	0x40,  0x00,  0x4c,  0x00,  0x86,  0x49,  0xa0,  0x03,
+	0xc0,  0x00,  0xc0,  0x00,  0x00,
 };
 
 static const TiLp55231Program blink_wipeout1_program = {
 	blink_wipeout1_text,
 	sizeof(blink_wipeout1_text),
 	0,
-	{ 3,  27,  28,  }
-};
-static const TiLp55231Program blink_wipeout2_program = {
-	blink_wipeout2_text,
-	sizeof(blink_wipeout2_text),
-	0,
-	{ 3,  26,  26,  }
+	{ 3,  24,  25,  }
 };
 
 static const uint8_t blink_recovery1_text[] = {
-	0x00,  0x49,  0x00,  0x92,  0x01,  0x24,  0x90,  0x02,
-	0x94,  0x02,  0x9f,  0x80,  0xf0,  0x00,  0xe0,  0x40,
-	0x98,   255,  0x84,  0x62,  0x9f,  0x81,  0x98,    24,
-	0x84,  0x62,  0x9f,  0x82,  0x98,     0,  0x84,  0x62,
-	0x4c,  0x00,  0x86,  0x34,  0xe0,  0x40,  0x40,  0x00,
-	0x9f,  0x81,  0x40,  0x00,  0x9f,  0x80,  0x40,  0x00,
-	0x4c,  0x00,  0x86,  0x55,  0xa0,  0x04,  0xc0,  0x00,
-	0xc0,  0x00,  0x00,
+	0x00,  0x01,  0x00,  0x02,  0x00,  0x04,  0x90,  0x02,
+	0x94,  0x02,  0x9f,  0x80,  0x98,   255,  0x84,  0x62,
+	0x9f,  0x81,  0x98,    50,  0x84,  0x62,  0x9f,  0x82,
+	0x98,     0,  0x84,  0x62,  0x4c,  0x00,  0x86,  0x2c,
+	0x40,  0x00,  0x9f,  0x81,  0x40,  0x00,  0x9f,  0x80,
+	0x40,  0x00,  0x4c,  0x00,  0x86,  0x49,  0xa0,  0x03,
+	0xc0,  0x00,  0xc0,  0x00,  0x00,
 };
 static const TiLp55231Program blink_recovery1_program = {
 	blink_recovery1_text,
 	sizeof(blink_recovery1_text),
 	0,
-	{ 3,  27,  28,  }
-};
-static const uint8_t blink_recovery2_text[] = {
-	0x00,  0x49,  0x00,  0x92,  0x01,  0x24,  0x90,   255,
-	0x94,    24,  0x98,     0,  0xe0,  0x40,  0x9f,  0x80,
-	0xf0,  0x00,  0x84,  0x60,  0x9f,  0x81,  0x84,  0x61,
-	0x9f,  0x82,  0x84,  0x62,  0x4c,  0x00,  0xa0,  0x8b,
-	0xf0,  0x00,  0x40,  0x00,  0x9f,  0x81,  0x40,  0x00,
-	0x9f,  0x80,  0x40,  0x00,  0x4c,  0x00,  0xa0,  0x93,
-	0xa0,  0x05,  0xc0,  0x00,  0xc0,  0x00,  0x00,
-};
-static const TiLp55231Program blink_recovery2_program = {
-	blink_recovery2_text,
-	sizeof(blink_recovery2_text),
-	0,
-	{ 3,  26,  26,  }
+	{ 3,  24,  25,  }
 };
 
 /*
  * fade_in1.src
  *
- row_red:   dw 0000000001001001b
- row_green: dw 0000000010010010b
- row_blue:  dw 0000000100100100b
+ row_red:   dw 0000000000000001b
+ row_green: dw 0000000000000010b
+ row_blue:  dw 0000000000000100b
 
  .segment program1
 	mux_map_addr row_red
-	set_pwm 0h
-	trigger w{e}
+	set_pwm 1h
 	trigger s{2|3}
 	end
-
  .segment program2
 	mux_map_addr row_green
 	set_pwm 0h
-
 	trigger w{1}
-	ramp 2, 87
+	ramp 2, 50
 	end
-
 .segment program3
 	mux_map_addr row_blue
 	set_pwm 0h
  loop3: trigger w{1}
-	ramp 2, 155
-	end
-*/
-/*
- * fade_in2.src
- *
- row_red:   dw 0000000001001001b
- row_green: dw 0000000010010010b
- row_blue:  dw 0000000100100100b
-
- .segment program1
-	mux_map_addr row_red
-	set_pwm 0h
-	trigger s{e}
-	trigger s{2|3}
-	end
-
- .segment program2
-	mux_map_addr row_green
-	set_pwm 0h
-
-	trigger w{1}
-	ramp 2, 87
-	end
-
-.segment program3
-	mux_map_addr row_blue
-	set_pwm 0h
- loop3: trigger w{1}
-	ramp 2, 155
+	ramp 2, 255
 	end
 */
 
 static const uint8_t fade_in1_text[] = {
-	0x00,  0x49,  0x00,  0x92,  0x01,  0x24,  0x9f,  0x80,
-	0x40,  0x00,  0xf0,  0x00,  0xe0,  0x0c,  0xc0,  0x00,
-	0x9f,  0x81,  0x40,  0x00,  0xe0,  0x80,  0x42,  0x57,
-	0xc0,  0x00,  0x9f,  0x82,  0x40,  0x00,  0xe0,  0x80,
-	0x34,  0x9b,  0xc0,  0x00,  0x00,
+	0x00,  0x01,  0x00,  0x02,  0x00,  0x04,  0x9f,  0x80,
+	0x40,  0x01,  0xe0,  0x0c,  0xc0,  0x00,  0x9f,  0x81,
+	0x40,  0x00,  0xe0,  0x80,  0x46,  0x32,  0xc0,  0x00,
+	0x9f,  0x82,  0x40,  0x00,  0xe0,  0x80,  0x20,  0xff,
+	0xc0,  0x00,  0x00,
 };
 static const TiLp55231Program fade_in1_program = {
 	fade_in1_text,
 	sizeof(fade_in1_text),
 	0,
-	{ 3,  8,  13,  }
-};
-
-static const uint8_t fade_in2_text[] = {
-	0x00,  0x49,  0x00,  0x92,  0x01,  0x24,  0x9f,  0x80,
-	0x40,  0x00,  0xe0,  0x40,  0xe0,  0x0c,  0xc0,  0x00,
-	0x9f,  0x81,  0x40,  0x00,  0xe0,  0x80,  0x42,  0x57,
-	0xc0,  0x00,  0x9f,  0x82,  0x40,  0x00,  0xe0,  0x80,
-	0x34,  0x9b,  0xc0,  0x00,  0x00,
-};
-static const TiLp55231Program fade_in2_program = {
-	fade_in2_text,
-	sizeof(fade_in2_text),
-	0,
-	{ 3,  8,  13,  }
+	{ 3,  7,  12,  }
 };
 
 const WwRingStateProg wwr_state_programs[] = {
@@ -362,12 +228,10 @@ const WwRingStateProg wwr_state_programs[] = {
 	 * for test purposes the blank screen program is set to blinking, will
 	 * be changed soon.
 	 */
-	{WWR_ALL_OFF, {&solid_000000_program, &solid_000000_program} },
-	{WWR_RECOVERY_PUSHED, {&solid_808080_program, &solid_808080_program} },
-	{WWR_WIPEOUT_REQUEST, {&blink_wipeout1_program,
-			       &blink_wipeout2_program} },
-	{WWR_RECOVERY_REQUEST, {&blink_recovery1_program,
-				&blink_recovery2_program} },
-	{WWR_NORMAL_BOOT, {&fade_in1_program, &fade_in2_program} },
+	{WWR_ALL_OFF, {&solid_000000_program} },
+	{WWR_RECOVERY_PUSHED, {&solid_808080_program} },
+	{WWR_WIPEOUT_REQUEST, {&blink_wipeout1_program} },
+	{WWR_RECOVERY_REQUEST, {&blink_recovery1_program} },
+	{WWR_NORMAL_BOOT, {&fade_in1_program} },
 	{}, /* Empty record to mark the end of the table. */
 };
diff --git a/src/drivers/i2c/ww_ring/ww_ring_programs.h b/src/drivers/i2c/ww_ring/ww_ring_programs.h
index 9f4b928..5fb8ebf 100644
--- a/src/drivers/i2c/ww_ring/ww_ring_programs.h
+++ b/src/drivers/i2c/ww_ring/ww_ring_programs.h
@@ -36,7 +36,7 @@
 #define LP55231_NUM_OF_ENGINES 3
 
 /* Number of lp55321 controllers on the ring */
-#define WW_RING_NUM_LED_CONTROLLERS 2
+#define WW_RING_NUM_LED_CONTROLLERS 1
 
 /*
  * Structure to describe an lp55231 program: pointer to the text of the



More information about the coreboot-gerrit mailing list