blob: 2fc40e589bc340f679dfeef89e3f7c75e4913ddf [file] [log] [blame]
#ifndef __BACKPORT_EFI_H
#define __BACKPORT_EFI_H
#include_next <linux/efi.h>
#include <linux/version.h>
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
/* This backports:
*
* commit 83e68189745ad931c2afd45d8ee3303929233e7f
* Author: Matt Fleming <matt.fleming@intel.com>
* Date: Wed Nov 14 09:42:35 2012 +0000
*
* efi: Make 'efi_enabled' a function to query EFI facilities
*
*/
/* check first if this was already backported */
#ifndef EFI_BOOT
/*
* We play games with efi_enabled so that the compiler will, if
* possible, remove EFI-related code altogether.
*/
#define EFI_BOOT 0 /* Were we booted from EFI? */
#define EFI_SYSTEM_TABLES 1 /* Can we use EFI system tables? */
#define EFI_CONFIG_TABLES 2 /* Can we use EFI config tables? */
#define EFI_RUNTIME_SERVICES 3 /* Can we use runtime services? */
#define EFI_MEMMAP 4 /* Can we use EFI memory map? */
#define EFI_64BIT 5 /* Is the firmware 64-bit? */
#ifdef CONFIG_EFI
# ifdef CONFIG_X86
static inline int compat_efi_enabled(int facility)
{
switch (facility) {
case EFI_BOOT:
return efi_enabled;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
case EFI_64BIT:
return efi_64bit;
#endif
default:
printk(KERN_ERR "can not translate efi_enabled() to old values completly\n");
return efi_enabled;
}
}
# else
static inline int compat_efi_enabled(int facility)
{
return 1;
}
# endif
#else
static inline int compat_efi_enabled(int facility)
{
return 0;
}
#endif
#ifdef efi_enabled
#undef efi_enabled
#endif
#define efi_enabled(facility) compat_efi_enabled(facility)
#endif /* EFI_BOOT */
#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) */
#endif /* __BACKPORT_EFI_H */