On Fri, Apr 29, 2016 at 07:26:04PM +0200, Marcin Wojtas wrote:
From: Jan Dąbroś jsd@semihalf.com
Add MARVELL_SPI_FLASH_PROTOCOL and register containg folder in Marvell/Marvell.dec in order to make it public. This protocol contains functions used to manage SPI flash.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jan Dabros jsd@semihalf.com Signed-off-by: Marcin Wojtas mw@semihalf.com
Same as for 12/20: Exported function/struct names Efi* sound like they were implementations of core specification protocol. Unless I've missed something and they are, I would much prefere for them to be Mv*.
Regards,
Leif
Platforms/Marvell/Include/Protocol/SpiFlash.h | 113 ++++++++++++++++++++++++++ Platforms/Marvell/Marvell.dec | 1 + 2 files changed, 114 insertions(+) create mode 100644 Platforms/Marvell/Include/Protocol/SpiFlash.h
diff --git a/Platforms/Marvell/Include/Protocol/SpiFlash.h b/Platforms/Marvell/Include/Protocol/SpiFlash.h new file mode 100644 index 0000000..2b0e376 --- /dev/null +++ b/Platforms/Marvell/Include/Protocol/SpiFlash.h @@ -0,0 +1,113 @@ +/******************************************************************************* +Copyright (C) 2016 Marvell International Ltd.
+Marvell BSD License Option
+If you received this File from Marvell, you may opt to use, redistribute and/or +modify this File under the following licensing terms. +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met:
+* Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
+* Neither the name of Marvell nor the names of its contributors may be
- used to endorse or promote products derived from this software without
- specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*******************************************************************************/ +#ifndef __EFI_SPI_FLASH_H__ +#define __EFI_SPI_FLASH_H__
+#include <Protocol/Spi.h>
+#define CMD_READ_ID 0x9f +#define READ_STATUS_REG_CMD 0x0b +#define CMD_WRITE_ENABLE 0x06 +#define CMD_FLAG_STATUS 0x70 +#define CMD_WRITE_STATUS_REG 0x01 +#define CMD_READ_ARRAY_FAST 0x0b +#define CMD_PAGE_PROGRAM 0x02 +#define CMD_BANK_WRITE 0xc5 +#define CMD_ERASE_64K 0xd8 +#define CMD_4B_ADDR_ENABLE 0xb7
+extern EFI_GUID gMarvellSpiFlashProtocolGuid;
+typedef struct _MARVELL_SPI_FLASH_PROTOCOL MARVELL_SPI_FLASH_PROTOCOL;
+typedef +EFI_STATUS +(EFIAPI *EFI_SPI_FLASH_INIT) (
- IN MARVELL_SPI_FLASH_PROTOCOL *This,
- IN SPI_DEVICE *SpiDev
- );
+typedef +EFI_STATUS +(EFIAPI *EFI_SPI_FLASH_READ_ID) (
- IN SPI_DEVICE *SpiDev,
- IN UINT32 DataByteCount,
- IN OUT UINT8 *Buffer
- );
+typedef +EFI_STATUS +(EFIAPI *EFI_SPI_FLASH_READ) (
- IN SPI_DEVICE *SpiDev,
- IN UINT32 Address,
- IN UINTN DataByteCount,
- IN VOID *Buffer
- );
+typedef +EFI_STATUS +(EFIAPI *EFI_SPI_FLASH_WRITE) (
- IN SPI_DEVICE *SpiDev,
- IN UINT32 Address,
- IN UINTN DataByteCount,
- IN VOID *Buffer
- );
+typedef +EFI_STATUS +(EFIAPI *EFI_SPI_FLASH_ERASE) (
- IN SPI_DEVICE *SpiDev,
- IN UINTN Address,
- IN UINTN DataByteCount
- );
+typedef +EFI_STATUS +(EFIAPI *EFI_SPI_FLASH_UPDATE) (
- IN SPI_DEVICE *SpiDev,
- IN UINT32 Address,
- IN UINTN DataByteCount,
- IN UINT8 *Buffer
- );
+struct _MARVELL_SPI_FLASH_PROTOCOL {
- EFI_SPI_FLASH_INIT Init;
- EFI_SPI_FLASH_READ_ID ReadId;
- EFI_SPI_FLASH_READ Read;
- EFI_SPI_FLASH_WRITE Write;
- EFI_SPI_FLASH_ERASE Erase;
- EFI_SPI_FLASH_UPDATE Update;
+};
+#endif // __EFI_SPI_FLASH_H__ diff --git a/Platforms/Marvell/Marvell.dec b/Platforms/Marvell/Marvell.dec index bb08334..f61d5df 100644 --- a/Platforms/Marvell/Marvell.dec +++ b/Platforms/Marvell/Marvell.dec @@ -121,4 +121,5 @@ [Protocols] gMarvellEepromProtocolGuid = { 0xcd728a1f, 0x45b5, 0x4feb, { 0x98, 0xc8, 0x31, 0x3d, 0xa8, 0x11, 0x74, 0x62 }} gMarvellSpiMasterProtocolGuid = { 0x23de66a3, 0xf666, 0x4b3e, { 0xaa, 0xa2, 0x68, 0x9b, 0x18, 0xae, 0x2e, 0x19 }}
- gMarvellSpiFlashProtocolGuid = { 0x9accb423, 0x5bd2, 0x4fca, { 0x9b, 0x4c, 0x2e, 0x65, 0xfc, 0x25, 0xdf, 0x21 }}
1.8.3.1