123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- /*
- * GRUB -- GRand Unified Bootloader
- * Copyright (C) 2013 Free Software Foundation, Inc.
- *
- * GRUB is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * GRUB is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
- */
- #include <grub/dl.h>
- #include <grub/misc.h>
- #include <grub/command.h>
- #include <grub/i18n.h>
- #include <grub/coreboot/lbio.h>
- #include <grub/i386/tsc.h>
- GRUB_MOD_LICENSE ("GPLv3+");
- static const char *console_descs[] = {
- "8250 UART",
- "VGA",
- "BTEXT",
- "log buffer console",
- "SROM",
- "EHCI debug",
- "memory-mapped 8250 UART"
- };
- static const char *descs[] = {
- [GRUB_LINUXBIOS_MEMBER_MEMORY] = "memory map (`lsmmap' to list)",
- [GRUB_LINUXBIOS_MEMBER_MAINBOARD] = "mainboard",
- [4] = "version",
- [5] = "extra version",
- [6] = "build",
- [7] = "compile time",
- [8] = "compile by",
- [9] = "compile host",
- [0xa] = "compile domain",
- [0xb] = "compiler",
- [0xc] = "linker",
- [0xd] = "assembler",
- [0xf] = "serial",
- [GRUB_LINUXBIOS_MEMBER_CONSOLE] = "console",
- [GRUB_LINUXBIOS_MEMBER_FRAMEBUFFER] = "framebuffer",
- [0x13] = "GPIO",
- [0x15] = "VDAT",
- [GRUB_LINUXBIOS_MEMBER_TIMESTAMPS] = "timestamps (`coreboot_boottime' to list)",
- [GRUB_LINUXBIOS_MEMBER_CBMEMC] = "CBMEM console (`cbmemc' to list)",
- [0x18] = "MRC cache",
- [0x19] = "VBNV",
- [0xc8] = "CMOS option table",
- [0xc9] = "CMOS option",
- [0xca] = "CMOS option enum",
- [0xcb] = "CMOS option defaults",
- [0xcc] = "CMOS checksum",
- };
- static int
- iterate_linuxbios_table (grub_linuxbios_table_item_t table_item,
- void *data __attribute__ ((unused)))
- {
- if (table_item->tag < ARRAY_SIZE (descs) && descs[table_item->tag])
- grub_printf ("tag=%02x size=%02x %s",
- table_item->tag, table_item->size, descs[table_item->tag]);
- else
- grub_printf ("tag=%02x size=%02x",
- table_item->tag, table_item->size);
- switch (table_item->tag)
- {
- case GRUB_LINUXBIOS_MEMBER_FRAMEBUFFER:
- {
- struct grub_linuxbios_table_framebuffer *fb;
- fb = (struct grub_linuxbios_table_framebuffer *) (table_item + 1);
- grub_printf (": %dx%dx%d pitch=%d lfb=0x%llx %d/%d/%d/%d %d/%d/%d/%d",
- fb->width, fb->height,
- fb->bpp, fb->pitch,
- (unsigned long long) fb->lfb,
- fb->red_mask_size, fb->green_mask_size,
- fb->blue_mask_size, fb->reserved_mask_size,
- fb->red_field_pos, fb->green_field_pos,
- fb->blue_field_pos, fb->reserved_field_pos);
- break;
- }
- case GRUB_LINUXBIOS_MEMBER_MAINBOARD:
- {
- struct grub_linuxbios_mainboard *mb;
- mb = (struct grub_linuxbios_mainboard *) (table_item + 1);
- grub_printf (": vendor=`%s' part_number=`%s'",
- mb->strings + mb->vendor,
- mb->strings + mb->part_number);
- break;
- }
- case 0x04 ... 0x0d:
- grub_printf (": `%s'", (char *) (table_item + 1));
- break;
- case GRUB_LINUXBIOS_MEMBER_CONSOLE:
- {
- grub_uint16_t *val = (grub_uint16_t *) (table_item + 1);
- grub_printf (": id=%d", *val);
- if (*val < ARRAY_SIZE (console_descs)
- && console_descs[*val])
- grub_printf (" %s", console_descs[*val]);
- }
- }
- grub_printf ("\n");
- return 0;
- }
- static grub_err_t
- grub_cmd_lscoreboot (struct grub_command *cmd __attribute__ ((unused)),
- int argc __attribute__ ((unused)),
- char *argv[] __attribute__ ((unused)))
- {
- grub_linuxbios_table_iterate (iterate_linuxbios_table, 0);
- return 0;
- }
- static grub_command_t cmd;
- GRUB_MOD_INIT(cbls)
- {
- cmd =
- grub_register_command ("lscoreboot", grub_cmd_lscoreboot,
- 0, N_("List coreboot tables."));
- }
- GRUB_MOD_FINI(cbls)
- {
- grub_unregister_command (cmd);
- }
|