commands: add spd_decode command
spd_decode command is used for decoding and printing in human-readable format the information found in memory module SPD EEPROMs. There is the decode-dimms program from i2c-tools linux package (see http://www.lm-sensors.org/wiki/I2CTools) just for the same purpose. Though spd_decode source code is based on decode-dimms perl code there is a difference. Signed-off-by: Alexander Smirnov <alllecs@yandex.ru> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
f75fe31095
commit
5a7deee7d5
|
@ -2102,6 +2102,13 @@ config CMD_STATE
|
|||
depends on STATE
|
||||
prompt "state"
|
||||
|
||||
config CMD_SPD_DECODE
|
||||
tristate
|
||||
prompt "spd_decode"
|
||||
select DDR_SPD
|
||||
help
|
||||
decode spd eeprom
|
||||
|
||||
# end Miscellaneous commands
|
||||
endmenu
|
||||
|
||||
|
|
|
@ -112,3 +112,4 @@ obj-$(CONFIG_CMD_NV) += nv.o
|
|||
obj-$(CONFIG_CMD_DEFAULTENV) += defaultenv.o
|
||||
obj-$(CONFIG_CMD_STATE) += state.o
|
||||
obj-$(CONFIG_CMD_DHCP) += dhcp.o
|
||||
obj-$(CONFIG_CMD_SPD_DECODE) += spd_decode.o
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
/*
|
||||
* This program is decoding and printing SPD contents
|
||||
* in human readable format
|
||||
* As an argument program, you must specify the file name.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* 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 ALTERA CORPORATION 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.
|
||||
*
|
||||
* Copyright (C) 2015 Alexander Smirnov <alllecs@yandex.ru>
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <libfile.h>
|
||||
#include <malloc.h>
|
||||
#include <ddr_spd.h>
|
||||
|
||||
static int do_spd_decode(int argc, char *argv[])
|
||||
{
|
||||
int ret;
|
||||
size_t size;
|
||||
void *data;
|
||||
|
||||
if (argc != 2)
|
||||
return COMMAND_ERROR_USAGE;
|
||||
|
||||
ret = read_file_2(argv[1], &size, &data, 256);
|
||||
if (ret && ret != -EFBIG) {
|
||||
printf("unable to read %s: %s\n", argv[1], strerror(-ret));
|
||||
return COMMAND_ERROR;
|
||||
}
|
||||
|
||||
printf("Decoding EEPROM: %s\n\n", argv[1]);
|
||||
ddr_spd_print(data);
|
||||
|
||||
free(data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BAREBOX_CMD_HELP_START(spd_decode)
|
||||
BAREBOX_CMD_HELP_TEXT("Decode a SPD EEPROM and print contents in human readable form")
|
||||
BAREBOX_CMD_HELP_END
|
||||
|
||||
BAREBOX_CMD_START(spd_decode)
|
||||
.cmd = do_spd_decode,
|
||||
BAREBOX_CMD_DESC("Decode SPD EEPROM")
|
||||
BAREBOX_CMD_OPTS("FILE")
|
||||
BAREBOX_CMD_HELP(cmd_spd_decode_help)
|
||||
BAREBOX_CMD_END
|
Loading…
Reference in New Issue