Revert "util/spd_tools: output binaries instead of hexdumps"
This reverts commit f23794cf04
.
Reason for revert: This change breaks compatibility if the changes
in CB:44775 are not also included. CB:44775 is still under discussion,
so revert this change to make spd_tools usable again.
Signed-off-by: Rob Barnes <robbarnes@google.com>
Change-Id: I5840a1b895dcbc8b91c76d8b60df2f95b93a4370
Reviewed-on: https://review.coreboot.org/c/coreboot/+/44999
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Michael Niewöhner <foss@mniewoehner.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
2871e0e78c
commit
34cf7ccebc
|
@ -171,7 +171,7 @@ string like "9 10 11 12 14".
|
||||||
This tool generates the following files using the global list of
|
This tool generates the following files using the global list of
|
||||||
memory parts in JSON format as described above:
|
memory parts in JSON format as described above:
|
||||||
* De-duplicated SPDs required for the different memory parts. These
|
* De-duplicated SPDs required for the different memory parts. These
|
||||||
SPD files are named (ddr4-spd-1.bin, ddr4-spd-2.bin, and so on)
|
SPD files are named (ddr4-spd-1.hex, ddr4-spd-2.hex, and so on)
|
||||||
and placed in the directory provided as an input to the tool.
|
and placed in the directory provided as an input to the tool.
|
||||||
* CSV file representing which of the deduplicated SPD files is used
|
* CSV file representing which of the deduplicated SPD files is used
|
||||||
by which memory part. This file is named as
|
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
|
as an input to the tool along with the generated SPD
|
||||||
files. Example CSV file:
|
files. Example CSV file:
|
||||||
```
|
```
|
||||||
MEMORY_PART_A, ddr4-spd-1.bin
|
MEMORY_PART_A, ddr4-spd-1.hex
|
||||||
MEMORY_PART_B, ddr4-spd-2.bin
|
MEMORY_PART_B, ddr4-spd-2.hex
|
||||||
MEMORY_PART_C, ddr4-spd-3.bin
|
MEMORY_PART_C, ddr4-spd-3.hex
|
||||||
MEMORY_PART_D, ddr4-spd-2.bin
|
MEMORY_PART_D, ddr4-spd-2.hex
|
||||||
MEMORY_PART_E, ddr4-spd-2.bin
|
MEMORY_PART_E, ddr4-spd-2.hex
|
||||||
```
|
```
|
||||||
|
|
||||||
## Tool 2 - gen_part_id.go
|
## Tool 2 - gen_part_id.go
|
||||||
|
@ -242,10 +242,10 @@ Sample Makefile.inc:
|
||||||
## This is an auto-generated file. Do not edit!!
|
## This is an auto-generated file. Do not edit!!
|
||||||
|
|
||||||
SPD_SOURCES =
|
SPD_SOURCES =
|
||||||
SPD_SOURCES += ddr4-spd-1.bin # ID = 0(0b0000) Parts = MEMORY_PART_A
|
SPD_SOURCES += ddr4-spd-1.hex # 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-2.hex # ID = 1(0b0001) Parts = MEMORY_PART_B, MEMORY_PART_D
|
||||||
SPD_SOURCES += ddr4-spd-empty.bin # ID = 2(0b0010)
|
SPD_SOURCES += ddr4-spd-empty.hex # ID = 2(0b0010)
|
||||||
SPD_SOURCES += ddr4-spd-3.bin # ID = 2(0b0010) Parts = MEMORY_PART_C
|
SPD_SOURCES += ddr4-spd-3.hex # ID = 2(0b0010) Parts = MEMORY_PART_C
|
||||||
```
|
```
|
||||||
NOTE: Empty entries may be required if there is a gap created by a memory part
|
NOTE: Empty entries may be required if there is a gap created by a memory part
|
||||||
with a fixed id.
|
with a fixed id.
|
||||||
|
|
|
@ -266,7 +266,7 @@ func genMakefile(partIdList []partIds, makefileDirName string) error {
|
||||||
|
|
||||||
for i := 0; i < len(partIdList); i++ {
|
for i := 0; i < len(partIdList); i++ {
|
||||||
if partIdList[i].SPDFileName == "" {
|
if partIdList[i].SPDFileName == "" {
|
||||||
s += fmt.Sprintf("SPD_SOURCES += %s ", "ddr4-spd-empty.bin")
|
s += fmt.Sprintf("SPD_SOURCES += %s ", "ddr4-spd-empty.hex")
|
||||||
s += fmt.Sprintf(" # ID = %d(0b%04b)\n", i, int64(i))
|
s += fmt.Sprintf(" # ID = %d(0b%04b)\n", i, int64(i))
|
||||||
} else {
|
} else {
|
||||||
s += fmt.Sprintf("SPD_SOURCES += %s ", partIdList[i].SPDFileName)
|
s += fmt.Sprintf("SPD_SOURCES += %s ", partIdList[i].SPDFileName)
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
@ -969,8 +968,8 @@ func getSPDByte(index int, memAttribs *memAttributes) byte {
|
||||||
return e.constVal
|
return e.constVal
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSPD(memAttribs *memAttributes) bytes.Buffer {
|
func createSPD(memAttribs *memAttributes) string {
|
||||||
var spd bytes.Buffer
|
var s string
|
||||||
|
|
||||||
for i := 0; i < 512; i++ {
|
for i := 0; i < 512; i++ {
|
||||||
var b byte = 0
|
var b byte = 0
|
||||||
|
@ -978,10 +977,14 @@ func createSPD(memAttribs *memAttributes) bytes.Buffer {
|
||||||
b = getSPDByte(i, memAttribs)
|
b = getSPDByte(i, memAttribs)
|
||||||
}
|
}
|
||||||
|
|
||||||
spd.WriteByte(b)
|
if (i + 1) % 16 == 0 {
|
||||||
|
s += fmt.Sprintf("%02X\n", b)
|
||||||
|
} else {
|
||||||
|
s += fmt.Sprintf("%02X ", b)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return spd
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
func dedupeMemoryPart(dedupedParts []*memPart, memPart *memPart) bool {
|
func dedupeMemoryPart(dedupedParts []*memPart, memPart *memPart) bool {
|
||||||
|
@ -996,16 +999,16 @@ func dedupeMemoryPart(dedupedParts []*memPart, memPart *memPart) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateSPD(memPart *memPart, SPDId int, SPDDirName string) {
|
func generateSPD(memPart *memPart, SPDId int, SPDDirName string) {
|
||||||
spd := createSPD(&memPart.Attribs)
|
s := createSPD(&memPart.Attribs)
|
||||||
memPart.SPDFileName = fmt.Sprintf("ddr4-spd-%d.bin", SPDId)
|
memPart.SPDFileName = fmt.Sprintf("ddr4-spd-%d.hex", SPDId)
|
||||||
ioutil.WriteFile(filepath.Join(SPDDirName, memPart.SPDFileName), spd.Bytes(), 0644)
|
ioutil.WriteFile(filepath.Join(SPDDirName, memPart.SPDFileName), []byte(s), 0644)
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateEmptySPD(SPDDirName string) {
|
func generateEmptySPD(SPDDirName string) {
|
||||||
|
|
||||||
spd := createSPD(nil)
|
s := createSPD(nil)
|
||||||
SPDFileName := "ddr4-spd-empty.bin"
|
SPDFileName := "ddr4-spd-empty.hex"
|
||||||
ioutil.WriteFile(filepath.Join(SPDDirName, SPDFileName), spd.Bytes(), 0644)
|
ioutil.WriteFile(filepath.Join(SPDDirName, SPDFileName), []byte(s), 0644)
|
||||||
}
|
}
|
||||||
|
|
||||||
func readMemoryParts(memParts *memParts, memPartsFileName string) error {
|
func readMemoryParts(memParts *memParts, memPartsFileName string) error {
|
||||||
|
|
|
@ -168,7 +168,7 @@ Input JSON file requires the following two fields for every memory part:
|
||||||
This tool generates the following files using the global list of
|
This tool generates the following files using the global list of
|
||||||
memory parts in JSON format as described above:
|
memory parts in JSON format as described above:
|
||||||
* De-duplicated SPDs required for the different memory parts. These
|
* De-duplicated SPDs required for the different memory parts. These
|
||||||
SPD files are named (spd_1.bin, spd_2.bin, spd_3.bin and so on)
|
SPD files are named (spd_1.hex, spd_2.hex, spd_3.hex and so on)
|
||||||
and placed in the directory provided as an input to the tool.
|
and placed in the directory provided as an input to the tool.
|
||||||
* CSV file representing which of the deduplicated SPD files is used
|
* CSV file representing which of the deduplicated SPD files is used
|
||||||
by which memory part. This file is named as
|
by which memory part. This file is named as
|
||||||
|
@ -176,11 +176,11 @@ memory parts in JSON format as described above:
|
||||||
as an input to the tool along with the generated SPD
|
as an input to the tool along with the generated SPD
|
||||||
files. Example CSV file:
|
files. Example CSV file:
|
||||||
```
|
```
|
||||||
MEMORY_PART_A, spd_1.bin
|
MEMORY_PART_A, spd_1.hex
|
||||||
MEMORY_PART_B, spd_2.bin
|
MEMORY_PART_B, spd_2.hex
|
||||||
MEMORY_PART_C, spd_3.bin
|
MEMORY_PART_C, spd_3.hex
|
||||||
MEMORY_PART_D, spd_2.bin
|
MEMORY_PART_D, spd_2.hex
|
||||||
MEMORY_PART_E, spd_2.bin
|
MEMORY_PART_E, spd_2.hex
|
||||||
```
|
```
|
||||||
|
|
||||||
## Tool 2 - gen_part_id.go
|
## Tool 2 - gen_part_id.go
|
||||||
|
@ -222,9 +222,9 @@ Sample Makefile.inc:
|
||||||
## This is an auto-generated file. Do not edit!!
|
## This is an auto-generated file. Do not edit!!
|
||||||
|
|
||||||
SPD_SOURCES =
|
SPD_SOURCES =
|
||||||
SPD_SOURCES += spd_1.bin # ID = 0(0b0000) Parts = MEMORY_PART_A
|
SPD_SOURCES += spd_1.hex # ID = 0(0b0000) Parts = MEMORY_PART_A
|
||||||
SPD_SOURCES += spd_2.bin # ID = 1(0b0001) Parts = MEMORY_PART_B, MEMORY_PART_D
|
SPD_SOURCES += spd_2.hex # ID = 1(0b0001) Parts = MEMORY_PART_B, MEMORY_PART_D
|
||||||
SPD_SOURCES += spd_3.bin # ID = 2(0b0010) Parts = MEMORY_PART_C
|
SPD_SOURCES += spd_3.hex # ID = 2(0b0010) Parts = MEMORY_PART_C
|
||||||
```
|
```
|
||||||
|
|
||||||
### Note of caution
|
### Note of caution
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
@ -638,14 +637,20 @@ func getSPDByte(index int, memAttribs *memAttributes) byte {
|
||||||
return e.constVal
|
return e.constVal
|
||||||
}
|
}
|
||||||
|
|
||||||
func createSPD(memAttribs *memAttributes) bytes.Buffer {
|
func createSPD(memAttribs *memAttributes) string {
|
||||||
var spd bytes.Buffer
|
var s string
|
||||||
|
|
||||||
for i := 0; i < 512; i++ {
|
for i := 0; i < 512; i++ {
|
||||||
spd.WriteByte(getSPDByte(i, memAttribs))
|
b := getSPDByte(i, memAttribs)
|
||||||
|
|
||||||
|
if (i + 1) % 16 == 0 {
|
||||||
|
s += fmt.Sprintf("%02X\n", b)
|
||||||
|
} else {
|
||||||
|
s += fmt.Sprintf("%02X ", b)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return spd
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
func dedupeMemoryPart(dedupedParts []*memPart, memPart *memPart) bool {
|
func dedupeMemoryPart(dedupedParts []*memPart, memPart *memPart) bool {
|
||||||
|
@ -660,9 +665,9 @@ func dedupeMemoryPart(dedupedParts []*memPart, memPart *memPart) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateSPD(memPart *memPart, SPDId int, SPDDirName string) {
|
func generateSPD(memPart *memPart, SPDId int, SPDDirName string) {
|
||||||
spd := createSPD(&memPart.Attribs)
|
s := createSPD(&memPart.Attribs)
|
||||||
memPart.SPDFileName = fmt.Sprintf("lp4x-spd-%d.bin", SPDId)
|
memPart.SPDFileName = fmt.Sprintf("lp4x-spd-%d.hex", SPDId)
|
||||||
ioutil.WriteFile(filepath.Join(SPDDirName, memPart.SPDFileName), spd.Bytes(), 0644)
|
ioutil.WriteFile(filepath.Join(SPDDirName, memPart.SPDFileName), []byte(s), 0644)
|
||||||
}
|
}
|
||||||
|
|
||||||
func readMemoryParts(memParts *memParts, memPartsFileName string) error {
|
func readMemoryParts(memParts *memParts, memPartsFileName string) error {
|
||||||
|
|
Loading…
Reference in New Issue