forked from mirrors/linux
		
	 e992867445
			
		
	
	
		e992867445
		
	
	
	
	
		
			
			Some people need it now on 64bit so reuse the i386 code for x86-64. This will be also useful for future bug workarounds. It is a bit simplified there because there is no need to do it very early on x86-64. This means it doesn't need early ioremap et.al. We run it as a core initcall right now. I hope it's not needed for early setup. I added a general CONFIG_DMI symbol in case IA64 or someone else wants to reuse the code later too. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __DMI_H__
 | |
| #define __DMI_H__
 | |
| 
 | |
| #include <linux/list.h>
 | |
| #include <linux/config.h>
 | |
| 
 | |
| enum dmi_field {
 | |
| 	DMI_NONE,
 | |
| 	DMI_BIOS_VENDOR,
 | |
| 	DMI_BIOS_VERSION,
 | |
| 	DMI_BIOS_DATE,
 | |
| 	DMI_SYS_VENDOR,
 | |
| 	DMI_PRODUCT_NAME,
 | |
| 	DMI_PRODUCT_VERSION,
 | |
| 	DMI_PRODUCT_SERIAL,
 | |
| 	DMI_BOARD_VENDOR,
 | |
| 	DMI_BOARD_NAME,
 | |
| 	DMI_BOARD_VERSION,
 | |
| 	DMI_STRING_MAX,
 | |
| };
 | |
| 
 | |
| enum dmi_device_type {
 | |
| 	DMI_DEV_TYPE_ANY = 0,
 | |
| 	DMI_DEV_TYPE_OTHER,
 | |
| 	DMI_DEV_TYPE_UNKNOWN,
 | |
| 	DMI_DEV_TYPE_VIDEO,
 | |
| 	DMI_DEV_TYPE_SCSI,
 | |
| 	DMI_DEV_TYPE_ETHERNET,
 | |
| 	DMI_DEV_TYPE_TOKENRING,
 | |
| 	DMI_DEV_TYPE_SOUND,
 | |
| 	DMI_DEV_TYPE_IPMI = -1
 | |
| };
 | |
| 
 | |
| struct dmi_header {
 | |
| 	u8 type;
 | |
| 	u8 length;
 | |
| 	u16 handle;
 | |
| };
 | |
| 
 | |
| /*
 | |
|  *	DMI callbacks for problem boards
 | |
|  */
 | |
| struct dmi_strmatch {
 | |
| 	u8 slot;
 | |
| 	char *substr;
 | |
| };
 | |
| 
 | |
| struct dmi_system_id {
 | |
| 	int (*callback)(struct dmi_system_id *);
 | |
| 	const char *ident;
 | |
| 	struct dmi_strmatch matches[4];
 | |
| 	void *driver_data;
 | |
| };
 | |
| 
 | |
| #define DMI_MATCH(a, b)	{ a, b }
 | |
| 
 | |
| struct dmi_device {
 | |
| 	struct list_head list;
 | |
| 	int type;
 | |
| 	const char *name;
 | |
| 	void *device_data;	/* Type specific data */
 | |
| };
 | |
| 
 | |
| #ifdef CONFIG_DMI
 | |
| 
 | |
| extern int dmi_check_system(struct dmi_system_id *list);
 | |
| extern char * dmi_get_system_info(int field);
 | |
| extern struct dmi_device * dmi_find_device(int type, const char *name,
 | |
| 	struct dmi_device *from);
 | |
| extern void dmi_scan_machine(void);
 | |
| 
 | |
| #else
 | |
| 
 | |
| static inline int dmi_check_system(struct dmi_system_id *list) { return 0; }
 | |
| static inline char * dmi_get_system_info(int field) { return NULL; }
 | |
| static inline struct dmi_device * dmi_find_device(int type, const char *name,
 | |
| 	struct dmi_device *from) { return NULL; }
 | |
| 
 | |
| #endif
 | |
| 
 | |
| #endif	/* __DMI_H__ */
 |