aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firmware/dmi_scan.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/firmware/dmi_scan.c')
-rw-r--r--drivers/firmware/dmi_scan.c39
1 files changed, 38 insertions, 1 deletions
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
index b3d22d659990..bcb1126e3d00 100644
--- a/drivers/firmware/dmi_scan.c
+++ b/drivers/firmware/dmi_scan.c
@@ -2,6 +2,7 @@
2#include <linux/string.h> 2#include <linux/string.h>
3#include <linux/init.h> 3#include <linux/init.h>
4#include <linux/module.h> 4#include <linux/module.h>
5#include <linux/ctype.h>
5#include <linux/dmi.h> 6#include <linux/dmi.h>
6#include <linux/efi.h> 7#include <linux/efi.h>
7#include <linux/bootmem.h> 8#include <linux/bootmem.h>
@@ -361,6 +362,40 @@ static void __init dmi_decode(const struct dmi_header *dm, void *dummy)
361 } 362 }
362} 363}
363 364
365static void __init print_filtered(const char *info)
366{
367 const char *p;
368
369 if (!info)
370 return;
371
372 for (p = info; *p; p++)
373 if (isprint(*p))
374 printk(KERN_CONT "%c", *p);
375 else
376 printk(KERN_CONT "\\x%02x", *p & 0xff);
377}
378
379static void __init dmi_dump_ids(void)
380{
381 const char *board; /* Board Name is optional */
382
383 printk(KERN_DEBUG "DMI: ");
384 print_filtered(dmi_get_system_info(DMI_SYS_VENDOR));
385 printk(KERN_CONT " ");
386 print_filtered(dmi_get_system_info(DMI_PRODUCT_NAME));
387 board = dmi_get_system_info(DMI_BOARD_NAME);
388 if (board) {
389 printk(KERN_CONT "/");
390 print_filtered(board);
391 }
392 printk(KERN_CONT ", BIOS ");
393 print_filtered(dmi_get_system_info(DMI_BIOS_VERSION));
394 printk(KERN_CONT " ");
395 print_filtered(dmi_get_system_info(DMI_BIOS_DATE));
396 printk(KERN_CONT "\n");
397}
398
364static int __init dmi_present(const char __iomem *p) 399static int __init dmi_present(const char __iomem *p)
365{ 400{
366 u8 buf[15]; 401 u8 buf[15];
@@ -381,8 +416,10 @@ static int __init dmi_present(const char __iomem *p)
381 buf[14] >> 4, buf[14] & 0xF); 416 buf[14] >> 4, buf[14] & 0xF);
382 else 417 else
383 printk(KERN_INFO "DMI present.\n"); 418 printk(KERN_INFO "DMI present.\n");
384 if (dmi_walk_early(dmi_decode) == 0) 419 if (dmi_walk_early(dmi_decode) == 0) {
420 dmi_dump_ids();
385 return 0; 421 return 0;
422 }
386 } 423 }
387 return 1; 424 return 1;
388} 425}