1 /** @file
2   OVMF support for QEMU system firmware flash device
3 
4   Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>
5 
6   This program and the accompanying materials are licensed and made available
7   under the terms and conditions of the BSD License which accompanies this
8   distribution.  The full text of the license may be found at
9   http://opensource.org/licenses/bsd-license.php
10 
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.
13 
14 **/
15 
16 #ifndef __QEMU_FLASH_H__
17 #define __QEMU_FLASH_H__
18 
19 #include <Protocol/FirmwareVolumeBlock.h>
20 
21 extern UINT8 *mFlashBase;
22 
23 /**
24   Read from QEMU Flash
25 
26   @param[in] Lba      The starting logical block index to read from.
27   @param[in] Offset   Offset into the block at which to begin reading.
28   @param[in] NumBytes On input, indicates the requested read size. On
29                       output, indicates the actual number of bytes read
30   @param[in] Buffer   Pointer to the buffer to read into.
31 
32 **/
33 EFI_STATUS
34 QemuFlashRead (
35   IN        EFI_LBA                              Lba,
36   IN        UINTN                                Offset,
37   IN        UINTN                                *NumBytes,
38   IN        UINT8                                *Buffer
39   );
40 
41 
42 /**
43   Write to QEMU Flash
44 
45   @param[in] Lba      The starting logical block index to write to.
46   @param[in] Offset   Offset into the block at which to begin writing.
47   @param[in] NumBytes On input, indicates the requested write size. On
48                       output, indicates the actual number of bytes written
49   @param[in] Buffer   Pointer to the data to write.
50 
51 **/
52 EFI_STATUS
53 QemuFlashWrite (
54   IN        EFI_LBA                              Lba,
55   IN        UINTN                                Offset,
56   IN        UINTN                                *NumBytes,
57   IN        UINT8                                *Buffer
58   );
59 
60 
61 /**
62   Erase a QEMU Flash block
63 
64   @param Lba    The logical block index to erase.
65 
66 **/
67 EFI_STATUS
68 QemuFlashEraseBlock (
69   IN   EFI_LBA      Lba
70   );
71 
72 
73 /**
74   Initializes QEMU flash memory support
75 
76   @retval EFI_WRITE_PROTECTED   The QEMU flash device is not present.
77   @retval EFI_SUCCESS           The QEMU flash device is supported.
78 
79 **/
80 EFI_STATUS
81 QemuFlashInitialize (
82   VOID
83   );
84 
85 
86 VOID
87 QemuFlashConvertPointers (
88   VOID
89   );
90 
91 #endif
92 
93