summaryrefslogtreecommitdiff
path: root/util/spd_tools/ddr4
diff options
context:
space:
mode:
authorMichael Niewöhner <foss@mniewoehner.de>2020-08-28 00:59:19 +0200
committerPatrick Georgi <pgeorgi@google.com>2020-09-08 05:46:41 +0000
commitf23794cf04030bb8d1d7ebe0a3634dffd092e2f7 (patch)
tree4108c93827195d8cc9e799c9c7c324cfd1679214 /util/spd_tools/ddr4
parente10efa3a037c78c831a2b94c75eb0ab862412acf (diff)
util/spd_tools: output binaries instead of hexdumps
Instead of generating hexdumps, output binary SPD files since we plan to convert all hex SPD files to binary. Also adjust the file extension where needed. Test: compared generated binaries with converted binaries from hex files Change-Id: Ie99d108ca90758d09dbefad20fe6c9f7fc263ef1 Signed-off-by: Michael Niewöhner <foss@mniewoehner.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/44878 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'util/spd_tools/ddr4')
-rw-r--r--util/spd_tools/ddr4/README.md20
-rw-r--r--util/spd_tools/ddr4/gen_part_id.go2
-rw-r--r--util/spd_tools/ddr4/gen_spd.go25
3 files changed, 22 insertions, 25 deletions
diff --git a/util/spd_tools/ddr4/README.md b/util/spd_tools/ddr4/README.md
index 75275441a2..c78b06ff49 100644
--- a/util/spd_tools/ddr4/README.md
+++ b/util/spd_tools/ddr4/README.md
@@ -171,7 +171,7 @@ string like "9 10 11 12 14".
This tool generates the following files using the global list of
memory parts in JSON format as described above:
* De-duplicated SPDs required for the different memory parts. These
- SPD files are named (ddr4-spd-1.hex, ddr4-spd-2.hex, and so on)
+ SPD files are named (ddr4-spd-1.bin, ddr4-spd-2.bin, and so on)
and placed in the directory provided as an input to the tool.
* CSV file representing which of the deduplicated SPD files is used
by which memory part. This file is named as
@@ -179,11 +179,11 @@ memory parts in JSON format as described above:
as an input to the tool along with the generated SPD
files. Example CSV file:
```
- MEMORY_PART_A, ddr4-spd-1.hex
- MEMORY_PART_B, ddr4-spd-2.hex
- MEMORY_PART_C, ddr4-spd-3.hex
- MEMORY_PART_D, ddr4-spd-2.hex
- MEMORY_PART_E, ddr4-spd-2.hex
+ MEMORY_PART_A, ddr4-spd-1.bin
+ MEMORY_PART_B, ddr4-spd-2.bin
+ MEMORY_PART_C, ddr4-spd-3.bin
+ MEMORY_PART_D, ddr4-spd-2.bin
+ MEMORY_PART_E, ddr4-spd-2.bin
```
## Tool 2 - gen_part_id.go
@@ -242,10 +242,10 @@ Sample Makefile.inc:
## This is an auto-generated file. Do not edit!!
SPD_SOURCES =
-SPD_SOURCES += ddr4-spd-1.hex # ID = 0(0b0000) Parts = MEMORY_PART_A
-SPD_SOURCES += ddr4-spd-2.hex # ID = 1(0b0001) Parts = MEMORY_PART_B, MEMORY_PART_D
-SPD_SOURCES += ddr4-spd-empty.hex # ID = 2(0b0010)
-SPD_SOURCES += ddr4-spd-3.hex # ID = 2(0b0010) Parts = MEMORY_PART_C
+SPD_SOURCES += ddr4-spd-1.bin # ID = 0(0b0000) Parts = MEMORY_PART_A
+SPD_SOURCES += ddr4-spd-2.bin # ID = 1(0b0001) Parts = MEMORY_PART_B, MEMORY_PART_D
+SPD_SOURCES += ddr4-spd-empty.bin # ID = 2(0b0010)
+SPD_SOURCES += ddr4-spd-3.bin # ID = 2(0b0010) Parts = MEMORY_PART_C
```
NOTE: Empty entries may be required if there is a gap created by a memory part
with a fixed id.
diff --git a/util/spd_tools/ddr4/gen_part_id.go b/util/spd_tools/ddr4/gen_part_id.go
index c0098aba1d..29b91fac35 100644
--- a/util/spd_tools/ddr4/gen_part_id.go
+++ b/util/spd_tools/ddr4/gen_part_id.go
@@ -265,7 +265,7 @@ func genMakefile(partIdList []partIds, makefileDirName string) error {
for i := 0; i < len(partIdList); i++ {
if partIdList[i].SPDFileName == "" {
- s += fmt.Sprintf("SPD_SOURCES += %s ", "ddr4-spd-empty.hex")
+ s += fmt.Sprintf("SPD_SOURCES += %s ", "ddr4-spd-empty.bin")
s += fmt.Sprintf(" # ID = %d(0b%04b)\n", i, int64(i))
} else {
s += fmt.Sprintf("SPD_SOURCES += %s ", partIdList[i].SPDFileName)
diff --git a/util/spd_tools/ddr4/gen_spd.go b/util/spd_tools/ddr4/gen_spd.go
index 3c8f71a263..b60ab03d81 100644
--- a/util/spd_tools/ddr4/gen_spd.go
+++ b/util/spd_tools/ddr4/gen_spd.go
@@ -3,6 +3,7 @@
package main
import (
+ "bytes"
"encoding/json"
"fmt"
"io/ioutil"
@@ -968,8 +969,8 @@ func getSPDByte(index int, memAttribs *memAttributes) byte {
return e.constVal
}
-func createSPD(memAttribs *memAttributes) string {
- var s string
+func createSPD(memAttribs *memAttributes) bytes.Buffer {
+ var spd bytes.Buffer
for i := 0; i < 512; i++ {
var b byte = 0
@@ -977,14 +978,10 @@ func createSPD(memAttribs *memAttributes) string {
b = getSPDByte(i, memAttribs)
}
- if (i + 1) % 16 == 0 {
- s += fmt.Sprintf("%02X\n", b)
- } else {
- s += fmt.Sprintf("%02X ", b)
- }
+ spd.WriteByte(b)
}
- return s
+ return spd
}
func dedupeMemoryPart(dedupedParts []*memPart, memPart *memPart) bool {
@@ -999,16 +996,16 @@ func dedupeMemoryPart(dedupedParts []*memPart, memPart *memPart) bool {
}
func generateSPD(memPart *memPart, SPDId int, SPDDirName string) {
- s := createSPD(&memPart.Attribs)
- memPart.SPDFileName = fmt.Sprintf("ddr4-spd-%d.hex", SPDId)
- ioutil.WriteFile(filepath.Join(SPDDirName, memPart.SPDFileName), []byte(s), 0644)
+ spd := createSPD(&memPart.Attribs)
+ memPart.SPDFileName = fmt.Sprintf("ddr4-spd-%d.bin", SPDId)
+ ioutil.WriteFile(filepath.Join(SPDDirName, memPart.SPDFileName), spd.Bytes(), 0644)
}
func generateEmptySPD(SPDDirName string) {
- s := createSPD(nil)
- SPDFileName := "ddr4-spd-empty.hex"
- ioutil.WriteFile(filepath.Join(SPDDirName, SPDFileName), []byte(s), 0644)
+ spd := createSPD(nil)
+ SPDFileName := "ddr4-spd-empty.bin"
+ ioutil.WriteFile(filepath.Join(SPDDirName, SPDFileName), spd.Bytes(), 0644)
}
func readMemoryParts(memParts *memParts, memPartsFileName string) error {