3 Ipf platform related code to support FtwLite..
5 Copyright (c) 2006 - 2008, Intel Corporation
6 All rights reserved. This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
20 // MACROs for boot block update
22 #define BOOT_BLOCK_BASE
27 This is a internal function.
29 @param FtwLiteDevice Calling context
30 @param SwapState Swap state
32 @retval EFI_SUCCESS State successfully got
37 IN EFI_FTW_LITE_DEVICE
*FtwLiteDevice
,
38 OUT BOOLEAN
*SwapState
46 This is a internal function.
49 @param FtwLiteDevice Indicates a pointer to the calling context.
50 @param TopSwap New swap state
52 @retval EFI_SUCCESS The function completed successfully
54 the Top-Swap bit (bit 13, D31: F0, Offset D4h). Note that
55 software will not be able to clear the Top-Swap bit until the system is
56 rebooted without GNT[A]# being pulled down.
61 IN EFI_FTW_LITE_DEVICE
*FtwLiteDevice
,
70 Check whether the block is a boot block.
73 @param FtwLiteDevice Calling context
74 @param FvBlock Fvb protocol instance
77 @retval FALSE This is a boot block.
78 @retval TRUE This is not a boot block.
83 EFI_FTW_LITE_DEVICE
*FtwLiteDevice
,
84 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*FvBlock
,
89 // IPF doesn't support safe bootblock update
90 // so treat bootblock as normal block
96 Copy the content of spare block to a boot block. Size is FTW_BLOCK_SIZE.
97 Spare block is accessed by FTW backup FVB protocol interface. LBA is
98 FtwLiteDevice->FtwSpareLba.
99 Boot block is accessed by BootFvb protocol interface. LBA is 0.
102 @param FtwLiteDevice The private data of FTW_LITE driver
104 @retval EFI_SUCCESS Spare block content is copied to boot block
105 @retval EFI_INVALID_PARAMETER Input parameter error
106 @retval EFI_OUT_OF_RESOURCES Allocate memory error
107 @retval EFI_ABORTED The function could not complete successfully
112 FlushSpareBlockToBootBlock (
113 EFI_FTW_LITE_DEVICE
*FtwLiteDevice