[coreboot] r3283 - trunk/payloads/coreinfo

Jordan Crouse jordan.crouse at amd.com
Wed May 7 00:06:00 CEST 2008


Oops - I hosed that one.  coreinfo.c wasn't supposed to be in there,
obviously.  I am going to to revert it, and then recommit the code
under the correct comments.  Sorry for the churn.

Jordan

On 06/05/08 23:32 +0200, svn at coreboot.org wrote:
> 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
> 
> 
> -- 
> coreboot mailing list
> coreboot at coreboot.org
> http://www.coreboot.org/mailman/listinfo/coreboot
> 

-- 
Jordan Crouse
Systems Software Development Engineer 
Advanced Micro Devices, Inc.





More information about the coreboot mailing list