[coreboot] r3283 - trunk/payloads/coreinfo

svn at coreboot.org svn at coreboot.org
Tue May 6 23:32:53 CEST 2008


Author: jcrouse
Date: 2008-05-06 23:32:52 +0200 (Tue, 06 May 2008)
New Revision: 3283

Modified:
   trunk/payloads/coreinfo/coreinfo.c
   trunk/payloads/coreinfo/cpuinfo_module.c
Log:
coreinfo:  Move the rdtsc.h include into the #ifdef CONFIG_MODULE_CPUINFO

rdtsc.h shouldn't be included unless we really need it (and use it).
Trivial.

Signed-off-by: Jordan Crouse <jordan.crouse at amd.com>
Acked-by: Jordan Crouse <jordan.crouse at amd.com>


Modified: trunk/payloads/coreinfo/coreinfo.c
===================================================================
--- trunk/payloads/coreinfo/coreinfo.c	2008-05-06 16:56:47 UTC (rev 3282)
+++ trunk/payloads/coreinfo/coreinfo.c	2008-05-06 21:32:52 UTC (rev 3283)
@@ -28,24 +28,46 @@
 extern struct coreinfo_module nvram_module;
 extern struct coreinfo_module bootlog_module;
 
-struct coreinfo_module *modules[] = {
+struct coreinfo_module *system_modules[] = {
 #ifdef CONFIG_MODULE_CPUINFO
 	&cpuinfo_module,
 #endif
 #ifdef CONFIG_MODULE_PCI
 	&pci_module,
 #endif
+#ifdef CONFIG_MODULE_NVRAM
+	&nvram_module,
+#endif
+};
+
+struct coreinfo_module *coreboot_modules[] = {
 #ifdef CONFIG_MODULE_COREBOOT
 	&coreboot_module,
 #endif
-#ifdef CONFIG_MODULE_NVRAM
-	&nvram_module,
-#endif
 #ifdef CONFIG_MODULE_BOOTLOG
 	&bootlog_module,
 #endif
 };
 
+struct coreinfo_cat {
+	char name[15];
+	int cur;
+	int count;
+	struct coreinfo_module **modules;
+} categories[] = {
+	{
+		.name = "System",
+		.modules = system_modules,
+		.count = ARRAY_SIZE(system_modules),
+	},
+	{
+		.name = "Coreboot",
+		.modules = coreboot_modules,
+		.count = ARRAY_SIZE(coreboot_modules),
+	}
+};
+
+
 static WINDOW *modwin;
 static int curwin;
 
@@ -62,6 +84,26 @@
 		waddch(win, '\304');
 }
 
+static void print_submenu(struct coreinfo_cat *cat)
+{
+	int i, j;
+	char menu[80];
+	char *ptr = menu;
+
+	wmove(stdscr, 22, 0);
+
+	for (j = 0; j < SCREEN_X; j++)
+		waddch(stdscr, ' ');
+
+	if (!cat->count)
+		return;
+
+	for (i = 0; i < cat->count; i++)
+		ptr += sprintf(ptr, "[%c: %s] ", 'A' + i, cat->modules[i]->name);
+
+	mvprintw(22, 0, menu);
+}
+
 static void print_menu(void)
 {
 	int i, j;
@@ -73,12 +115,15 @@
 	for (j = 0; j < SCREEN_X; j++)
 		waddch(stdscr, ' ');
 
-	for (i = 0; i < ARRAY_SIZE(modules); i++)
-		ptr += sprintf(ptr, "F%d: %s ", i + 1, modules[i]->name);
+	for (i = 0; i < ARRAY_SIZE(categories); i++) {
+		if (categories[i].count == 0)
+			continue;
 
-	if (ARRAY_SIZE(modules) != 0)
-		mvprintw(23, 0, menu);
+		ptr += sprintf(ptr, "F%d: %s ", i + 1, categories[i].name);
+	}
 
+	mvprintw(23, 0, menu);
+
 #ifdef CONFIG_SHOW_DATE_TIME
 	mvprintw(23, 59, "%02d/%02d/20%02d - %02d:%02d:%02d",
 		 bcd2dec(nvram_read(NVRAM_RTC_MONTH)),
@@ -117,6 +162,8 @@
 
 	ptr += sprintf(ptr, "[ %s ]", str);
 
+
+
 	for (i = ((SCREEN_X - len) / 2) + len; i < SCREEN_X; i++)
 		ptr += sprintf(ptr, "=");
 
@@ -124,16 +171,35 @@
 }
 #endif
 
-static void redraw_module(void)
+static void redraw_module(struct coreinfo_cat *cat)
 {
-	if (ARRAY_SIZE(modules) == 0)
+	if (cat->count == 0)
 		return;
 
 	wclear(modwin);
-	modules[curwin]->redraw(modwin);
+	cat->modules[cat->cur]->redraw(modwin);
 	refresh();
 }
 
+static void handle_category_key(struct coreinfo_cat *cat, int key)
+{
+	if (key >= 'a' && key <= 'z') {
+		int index = key - 'a';
+
+		if (index < cat->count) {
+
+		cat->cur = index;
+			redraw_module(cat);
+			return;
+		}
+	}
+
+	if (cat->count && cat->modules[cat->cur]->handle) {
+		if (cat->modules[cat->cur]->handle(key))
+			redraw_module(cat);
+	}
+}
+
 static void loop(void)
 {
 	int key;
@@ -141,9 +207,8 @@
 	center(0, "coreinfo v0.1");
 
 	print_menu();
-	if (ARRAY_SIZE(modules) != 0)
-		modules[curwin]->redraw(modwin);
-	refresh();
+	print_submenu(&categories[curwin]);
+	redraw_module(&categories[curwin]);
 
 	while (1) {
 		key = getch();
@@ -154,18 +219,21 @@
 		if (key >= KEY_F(1) && key <= KEY_F(9)) {
 			unsigned char ch = key - KEY_F(1);
 
-			if (ch <= ARRAY_SIZE(modules)) {
-				if (ch == ARRAY_SIZE(modules))
+			if (ch <= ARRAY_SIZE(categories)) {
+				if (ch == ARRAY_SIZE(categories))
 					continue;
+				if (categories[ch].count == 0)
+					continue;
+
 				curwin = ch;
-				redraw_module();
+				print_submenu(&categories[curwin]);
+				redraw_module(&categories[curwin]);
 				continue;
 			}
 		}
 
-		if (ARRAY_SIZE(modules) != 0 && modules[curwin]->handle)
-			if (modules[curwin]->handle(key))
-				redraw_module();
+
+		handle_category_key(&categories[curwin], key);
 	}
 }
 
@@ -182,7 +250,7 @@
 	init_pair(2, COLOR_BLACK, COLOR_WHITE);
 	init_pair(3, COLOR_WHITE, COLOR_WHITE);
 
-	modwin = newwin(23, 80, 1, 0);
+	modwin = newwin(22, 80, 1, 0);
 
 	wattrset(stdscr, COLOR_PAIR(1) | A_BOLD);
 	wattrset(modwin, COLOR_PAIR(2));
@@ -196,9 +264,12 @@
 
 	refresh();
 
-	for (i = 0; i < ARRAY_SIZE(modules); i++)
-		modules[i]->init();
+	for (i = 0; i < ARRAY_SIZE(categories); i++) {
+		for(j = 0; j < categories[i].count; j++)
+			categories[i].modules[j]->init();
 
+	}
+
 	loop();
 
 	return 0;

Modified: trunk/payloads/coreinfo/cpuinfo_module.c
===================================================================
--- trunk/payloads/coreinfo/cpuinfo_module.c	2008-05-06 16:56:47 UTC (rev 3282)
+++ trunk/payloads/coreinfo/cpuinfo_module.c	2008-05-06 21:32:52 UTC (rev 3283)
@@ -21,9 +21,9 @@
  */
 
 #include "coreinfo.h"
-#include <arch/rdtsc.h>
 
 #ifdef CONFIG_MODULE_CPUINFO
+#include <arch/rdtsc.h>
 
 #define VENDOR_INTEL 0x756e6547
 #define VENDOR_AMD   0x68747541





More information about the coreboot mailing list