summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/bap/ode_e20XX/Kconfig1
-rw-r--r--src/mainboard/bap/ode_e20XX/Makefile.inc17
-rw-r--r--src/mainboard/bap/ode_e20XX/spd/BAP_Q7_1066.spd.hex (renamed from src/mainboard/bap/ode_e20XX/BAP_Q7_1066.spd.hex)0
-rw-r--r--src/mainboard/bap/ode_e20XX/spd/BAP_Q7_800.spd.hex (renamed from src/mainboard/bap/ode_e20XX/BAP_Q7_800.spd.hex)0
-rw-r--r--src/mainboard/gizmosphere/gizmo/Kconfig1
-rw-r--r--src/mainboard/gizmosphere/gizmo/Makefile.inc17
-rw-r--r--src/mainboard/gizmosphere/gizmo/spd/Elpida_EDJ2116DEBG.spd.hex (renamed from src/mainboard/gizmosphere/gizmo/Elpida_EDJ2116DEBG.spd.hex)0
-rw-r--r--src/mainboard/gizmosphere/gizmo2/Kconfig1
-rw-r--r--src/mainboard/gizmosphere/gizmo2/Makefile.inc17
-rw-r--r--src/mainboard/gizmosphere/gizmo2/spd/Micron_MT41J128M16JT.spd.hex (renamed from src/mainboard/gizmosphere/gizmo2/Micron_MT41J128M16JT.spd.hex)0
-rw-r--r--src/mainboard/google/auron/Kconfig1
-rw-r--r--src/mainboard/google/auron/variants/auron_paine/spd/Makefile.inc16
-rw-r--r--src/mainboard/google/auron/variants/auron_yuna/spd/Makefile.inc16
-rw-r--r--src/mainboard/google/auron/variants/gandof/spd/Makefile.inc16
-rw-r--r--src/mainboard/google/auron/variants/lulu/spd/Makefile.inc16
-rw-r--r--src/mainboard/google/auron/variants/samus/spd/Makefile.inc16
-rw-r--r--src/mainboard/google/cyan/Kconfig1
-rw-r--r--src/mainboard/google/cyan/variants/banon/Makefile.inc16
-rw-r--r--src/mainboard/google/cyan/variants/celes/Makefile.inc16
-rw-r--r--src/mainboard/google/cyan/variants/cyan/Makefile.inc16
-rw-r--r--src/mainboard/google/cyan/variants/edgar/Makefile.inc16
-rw-r--r--src/mainboard/google/cyan/variants/kefka/Makefile.inc16
-rw-r--r--src/mainboard/google/cyan/variants/reks/Makefile.inc16
-rw-r--r--src/mainboard/google/cyan/variants/relm/Makefile.inc16
-rw-r--r--src/mainboard/google/cyan/variants/setzer/Makefile.inc16
-rw-r--r--src/mainboard/google/cyan/variants/terra/Makefile.inc16
-rw-r--r--src/mainboard/google/cyan/variants/ultima/Makefile.inc16
-rw-r--r--src/mainboard/google/cyan/variants/wizpig/Makefile.inc16
-rw-r--r--src/mainboard/google/dedede/Kconfig1
-rw-r--r--src/mainboard/google/dedede/spd/Makefile.inc18
-rw-r--r--src/mainboard/google/drallion/Kconfig1
-rw-r--r--src/mainboard/google/drallion/spd/Makefile.inc16
-rw-r--r--src/mainboard/google/eve/Kconfig1
-rw-r--r--src/mainboard/google/eve/spd/Makefile.inc16
-rw-r--r--src/mainboard/google/glados/Kconfig1
-rw-r--r--src/mainboard/google/glados/variants/asuka/Makefile.inc16
-rw-r--r--src/mainboard/google/glados/variants/caroline/Makefile.inc16
-rw-r--r--src/mainboard/google/glados/variants/cave/Makefile.inc16
-rw-r--r--src/mainboard/google/glados/variants/chell/Makefile.inc16
-rw-r--r--src/mainboard/google/glados/variants/glados/Makefile.inc16
-rw-r--r--src/mainboard/google/glados/variants/lars/Makefile.inc16
-rw-r--r--src/mainboard/google/glados/variants/sentry/Makefile.inc17
-rw-r--r--src/mainboard/google/hatch/Kconfig1
-rw-r--r--src/mainboard/google/hatch/spd/Makefile.inc19
-rw-r--r--src/mainboard/google/kahlee/variants/baseboard/spd/Makefile.inc2
-rw-r--r--src/mainboard/google/kahlee/variants/careena/spd/Makefile.inc2
-rw-r--r--src/mainboard/google/kahlee/variants/nuwani/spd/Makefile.inc2
-rw-r--r--src/mainboard/google/kahlee/variants/treeya/spd/Makefile.inc2
-rw-r--r--src/mainboard/google/poppy/Kconfig1
-rw-r--r--src/mainboard/google/poppy/spd/Makefile.inc9
-rw-r--r--src/mainboard/google/rambi/Kconfig1
-rw-r--r--src/mainboard/google/rambi/variants/banjo/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/candy/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/clapper/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/enguarde/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/glimmer/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/gnawty/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/heli/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/kip/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/ninja/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/orco/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/quawks/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/rambi/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/squawks/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/sumo/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/swanky/Makefile.inc16
-rw-r--r--src/mainboard/google/rambi/variants/winky/Makefile.inc16
-rw-r--r--src/mainboard/google/slippy/Kconfig1
-rw-r--r--src/mainboard/google/slippy/variants/falco/Makefile.inc17
-rw-r--r--src/mainboard/google/slippy/variants/leon/Makefile.inc17
-rw-r--r--src/mainboard/google/slippy/variants/peppy/Makefile.inc17
-rw-r--r--src/mainboard/google/slippy/variants/wolf/Makefile.inc17
-rw-r--r--src/mainboard/google/volteer/Kconfig1
-rw-r--r--src/mainboard/google/volteer/spd/Makefile.inc15
-rw-r--r--src/mainboard/intel/cannonlake_rvp/spd/Makefile.inc2
-rw-r--r--src/mainboard/intel/harcuvar/Kconfig1
-rw-r--r--src/mainboard/intel/harcuvar/spd/Makefile.inc15
-rw-r--r--src/mainboard/intel/icelake_rvp/spd/Makefile.inc2
-rw-r--r--src/mainboard/intel/jasperlake_rvp/spd/Makefile.inc2
-rw-r--r--src/mainboard/intel/kblrvp/spd/Makefile.inc2
-rw-r--r--src/mainboard/intel/kunimitsu/Kconfig1
-rw-r--r--src/mainboard/intel/kunimitsu/spd/Makefile.inc17
-rw-r--r--src/mainboard/intel/tglrvp/Kconfig1
-rw-r--r--src/mainboard/intel/tglrvp/spd/Makefile.inc16
-rw-r--r--src/mainboard/lenovo/t430s/Kconfig1
-rw-r--r--src/mainboard/lenovo/t430s/variants/t431s/spd/Makefile.inc15
-rw-r--r--src/mainboard/lenovo/x1_carbon_gen1/Kconfig1
-rw-r--r--src/mainboard/lenovo/x1_carbon_gen1/spd/Makefile.inc21
-rw-r--r--src/mainboard/lenovo/x1_carbon_gen1/spd/elpida.spd.hex (renamed from src/mainboard/lenovo/x1_carbon_gen1/spd/elpida.hex)0
-rw-r--r--src/mainboard/lenovo/x1_carbon_gen1/spd/hynix.spd.hex (renamed from src/mainboard/lenovo/x1_carbon_gen1/spd/hynix.hex)0
-rw-r--r--src/mainboard/lenovo/x1_carbon_gen1/spd/samsung.spd.hex (renamed from src/mainboard/lenovo/x1_carbon_gen1/spd/samsung.hex)0
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/spd/Makefile.inc2
-rw-r--r--src/mainboard/samsung/lumpy/Kconfig1
-rw-r--r--src/mainboard/samsung/lumpy/Makefile.inc11
-rw-r--r--src/mainboard/samsung/lumpy/spd.hex96
-rw-r--r--src/mainboard/samsung/lumpy/spd/lumpy.spd.hex96
96 files changed, 133 insertions, 1029 deletions
diff --git a/src/mainboard/bap/ode_e20XX/Kconfig b/src/mainboard/bap/ode_e20XX/Kconfig
index 3503e65cef..9e673ff653 100644
--- a/src/mainboard/bap/ode_e20XX/Kconfig
+++ b/src/mainboard/bap/ode_e20XX/Kconfig
@@ -15,6 +15,7 @@ config BOARD_SPECIFIC_OPTIONS
select BOARD_ROMSIZE_KB_4096
select GFXUMA
select SUPERIO_FINTEK_F81866D
+ select GENERIC_SPD_BIN
config MAINBOARD_DIR
string
diff --git a/src/mainboard/bap/ode_e20XX/Makefile.inc b/src/mainboard/bap/ode_e20XX/Makefile.inc
index 5e83e6586f..4e2884aaaa 100644
--- a/src/mainboard/bap/ode_e20XX/Makefile.inc
+++ b/src/mainboard/bap/ode_e20XX/Makefile.inc
@@ -10,22 +10,5 @@ ramstage-y += buildOpts.c
ramstage-y += BiosCallOuts.c
ramstage-y += OemCustomize.c
-## DIMM SPD for on-board memory
-SPD_BIN = $(obj)/spd.bin
-
# Order of names in SPD_SOURCES is important!
SPD_SOURCES = BAP_Q7_800 BAP_Q7_1066
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/$(f).spd.hex)
-
-# Include spd rom data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/bap/ode_e20XX/BAP_Q7_1066.spd.hex b/src/mainboard/bap/ode_e20XX/spd/BAP_Q7_1066.spd.hex
index 865fd26278..865fd26278 100644
--- a/src/mainboard/bap/ode_e20XX/BAP_Q7_1066.spd.hex
+++ b/src/mainboard/bap/ode_e20XX/spd/BAP_Q7_1066.spd.hex
diff --git a/src/mainboard/bap/ode_e20XX/BAP_Q7_800.spd.hex b/src/mainboard/bap/ode_e20XX/spd/BAP_Q7_800.spd.hex
index 04abb4abbe..04abb4abbe 100644
--- a/src/mainboard/bap/ode_e20XX/BAP_Q7_800.spd.hex
+++ b/src/mainboard/bap/ode_e20XX/spd/BAP_Q7_800.spd.hex
diff --git a/src/mainboard/gizmosphere/gizmo/Kconfig b/src/mainboard/gizmosphere/gizmo/Kconfig
index 7c667b527d..58f196f528 100644
--- a/src/mainboard/gizmosphere/gizmo/Kconfig
+++ b/src/mainboard/gizmosphere/gizmo/Kconfig
@@ -14,6 +14,7 @@ config BOARD_SPECIFIC_OPTIONS
select HAVE_ACPI_TABLES
select BOARD_ROMSIZE_KB_2048
select GFXUMA
+ select GENERIC_SPD_BIN
config MAINBOARD_DIR
string
diff --git a/src/mainboard/gizmosphere/gizmo/Makefile.inc b/src/mainboard/gizmosphere/gizmo/Makefile.inc
index 1ae2f7b31e..2d5aa7552d 100644
--- a/src/mainboard/gizmosphere/gizmo/Makefile.inc
+++ b/src/mainboard/gizmosphere/gizmo/Makefile.inc
@@ -15,22 +15,5 @@ ramstage-y += buildOpts.c
ramstage-y += BiosCallOuts.c
ramstage-y += OemCustomize.c
-## DIMM SPD for on-board memory
-SPD_BIN = $(obj)/spd.bin
-
# Order of names in SPD_SOURCES is important!
SPD_SOURCES = Elpida_EDJ2116DEBG
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/gizmosphere/gizmo/Elpida_EDJ2116DEBG.spd.hex b/src/mainboard/gizmosphere/gizmo/spd/Elpida_EDJ2116DEBG.spd.hex
index 5b3b94ed9d..5b3b94ed9d 100644
--- a/src/mainboard/gizmosphere/gizmo/Elpida_EDJ2116DEBG.spd.hex
+++ b/src/mainboard/gizmosphere/gizmo/spd/Elpida_EDJ2116DEBG.spd.hex
diff --git a/src/mainboard/gizmosphere/gizmo2/Kconfig b/src/mainboard/gizmosphere/gizmo2/Kconfig
index 7a02ec851b..5ea1b43a47 100644
--- a/src/mainboard/gizmosphere/gizmo2/Kconfig
+++ b/src/mainboard/gizmosphere/gizmo2/Kconfig
@@ -16,6 +16,7 @@ config BOARD_SPECIFIC_OPTIONS
select BOARD_ROMSIZE_KB_4096
select GFXUMA
select HUDSON_IMC_ENABLE
+ select GENERIC_SPD_BIN
config MAINBOARD_DIR
string
diff --git a/src/mainboard/gizmosphere/gizmo2/Makefile.inc b/src/mainboard/gizmosphere/gizmo2/Makefile.inc
index 653dcc3529..0f808f076f 100644
--- a/src/mainboard/gizmosphere/gizmo2/Makefile.inc
+++ b/src/mainboard/gizmosphere/gizmo2/Makefile.inc
@@ -10,22 +10,5 @@ ramstage-y += buildOpts.c
ramstage-y += BiosCallOuts.c
ramstage-y += OemCustomize.c
-## DIMM SPD for on-board memory
-SPD_BIN = $(obj)/spd.bin
-
# Order of names in SPD_SOURCES is important!
SPD_SOURCES = Micron_MT41J128M16JT
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/gizmosphere/gizmo2/Micron_MT41J128M16JT.spd.hex b/src/mainboard/gizmosphere/gizmo2/spd/Micron_MT41J128M16JT.spd.hex
index 54b4a607d2..54b4a607d2 100644
--- a/src/mainboard/gizmosphere/gizmo2/Micron_MT41J128M16JT.spd.hex
+++ b/src/mainboard/gizmosphere/gizmo2/spd/Micron_MT41J128M16JT.spd.hex
diff --git a/src/mainboard/google/auron/Kconfig b/src/mainboard/google/auron/Kconfig
index c5e00fd148..54c8ea2656 100644
--- a/src/mainboard/google/auron/Kconfig
+++ b/src/mainboard/google/auron/Kconfig
@@ -15,6 +15,7 @@ config BOARD_GOOGLE_BASEBOARD_AURON
select MAINBOARD_HAS_TPM1
select INTEL_INT15
select SYSTEM_TYPE_LAPTOP if !BOARD_GOOGLE_BUDDY
+ select GENERIC_SPD_BIN
if BOARD_GOOGLE_BASEBOARD_AURON
diff --git a/src/mainboard/google/auron/variants/auron_paine/spd/Makefile.inc b/src/mainboard/google/auron/variants/auron_paine/spd/Makefile.inc
index a446268132..69f8fd8fae 100644
--- a/src/mainboard/google/auron/variants/auron_paine/spd/Makefile.inc
+++ b/src/mainboard/google/auron/variants/auron_paine/spd/Makefile.inc
@@ -2,8 +2,6 @@
romstage-y += spd.c
-SPD_BIN = $(obj)/spd.bin
-
# { GPIO47, GPIO9, GPIO13 }
SPD_SOURCES = Micron_4KTF25664HZ # 0b0000
SPD_SOURCES += Hynix_HMT425S6AFR6A # 0b0001
@@ -22,16 +20,4 @@ SPD_SOURCES += empty # 0b1101
SPD_SOURCES += empty # 0b1110
SPD_SOURCES += empty # 0b1111
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
diff --git a/src/mainboard/google/auron/variants/auron_yuna/spd/Makefile.inc b/src/mainboard/google/auron/variants/auron_yuna/spd/Makefile.inc
index a446268132..69f8fd8fae 100644
--- a/src/mainboard/google/auron/variants/auron_yuna/spd/Makefile.inc
+++ b/src/mainboard/google/auron/variants/auron_yuna/spd/Makefile.inc
@@ -2,8 +2,6 @@
romstage-y += spd.c
-SPD_BIN = $(obj)/spd.bin
-
# { GPIO47, GPIO9, GPIO13 }
SPD_SOURCES = Micron_4KTF25664HZ # 0b0000
SPD_SOURCES += Hynix_HMT425S6AFR6A # 0b0001
@@ -22,16 +20,4 @@ SPD_SOURCES += empty # 0b1101
SPD_SOURCES += empty # 0b1110
SPD_SOURCES += empty # 0b1111
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
diff --git a/src/mainboard/google/auron/variants/gandof/spd/Makefile.inc b/src/mainboard/google/auron/variants/gandof/spd/Makefile.inc
index a6a8232f48..18b1062bb5 100644
--- a/src/mainboard/google/auron/variants/gandof/spd/Makefile.inc
+++ b/src/mainboard/google/auron/variants/gandof/spd/Makefile.inc
@@ -2,8 +2,6 @@
romstage-y += spd.c
-SPD_BIN = $(obj)/spd.bin
-
# { GPIO47, GPIO9, GPIO13 }
SPD_SOURCES = Samsung_M471B5674EB0-YK0 # 0b0000
SPD_SOURCES += Hynix_HMT425S6CFR6A_H5TC4G63CFR # 0b0001
@@ -14,16 +12,4 @@ SPD_SOURCES += Hynix_HMT425S6CFR6A_H5TC4G63CFR # 0b0101
SPD_SOURCES += empty # 0b0110
SPD_SOURCES += empty # 0b0111
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
-
-# Include spd rom data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
diff --git a/src/mainboard/google/auron/variants/lulu/spd/Makefile.inc b/src/mainboard/google/auron/variants/lulu/spd/Makefile.inc
index c136955d4c..e4ffcf8f6a 100644
--- a/src/mainboard/google/auron/variants/lulu/spd/Makefile.inc
+++ b/src/mainboard/google/auron/variants/lulu/spd/Makefile.inc
@@ -2,8 +2,6 @@
romstage-y += spd.c
-SPD_BIN = $(obj)/spd.bin
-
# { GPIO47, GPIO9, GPIO13, GPIO8}
SPD_SOURCES = micron_2GiB_dimm_MT41K256M16HA-125 # 0b0000 2GB
SPD_SOURCES += empty # 0b0001
@@ -22,16 +20,4 @@ SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0 # 0b1101 4GB
SPD_SOURCES += samsung_4GiB_dimm_K4B8G1646Q-MYK0 # 0b1110 8GB
SPD_SOURCES += empty # 0b1111
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
-
-# Include spd rom data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
diff --git a/src/mainboard/google/auron/variants/samus/spd/Makefile.inc b/src/mainboard/google/auron/variants/samus/spd/Makefile.inc
index aaf9b36b3a..cc1542fce2 100644
--- a/src/mainboard/google/auron/variants/samus/spd/Makefile.inc
+++ b/src/mainboard/google/auron/variants/samus/spd/Makefile.inc
@@ -2,8 +2,6 @@
romstage-y += spd.c
-SPD_BIN = $(obj)/spd.bin
-
# { GPIO65, GPIO67, GPIO68, GPIO69 }
SPD_SOURCES = empty # 0b0000
SPD_SOURCES += empty # 0b0001
@@ -22,16 +20,4 @@ SPD_SOURCES += hynix_16 # 0b1101
SPD_SOURCES += empty # 0b1110
SPD_SOURCES += elpida_16 # 0b1111
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
diff --git a/src/mainboard/google/cyan/Kconfig b/src/mainboard/google/cyan/Kconfig
index a3db6d78d8..a43e473f53 100644
--- a/src/mainboard/google/cyan/Kconfig
+++ b/src/mainboard/google/cyan/Kconfig
@@ -17,6 +17,7 @@ config BOARD_GOOGLE_BASEBOARD_CYAN
select PCIEXP_L1_SUB_STATE if !BOARD_GOOGLE_CYAN
select SYSTEM_TYPE_LAPTOP
select USE_GOOGLE_FSP
+ select GENERIC_SPD_BIN
if BOARD_GOOGLE_BASEBOARD_CYAN
diff --git a/src/mainboard/google/cyan/variants/banon/Makefile.inc b/src/mainboard/google/cyan/variants/banon/Makefile.inc
index 5e3cf38f90..8a9cee84db 100644
--- a/src/mainboard/google/cyan/variants/banon/Makefile.inc
+++ b/src/mainboard/google/cyan/variants/banon/Makefile.inc
@@ -5,8 +5,6 @@ romstage-y += spd_util.c
ramstage-y += gpio.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = samsung_2GiB_dimm_K4E8E304EE-EGCF
SPD_SOURCES += samsung_2GiB_dimm_K4E8E324EB-EGCF
SPD_SOURCES += empty
@@ -14,17 +12,3 @@ SPD_SOURCES += hynix_2GiB_dimm_H9CCNNN8GTMLAR-NUD
SPD_SOURCES += micron_2GiB_dimm_MT52L256M32D1PF
SPD_SOURCES += hynix_dimm_H9CCNNN8GTALAR-NUD
SPD_SOURCES += nanya_dimm_NT6CL256T32CM-H1
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/cyan/variants/celes/Makefile.inc b/src/mainboard/google/cyan/variants/celes/Makefile.inc
index 11f918b79a..2f21fd93d5 100644
--- a/src/mainboard/google/cyan/variants/celes/Makefile.inc
+++ b/src/mainboard/google/cyan/variants/celes/Makefile.inc
@@ -5,21 +5,5 @@ romstage-y += spd_util.c
ramstage-y += gpio.c
ramstage-y += ramstage.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = samsung_dimm_K4E8E304EE-EGCE # Index0
SPD_SOURCES += samsung_dimm_K4E8E324EB-EGCF # Index1
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/cyan/variants/cyan/Makefile.inc b/src/mainboard/google/cyan/variants/cyan/Makefile.inc
index a1521d4234..a5e9dbab3d 100644
--- a/src/mainboard/google/cyan/variants/cyan/Makefile.inc
+++ b/src/mainboard/google/cyan/variants/cyan/Makefile.inc
@@ -4,8 +4,6 @@ romstage-y += spd_util.c
ramstage-y += gpio.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = samsung_2GiB_dimm_K4B4G1646Q-HYK0
SPD_SOURCES += hynix_2GiB_dimm_HMT425S6CFR6A_H5TC4G63CFR
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0
@@ -14,17 +12,3 @@ SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646E-BYK0
SPD_SOURCES += micron_2GiB_dimm_MT41K256M16TW-107
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646E-BYK0
SPD_SOURCES += micron_2GiB_dimm_MT41K256M16TW-107
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/cyan/variants/edgar/Makefile.inc b/src/mainboard/google/cyan/variants/edgar/Makefile.inc
index b3651eac90..91c0d97a40 100644
--- a/src/mainboard/google/cyan/variants/edgar/Makefile.inc
+++ b/src/mainboard/google/cyan/variants/edgar/Makefile.inc
@@ -5,8 +5,6 @@ romstage-y += spd_util.c
ramstage-y += gpio.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = samsung_dimm_K4E8E304EE-EGCE
SPD_SOURCES += hynix_dimm_H9CCNNN8JTBLAR-NUD
SPD_SOURCES += samsung_dimm_K4E8E304EE-EGCE
@@ -19,17 +17,3 @@ SPD_SOURCES += nanya_dimm_NT6CL256T32CM-H1
SPD_SOURCES += hynix_dimm_H9CCNNN8GTALAR-NUD
SPD_SOURCES += nanya_dimm_NT6CL256T32CM-H1
SPD_SOURCES += hynix_dimm_H9CCNNN8GTALAR-NUD
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/cyan/variants/kefka/Makefile.inc b/src/mainboard/google/cyan/variants/kefka/Makefile.inc
index ff707b4dee..14db7537eb 100644
--- a/src/mainboard/google/cyan/variants/kefka/Makefile.inc
+++ b/src/mainboard/google/cyan/variants/kefka/Makefile.inc
@@ -6,8 +6,6 @@ romstage-y += spd_util.c
ramstage-y += gpio.c
ramstage-y += ramstage.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = hynix_2GiB_dimm_H9CCNNN8GTMLAR-NUD
SPD_SOURCES += hynix_2GiB_dimm_H9CCNNN8GTMLAR-NUD
SPD_SOURCES += micron_dimm_MT52L256M32D1PF-107
@@ -16,17 +14,3 @@ SPD_SOURCES += samsung_2GiB_dimm_K4E8E324EB-EGCF
SPD_SOURCES += samsung_2GiB_dimm_K4E8E324EB-EGCF
SPD_SOURCES += hynix_dimm_H9CCNNN8GTALAR-NUD
SPD_SOURCES += hynix_dimm_H9CCNNN8GTALAR-NUD
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/cyan/variants/reks/Makefile.inc b/src/mainboard/google/cyan/variants/reks/Makefile.inc
index b45a2b229e..8b4a77645b 100644
--- a/src/mainboard/google/cyan/variants/reks/Makefile.inc
+++ b/src/mainboard/google/cyan/variants/reks/Makefile.inc
@@ -6,24 +6,8 @@ romstage-y += spd_util.c
ramstage-y += gpio.c
ramstage-y += ramstage.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = samsung_2GiB_dimm_K4E8E304EE-EGCF
SPD_SOURCES += hynix_2GiB_dimm_H9CCNNN8GTMLAR-NUD
SPD_SOURCES += micron_2GiB_dimm_MT52L256M32D1PF
SPD_SOURCES += samsung_2GiB_dimm_K4E8E324EB-EGCF
SPD_SOURCES += micron_2GiB_dimm_EDF8132A3MA-JD-F
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/cyan/variants/relm/Makefile.inc b/src/mainboard/google/cyan/variants/relm/Makefile.inc
index 3de47937e6..47e32bb32b 100644
--- a/src/mainboard/google/cyan/variants/relm/Makefile.inc
+++ b/src/mainboard/google/cyan/variants/relm/Makefile.inc
@@ -6,8 +6,6 @@ romstage-y += spd_util.c
ramstage-y += gpio.c
ramstage-y += ramstage.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = samsung_2GiB_dimm_K4E8E304EE-EGCF
SPD_SOURCES += hynix_2GiB_dimm_H9CCNNN8GTMLAR-NUD
SPD_SOURCES += micron_2GiB_dimm_MT52L256M32D1PF
@@ -15,17 +13,3 @@ SPD_SOURCES += samsung_2GiB_dimm_K4E8E324EB-EGCF
SPD_SOURCES += micron_2GiB_dimm_EDF8132A3MA-JD-F
SPD_SOURCES += hynix_dimm_H9CCNNN8JTBLAR-NUD-1G-1866
SPD_SOURCES += hynix_dimm_H9CCNNN8GTALAR-NUD
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/cyan/variants/setzer/Makefile.inc b/src/mainboard/google/cyan/variants/setzer/Makefile.inc
index d99926b203..1735907d8e 100644
--- a/src/mainboard/google/cyan/variants/setzer/Makefile.inc
+++ b/src/mainboard/google/cyan/variants/setzer/Makefile.inc
@@ -6,8 +6,6 @@ romstage-y += spd_util.c
ramstage-y += gpio.c
ramstage-y += ramstage.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = samsung_dimm_K4E8E304EE-EGCF
SPD_SOURCES += samsung_dimm_K4E8E304EE-EGCF
SPD_SOURCES += hynix_dimm_H9CCNNN8GTMLAR-NUD
@@ -18,17 +16,3 @@ SPD_SOURCES += samsung_dimm_K4E8E324EB-EGCF
SPD_SOURCES += samsung_dimm_K4E8E324EB-EGCF
SPD_SOURCES += hynix_dimm_H9CCNNN8GTALAR-NUD
SPD_SOURCES += hynix_dimm_H9CCNNN8GTALAR-NUD
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/cyan/variants/terra/Makefile.inc b/src/mainboard/google/cyan/variants/terra/Makefile.inc
index af07a93bc7..6358081d66 100644
--- a/src/mainboard/google/cyan/variants/terra/Makefile.inc
+++ b/src/mainboard/google/cyan/variants/terra/Makefile.inc
@@ -6,23 +6,7 @@ romstage-y += spd_util.c
ramstage-y += gpio.c
ramstage-y += ramstage.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = samsung_dimm_K4E8E304EE-EGCE
SPD_SOURCES += samsung_dimm_K4E8E324EB-EGCF
SPD_SOURCES += micron_2GiB_dimm_EDF8132A3MA-GD-F-R
SPD_SOURCES += micron_2GiB_dimm_MT52L256M32D1PF-107WT
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/cyan/variants/ultima/Makefile.inc b/src/mainboard/google/cyan/variants/ultima/Makefile.inc
index 10500c43c2..7cb457ef6c 100644
--- a/src/mainboard/google/cyan/variants/ultima/Makefile.inc
+++ b/src/mainboard/google/cyan/variants/ultima/Makefile.inc
@@ -5,23 +5,7 @@ romstage-y += spd_util.c
ramstage-y += gpio.c
ramstage-y += ramstage.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = samsung_2GiB_dimm_K4E8E304EE-EGCF
SPD_SOURCES += hynix_2GiB_dimm_H9CCNNN8GTMLAR-NUD
SPD_SOURCES += micron_2GiB_dimm_EDF8132A3MA-JD-F
SPD_SOURCES += samsung_2GiB_dimm_K4E8E324EB-EGCF
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/cyan/variants/wizpig/Makefile.inc b/src/mainboard/google/cyan/variants/wizpig/Makefile.inc
index aa1621addb..b6ff0d058f 100644
--- a/src/mainboard/google/cyan/variants/wizpig/Makefile.inc
+++ b/src/mainboard/google/cyan/variants/wizpig/Makefile.inc
@@ -4,24 +4,8 @@ romstage-y += spd_util.c
ramstage-y += gpio.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = samsung_2GiB_dimm_K4E8E304EE-EGCE
SPD_SOURCES += hynix_2GiB_dimm_H9CCNNN8GTMLAR-NUD
SPD_SOURCES += micron_2GiB_dimm_EDF8132A3MA-JD-F
SPD_SOURCES += samsung_2GiB_dimm_K4E8E324EB-EGCF
SPD_SOURCES += hynix_dimm_H9CCNNN8JTBLAR-NUD
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/dedede/Kconfig b/src/mainboard/google/dedede/Kconfig
index dd1125e264..2bb255f1b1 100644
--- a/src/mainboard/google/dedede/Kconfig
+++ b/src/mainboard/google/dedede/Kconfig
@@ -21,6 +21,7 @@ config BOARD_GOOGLE_BASEBOARD_DEDEDE
select SOC_INTEL_JASPERLAKE
select SOC_INTEL_COMMON_BLOCK_DTT
select SOC_INTEL_CSE_LITE_SKU
+ select GENERIC_SPD_BIN if !BOARD_GOOGLE_DEDEDE
if BOARD_GOOGLE_BASEBOARD_DEDEDE
diff --git a/src/mainboard/google/dedede/spd/Makefile.inc b/src/mainboard/google/dedede/spd/Makefile.inc
index bcfe06d79e..f73a3e438f 100644
--- a/src/mainboard/google/dedede/spd/Makefile.inc
+++ b/src/mainboard/google/dedede/spd/Makefile.inc
@@ -1,19 +1,3 @@
## SPDX-License-Identifier: GPL-2.0-or-later
-ifneq ($(SPD_SOURCES),)
-SPD_BIN = $(obj)/spd.bin
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/soc/intel/jasperlake/spd/$(f))
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
-endif
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/soc/intel/jasperlake/spd/lp4x/$(f))
diff --git a/src/mainboard/google/drallion/Kconfig b/src/mainboard/google/drallion/Kconfig
index ae10b7817d..3ec7a4f68f 100644
--- a/src/mainboard/google/drallion/Kconfig
+++ b/src/mainboard/google/drallion/Kconfig
@@ -22,6 +22,7 @@ config BOARD_GOOGLE_BASEBOARD_DRALLION
select SYSTEM_TYPE_LAPTOP
select TPM2
select MAINBOARD_USES_IFD_EC_REGION
+ select GENERIC_SPD_BIN
if BOARD_GOOGLE_BASEBOARD_DRALLION
diff --git a/src/mainboard/google/drallion/spd/Makefile.inc b/src/mainboard/google/drallion/spd/Makefile.inc
index 99aea9c827..125413a1f3 100644
--- a/src/mainboard/google/drallion/spd/Makefile.inc
+++ b/src/mainboard/google/drallion/spd/Makefile.inc
@@ -1,21 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
ifeq ($(SPD_SOURCES),)
SPD_DEPS := $(error SPD_SOURCES is not set. Variant must provide this)
-else
- SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
endif
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/eve/Kconfig b/src/mainboard/google/eve/Kconfig
index dcc5b383ba..c2fd9823f6 100644
--- a/src/mainboard/google/eve/Kconfig
+++ b/src/mainboard/google/eve/Kconfig
@@ -22,6 +22,7 @@ config BOARD_SPECIFIC_OPTIONS
select MAINBOARD_HAS_TPM2
select SOC_INTEL_KABYLAKE
select SYSTEM_TYPE_CONVERTIBLE
+ select GENERIC_SPD_BIN
config VBOOT
select EC_GOOGLE_CHROMEEC_SWITCHES
diff --git a/src/mainboard/google/eve/spd/Makefile.inc b/src/mainboard/google/eve/spd/Makefile.inc
index 767281504d..8c4f005465 100644
--- a/src/mainboard/google/eve/spd/Makefile.inc
+++ b/src/mainboard/google/eve/spd/Makefile.inc
@@ -2,8 +2,6 @@
romstage-y += spd.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = empty # 0b0000
SPD_SOURCES += samsung_dimm_K4E8E324EB # 0b0001
SPD_SOURCES += hynix_dimm_H9CCNNN8GTALAR # 0b0010
@@ -11,17 +9,3 @@ SPD_SOURCES += samsung_dimm_K4E6E304EB # 0b0011
SPD_SOURCES += hynix_dimm_H9CCNNNBJTALAR # 0b0100
SPD_SOURCES += samsung_dimm_K4EBE304EB # 0b0101
SPD_SOURCES += hynix_dimm_H9CCNNNCLTMLAR # 0b0110
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/glados/Kconfig b/src/mainboard/google/glados/Kconfig
index 9790552229..af899cfbbc 100644
--- a/src/mainboard/google/glados/Kconfig
+++ b/src/mainboard/google/glados/Kconfig
@@ -21,6 +21,7 @@ config BOARD_GOOGLE_BASEBOARD_GLADOS
select SYSTEM_TYPE_LAPTOP
select MAINBOARD_HAS_LIBGFXINIT
select MAINBOARD_NO_FSP_GOP if !BOARD_GOOGLE_GLADOS
+ select GENERIC_SPD_BIN
if BOARD_GOOGLE_BASEBOARD_GLADOS
diff --git a/src/mainboard/google/glados/variants/asuka/Makefile.inc b/src/mainboard/google/glados/variants/asuka/Makefile.inc
index ee3447823f..d1b4d16ba0 100644
--- a/src/mainboard/google/glados/variants/asuka/Makefile.inc
+++ b/src/mainboard/google/glados/variants/asuka/Makefile.inc
@@ -3,25 +3,9 @@
romstage-y += variant.c
ramstage-y += variant.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = hynix_dimm_H9CCNNN8GTMLAR-NUD # 0b0000 Single Channel 2GB
SPD_SOURCES += hynix_dimm_H9CCNNN8GTMLAR-NUD # 0b0001 Dual Channel 4GB
SPD_SOURCES += samsung_dimm_K4E8E324EB-EGCF # 0b0010 Single Channel 2GB
SPD_SOURCES += samsung_dimm_K4E8E324EB-EGCF # 0b0011 Dual Channel 4GB
SPD_SOURCES += micron_dimm_MT52L256M32D1PF-107-1G-1866 # 0b0100 Single Channel 2GB
SPD_SOURCES += micron_dimm_MT52L256M32D1PF-107-1G-1866 # 0b0101 Dual Channel 4GB
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/glados/variants/caroline/Makefile.inc b/src/mainboard/google/glados/variants/caroline/Makefile.inc
index a2545fcf08..6a942ee456 100644
--- a/src/mainboard/google/glados/variants/caroline/Makefile.inc
+++ b/src/mainboard/google/glados/variants/caroline/Makefile.inc
@@ -4,23 +4,7 @@ romstage-y += variant.c
ramstage-y += variant.c
smm-y += variant.c
-SPD_BIN = $(obj)/spd.bin
-
# SPD data by index
SPD_SOURCES = samsung_dimm_K4E8E324EB-EGCF # 0b0000
SPD_SOURCES += samsung_dimm_K4E6E304EB-EGCF # 0b0001
SPD_SOURCES += samsung_dimm_K4EBE304EB-EGCG # 0b0010
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/glados/variants/cave/Makefile.inc b/src/mainboard/google/glados/variants/cave/Makefile.inc
index 2f19b3fbd2..88e450ed6f 100644
--- a/src/mainboard/google/glados/variants/cave/Makefile.inc
+++ b/src/mainboard/google/glados/variants/cave/Makefile.inc
@@ -4,8 +4,6 @@ romstage-y += variant.c
ramstage-y += variant.c
smm-y += variant.c
-SPD_BIN = $(obj)/spd.bin
-
# SPD data by index. No method for board identification yet
SPD_SOURCES = micron_4GiB_dimm_MT52L256M32D1PF # 0b0000
SPD_SOURCES += samsung_dimm_K4E8E324EB-EGCF # 0b0001
@@ -13,17 +11,3 @@ SPD_SOURCES += micron_8GiB_dimm_MT52L512M32D2PF # 0b0010
SPD_SOURCES += samsung_dimm_K4E6E304EB-EGCF # 0b0011
SPD_SOURCES += micron_16GiB_dimm_MT52L1G32D4PG # 0b0100
SPD_SOURCES += hynix_dimm_H9CCNNNCLTMLAR # 0b0101
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/glados/variants/chell/Makefile.inc b/src/mainboard/google/glados/variants/chell/Makefile.inc
index b820684b7c..53861e9839 100644
--- a/src/mainboard/google/glados/variants/chell/Makefile.inc
+++ b/src/mainboard/google/glados/variants/chell/Makefile.inc
@@ -4,8 +4,6 @@ romstage-y += variant.c
ramstage-y += variant.c
smm-y += variant.c
-SPD_BIN = $(obj)/spd.bin
-
# SPD data by index. No method for board identification yet
SPD_SOURCES = samsung_dimm_K4E8E304EE-EGCF # 0b0000
SPD_SOURCES += samsung_dimm_K4E6E304EE-EGCF # 0b0001
@@ -18,17 +16,3 @@ SPD_SOURCES += samsung_dimm_K4E8E324EB-EGCF # 0b0111
SPD_SOURCES += hynix_dimm_H9CCNNNBJTALAR # 0b1000
SPD_SOURCES += hynix_dimm_H9CCNNNCLGALAR # 0b1001
SPD_SOURCES += hynix_dimm_H9CCNNN8GTALAR # 0b1010
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/glados/variants/glados/Makefile.inc b/src/mainboard/google/glados/variants/glados/Makefile.inc
index 3cf91e8f03..8858453cfc 100644
--- a/src/mainboard/google/glados/variants/glados/Makefile.inc
+++ b/src/mainboard/google/glados/variants/glados/Makefile.inc
@@ -4,24 +4,8 @@ romstage-y += variant.c
ramstage-y += variant.c
smm-y += variant.c
-SPD_BIN = $(obj)/spd.bin
-
# SPD data by index. No method for board identification yet
SPD_SOURCES = empty # 0b0000
SPD_SOURCES += samsung_dimm_K4E6E304EE-EGCF # 0b0001
SPD_SOURCES += hynix_dimm_H9CCNNN8JTBLAR # 0b0010
SPD_SOURCES += hynix_dimm_H9CCNNNBLTALAR # 0b0011
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/glados/variants/lars/Makefile.inc b/src/mainboard/google/glados/variants/lars/Makefile.inc
index e7ab2511f2..f295a360c2 100644
--- a/src/mainboard/google/glados/variants/lars/Makefile.inc
+++ b/src/mainboard/google/glados/variants/lars/Makefile.inc
@@ -3,8 +3,6 @@
romstage-y += variant.c
ramstage-y += variant.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = hynix_dimm_H9CCNNN8JTBLAR-NUD-1G-1866 # 0b0000 Single Channel 2GB
SPD_SOURCES += hynix_dimm_H9CCNNNBLTBLAR-NUD-2G-1866 # 0b0001 Dual Channel 8GB
SPD_SOURCES += samsung_dimm_K4E8E324EB-EGCF-1G-1866 # 0b0010 Dual Channel 4GB
@@ -21,17 +19,3 @@ SPD_SOURCES += samsung_dimm_K4E6E304EB-EGCF-2G-1866 # 0b1100 Single Channel
SPD_SOURCES += hynix_dimm_H9CCNNNBJTALAR # 0b1101 Dual Channel 8GB
SPD_SOURCES += empty # 0b1110
SPD_SOURCES += empty # 0b1111
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/glados/variants/sentry/Makefile.inc b/src/mainboard/google/glados/variants/sentry/Makefile.inc
index 019820a4b2..4de16c951a 100644
--- a/src/mainboard/google/glados/variants/sentry/Makefile.inc
+++ b/src/mainboard/google/glados/variants/sentry/Makefile.inc
@@ -3,8 +3,6 @@
romstage-y += variant.c
ramstage-y += variant.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = hynix_dimm_H9CCNNN8GTMLAR-NUD # 0b0000 Dual Channel 4GB
SPD_SOURCES += micron_dimm_MT52L256M32D1PF-107-1G-1866 # 0b0001 Dual Channel 4GB
SPD_SOURCES += samsung_dimm_K4E8E304EE-EGCF # 0b0010 Dual Channel 4GB
@@ -21,18 +19,3 @@ SPD_SOURCES += empty # 0b1100
SPD_SOURCES += empty # 0b1101
SPD_SOURCES += empty # 0b1110
SPD_SOURCES += empty # 0b1111
-
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/hatch/Kconfig b/src/mainboard/google/hatch/Kconfig
index 690acd1b80..952cd2d0f2 100644
--- a/src/mainboard/google/hatch/Kconfig
+++ b/src/mainboard/google/hatch/Kconfig
@@ -81,6 +81,7 @@ config DIMM_SPD_SIZE
config ROMSTAGE_SPD_CBFS
bool
default y if !ROMSTAGE_SPD_SMBUS
+ select GENERIC_SPD_BIN
config ROMSTAGE_SPD_SMBUS
bool
diff --git a/src/mainboard/google/hatch/spd/Makefile.inc b/src/mainboard/google/hatch/spd/Makefile.inc
deleted file mode 100644
index dc1c9978a0..0000000000
--- a/src/mainboard/google/hatch/spd/Makefile.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-## SPDX-License-Identifier: GPL-2.0-only
-
-ifneq ($(SPD_SOURCES),)
-SPD_BIN = $(obj)/spd.bin
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
-endif
diff --git a/src/mainboard/google/kahlee/variants/baseboard/spd/Makefile.inc b/src/mainboard/google/kahlee/variants/baseboard/spd/Makefile.inc
index 482fdec085..1ec3342891 100644
--- a/src/mainboard/google/kahlee/variants/baseboard/spd/Makefile.inc
+++ b/src/mainboard/google/kahlee/variants/baseboard/spd/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-LIB_SPD_DEPS = $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
SPD_SOURCES = hynix-H5AN8G6NAFR-UH # 0b0000
SPD_SOURCES += hynix-H5ANAG6NAMR-UH # 0b0001
SPD_SOURCES += micron-MT40A512M16JY-083E-B # 0b0010
diff --git a/src/mainboard/google/kahlee/variants/careena/spd/Makefile.inc b/src/mainboard/google/kahlee/variants/careena/spd/Makefile.inc
index ca459d270a..4c1da68f3d 100644
--- a/src/mainboard/google/kahlee/variants/careena/spd/Makefile.inc
+++ b/src/mainboard/google/kahlee/variants/careena/spd/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-LIB_SPD_DEPS = $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
SPD_SOURCES = hynix-H5AN8G6NAFR-UH # 0b0000
SPD_SOURCES += hynix-H5ANAG6NAMR-UH # 0b0001
SPD_SOURCES += micron-MT40A512M16JY-083E-B # 0b0010
diff --git a/src/mainboard/google/kahlee/variants/nuwani/spd/Makefile.inc b/src/mainboard/google/kahlee/variants/nuwani/spd/Makefile.inc
index 2d3cd88581..e72c9e6d7a 100644
--- a/src/mainboard/google/kahlee/variants/nuwani/spd/Makefile.inc
+++ b/src/mainboard/google/kahlee/variants/nuwani/spd/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-LIB_SPD_DEPS = $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
SPD_SOURCES = hynix-H5AN8G6NAFR-UH # 0b0000
SPD_SOURCES += hynix-H5ANAG6NAMR-UH # 0b0001
SPD_SOURCES += micron-MT40A512M16JY-083E-B # 0b0010
diff --git a/src/mainboard/google/kahlee/variants/treeya/spd/Makefile.inc b/src/mainboard/google/kahlee/variants/treeya/spd/Makefile.inc
index 2d3cd88581..e72c9e6d7a 100644
--- a/src/mainboard/google/kahlee/variants/treeya/spd/Makefile.inc
+++ b/src/mainboard/google/kahlee/variants/treeya/spd/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-LIB_SPD_DEPS = $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
SPD_SOURCES = hynix-H5AN8G6NAFR-UH # 0b0000
SPD_SOURCES += hynix-H5ANAG6NAMR-UH # 0b0001
SPD_SOURCES += micron-MT40A512M16JY-083E-B # 0b0010
diff --git a/src/mainboard/google/poppy/Kconfig b/src/mainboard/google/poppy/Kconfig
index 74b4da6fbc..ccd03cc844 100644
--- a/src/mainboard/google/poppy/Kconfig
+++ b/src/mainboard/google/poppy/Kconfig
@@ -15,6 +15,7 @@ config BOARD_GOOGLE_BASEBOARD_POPPY
select MAINBOARD_HAS_CHROMEOS
select SOC_INTEL_KABYLAKE
select MAINBOARD_HAS_TPM2
+ select GENERIC_SPD_BIN
if BOARD_GOOGLE_BASEBOARD_POPPY
diff --git a/src/mainboard/google/poppy/spd/Makefile.inc b/src/mainboard/google/poppy/spd/Makefile.inc
index dd57835739..997352cd0c 100644
--- a/src/mainboard/google/poppy/spd/Makefile.inc
+++ b/src/mainboard/google/poppy/spd/Makefile.inc
@@ -1,5 +1,4 @@
-SPD_BIN = $(obj)/spd.bin
SEC_SPD_BIN = $(obj)/sec-spd.bin
define gen_spd_bin
@@ -17,16 +16,8 @@ add_spd_to_cbfs= \
ifeq ($(SPD_SOURCES),)
SPD_DEPS := $(error SPD_SOURCES is not set. Variant must provide this)
-else
- SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
endif
-# Include SPD ROM data
-$(SPD_BIN): $(SPD_DEPS)
- $(call gen_spd_bin, $@, $+)
-
-$(call add_spd_to_cbfs, spd.bin, $(SPD_BIN))
-
# Add optional secondary SPD ROM data if present
ifneq ($(SEC_SPD_SOURCES),)
diff --git a/src/mainboard/google/rambi/Kconfig b/src/mainboard/google/rambi/Kconfig
index aa1c977f2a..22979e377b 100644
--- a/src/mainboard/google/rambi/Kconfig
+++ b/src/mainboard/google/rambi/Kconfig
@@ -14,6 +14,7 @@ config BOARD_GOOGLE_BASEBOARD_RAMBI
select MAINBOARD_HAS_LPC_TPM
select MAINBOARD_HAS_TPM1
select SYSTEM_TYPE_LAPTOP if !BOARD_GOOGLE_NINJA && !BOARD_GOOGLE_SUMO
+ select GENERIC_SPD_BIN
if BOARD_GOOGLE_BASEBOARD_RAMBI
diff --git a/src/mainboard/google/rambi/variants/banjo/Makefile.inc b/src/mainboard/google/rambi/variants/banjo/Makefile.inc
index 1d6619bf8f..6711c2e760 100644
--- a/src/mainboard/google/rambi/variants/banjo/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/banjo/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 2GiB total - 1 x 2GiB Samsung K4B4G1646Q-HYK0 1600MHz
@@ -16,17 +14,3 @@ SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0
SPD_SOURCES += Hynix_HMT425S6CFR6A_H5TC4G63CFR
SPD_SOURCES += Hynix_HMT425S6CFR6A_H5TC4G63CFR
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/candy/Makefile.inc b/src/mainboard/google/rambi/variants/candy/Makefile.inc
index 4630519b4e..4e8c9017ef 100644
--- a/src/mainboard/google/rambi/variants/candy/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/candy/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b0000 - 4GiB total - 2 x 2GiB Micron MT41K256M16HA-125:E 1600MHz
@@ -29,17 +27,3 @@ SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646E-BYK0
SPD_SOURCES += micron_2GiB_dimm_MT41K256M16TW-107
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63CFR-PBA
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63CFR-PBA
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/clapper/Makefile.inc b/src/mainboard/google/rambi/variants/clapper/Makefile.inc
index 2a641ba881..91d23af976 100644
--- a/src/mainboard/google/rambi/variants/clapper/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/clapper/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 4GiB total - 2 x 2GiB Micron MT41K256M16HA-125:E 1600MHz
@@ -20,17 +18,3 @@ SPD_SOURCES += micron_2GiB_dimm_MT41K256M16HA-125
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/enguarde/Makefile.inc b/src/mainboard/google/rambi/variants/enguarde/Makefile.inc
index 5b7d58b8e3..57f72800a5 100644
--- a/src/mainboard/google/rambi/variants/enguarde/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/enguarde/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 4GiB total - 2 x 2GiB Micron MT41K256M16HA-125:E 1600MHz
@@ -20,17 +18,3 @@ SPD_SOURCES += micron_2GiB_dimm_MT41K256M16HA-125
SPD_SOURCES += samsung_1GiB_dimm_K4B2G1646Q-BYK0
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd rom data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/glimmer/Makefile.inc b/src/mainboard/google/rambi/variants/glimmer/Makefile.inc
index da99edce4c..c54f901f49 100644
--- a/src/mainboard/google/rambi/variants/glimmer/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/glimmer/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b0000 - 4GiB total - 2 x 2GiB Micron MT41K256M16HA-125:E 1600MHz
@@ -26,17 +24,3 @@ SPD_SOURCES += elpida_2GiB_dimm_EDJ4216EFBG-GNL-F
SPD_SOURCES += micron_2GiB_dimm_MT41K256M16HA-125
SPD_SOURCES += elpida_2GiB_dimm_EDJ4216EFBG-GNL-F
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd rom data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/gnawty/Makefile.inc b/src/mainboard/google/rambi/variants/gnawty/Makefile.inc
index eb87d0c619..f17db16e68 100644
--- a/src/mainboard/google/rambi/variants/gnawty/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/gnawty/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 4GiB total - 2 x 2GiB Samsung K4B4G1646Q-HYK0 1600MHz
@@ -20,17 +18,3 @@ SPD_SOURCES += Hynix_HMT425S6CFR6A_H5TC4G63CFR
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += Hynix_HMT425S6CFR6A_H5TC4G63CFR
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63MFR-PBA
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/heli/Makefile.inc b/src/mainboard/google/rambi/variants/heli/Makefile.inc
index 8a9adf3d81..eacc7b5a09 100644
--- a/src/mainboard/google/rambi/variants/heli/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/heli/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# RAM_ID Vendor Vendor_PN Freq Size Total_size channel
@@ -26,17 +24,3 @@ SPD_SOURCES += empty # 0b1100
SPD_SOURCES += empty # 0b1101
SPD_SOURCES += empty # 0b1110
SPD_SOURCES += empty # 0b1111
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/kip/Makefile.inc b/src/mainboard/google/rambi/variants/kip/Makefile.inc
index bf95c739e8..d9c872ab56 100644
--- a/src/mainboard/google/rambi/variants/kip/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/kip/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 4GiB total - 2 x 2GiB Micron MT41K256M16HA-125:E 1600MHz
@@ -20,17 +18,3 @@ SPD_SOURCES += micron_2GiB_dimm_MT41K256M16HA-125a
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += elpida_2GiB_dimm_EDJ4216EFBG-GNL-F
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/ninja/Makefile.inc b/src/mainboard/google/rambi/variants/ninja/Makefile.inc
index 723a5e592d..739eb7ea7a 100644
--- a/src/mainboard/google/rambi/variants/ninja/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/ninja/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 4GiB total - 2 x 2GiB Micron MT41K256M16HA-125:E 1600MHz
@@ -20,17 +18,3 @@ SPD_SOURCES += micron_2GiB_dimm_MT41K256M16HA-125
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63CFR-PBA
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63CFR-PBA
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/orco/Makefile.inc b/src/mainboard/google/rambi/variants/orco/Makefile.inc
index 2c2496ebc9..0412c537c5 100644
--- a/src/mainboard/google/rambi/variants/orco/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/orco/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 4GiB total - 2 x 2GiB Micron MT41K256M16HA-125:E 1600MHz
@@ -20,17 +18,3 @@ SPD_SOURCES += micron_2GiB_dimm_MT41K256M16HA-125
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/quawks/Makefile.inc b/src/mainboard/google/rambi/variants/quawks/Makefile.inc
index 2c0127cbef..d729475686 100644
--- a/src/mainboard/google/rambi/variants/quawks/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/quawks/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 4GiB total - 2 x 2GiB Elpida EDJ4216EFBG-GNL-F 1600MHz
@@ -20,17 +18,3 @@ SPD_SOURCES += elpida_2GiB_dimm_EDJ4216EFBG-GNL-F
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += Hynix_HMT425S6CFR6A_H5TC4G63CFR
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/rambi/Makefile.inc b/src/mainboard/google/rambi/variants/rambi/Makefile.inc
index 5bddd5c15a..012206eb18 100644
--- a/src/mainboard/google/rambi/variants/rambi/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/rambi/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 4GiB total - 2 x 2GiB Micron MT41K256M16HA-125:E 1600MHz
@@ -16,17 +14,3 @@ SPD_SOURCES += micron_1GiB_dimm_MT41K128M16JT-125
SPD_SOURCES += hynix_1GiB_dimm_H5TC2G63FFR-PBA
SPD_SOURCES += micron_2GiB_dimm_MT41K256M16HA-125
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/squawks/Makefile.inc b/src/mainboard/google/rambi/variants/squawks/Makefile.inc
index 2c0127cbef..d729475686 100644
--- a/src/mainboard/google/rambi/variants/squawks/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/squawks/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 4GiB total - 2 x 2GiB Elpida EDJ4216EFBG-GNL-F 1600MHz
@@ -20,17 +18,3 @@ SPD_SOURCES += elpida_2GiB_dimm_EDJ4216EFBG-GNL-F
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += Hynix_HMT425S6CFR6A_H5TC4G63CFR
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/sumo/Makefile.inc b/src/mainboard/google/rambi/variants/sumo/Makefile.inc
index 723a5e592d..739eb7ea7a 100644
--- a/src/mainboard/google/rambi/variants/sumo/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/sumo/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 4GiB total - 2 x 2GiB Micron MT41K256M16HA-125:E 1600MHz
@@ -20,17 +18,3 @@ SPD_SOURCES += micron_2GiB_dimm_MT41K256M16HA-125
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63CFR-PBA
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63CFR-PBA
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/swanky/Makefile.inc b/src/mainboard/google/rambi/variants/swanky/Makefile.inc
index 7269afd299..94702622ce 100644
--- a/src/mainboard/google/rambi/variants/swanky/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/swanky/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 2GiB total - 1 x 2GiB Samsung K4B4G1646Q-HYK0 1600MHz
@@ -12,17 +10,3 @@ SPD_SOURCES = samsung_2GiB_dimm_K4B4G1646Q-HYK0
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
SPD_SOURCES += samsung_2GiB_dimm_K4B4G1646Q-HYK0
SPD_SOURCES += hynix_2GiB_dimm_H5TC4G63AFR-PBA
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/rambi/variants/winky/Makefile.inc b/src/mainboard/google/rambi/variants/winky/Makefile.inc
index 105684f7eb..27b8a6a42a 100644
--- a/src/mainboard/google/rambi/variants/winky/Makefile.inc
+++ b/src/mainboard/google/rambi/variants/winky/Makefile.inc
@@ -1,7 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
# 0b000 - 4GiB total - 2 x 2GB - micron HTTC4G63CFR-PBA_x16_4Gb
@@ -16,17 +14,3 @@ SPD_SOURCES += micron_1GiB_dimm_MT41K128M16JT-125
SPD_SOURCES += hynix_1GiB_dimm_H5TC2G63FFR-PBA
SPD_SOURCES += HT_micron_HTTC4G63CFR-PBA_x16_4Gb
SPD_SOURCES += Samsung_2Gib_K4B4G1646Q-HYK0
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/google/slippy/Kconfig b/src/mainboard/google/slippy/Kconfig
index 931d3ce55f..5a16d23ca8 100644
--- a/src/mainboard/google/slippy/Kconfig
+++ b/src/mainboard/google/slippy/Kconfig
@@ -17,6 +17,7 @@ config BOARD_GOOGLE_BASEBOARD_SLIPPY
select MAINBOARD_HAS_LIBGFXINIT
select INTEL_GMA_HAVE_VBT
select DRIVERS_I2C_RTD2132 if BOARD_GOOGLE_LEON
+ select GENERIC_SPD_BIN
if BOARD_GOOGLE_BASEBOARD_SLIPPY
diff --git a/src/mainboard/google/slippy/variants/falco/Makefile.inc b/src/mainboard/google/slippy/variants/falco/Makefile.inc
index 6d1ee81ec7..d8d748b726 100644
--- a/src/mainboard/google/slippy/variants/falco/Makefile.inc
+++ b/src/mainboard/google/slippy/variants/falco/Makefile.inc
@@ -1,8 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-## DIMM SPD for on-board memory
-SPD_BIN = $(obj)/spd.bin
-
# Order of names in SPD_SOURCES is important!
SPD_SOURCES = Micron_4KTF25664HZ # 4GB / CH0 + CH1 (RAM_ID=000)
SPD_SOURCES += Hynix_HMT425S6AFR6A # 4GB / CH0 + CH1 (RAM_ID=001)
@@ -13,16 +10,4 @@ SPD_SOURCES += Elpida_EDJ4216EFBG # 2GB / CH0 only (RAM_ID=101)
SPD_SOURCES += Samsung_M471B5674QH0 # 4GB / CH0 + CH1 (RAM_ID=110)
SPD_SOURCES += Samsung_M471B5674QH0 # 2GB / CH0 only (RAM_ID=111)
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
diff --git a/src/mainboard/google/slippy/variants/leon/Makefile.inc b/src/mainboard/google/slippy/variants/leon/Makefile.inc
index 3dab895e9c..213dadb006 100644
--- a/src/mainboard/google/slippy/variants/leon/Makefile.inc
+++ b/src/mainboard/google/slippy/variants/leon/Makefile.inc
@@ -1,8 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-## DIMM SPD for on-board memory
-SPD_BIN = $(obj)/spd.bin
-
# Order of names in SPD_SOURCES is important!
SPD_SOURCES = Micron_4KTF25664HZ # 0: 4GB / CH0 + CH1
SPD_SOURCES += Hynix_HMT425S6AFR6A # 1: 4GB / CH0 + CH1
@@ -12,16 +9,4 @@ SPD_SOURCES += Micron_4KTF25664HZ # 4: space holder
SPD_SOURCES += Hynix_HMT425S6AFR6A # 5: 2GB / CH0
SPD_SOURCES += Samsung_K4B4G1646Q # 6: 2GB / CH0
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
diff --git a/src/mainboard/google/slippy/variants/peppy/Makefile.inc b/src/mainboard/google/slippy/variants/peppy/Makefile.inc
index c19326e0c5..f8c5b0d88f 100644
--- a/src/mainboard/google/slippy/variants/peppy/Makefile.inc
+++ b/src/mainboard/google/slippy/variants/peppy/Makefile.inc
@@ -1,8 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-## DIMM SPD for on-board memory
-SPD_BIN = $(obj)/spd.bin
-
# Order of names in SPD_SOURCES is important!
SPD_SOURCES = Micron_4KTF25664HZ # 0: 4GB / CH0 + CH1
SPD_SOURCES += Hynix_HMT425S6AFR6A # 1: 4GB / CH0 + CH1
@@ -13,16 +10,4 @@ SPD_SOURCES += Hynix_HMT425S6AFR6A # 5: 2GB / CH0 + CH1
SPD_SOURCES += Elpida_EDJ4216EFBG # 6: 2GB / CH0 + CH1
SPD_SOURCES += Hynix_HMT425S6CFR6A # 7: 2GB / CH0 + CH1
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
diff --git a/src/mainboard/google/slippy/variants/wolf/Makefile.inc b/src/mainboard/google/slippy/variants/wolf/Makefile.inc
index 3306b797f0..cd38d98051 100644
--- a/src/mainboard/google/slippy/variants/wolf/Makefile.inc
+++ b/src/mainboard/google/slippy/variants/wolf/Makefile.inc
@@ -1,8 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-## DIMM SPD for on-board memory
-SPD_BIN = $(obj)/spd.bin
-
# Order of names in SPD_SOURCES is important!
SPD_SOURCES = Micron_4KTF25664HZ # 0: 4GB / CH0 + CH1
SPD_SOURCES += Hynix_HMT425S6AFR6A # 1: 4GB / CH0 + CH1
@@ -11,16 +8,4 @@ SPD_SOURCES += Micron_4KTF25664HZ # 3: 2GB / CH0
SPD_SOURCES += Hynix_HMT425S6AFR6A # 4: 2GB / CH0
SPD_SOURCES += Samsung_K4B4G1646B # 4: 2GB / CH0
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
-
-# Include spd rom data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
diff --git a/src/mainboard/google/volteer/Kconfig b/src/mainboard/google/volteer/Kconfig
index 4867feaabe..dda2f4e933 100644
--- a/src/mainboard/google/volteer/Kconfig
+++ b/src/mainboard/google/volteer/Kconfig
@@ -27,6 +27,7 @@ config BOARD_GOOGLE_BASEBOARD_VOLTEER
select MAINBOARD_HAS_TPM2
select PCIEXP_HOTPLUG
select SOC_INTEL_TIGERLAKE
+ select GENERIC_SPD_BIN
if BOARD_GOOGLE_BASEBOARD_VOLTEER
diff --git a/src/mainboard/google/volteer/spd/Makefile.inc b/src/mainboard/google/volteer/spd/Makefile.inc
index 2dfafd5cd8..eb8e6ff355 100644
--- a/src/mainboard/google/volteer/spd/Makefile.inc
+++ b/src/mainboard/google/volteer/spd/Makefile.inc
@@ -2,23 +2,10 @@
##
ifneq ($(SPD_SOURCES),)
-SPD_BIN = $(obj)/spd.bin
-
ifeq ($(SPD_SOURCE_PATH),)
SPD_SOURCE_PATH := src/soc/intel/tigerlake/spd
endif
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), $(SPD_SOURCE_PATH)/$(f))
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), $(SPD_SOURCE_PATH)/$(f))
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
endif
diff --git a/src/mainboard/intel/cannonlake_rvp/spd/Makefile.inc b/src/mainboard/intel/cannonlake_rvp/spd/Makefile.inc
index 48e6375819..f052142431 100644
--- a/src/mainboard/intel/cannonlake_rvp/spd/Makefile.inc
+++ b/src/mainboard/intel/cannonlake_rvp/spd/Makefile.inc
@@ -2,8 +2,6 @@
romstage-y += spd_util.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = empty # 0b000
SPD_SOURCES += samsung_ddr4_4GB # 0b001 Dual Channel 4GB
SPD_SOURCES += samsung_lpddr4_8GB # 0b001 Dual Channel 8GB
diff --git a/src/mainboard/intel/harcuvar/Kconfig b/src/mainboard/intel/harcuvar/Kconfig
index d110c281a2..dde087ae08 100644
--- a/src/mainboard/intel/harcuvar/Kconfig
+++ b/src/mainboard/intel/harcuvar/Kconfig
@@ -19,6 +19,7 @@ config MAINBOARD_PART_NUMBER
config ENABLE_FSP_MEMORY_DOWN
bool "Enable Memory Down"
default n
+ select GENERIC_SPD_BIN
help
Select this option to enable Memory Down function.
diff --git a/src/mainboard/intel/harcuvar/spd/Makefile.inc b/src/mainboard/intel/harcuvar/spd/Makefile.inc
index 55a6aef7a8..ec07cfb845 100644
--- a/src/mainboard/intel/harcuvar/spd/Makefile.inc
+++ b/src/mainboard/intel/harcuvar/spd/Makefile.inc
@@ -2,23 +2,8 @@
romstage-y += spd.c
-SPD_BIN = $(obj)/spd.bin
-
# Order matters for SPD sources. The following indices
# define the SPD data to use.
SPD_SOURCES = micron_4GiB_dimm_MTA9ASF51272PZ-2G1A2
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd rom data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do echo -e -n "\\x$$c"; \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
spd.bin-position := $(CONFIG_SPD_LOC)
-spd.bin-type := spd
diff --git a/src/mainboard/intel/icelake_rvp/spd/Makefile.inc b/src/mainboard/intel/icelake_rvp/spd/Makefile.inc
index 3114eebaf5..8e3ce25085 100644
--- a/src/mainboard/intel/icelake_rvp/spd/Makefile.inc
+++ b/src/mainboard/intel/icelake_rvp/spd/Makefile.inc
@@ -2,8 +2,6 @@
romstage-y += spd_util.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = empty # 0b000
SPD_SOURCES += samsung_K4F6E304HBMGCJ # 1b001
SPD_SOURCES += empty # 2b010
diff --git a/src/mainboard/intel/jasperlake_rvp/spd/Makefile.inc b/src/mainboard/intel/jasperlake_rvp/spd/Makefile.inc
index 3c8040c7c2..ef1eaabd90 100644
--- a/src/mainboard/intel/jasperlake_rvp/spd/Makefile.inc
+++ b/src/mainboard/intel/jasperlake_rvp/spd/Makefile.inc
@@ -1,5 +1,3 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = jslrvp # 0b000
diff --git a/src/mainboard/intel/kblrvp/spd/Makefile.inc b/src/mainboard/intel/kblrvp/spd/Makefile.inc
index d04269969a..887e4f16fe 100644
--- a/src/mainboard/intel/kblrvp/spd/Makefile.inc
+++ b/src/mainboard/intel/kblrvp/spd/Makefile.inc
@@ -2,8 +2,6 @@
romstage-y += spd_util.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = rvp3 # 0b000 Dual Channel 4GB
SPD_SOURCES += empty # 0b001
SPD_SOURCES += empty # 0b010
diff --git a/src/mainboard/intel/kunimitsu/Kconfig b/src/mainboard/intel/kunimitsu/Kconfig
index d7706d16a0..c655a88705 100644
--- a/src/mainboard/intel/kunimitsu/Kconfig
+++ b/src/mainboard/intel/kunimitsu/Kconfig
@@ -19,6 +19,7 @@ config BOARD_SPECIFIC_OPTIONS
select MAINBOARD_HAS_CHROMEOS
select MAINBOARD_HAS_LPC_TPM
select SOC_INTEL_SKYLAKE
+ select GENERIC_SPD_BIN
config VBOOT
select EC_GOOGLE_CHROMEEC_SWITCHES
diff --git a/src/mainboard/intel/kunimitsu/spd/Makefile.inc b/src/mainboard/intel/kunimitsu/spd/Makefile.inc
index 9ecf28d1fe..6a14c293a5 100644
--- a/src/mainboard/intel/kunimitsu/spd/Makefile.inc
+++ b/src/mainboard/intel/kunimitsu/spd/Makefile.inc
@@ -2,8 +2,6 @@
romstage-y += spd_util.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = hynix_dimm_H9CCNNN8JTALAR-NUD-1G-1866 # 0b0000 Dual Channel 4GB
SPD_SOURCES += hynix_dimm_H9CCNNN8JTALAR-NUD-1G-1866 # 0b0001 Single Channel 2GB
SPD_SOURCES += samsung_dimm_K4E8E304EE-EGCF-1G-1866 # 0b0010 Dual Channel 4GB
@@ -20,18 +18,3 @@ SPD_SOURCES += empty # 0b1100
SPD_SOURCES += empty # 0b1101
SPD_SOURCES += empty # 0b1110
SPD_SOURCES += empty # 0b1111
-
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/intel/tglrvp/Kconfig b/src/mainboard/intel/tglrvp/Kconfig
index 437f5c6348..c94cca6d74 100644
--- a/src/mainboard/intel/tglrvp/Kconfig
+++ b/src/mainboard/intel/tglrvp/Kconfig
@@ -17,6 +17,7 @@ config BOARD_SPECIFIC_OPTIONS
select DRIVERS_INTEL_ISH
select EC_ACPI
select PCIEXP_HOTPLUG
+ select GENERIC_SPD_BIN
config CHROMEOS
bool
diff --git a/src/mainboard/intel/tglrvp/spd/Makefile.inc b/src/mainboard/intel/tglrvp/spd/Makefile.inc
index 8dd1507544..df52042e07 100644
--- a/src/mainboard/intel/tglrvp/spd/Makefile.inc
+++ b/src/mainboard/intel/tglrvp/spd/Makefile.inc
@@ -1,21 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = Micron-MT53D1G64D8SQ-046
SPD_SOURCES += Samsung-K4UBE3D4AA-MGCL
SPD_SOURCES += Hynix-H9HKNNNEBMAV-4267
-
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
diff --git a/src/mainboard/lenovo/t430s/Kconfig b/src/mainboard/lenovo/t430s/Kconfig
index 6b34105826..1c0586d562 100644
--- a/src/mainboard/lenovo/t430s/Kconfig
+++ b/src/mainboard/lenovo/t430s/Kconfig
@@ -24,6 +24,7 @@ config BOARD_SPECIFIC_OPTIONS
select INTEL_GMA_HAVE_VBT
select MAINBOARD_USES_IFD_GBE_REGION
select DRIVERS_RICOH_RCE822 if BOARD_LENOVO_T431S
+ select GENERIC_SPD_BIN if BOARD_LENOVO_T431S
# Workaround for EC/KBC IRQ1.
select SERIRQ_CONTINUOUS_MODE
diff --git a/src/mainboard/lenovo/t430s/variants/t431s/spd/Makefile.inc b/src/mainboard/lenovo/t430s/variants/t431s/spd/Makefile.inc
index 38d83d6be8..3926956fb7 100644
--- a/src/mainboard/lenovo/t430s/variants/t431s/spd/Makefile.inc
+++ b/src/mainboard/lenovo/t430s/variants/t431s/spd/Makefile.inc
@@ -1,18 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES = samsung_4gb # 0b0010 4GiB
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
+LIB_SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
diff --git a/src/mainboard/lenovo/x1_carbon_gen1/Kconfig b/src/mainboard/lenovo/x1_carbon_gen1/Kconfig
index adb999430c..cff79031b2 100644
--- a/src/mainboard/lenovo/x1_carbon_gen1/Kconfig
+++ b/src/mainboard/lenovo/x1_carbon_gen1/Kconfig
@@ -22,6 +22,7 @@ config BOARD_SPECIFIC_OPTIONS
select MAINBOARD_HAS_LIBGFXINIT
select GFX_GMA_PANEL_1_ON_LVDS
select INTEL_GMA_HAVE_VBT
+ select GENERIC_SPD_BIN
# Workaround for EC/KBC IRQ1.
select SERIRQ_CONTINUOUS_MODE
diff --git a/src/mainboard/lenovo/x1_carbon_gen1/spd/Makefile.inc b/src/mainboard/lenovo/x1_carbon_gen1/spd/Makefile.inc
index e047c6ee58..d3244d1a9c 100644
--- a/src/mainboard/lenovo/x1_carbon_gen1/spd/Makefile.inc
+++ b/src/mainboard/lenovo/x1_carbon_gen1/spd/Makefile.inc
@@ -1,20 +1,5 @@
## SPDX-License-Identifier: GPL-2.0-only
-SPD_BIN = $(obj)/spd.bin
-
-SPD_SOURCES = elpida.hex # 0b0000 Single Channel 2GB
-SPD_SOURCES += hynix.hex # 0b0001 2GiB
-SPD_SOURCES += samsung.hex # 0b0010 4GiB
-SPD_DEPS := $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/spd/$(f))
-
-# Include spd ROM data
-$(SPD_BIN): $(SPD_DEPS)
- for f in $+; \
- do for c in $$(cat $$f | grep -v ^#); \
- do printf $$(printf '\\%o' 0x$$c); \
- done; \
- done > $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
+SPD_SOURCES = elpida # 0b0000 Single Channel 2GB
+SPD_SOURCES += hynix # 0b0001 2GiB
+SPD_SOURCES += samsung # 0b0010 4GiB
diff --git a/src/mainboard/lenovo/x1_carbon_gen1/spd/elpida.hex b/src/mainboard/lenovo/x1_carbon_gen1/spd/elpida.spd.hex
index 816254d379..816254d379 100644
--- a/src/mainboard/lenovo/x1_carbon_gen1/spd/elpida.hex
+++ b/src/mainboard/lenovo/x1_carbon_gen1/spd/elpida.spd.hex
diff --git a/src/mainboard/lenovo/x1_carbon_gen1/spd/hynix.hex b/src/mainboard/lenovo/x1_carbon_gen1/spd/hynix.spd.hex
index 111745ce2d..111745ce2d 100644
--- a/src/mainboard/lenovo/x1_carbon_gen1/spd/hynix.hex
+++ b/src/mainboard/lenovo/x1_carbon_gen1/spd/hynix.spd.hex
diff --git a/src/mainboard/lenovo/x1_carbon_gen1/spd/samsung.hex b/src/mainboard/lenovo/x1_carbon_gen1/spd/samsung.spd.hex
index 24186362b8..24186362b8 100644
--- a/src/mainboard/lenovo/x1_carbon_gen1/spd/samsung.hex
+++ b/src/mainboard/lenovo/x1_carbon_gen1/spd/samsung.spd.hex
diff --git a/src/mainboard/razer/blade_stealth_kbl/spd/Makefile.inc b/src/mainboard/razer/blade_stealth_kbl/spd/Makefile.inc
index 27c289bd2a..f1fdd6ffe8 100644
--- a/src/mainboard/razer/blade_stealth_kbl/spd/Makefile.inc
+++ b/src/mainboard/razer/blade_stealth_kbl/spd/Makefile.inc
@@ -2,7 +2,5 @@
romstage-y += spd_util.c
-SPD_BIN = $(obj)/spd.bin
-
SPD_SOURCES += micron_dimm_MT52L512M32D2PF-107 # 0b0000 8GB
SPD_SOURCES += micron_dimm_MT52L1G32D4PG-107 # 0b0001 16GB
diff --git a/src/mainboard/samsung/lumpy/Kconfig b/src/mainboard/samsung/lumpy/Kconfig
index b938945fa2..237076f8c2 100644
--- a/src/mainboard/samsung/lumpy/Kconfig
+++ b/src/mainboard/samsung/lumpy/Kconfig
@@ -24,6 +24,7 @@ config BOARD_SPECIFIC_OPTIONS
select DRIVERS_GENERIC_IOAPIC
select INTEL_INT15
select SANDYBRIDGE_VBOOT_IN_ROMSTAGE
+ select GENERIC_SPD_BIN
config VBOOT
select VBOOT_VBNV_CMOS
diff --git a/src/mainboard/samsung/lumpy/Makefile.inc b/src/mainboard/samsung/lumpy/Makefile.inc
index 74a635767e..1fd9498c47 100644
--- a/src/mainboard/samsung/lumpy/Makefile.inc
+++ b/src/mainboard/samsung/lumpy/Makefile.inc
@@ -5,18 +5,11 @@ ramstage-y += ec.c
romstage-y += chromeos.c
ramstage-y += chromeos.c
-SPD_BIN = $(obj)/spd.bin
-
-# Include spd ROM data
-$(SPD_BIN):
- xxd -rg1 $(src)/mainboard/samsung/lumpy/spd.hex >| $@
-
-cbfs-files-y += spd.bin
-spd.bin-file := $(SPD_BIN)
-spd.bin-type := spd
bootblock-y += gpio.c
romstage-y += gpio.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
bootblock-y += early_init.c
romstage-y += early_init.c
+
+SPD_SOURCES = lumpy
diff --git a/src/mainboard/samsung/lumpy/spd.hex b/src/mainboard/samsung/lumpy/spd.hex
deleted file mode 100644
index 8690886207..0000000000
--- a/src/mainboard/samsung/lumpy/spd.hex
+++ /dev/null
@@ -1,96 +0,0 @@
-0000000: 92 10 0b 03 02 11 00 01 03 52 01 08 0c 00 3e 00 .........R....>.
-0000010: 69 78 69 30 69 11 20 89 70 03 3c 3c 00 f0 83 01 ixi0i. .p.<<....
-0000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000030: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 21 00 ..............!.
-0000040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000070: 00 00 00 00 00 80 ce 01 00 00 00 00 00 00 d3 0d ................
-0000080: 4d 34 37 31 42 32 38 37 33 46 48 53 2d 43 48 39 M471B2873FHS-CH9
-0000090: 20 20 00 00 80 ce 00 00 00 00 00 00 00 00 00 00 ..............
-00000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000100: 92 10 0b 03 02 11 00 01 03 52 01 08 0f 00 1e 00 .........R......
-0000110: 69 78 69 3c 69 11 2c 95 70 03 3c 3c 01 2c 83 01 ixi<i.,.p.<<.,..
-0000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000130: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 21 00 ..............!.
-0000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000170: 00 00 00 00 00 80 ce 02 10 31 81 1d 77 ce 91 a4 .........1..w...
-0000180: 4d 34 37 31 42 32 38 37 33 46 48 53 2d 43 46 38 M471B2873FHS-CF8
-0000190: 20 20 00 00 80 ce 00 00 00 53 47 30 44 35 31 31 .......SG0D511
-00001a0: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00001b0: 01 a0 04 38 20 06 57 31 00 00 00 00 00 00 00 00 ...8 .W1........
-00001c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000200: 92 10 0b 03 03 19 00 01 03 52 01 08 0c 00 7e 00 .........R....~.
-0000210: 69 78 69 30 69 11 20 89 00 05 3c 3c 00 f0 83 81 ixi0i. ...<<....
-0000220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000230: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 41 00 ..............A.
-0000240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000270: 00 00 00 00 00 02 fe 00 00 00 00 00 00 00 29 2b ..............)+
-0000280: 45 42 4a 32 30 55 46 38 42 44 55 30 2d 44 4a 2d EBJ20UF8BDU0-DJ-
-0000290: 46 20 30 20 02 fe 00 00 00 00 00 00 00 00 00 00 F 0 ............
-00002a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00002b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00002c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00002d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00002e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00002f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000300: 92 11 0b 03 02 11 00 01 03 11 01 08 0c 00 3e 00 ..............>.
-0000310: 69 78 69 30 69 11 20 89 70 03 3c 3c 00 f0 83 01 ixi0i. .p.<<....
-0000320: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000330: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 41 00 ..............A.
-0000340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000350: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000370: 00 00 00 00 00 80 ce 01 00 00 00 00 00 00 cf 74 ...............t
-0000380: 4d 34 37 31 42 32 38 37 33 47 42 30 2d 43 48 39 M471B2873GB0-CH9
-0000390: 20 20 00 00 80 ce 00 00 00 00 00 00 00 00 00 00 ..............
-00003a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00003b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00003c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00003d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00003e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00003f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000400: 92 11 0b 03 02 11 00 01 03 11 01 08 0f 00 1e 00 ................
-0000410: 69 78 69 3c 69 11 2c 95 70 03 3c 3c 01 2c 83 01 ixi<i.,.p.<<.,..
-0000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000430: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 41 00 ..............A.
-0000440: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000450: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000470: 00 00 00 00 00 80 ce 01 00 00 00 00 00 00 8d dd ................
-0000480: 4d 34 37 31 42 32 38 37 33 47 42 30 2d 43 46 38 M471B2873GB0-CF8
-0000490: 20 20 00 00 80 ce 00 00 00 00 00 00 00 00 00 00 ..............
-00004a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00004b0: 01 a0 04 38 20 06 57 31 00 00 00 00 00 00 00 00 ...8 .W1........
-00004c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00004d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00004e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00004f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000500: 92 10 0b 03 03 19 00 01 03 52 01 08 0c 00 3e 00 .........R....>.
-0000510: 69 78 69 30 69 11 20 89 00 05 3c 3c 00 f0 83 01 ixi0i. ...<<....
-0000520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000530: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 21 00 ..............!.
-0000540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-0000570: 00 00 00 00 00 80 ce 01 00 00 00 00 00 00 4c db ..............L.
-0000580: 4d 34 37 31 42 35 37 37 33 43 48 53 2d 43 48 39 M471B5773CHS-CH9
-0000590: 20 20 00 00 80 ce 00 00 00 53 30 58 44 30 30 30 .......S0XD000
-00005a0: 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00005b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00005c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00005d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00005e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
-00005f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
diff --git a/src/mainboard/samsung/lumpy/spd/lumpy.spd.hex b/src/mainboard/samsung/lumpy/spd/lumpy.spd.hex
new file mode 100644
index 0000000000..abd3ebf290
--- /dev/null
+++ b/src/mainboard/samsung/lumpy/spd/lumpy.spd.hex
@@ -0,0 +1,96 @@
+92 10 0b 03 02 11 00 01 03 52 01 08 0c 00 3e 00
+69 78 69 30 69 11 20 89 70 03 3c 3c 00 f0 83 01
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 0f 11 21 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 80 ce 01 00 00 00 00 00 00 d3 0d
+4d 34 37 31 42 32 38 37 33 46 48 53 2d 43 48 39
+20 20 00 00 80 ce 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+92 10 0b 03 02 11 00 01 03 52 01 08 0f 00 1e 00
+69 78 69 3c 69 11 2c 95 70 03 3c 3c 01 2c 83 01
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 0f 11 21 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 80 ce 02 10 31 81 1d 77 ce 91 a4
+4d 34 37 31 42 32 38 37 33 46 48 53 2d 43 46 38
+20 20 00 00 80 ce 00 00 00 53 47 30 44 35 31 31
+01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+01 a0 04 38 20 06 57 31 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+92 10 0b 03 03 19 00 01 03 52 01 08 0c 00 7e 00
+69 78 69 30 69 11 20 89 00 05 3c 3c 00 f0 83 81
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 0f 11 41 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 02 fe 00 00 00 00 00 00 00 29 2b
+45 42 4a 32 30 55 46 38 42 44 55 30 2d 44 4a 2d
+46 20 30 20 02 fe 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+92 11 0b 03 02 11 00 01 03 11 01 08 0c 00 3e 00
+69 78 69 30 69 11 20 89 70 03 3c 3c 00 f0 83 01
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 0f 11 41 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 80 ce 01 00 00 00 00 00 00 cf 74
+4d 34 37 31 42 32 38 37 33 47 42 30 2d 43 48 39
+20 20 00 00 80 ce 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+92 11 0b 03 02 11 00 01 03 11 01 08 0f 00 1e 00
+69 78 69 3c 69 11 2c 95 70 03 3c 3c 01 2c 83 01
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 0f 11 41 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 80 ce 01 00 00 00 00 00 00 8d dd
+4d 34 37 31 42 32 38 37 33 47 42 30 2d 43 46 38
+20 20 00 00 80 ce 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+01 a0 04 38 20 06 57 31 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+92 10 0b 03 03 19 00 01 03 52 01 08 0c 00 3e 00
+69 78 69 30 69 11 20 89 00 05 3c 3c 00 f0 83 01
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 0f 11 21 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 80 ce 01 00 00 00 00 00 00 4c db
+4d 34 37 31 42 35 37 37 33 43 48 53 2d 43 48 39
+20 20 00 00 80 ce 00 00 00 53 30 58 44 30 30 30
+01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00