2016-06-20 17:45 GMT+02:00 Leif Lindholm leif.lindholm@linaro.org:
On Fri, Apr 29, 2016 at 07:25:59PM +0200, Marcin Wojtas wrote:
From: Bartosz Szczepanek bsz@semihalf.com
'eeprom' command brings MvEeprom driver capabilities to UEFI shell. It allows reading & writing from/to onboard EEPROM device.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Bartosz Szczepanek bsz@semihalf.com Signed-off-by: Marcin Wojtas mw@semihalf.com Reviewed-by: Leif Lindholm leif.lindholm@linaro.org
Applications/EepromCmd/EepromCmd.c | 383 +++++++++++++++++++++++++++++++++++ Applications/EepromCmd/EepromCmd.inf | 71 +++++++ Applications/EepromCmd/EepromCmd.uni | Bin 0 -> 6816 bytes Platforms/Marvell/Marvell.dec | 2 + 4 files changed, 456 insertions(+) create mode 100644 Applications/EepromCmd/EepromCmd.c create mode 100644 Applications/EepromCmd/EepromCmd.inf create mode 100644 Applications/EepromCmd/EepromCmd.uni
diff --git a/Applications/EepromCmd/EepromCmd.c b/Applications/EepromCmd/EepromCmd.c new file mode 100644 index 0000000..47f23b9 --- /dev/null +++ b/Applications/EepromCmd/EepromCmd.c @@ -0,0 +1,383 @@ +/******************************************************************************** +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.
+*******************************************************************************/
+#include <Uefi.h>
+#include <ShellBase.h> +#include <Library/BaseLib.h> +#include <Library/BaseMemoryLib.h> +#include <Library/DebugLib.h> +#include <Library/MemoryAllocationLib.h> +#include <Library/ShellCommandLib.h> +#include <Library/ShellLib.h> +#include <Library/UefiLib.h> +#include <Library/UefiRuntimeServicesTableLib.h> +#include <Library/UefiBootServicesTableLib.h> +#include <Library/PrintLib.h> +#include <Library/HiiLib.h>
+#include <Library/UefiLib.h> +#include <Library/ShellCEntryLib.h> +#include <Library/UefiBootServicesTableLib.h>
+#include <Protocol/Eeprom.h>
+CONST CHAR16 gShellEepromFileName[] = L"ShellCommand"; +EFI_HANDLE gShellEepromHiiHandle = NULL;
Really global or just file global?
It's the file global variable and 'g' will be removed from its name. We will browse whole code in terms of this comment.
+STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
- {L"-d", TypeValue},
- {L"-m", TypeValue},
- {L"read", TypeFlag},
- {L"write", TypeFlag},
- {L"list", TypeFlag},
- {L"help", TypeFlag},
- {NULL , TypeMax}
- };
+/**
- Return the file name of the help text file if not using HII.
- @return The string pointer to the file name.
+**/ +CONST CHAR16* +EFIAPI +ShellCommandGetManFileNameEeprom (
So, this function and several others in this file could probably be turned STATIC.
Ok.
Regards,
Leif
- VOID
- )
+{
- return gShellEepromFileName;
+}
+VOID +Usage (
- VOID
- )
+{
- Print (L"Basic EEPROM commands:\n"
"eeprom [read] [write] [list] [<Chip>] [<Address>] [<Length>] [-d <Data>] [-m <Source>]\n"
"All modes except 'list' require Address, Length and Chip set.\n\n"
"read - read from EEPROM\n"
"write - write Data to EEPROM, requires -d\n"
"list - list available EEPROM devices\n\n"
"-m - transfer from/to RAM memory\n\n"
"Chip - EEPROM bus address\n"
"Address - address in EEPROM to read/write\n"
"Data - data byte to be written\n"
"Length - length of data to read/write/copy\n"
"Source - address of data in RAM to be copied\n"
"Examples:\n"
"List devices:\n"
" eeprom list\n"
"Read 16 bytes from address 0x0 in chip 0x57:\n"
" eeprom read 0x57 0x0 0x10\n"
"Fill 16 bytes with 0xab at address 0x0 in chip 0x57:\n"
" eeprom write 0x57 0x0 0x10 -d 0xab\n"
"Copy 32 bytes from 0x2000000 in RAM to EEPROM:\n"
" eeprom write 0x57 0x0 0x20 -m 0x2000000\n"
"Copy 32 bytes from EEPROM to RAM:\n"
" eeprom read 0x57 0x0 0x20 -m 0x2000000\n"
- );
+}
+EFI_STATUS +EepromList (
- )
+{
- EFI_HANDLE *HandleBuffer;
- EFI_STATUS Status;
- UINTN ProtocolCount;
- MARVELL_EEPROM_PROTOCOL *EepromProtocol;
- UINTN i;
- Status = gBS->LocateHandleBuffer ( ByProtocol,
&gMarvellEepromProtocolGuid,
NULL,
&ProtocolCount,
&HandleBuffer
);
- if (ProtocolCount == 0) {
- Print (L"0 devices found.\n");
- } else {
- Print (L"%u devices found: ", ProtocolCount);
- }
- for (i = 0; i < ProtocolCount; i++) {
- Status = gBS->OpenProtocol (
HandleBuffer[i],
&gMarvellEepromProtocolGuid,
(VOID **) &EepromProtocol,
gImageHandle,
NULL,
EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL );
- Print (L" 0x%x ", EepromProtocol->Identifier);
- Status = gBS->CloseProtocol ( HandleBuffer[i],
&gMarvellEepromProtocolGuid,
gImageHandle,
NULL );
- }
- Print (L"\n");
- return Status;
+}
+EFI_STATUS +EepromLocateProtocol (
- IN UINT32 Identifier,
- OUT EFI_HANDLE *FoundHandle,
- OUT MARVELL_EEPROM_PROTOCOL **FoundEepromProtocol
- )
+{
- EFI_HANDLE *HandleBuffer;
- EFI_STATUS Status;
- UINTN ProtocolCount;
- MARVELL_EEPROM_PROTOCOL *EepromProtocol;
- UINTN i;
- Status = gBS->LocateHandleBuffer ( ByProtocol,
&gMarvellEepromProtocolGuid,
NULL,
&ProtocolCount,
&HandleBuffer
);
- if (EFI_ERROR(Status))
- return Status;
- for (i = 0; i < ProtocolCount; i++) {
- Status = gBS->OpenProtocol (
HandleBuffer[i],
&gMarvellEepromProtocolGuid,
(VOID **) &EepromProtocol,
gImageHandle,
NULL,
EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL );
- if (EepromProtocol->Identifier == Identifier) {
*FoundEepromProtocol = EepromProtocol;
*FoundHandle = HandleBuffer[i];
return EFI_SUCCESS;
- }
- Status = gBS->CloseProtocol ( HandleBuffer[i],
&gMarvellEepromProtocolGuid,
gImageHandle,
NULL );
- }
- *FoundEepromProtocol = NULL;
- return EFI_UNSUPPORTED;
+}
+SHELL_STATUS +EFIAPI +ShellCommandRunEeprom (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
+{
- EFI_STATUS Status;
- LIST_ENTRY *CheckPackage;
- CHAR16 *ProblemParam;
- CONST CHAR16 *ValueStr;
- UINTN Address, Length, Chip, Source;
- UINT8 Data;
- UINT8 *Buffer;
- BOOLEAN ReadMode, MemMode;
- EFI_HANDLE Handle, ProtHandle;
- MARVELL_EEPROM_PROTOCOL *EepromProtocol;
- UINTN Count, HandleSize;
- Source = 0;
- HandleSize = 2 * sizeof (EFI_HANDLE);
- Status = gBS->LocateHandle (ByProtocol, &gMarvellEepromProtocolGuid, NULL,
- &HandleSize, &ProtHandle);
- if (EFI_ERROR(Status)) {
- DEBUG((DEBUG_INFO, "No Eeprom protocol, connect I2C stack\n"));
- Status = gBS->LocateHandle (ByProtocol, &gEfiI2cMasterProtocolGuid, NULL,
&HandleSize, &ProtHandle);
- if (EFI_ERROR(Status)) {
Print (L"Failed to locate I2cMaster protocol, abort!\n");
return SHELL_ABORTED;
- }
- Status = gBS->ConnectController (ProtHandle, NULL, NULL, TRUE);
- if (EFI_ERROR(Status)) {
Print (L"Cannot connect I2C stack, abort!\n");
return SHELL_ABORTED;
- }
- }
- Status = ShellInitialize ();
- if (EFI_ERROR (Status)) {
- Print (L"Error - failed to initialize shell\n");
- return SHELL_ABORTED;
- }
- Status = ShellCommandLineParse (ParamList, &CheckPackage, &ProblemParam, TRUE);
- if (EFI_ERROR (Status)) {
- Print (L"Error - failed to parse command line\n");
- return SHELL_ABORTED;
- }
- if (ShellCommandLineGetFlag (CheckPackage, L"list")) {
- EepromList();
- return SHELL_SUCCESS;
- }
- if (ShellCommandLineGetFlag (CheckPackage, L"help")) {
- Usage();
- return SHELL_SUCCESS;
- }
- if (ShellCommandLineGetCount(CheckPackage) < 4) {
- Print (L"Not enough arguments given.\n");
- Usage();
- }
- ReadMode = ShellCommandLineGetFlag (CheckPackage, L"read");
- if (ReadMode == ShellCommandLineGetFlag (CheckPackage, L"write")) {
- Print (L"Error - type read, write, list or help.\n");
- return SHELL_INVALID_PARAMETER;
- }
- MemMode = ShellCommandLineGetFlag (CheckPackage, L"-m");
- Data = 0;
- if (!ReadMode && !MemMode) {
- ValueStr = ShellCommandLineGetValue (CheckPackage, L"-d");
- if (ValueStr == NULL) {
Print (L"Error - no data to write.\n");
return SHELL_INVALID_PARAMETER;
- }
- Data = ShellHexStrToUintn (ValueStr);
- }
- ValueStr = ShellCommandLineGetRawValue(CheckPackage, 1);
- Chip = ShellHexStrToUintn (ValueStr);
- ValueStr = ShellCommandLineGetRawValue(CheckPackage, 2);
- Address = ShellHexStrToUintn (ValueStr);
- ValueStr = ShellCommandLineGetRawValue(CheckPackage, 3);
- Length = ShellHexStrToUintn (ValueStr);
- if (MemMode) {
- ValueStr = ShellCommandLineGetValue (CheckPackage, L"-m");
- if (ValueStr == NULL) {
Print (L"Error - no memory address given.\n");
return SHELL_INVALID_PARAMETER;
- }
- Source = ShellHexStrToUintn (ValueStr);
- }
- EepromLocateProtocol (Chip, &Handle, &EepromProtocol);
- if (EepromProtocol == NULL) {
- Print (L"Failed to locate EEPROM protocol.\n");
- return SHELL_INVALID_PARAMETER;
- }
- if (MemMode) {
- Buffer = (VOID *) Source;
- } else {
- Buffer = AllocateZeroPool (Length);
- if (Buffer == NULL) {
Status = SHELL_OUT_OF_RESOURCES;
Print (L"Error - out of resources.\n");
goto out_close;
- }
- if (!ReadMode) {
for (Count = 0; Count < Length; Count++)
Buffer[Count] = Data;
- }
- }
- EepromProtocol->Transfer(EepromProtocol, Address, Length, Buffer,
ReadMode ? EEPROM_READ : EEPROM_WRITE);
- if (MemMode) {
- Print (L"Transfered succesfully.\n");
- } else {
- Print (L"Transfered:\n");
- for (Count = 0; Count < Length; Count++) {
Print(L"0x%x ", Buffer[Count]);
if (Count % 8 == 7)
Print(L"\n");
- }
- Print (L"\n");
- }
- Status = SHELL_SUCCESS;
- if (!MemMode)
- FreePool(Buffer);
+out_close:
- gBS->CloseProtocol ( Handle,
&gMarvellEepromProtocolGuid,
gImageHandle,
NULL );
- return Status;
+}
+EFI_STATUS +EFIAPI +ShellEepromCmdLibConstructor (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
+{
- gShellEepromHiiHandle = NULL;
- gShellEepromHiiHandle = HiiAddPackages (
&gShellEepromHiiGuid, gImageHandle,
UefiShellEepromLibStrings, NULL
);
- if (gShellEepromHiiHandle == NULL) {
- Print (L"Filed to add Hii package\n");
- return EFI_DEVICE_ERROR;
- }
- ShellCommandRegisterCommandName (
L"eeprom", ShellCommandRunEeprom, ShellCommandGetManFileNameEeprom, 0,
L"eeprom", TRUE , gShellEepromHiiHandle, STRING_TOKEN (STR_GET_HELP_EEPROM)
);
- return EFI_SUCCESS;
+}
+EFI_STATUS +EFIAPI +ShellEepromCmdLibDestructor (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
+{
- if (gShellEepromHiiHandle != NULL) {
- HiiRemovePackages (gShellEepromHiiHandle);
- }
- return EFI_SUCCESS;
+} diff --git a/Applications/EepromCmd/EepromCmd.inf b/Applications/EepromCmd/EepromCmd.inf new file mode 100644 index 0000000..1171fc1 --- /dev/null +++ b/Applications/EepromCmd/EepromCmd.inf @@ -0,0 +1,71 @@ +# +# 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. +#
+[Defines]
- INF_VERSION = 0x00010006
- BASE_NAME = UefiShellEepromLib
- FILE_GUID = adf4b61c-2ca3-4e1a-9597-99282f5a4aa2
- MODULE_TYPE = UEFI_APPLICATION
- VERSION_STRING = 0.1
- LIBRARY_CLASS = NULL|UEFI_APPLICATION UEFI_DRIVER
- CONSTRUCTOR = ShellEepromCmdLibConstructor
- DESTRUCTOR = ShellEepromCmdLibDestructor
+[Sources]
- EepromCmd.c
- EepromCmd.uni
+[Packages]
- MdePkg/MdePkg.dec
- ShellPkg/ShellPkg.dec
- StdLib/StdLib.dec
- MdeModulePkg/MdeModulePkg.dec
- OpenPlatformPkg/Platforms/Marvell/Marvell.dec
+[LibraryClasses]
- UefiLib
- UefiBootServicesTableLib
- MemoryAllocationLib
- BaseLib
- BaseMemoryLib
- DebugLib
- ShellCommandLib
- ShellLib
- UefiLib
- UefiRuntimeServicesTableLib
- PcdLib
+[Protocols]
- gMarvellEepromProtocolGuid
- gEfiI2cMasterProtocolGuid
+[Guids]
- gShellEepromHiiGuid
diff --git a/Applications/EepromCmd/EepromCmd.uni b/Applications/EepromCmd/EepromCmd.uni new file mode 100644 index 0000000000000000000000000000000000000000..e41c6d812ef5d8e3b23c54e5fcbee017507b5c2f GIT binary patch literal 6816 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
literal 0 HcmV?d00001
diff --git a/Platforms/Marvell/Marvell.dec b/Platforms/Marvell/Marvell.dec index 3c32aed..ec8a417 100644 --- a/Platforms/Marvell/Marvell.dec +++ b/Platforms/Marvell/Marvell.dec @@ -52,6 +52,8 @@ [Guids.common] gMarvellTokenSpaceGuid = { 0xf995c6c8, 0xbc9b, 0x4e93, { 0xbd, 0xcf, 0x49, 0x90, 0xc6, 0xe7, 0x8c, 0x7f } }
- gShellEepromHiiGuid = { 0xb2f4c714, 0x147f, 0x4ff7, { 0x82, 0x1b, 0xce, 0x7b, 0x91, 0x7f, 0x5f, 0x2f } }
[PcdsFixedAtBuild.common] #MPP gMarvellTokenSpaceGuid.PcdMppChipCount|0|UINT32|0x30000001 -- 1.8.3.1
Best Regards, Jan