[coreboot-gerrit] New patch to review for coreboot: soc/intel/quark: Add early debugging code

Lee Leahy (leroy.p.leahy@intel.com) gerrit at coreboot.org
Wed Dec 28 22:11:48 CET 2016


Lee Leahy (leroy.p.leahy at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17985

-gerrit

commit e97e5b01d48c967dc592fdffe6e4440de4d2373c
Author: Lee Leahy <leroy.p.leahy at intel.com>
Date:   Wed Dec 28 11:43:10 2016 -0800

    soc/intel/quark: Add early debugging code
    
    Add Kconfig values and early debugging code to better segment and debug
    the early code in bootblock.  Update the help text for the debug Kconfig
    values to point to the various failure locations.
    
    TEST=Build and run on Galileo Gen2
    
    Change-Id: I1cd62eba3e9547cb1dd7f547aaec5d4827e14633
    Signed-off-by: Lee Leahy <leroy.p.leahy at intel.com>
---
 src/soc/intel/quark/Kconfig                | 43 ++++++++++++++++++++++++++----
 src/soc/intel/quark/bootblock/bootblock.c  | 14 ++++++++++
 src/soc/intel/quark/bootblock/esram_init.S | 21 +++++++++------
 src/soc/intel/quark/romstage/fsp1_1.c      |  4 +++
 4 files changed, 69 insertions(+), 13 deletions(-)

diff --git a/src/soc/intel/quark/Kconfig b/src/soc/intel/quark/Kconfig
index 5a48847..1f82e9e 100644
--- a/src/soc/intel/quark/Kconfig
+++ b/src/soc/intel/quark/Kconfig
@@ -109,21 +109,54 @@ config ENABLE_DEBUG_LED_ESRAM
 	default n
 	select ENABLE_DEBUG_LED
 	help
-	  Indicate that ESRAM has been successfully initialized.
+	  Indicate that ESRAM has been successfully initialized.  If the SD LED
+	  does not light then the ESRAM initialization needs to be debugged.
 
 config ENABLE_DEBUG_LED_FINDFSP
 	bool "SD LED indicates fsp.bin file was found"
+	depends on PLATFORM_USES_FSP1_1
+	default n
+	select ENABLE_DEBUG_LED
+	help
+	  Indicate that fsp.bin was found.  If the SD LED does not light then
+	  the code between ESRAM initialization through find_fsp needs to
+	  debugged.  Start by verifying that the correct fsp.bin is in the
+	  image.
+
+config ENABLE_DEBUG_LED_BOOTBLOCK_ENTRY
+	bool "SD LED indicates bootblock.c was successful entered"
+	default n
+	select ENABLE_DEBUG_LED
+	help
+	  Indicate that bootblock_c_entry was entered.  If the SD LED does not
+	  light then debug the code between ESRAM and bootblock_c_entry.  For
+	  FSP 1.1, use ENABLE_DEBUG_LED_FINDFSP to split this code.
+
+config ENABLE_DEBUG_LED_SOC_EARLY_INIT_ENTRY
+	bool "SD LED indicates bootblock_soc_early_init was successful entered"
+	default n
+	select ENABLE_DEBUG_LED
+	help
+	  Indicate that bootblock_soc_early_init was entered.  If the SD LED
+	  does not light then debug the code in bootblock_main_with_timestamp
+
+config ENABLE_DEBUG_LED_SOC_EARLY_INIT_EXIT
+	bool "SD LED indicates bootblock_soc_early_init successful exited"
 	default n
 	select ENABLE_DEBUG_LED
 	help
-	  Indicate that fsp.bin was found.
+	  Indicate that bootblock_soc_early_init exited.  If the SD LED does not
+	  light then debug the scripts in bootblock_soc_early_init.
 
-config ENABLE_DEBUG_LED_TEMPRAMINIT
-	bool "SD LED indicates TempRamInit was successful"
+config ENABLE_DEBUG_LED_SOC_INIT_ENTRY
+	bool "SD LED indicates bootblock_soc_init was successful entered"
 	default n
 	select ENABLE_DEBUG_LED
 	help
-	  Indicate that TempRamInit was successful.
+	  Indicate that bootblock_soc_init was entered.  If the SD LED does not
+	  light then debug the code in bootblock_mainboard_early_init and
+	  console_init.  If the SD LED does light but there is no serial then
+	  debug the serial port configuration and initialization.
 
 #####
 # ESRAM layout
diff --git a/src/soc/intel/quark/bootblock/bootblock.c b/src/soc/intel/quark/bootblock/bootblock.c
index 3c90de9..c974cb1 100644
--- a/src/soc/intel/quark/bootblock/bootblock.c
+++ b/src/soc/intel/quark/bootblock/bootblock.c
@@ -22,6 +22,8 @@
 #include <soc/pci_devs.h>
 #include <soc/reg_access.h>
 
+extern void asmlinkage light_sd_led(void);
+
 static const struct reg_script legacy_gpio_init[] = {
 	/* Temporarily enable the legacy GPIO controller */
 	REG_PCI_WRITE32(R_QNC_LPC_GBA_BASE, IO_ADDRESS_VALID
@@ -77,11 +79,17 @@ static const struct reg_script mtrr_init[] = {
 
 void asmlinkage bootblock_c_entry(uint64_t base_timestamp)
 {
+	if (IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_BOOTBLOCK_ENTRY))
+		light_sd_led();
+
 	bootblock_main_with_timestamp(base_timestamp);
 }
 
 void bootblock_soc_early_init(void)
 {
+	if (IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_SOC_EARLY_INIT_ENTRY))
+		light_sd_led();
+
 	/* Initialize the MTRRs */
 	reg_script_run(mtrr_init);
 
@@ -94,10 +102,16 @@ void bootblock_soc_early_init(void)
 		reg_script_run_on_dev(HSUART0_BDF, hsuart_init);
 	if (IS_ENABLED(CONFIG_ENABLE_BUILTIN_HSUART1))
 		reg_script_run_on_dev(HSUART1_BDF, hsuart_init);
+
+	if (IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_SOC_EARLY_INIT_EXIT))
+		light_sd_led();
 }
 
 void bootblock_soc_init(void)
 {
+	if (IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_SOC_INIT_ENTRY))
+		light_sd_led();
+
 	/* Display the MTRRs */
 	soc_display_mtrrs();
 }
diff --git a/src/soc/intel/quark/bootblock/esram_init.S b/src/soc/intel/quark/bootblock/esram_init.S
index d982cdd..66f7093 100644
--- a/src/soc/intel/quark/bootblock/esram_init.S
+++ b/src/soc/intel/quark/bootblock/esram_init.S
@@ -507,14 +507,7 @@ L43:
 
 L44:
 #if IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_ESRAM)
-	/* Turn on SD LED to indicate ESRAM successfully initialized */
-	movl	$SD_HOST_CTRL, %ebx
-	movb	0(%ebx), %al
-	orb	$1, %al
-	movb	%al, 0(%ebx)
-
-	/* Loop forever */
-	jmp	.
+	jmp	light_sd_led
 #endif /* CONFIG_ENABLE_DEBUG_LED_ESRAM */
 #endif /* CONFIG_ENABLE_DEBUG_LED */
 
@@ -537,3 +530,15 @@ before_carstage:
 	call bootblock_c_entry
 
 	/* Never reached */
+
+	.global	light_sd_led
+
+light_sd_led:
+	/* Turn on SD LED to indicate ESRAM successfully initialized */
+	movl	$SD_HOST_CTRL, %ebx
+	movb	0(%ebx), %al
+	orb	$1, %al
+	movb	%al, 0(%ebx)
+
+	/* Loop forever */
+	jmp	.
diff --git a/src/soc/intel/quark/romstage/fsp1_1.c b/src/soc/intel/quark/romstage/fsp1_1.c
index d7f19a7..e93e688 100644
--- a/src/soc/intel/quark/romstage/fsp1_1.c
+++ b/src/soc/intel/quark/romstage/fsp1_1.c
@@ -26,6 +26,8 @@
 #include <soc/romstage.h>
 #include <string.h>
 
+extern void asmlinkage light_sd_led(void);
+
 asmlinkage void *car_stage_c_entry(void)
 {
 	FSP_INFO_HEADER *fih;
@@ -40,6 +42,8 @@ asmlinkage void *car_stage_c_entry(void)
 
 	/* Locate the FSP header in ESRAM */
 	fih = find_fsp(CONFIG_FSP_ESRAM_LOC);
+	if (IS_ENABLED(CONFIG_ENABLE_DEBUG_LED_FINDFSP))
+		light_sd_led();
 
 	/* Start the early verstage/romstage code */
 	post_code(0x2A);



More information about the coreboot-gerrit mailing list