]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsInternal.h
ArmPlatformPkg: remove ArmPlatformSysConfigLib library class
[mirror_edk2.git] / ArmPlatformPkg / FileSystem / BootMonFs / BootMonFsInternal.h
1 /** @file
2 *
3 * Copyright (c) 2012-2014, ARM Limited. All rights reserved.
4 *
5 * This program and the accompanying materials
6 * are licensed and made available under the terms and conditions of the BSD License
7 * which accompanies this distribution. The full text of the license may be found at
8 * http://opensource.org/licenses/bsd-license.php
9 *
10 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 *
13 **/
14
15 #ifndef __BOOTMONFS_INTERNAL_H__
16 #define __BOOTMONFS_INTERNAL_H__
17
18 #include <PiDxe.h>
19 #include <Library/UefiLib.h>
20 #include <Library/DebugLib.h>
21 #include <Library/BaseMemoryLib.h>
22 #include <Library/MemoryAllocationLib.h>
23
24 #include <Protocol/BlockIo.h>
25 #include <Protocol/DiskIo.h>
26 #include <Protocol/FirmwareVolumeBlock.h>
27 #include <Protocol/SimpleFileSystem.h>
28
29 #include <Guid/BootMonFsFileInfo.h>
30 #include <Guid/FileInfo.h>
31 #include <Guid/FileSystemInfo.h>
32 #include <Guid/FileSystemVolumeLabelInfo.h>
33
34 #include "BootMonFsHw.h"
35
36 #define BOOTMON_FS_VOLUME_LABEL L"NOR Flash"
37
38 typedef struct _BOOTMON_FS_INSTANCE BOOTMON_FS_INSTANCE;
39
40 typedef struct {
41 LIST_ENTRY Link;
42 VOID* Buffer;
43 UINTN Size;
44 UINT64 Offset; // Offset from the start of the file
45 } BOOTMON_FS_FILE_REGION;
46
47 typedef struct {
48 UINT32 Signature;
49 LIST_ENTRY Link;
50 BOOTMON_FS_INSTANCE *Instance;
51
52 UINTN HwDescAddress;
53 HW_IMAGE_DESCRIPTION HwDescription;
54
55 EFI_FILE_PROTOCOL File;
56
57 //
58 // The following fields are relevant only if the file is open.
59 //
60
61 EFI_FILE_INFO *Info;
62 UINT64 Position;
63 // If the file needs to be flushed then this list contain the memory
64 // buffer that creates this file
65 LIST_ENTRY RegionToFlushLink;
66 UINT64 OpenMode;
67 } BOOTMON_FS_FILE;
68
69 #define BOOTMON_FS_FILE_SIGNATURE SIGNATURE_32('b', 'o', 't', 'f')
70 #define BOOTMON_FS_FILE_FROM_FILE_THIS(a) CR (a, BOOTMON_FS_FILE, File, BOOTMON_FS_FILE_SIGNATURE)
71 #define BOOTMON_FS_FILE_FROM_LINK_THIS(a) CR (a, BOOTMON_FS_FILE, Link, BOOTMON_FS_FILE_SIGNATURE)
72
73 struct _BOOTMON_FS_INSTANCE {
74 UINT32 Signature;
75 EFI_HANDLE ControllerHandle;
76
77 LIST_ENTRY Link;
78
79 EFI_DRIVER_BINDING_PROTOCOL *Binding;
80 EFI_DISK_IO_PROTOCOL *DiskIo;
81 EFI_BLOCK_IO_PROTOCOL *BlockIo;
82 EFI_BLOCK_IO_MEDIA *Media;
83 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
84
85 EFI_SIMPLE_FILE_SYSTEM_PROTOCOL Fs;
86
87 EFI_FILE_SYSTEM_INFO FsInfo;
88 CHAR16 Label[20];
89
90 BOOTMON_FS_FILE *RootFile; // All the other files are linked to this root
91 BOOLEAN Initialized;
92 };
93
94 #define BOOTMON_FS_SIGNATURE SIGNATURE_32('b', 'o', 't', 'm')
95 #define BOOTMON_FS_FROM_FS_THIS(a) CR (a, BOOTMON_FS_INSTANCE, Fs, BOOTMON_FS_SIGNATURE)
96 #define BOOTMON_FS_FROM_LINK(a) CR (a, BOOTMON_FS_INSTANCE, Link, BOOTMON_FS_SIGNATURE)
97
98 #include "BootMonFsApi.h"
99
100 #endif
101