From 1a395728dfdb6a32757ba7e120eb0e62d503e447 Mon Sep 17 00:00:00 2001
From: Eren Peng <peng.eren@inventec.corp-partner.google.com>
Date: Thu, 25 Apr 2024 13:25:05 +0800
Subject: mb/google/brox/var/greenbayupoc: Configure board for SODIMM use

Configure SODIMM settings for greenbayupoc. The SODIMM settings are
copied from mainboard/google/brya/variants/baseboard/brask/memory.c.

BUG=b:336955026, b:332230842
TEST=emerge-brox coreboot chromeos-bootimage, flash and boot to OS
using Hynix HMAG56EXNSA051N 4G and Micron MTA8AFT1G64HZ-3G2R1 8G SODIMM.

Change-Id: I1552cadfa81c48fe561947ded078bcca2e6bc6ad
Signed-off-by: Eren Peng <peng.eren@inventec.corp-partner.google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/82085
Reviewed-by: Derek Huang <derekhuang@google.com>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Reviewed-by: Eric Lai <ericllai@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
---
 src/mainboard/google/brox/Kconfig                  |  3 +-
 .../google/brox/variants/greenbayupoc/Makefile.mk  |  3 ++
 .../google/brox/variants/greenbayupoc/memory.c     | 42 ++++++++++++++++++++++
 .../brox/variants/greenbayupoc/memory/Makefile.mk  |  5 ---
 .../greenbayupoc/memory/dram_id.generated.txt      |  6 ----
 .../greenbayupoc/memory/mem_parts_used.txt         | 11 ------
 .../brox/variants/greenbayupoc/overridetree.cb     |  1 +
 7 files changed, 48 insertions(+), 23 deletions(-)
 create mode 100644 src/mainboard/google/brox/variants/greenbayupoc/Makefile.mk
 create mode 100644 src/mainboard/google/brox/variants/greenbayupoc/memory.c
 delete mode 100644 src/mainboard/google/brox/variants/greenbayupoc/memory/Makefile.mk
 delete mode 100644 src/mainboard/google/brox/variants/greenbayupoc/memory/dram_id.generated.txt
 delete mode 100644 src/mainboard/google/brox/variants/greenbayupoc/memory/mem_parts_used.txt

(limited to 'src')

diff --git a/src/mainboard/google/brox/Kconfig b/src/mainboard/google/brox/Kconfig
index efe10d28a2..908612d68b 100644
--- a/src/mainboard/google/brox/Kconfig
+++ b/src/mainboard/google/brox/Kconfig
@@ -44,7 +44,7 @@ config BOARD_GOOGLE_BASEBOARD_BROX
 	select DRIVERS_AUDIO_SOF
 	select DRIVERS_GFX_GENERIC
 	select HAVE_SLP_S0_GATE
-	select MEMORY_SOLDERDOWN
+	select MEMORY_SOLDERDOWN if !BOARD_GOOGLE_GREENBAYUPOC
 	select SOC_INTEL_COMMON_BLOCK_IPU
 	select SOC_INTEL_CRASHLOG
 	select SOC_INTEL_RAPTORLAKE
@@ -70,6 +70,7 @@ config BOARD_GOOGLE_LOTSO
 
 config BOARD_GOOGLE_GREENBAYUPOC
 	select BOARD_GOOGLE_BASEBOARD_BROX
+	select MEMORY_SODIMM
 
 if BOARD_GOOGLE_BROX_COMMON
 
diff --git a/src/mainboard/google/brox/variants/greenbayupoc/Makefile.mk b/src/mainboard/google/brox/variants/greenbayupoc/Makefile.mk
new file mode 100644
index 0000000000..be05cd4e5c
--- /dev/null
+++ b/src/mainboard/google/brox/variants/greenbayupoc/Makefile.mk
@@ -0,0 +1,3 @@
+## SPDX-License-Identifier: GPL-2.0-only
+
+romstage-y += memory.c
diff --git a/src/mainboard/google/brox/variants/greenbayupoc/memory.c b/src/mainboard/google/brox/variants/greenbayupoc/memory.c
new file mode 100644
index 0000000000..3cfa79e950
--- /dev/null
+++ b/src/mainboard/google/brox/variants/greenbayupoc/memory.c
@@ -0,0 +1,42 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include <baseboard/variants.h>
+#include <soc/romstage.h>
+
+static const struct mb_cfg ddr4_mem_config = {
+	.type = MEM_TYPE_DDR4,
+
+	.rcomp = {
+		.resistor = 100,
+		.targets = {50, 20, 25, 25, 25},
+	},
+
+	.LpDdrDqDqsReTraining = 1,
+
+	.ect = 1,
+
+	.UserBd = BOARD_TYPE_MOBILE,
+
+	.ddr_config = {
+		.dq_pins_interleaved = 0,
+	},
+};
+
+const struct mb_cfg *variant_memory_params(void)
+{
+	return &ddr4_mem_config;
+}
+
+bool variant_is_half_populated(void)
+{
+	return false;
+}
+
+void variant_get_spd_info(struct mem_spd *spd_info)
+{
+	spd_info->topo = MEM_TOPO_DIMM_MODULE;
+	spd_info->smbus[0].addr_dimm[0] = 0x50;
+	spd_info->smbus[0].addr_dimm[1] = 0x51;
+	spd_info->smbus[1].addr_dimm[0] = 0x52;
+	spd_info->smbus[1].addr_dimm[1] = 0x53;
+}
diff --git a/src/mainboard/google/brox/variants/greenbayupoc/memory/Makefile.mk b/src/mainboard/google/brox/variants/greenbayupoc/memory/Makefile.mk
deleted file mode 100644
index eace2e443e..0000000000
--- a/src/mainboard/google/brox/variants/greenbayupoc/memory/Makefile.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-# This is an auto-generated file. Do not edit!!
-# Add memory parts in mem_parts_used.txt and run spd_tools to regenerate.
-
-SPD_SOURCES = placeholder
diff --git a/src/mainboard/google/brox/variants/greenbayupoc/memory/dram_id.generated.txt b/src/mainboard/google/brox/variants/greenbayupoc/memory/dram_id.generated.txt
deleted file mode 100644
index 2e0f37a10a..0000000000
--- a/src/mainboard/google/brox/variants/greenbayupoc/memory/dram_id.generated.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-or-later
-# This is an auto-generated file. Do not edit!!
-# Generated by:
-# ./util/spd_tools/bin/part_id_gen ADL lp5 src/mainboard/google/brox/variants/brox/memory src/mainboard/google/brox/variants/brox/memory/mem_parts_used.txt
-
-DRAM Part Name                 ID to assign
diff --git a/src/mainboard/google/brox/variants/greenbayupoc/memory/mem_parts_used.txt b/src/mainboard/google/brox/variants/greenbayupoc/memory/mem_parts_used.txt
deleted file mode 100644
index 2499005682..0000000000
--- a/src/mainboard/google/brox/variants/greenbayupoc/memory/mem_parts_used.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-# This is a CSV file containing a list of memory parts used by this variant.
-# One part per line with an optional fixed ID in column 2.
-# Only include a fixed ID if it is required for legacy reasons!
-# Generated IDs are dependent on the order of parts in this file,
-# so new parts must always be added at the end of the file!
-#
-# Generate an updated Makefile.mk and dram_id.generated.txt by running the
-# part_id_gen tool from util/spd_tools.
-# See util/spd_tools/README.md for more details and instructions.
-
-# Part Name
diff --git a/src/mainboard/google/brox/variants/greenbayupoc/overridetree.cb b/src/mainboard/google/brox/variants/greenbayupoc/overridetree.cb
index ee65135d88..aeb4de594b 100644
--- a/src/mainboard/google/brox/variants/greenbayupoc/overridetree.cb
+++ b/src/mainboard/google/brox/variants/greenbayupoc/overridetree.cb
@@ -9,6 +9,7 @@ end
 chip soc/intel/alderlake
 
 	device domain 0 on
+		device ref smbus on end
 	end
 
 end
-- 
cgit v1.2.3