From 5a7deee7d5cfbe95a5b6026e7ed09a2facd0c8d6 Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Fri, 3 Jul 2015 18:58:25 +0300 Subject: 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 Signed-off-by: Sascha Hauer --- commands/spd_decode.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 commands/spd_decode.c (limited to 'commands/spd_decode.c') diff --git a/commands/spd_decode.c b/commands/spd_decode.c new file mode 100644 index 0000000000..2bedcf05c5 --- /dev/null +++ b/commands/spd_decode.c @@ -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 + */ + +#include +#include +#include +#include +#include + +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 -- cgit v1.2.3