]> code.delx.au - refind/blobdiff - refind/global.h
Added touchscreen support
[refind] / refind / global.h
index a07e0c90d74f4815e00dcecf942f8fdb77f49de7..1b2a7f9b901fd0e7f0e2c10defbacf6bec0a6e15 100644 (file)
@@ -76,7 +76,8 @@
 #define TAG_GDISK            (16)
 #define TAG_NETBOOT          (17)
 #define TAG_CSR_ROTATE       (18)
-#define NUM_TOOLS            (19)
+#define TAG_FWUPDATE_TOOL    (19)
+#define NUM_TOOLS            (20)
 
 #define NUM_SCAN_OPTIONS 10
 
 #define ICON_SIZE_SMALL 1
 #define ICON_SIZE_BIG   2
 
-// The constants related to Apple's System Integrity Protection (SIP)....
-#define CSR_GUID { 0x7c436110, 0xab2a, 0x4bbb, { 0xa8, 0x80, 0xfe, 0x41, 0x99, 0x5c, 0x9f, 0x82 } };
-// These codes are returned in the first byte of the csr-active-config variable
-#define CSR_ALLOW_UNTRUSTED_KEXTS       0x01
-#define CSR_ALLOW_UNRESTRICTED_FS       0x02
-#define CSR_ALLOW_TASK_FOR_PID          0x04
-#define CSR_ALLOW_KERNEL_DEBUGGER       0x08
-#define CSR_ALLOW_APPLE_INTERNAL        0x10
-#define CSR_ALLOW_UNRESTRICTED_DTRACE   0x20
-#define CSR_ALLOW_UNRESTRICTED_NVRAM    0x40
-// Some summaries....
-#define SIP_ENABLED  CSR_ALLOW_APPLE_INTERNAL
-#define SIP_DISABLED (CSR_ALLOW_UNRESTRICTED_NVRAM | \
-                      CSR_ALLOW_UNRESTRICTED_DTRACE | \
-                      CSR_ALLOW_APPLE_INTERNAL | \
-                      CSR_ALLOW_TASK_FOR_PID | \
-                      CSR_ALLOW_UNRESTRICTED_FS | \
-                      CSR_ALLOW_UNTRUSTED_KEXTS)
-
 // Names of binaries that can manage MOKs....
 #define MOK_NAMES               L"MokManager.efi,HashTool.efi,HashTool-signed.efi,KeyTool.efi,KeyTool-signed.efi"
+// Names of binaries that can update firmware....
+#if defined (EFIX64)
+#define FWUPDATE_NAMES          L"fwupx64.efi"
+#elif defined(EFI32)
+#define FWUPDATE_NAMES          L"fwupia32.efi"
+#elif defined(EFIAARCH64)
+#define FWUPDATE_NAMES          L"fwupaa64.efi"
+#else
+#define FWUPDATE_NAMES          L"fwup.efi"
+#endif
 // Directories to search for these MOK-managing programs. Note that SelfDir is
 // searched in addition to these locations....
 #define MOK_LOCATIONS           L"\\,EFI\\tools,EFI\\fedora,EFI\\redhat,EFI\\ubuntu,EFI\\suse,EFI\\opensuse,EFI\\altlinux"
 // Files that may be Windows recovery files
 #define WINDOWS_RECOVERY_FILES  L"EFI\\Microsoft\\Boot\\LrsBootmgr.efi,Recovery:\\EFI\\BOOT\\bootx64.efi,Recovery:\\EFI\\BOOT\\bootia32.efi"
 
+// Filename patterns that identify EFI boot loaders. Note that a single case (either L"*.efi" or
+// L"*.EFI") is fine for most systems; but Gigabyte's buggy Hybrid EFI does a case-sensitive
+// comparison when it should do a case-insensitive comparison, so I'm doubling this up. It does
+// no harm on other computers, AFAIK. In theory, every case variation should be done for
+// completeness, but that's ridiculous....
+#define LOADER_MATCH_PATTERNS   L"*.efi,*.EFI"
+
 // Definitions for the "hideui" option in refind.conf
 #define HIDEUI_FLAG_NONE       (0x0000)
 #define HIDEUI_FLAG_BANNER     (0x0001)
 
 // global types
 
+typedef struct _uint32_list {
+    UINT32               Value;
+    struct _uint32_list  *Next;
+} UINT32_LIST;
+
 typedef struct {
    UINT8 Flags;
    UINT8 StartCHS1;
@@ -326,9 +330,10 @@ typedef struct {
    CHAR16           *DriverDirs;
    CHAR16           *IconsDir;
    CHAR16           *SpoofOSXVersion;
-   CHAR16           *CsrValues;
+   UINT32_LIST      *CsrValues;
    UINTN            ShowTools[NUM_TOOLS];
    CHAR8            ScanFor[NUM_SCAN_OPTIONS]; // codes of types of loaders for which to scan
+   BOOLEAN                     EnableTouch;
 } REFIT_CONFIG;
 
 // Global variables
@@ -354,6 +359,12 @@ EFI_STATUS StartEFIImageList(IN EFI_DEVICE_PATH **DevicePaths,
                              OUT UINTN *ErrorInStep,
                              IN BOOLEAN Verbose,
                              IN BOOLEAN IsDriver);
+EFI_STATUS StartEFIImage(IN EFI_DEVICE_PATH *DevicePath,
+                         IN CHAR16 *LoadOptions, IN UINTN LoaderType,
+                         IN CHAR16 *ImageTitle, IN CHAR8 OSType,
+                         OUT UINTN *ErrorInStep,
+                         IN BOOLEAN Verbose,
+                         IN BOOLEAN IsDriver);
 LOADER_ENTRY *InitializeLoaderEntry(IN LOADER_ENTRY *Entry);
 REFIT_MENU_SCREEN *InitializeSubScreen(IN LOADER_ENTRY *Entry);
 VOID GenerateSubScreen(LOADER_ENTRY *Entry, IN REFIT_VOLUME *Volume, IN BOOLEAN GenerateReturn);