From: Alexander Smirnov <alllecs@yandex.ru>
To: Sascha Hauer <s.hauer@pengutronix.de>
Cc: barebox@lists.infradead.org, Alexander Smirnov <alllecs@yandex.ru>
Subject: [RFC V3 3/3] add decode command (SPD EEPROM data decoder)
Date: Mon, 29 Jun 2015 17:26:57 +0300 [thread overview]
Message-ID: <1435588017-24949-4-git-send-email-alllecs@yandex.ru> (raw)
In-Reply-To: <1435588017-24949-1-git-send-email-alllecs@yandex.ru>
decode-dimms perl script is used as prototype
(see https://github.com/groeck/i2c-tools/blob/master/eeprom/decode-dimms).
Here is a sample decode output:
barebox@barebox sandbox:/ decode env/crucial_pc2-6400_ddr2
Decoding EEPROM: env/crucial_pc2-6400_ddr2
---=== SPD EEPROM Information ===---
EEPROM Checksum of bytes 0-62 OK (0xCA)
Total number of bytes in EEPROM 256
Fundamental Memory type DDR2 SDRAM
SPD Revision 1.3
---=== Memory Characteristics ===---
Maximum module speed 800 MHz (PC2-6400)
Size 1024 MB
Banks x Rows x Columns x Bits 8 x 14 x 10 x 64
Ranks 1
SDRAM Device Width 8 bits
Module Height 30.0 mm
Module Type SO-DIMM (67.6 mm)
DRAM Package Planar
Voltage Interface Level SSTL 1.8V
Module Configuration Type No Parity
Refresh Rate Reduced (7.8 us) - Self Refresh
Supported Burst Lengths 4, 8
Supported CAS Latencies (tCL) 6T
tCL-tRCD-tRP-tRAS 6-6-6-18 as DDR2-800
Minimum Cycle Time 2.5 ns at CAS 6
Maximum Access Time 0.40 ns at CAS 6
Maximum Cycle Time (tCK max) 8 ns
---=== Timing Parameters ===---
Address/Command Setup Time Before Clock (tIS) 0.17 ns
Address/Command Hold Time After Clock (tIH) 0.25 ns
Data Input Setup Time Before Strobe (tDS) 0.05 ns
Data Input Hold Time After Strobe (tDH) 0.12 ns
Minimum Row Precharge Delay (tRP) 15.0 ns
Minimum Row Active to Row Active Delay (tRRD) 7.5 ns
Minimum RAS# to CAS# Delay (tRCD) 15.0 ns
Minimum RAS# Pulse Width (tRAS) 45 ns
Write Recovery Time (tWR) 15.0 ns
Minimum Write to Read CMD Delay (tWTR) 7.5 ns
Minimum Read to Pre-charge CMD Delay (tRTP) 7.5 ns
Minimum Active to Auto-refresh Delay (tRC) 60 ns
Minimum Recovery Delay (tRFC) 127 ns
Maximum DQS to DQ Skew (tDQSQ) 0.20 ns
Maximum Read Data Hold Skew (tQHS) 0.30 ns
---=== Manufacturing Information ===---
Manufacturer JEDEC ID 7f 7f 7f 7f 7f 9b 00 00
Part Number CT12864AC800.M8FM8
Manufacturing Date 2014-W24
Assembly Serial Number 0x00000000
TODOs:
* Timing Parameters section output format is slightly
differ from decode-dimms' format;
* supports only DDR2 SPD EEPROM.
Signed-off-by: Alexander Smirnov <alllecs@yandex.ru>
---
commands/Kconfig | 7 +++++++
commands/Makefile | 1 +
commands/decode.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 61 insertions(+)
diff --git a/commands/Kconfig b/commands/Kconfig
index bb6674e..9230873 100644
--- a/commands/Kconfig
+++ b/commands/Kconfig
@@ -2102,6 +2102,13 @@ config CMD_STATE
depends on STATE
prompt "state"
+config CMD_DECODE
+ tristate
+ prompt "decode"
+ select DDR_SPD
+ help
+ decode spd eeprom
+
# end Miscellaneous commands
endmenu
diff --git a/commands/Makefile b/commands/Makefile
index 3698347..71cd877 100644
--- a/commands/Makefile
+++ b/commands/Makefile
@@ -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_DECODE) += decode.o
diff --git a/commands/decode.c b/commands/decode.c
new file mode 100644
index 0000000..f8e7264
--- /dev/null
+++ b/commands/decode.c
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ *
+ * Copyright (C) 2015 Alexander Smirnov <alllecs@yandex.ru>
+ *
+ * Originally from https://github.com/groeck/i2c-tools/blob/master/eeprom/decode-dimms
+ */
+
+#include <common.h>
+#include <command.h>
+#include <libfile.h>
+#include <malloc.h>
+#include <ddr_spd.h>
+
+static int do_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);
+ printf("\n\n");
+
+ free(data);
+
+ return 0;
+}
+
+BAREBOX_CMD_HELP_START(decode)
+BAREBOX_CMD_HELP_TEXT("Not enough or more than one argument to continue.")
+BAREBOX_CMD_HELP_END
+
+BAREBOX_CMD_START(decode)
+ .cmd = do_decode,
+ BAREBOX_CMD_HELP(cmd_decode_help)
+BAREBOX_CMD_END
--
2.1.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
prev parent reply other threads:[~2015-06-29 14:25 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-29 14:26 [RFC V3 0/3] " Alexander Smirnov
2015-06-29 14:26 ` [RFC V3 1/3] common: move DDR_SPD to common/Kconfig Alexander Smirnov
2015-06-29 14:26 ` [RFC V3 2/3] ddr_spd: add routune for printing SPD contents in human readable format Alexander Smirnov
2015-06-29 15:51 ` Antony Pavlov
2015-06-29 16:15 ` Antony Pavlov
2015-06-29 14:26 ` Alexander Smirnov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1435588017-24949-4-git-send-email-alllecs@yandex.ru \
--to=alllecs@yandex.ru \
--cc=barebox@lists.infradead.org \
--cc=s.hauer@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox