util/apcb: Strip SPD manufacturer information

Strip manufacturer information from SPDs before injecting into APCB.
This allows more flexibility around changing DRAM modules in the future.

BUG=b:162098961
TEST=Boot, dump memory info

Signed-off-by: Rob Barnes <robbarnes@google.com>
Change-Id: I1bbc81a858f381f62dbd38bb57b3df0e6707d647
Reviewed-on: https://review.coreboot.org/c/coreboot/+/43832
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
diff --git a/src/soc/amd/picasso/Makefile.inc b/src/soc/amd/picasso/Makefile.inc
index aa9d8c9..4c1d726 100644
--- a/src/soc/amd/picasso/Makefile.inc
+++ b/src/soc/amd/picasso/Makefile.inc
@@ -395,6 +395,7 @@
 	$(APCB_MAGIC_BLOB) \
 	$@ \
 	--hex \
+	--strip_manufacturer_information \
 	--spd_0_0 $< \
 	--board_id_gpio0 $(APCB_BOARD_ID_GPIO0) \
 	--board_id_gpio1 $(APCB_BOARD_ID_GPIO1) \
@@ -408,6 +409,7 @@
 	$(APCB_MAGIC_BLOB) \
 	$@ \
 	--hex \
+	--strip_manufacturer_information \
 	--spd_0_0 $< \
 	--spd_1_0 $< \
 	--board_id_gpio0 $(APCB_BOARD_ID_GPIO0) \
diff --git a/util/apcb/apcb_edit.py b/util/apcb/apcb_edit.py
index 54d59d6..388b18a 100755
--- a/util/apcb/apcb_edit.py
+++ b/util/apcb/apcb_edit.py
@@ -59,6 +59,10 @@
         action='store_true',
         help='SPD input file is hex encoded, binary otherwise')
     parser.add_argument(
+        '--strip_manufacturer_information',
+        action='store_true',
+        help='Strip all manufacturer information from SPD')
+    parser.add_argument(
         '--board_id_gpio0',
         type=int,
         required=True,
@@ -155,6 +159,13 @@
             assert len(spd) == 512, \
                             "Expected SPD to be 512 bytes, got %d" % len(spd)
 
+            if args.strip_manufacturer_information:
+                print("Stripping manufacturer information from SPD")
+                spd = spd[0:320] + b'\x00'*64 + spd[320+64:]
+
+                assert len(spd) == 512, \
+                                "Error while stripping SPD manufacurer information"
+
             print("Enabling channel %d, dimm %d and injecting SPD" %
                   (spd_ssp.ChannelNumber, spd_ssp.DimmNumber))
             spd_ssp = spd_ssp._replace(SpdValid=True, DimmPresent=True)