2007-10-16 05:28:20 +08:00
|
|
|
#ifndef _ASM_X86_DMI_H
|
|
|
|
#define _ASM_X86_DMI_H
|
|
|
|
|
|
|
|
#include <asm/io.h>
|
|
|
|
|
2007-10-11 17:20:03 +08:00
|
|
|
#ifdef CONFIG_X86_32
|
2007-10-16 05:28:20 +08:00
|
|
|
|
|
|
|
#define dmi_alloc alloc_bootmem
|
|
|
|
|
|
|
|
#else /* CONFIG_X86_32 */
|
|
|
|
|
|
|
|
#define DMI_MAX_DATA 2048
|
|
|
|
|
|
|
|
extern int dmi_alloc_index;
|
|
|
|
extern char dmi_alloc_data[DMI_MAX_DATA];
|
|
|
|
|
|
|
|
/* This is so early that there is no good way to allocate dynamic memory.
|
|
|
|
Allocate data in an BSS array. */
|
|
|
|
static inline void *dmi_alloc(unsigned len)
|
|
|
|
{
|
|
|
|
int idx = dmi_alloc_index;
|
2008-01-30 20:31:59 +08:00
|
|
|
if ((dmi_alloc_index + len) > DMI_MAX_DATA)
|
2007-10-16 05:28:20 +08:00
|
|
|
return NULL;
|
2008-01-30 20:31:59 +08:00
|
|
|
dmi_alloc_index += len;
|
2007-10-16 05:28:20 +08:00
|
|
|
return dmi_alloc_data + idx;
|
|
|
|
}
|
|
|
|
|
2008-01-30 20:33:44 +08:00
|
|
|
#endif
|
|
|
|
|
2008-05-01 19:35:01 +08:00
|
|
|
/* Use early IO mappings for DMI because it's initialized early */
|
2007-10-16 05:28:20 +08:00
|
|
|
#define dmi_ioremap early_ioremap
|
|
|
|
#define dmi_iounmap early_iounmap
|
|
|
|
|
|
|
|
#endif
|