summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mainboard/google/kahlee/Kconfig1
-rw-r--r--src/mainboard/google/kahlee/romstage.c10
-rw-r--r--src/mainboard/google/kahlee/variants/baseboard/Makefile.inc1
-rw-r--r--src/mainboard/google/kahlee/variants/baseboard/include/baseboard/variants.h1
-rw-r--r--src/mainboard/google/kahlee/variants/baseboard/memory.c31
-rw-r--r--src/mainboard/google/kahlee/variants/grunt/Makefile.inc16
-rw-r--r--src/mainboard/google/kahlee/variants/grunt/spd/Makefile.inc26
-rw-r--r--src/mainboard/google/kahlee/variants/grunt/spd/empty.spd.hex32
-rw-r--r--src/mainboard/google/kahlee/variants/kahlee/Makefile.inc1
-rw-r--r--src/mainboard/google/kahlee/variants/kahlee/include/variant/gpio.h11
-rw-r--r--src/mainboard/google/kahlee/variants/kahlee/memory.c20
11 files changed, 141 insertions, 9 deletions
diff --git a/src/mainboard/google/kahlee/Kconfig b/src/mainboard/google/kahlee/Kconfig
index 722229d6e9..690faa9e0b 100644
--- a/src/mainboard/google/kahlee/Kconfig
+++ b/src/mainboard/google/kahlee/Kconfig
@@ -24,6 +24,7 @@ config BOARD_GOOGLE_BASEBOARD_KAHLEE
select EC_GOOGLE_CHROMEEC_LPC
select HAVE_OPTION_TABLE
select HAVE_ACPI_TABLES
+ select GENERIC_SPD_BIN
select GFXUMA
select GOOGLE_SMBIOS_MAINBOARD_VERSION
select MAINBOARD_HAS_CHROMEOS
diff --git a/src/mainboard/google/kahlee/romstage.c b/src/mainboard/google/kahlee/romstage.c
index 9a7f168f25..8f234a31bf 100644
--- a/src/mainboard/google/kahlee/romstage.c
+++ b/src/mainboard/google/kahlee/romstage.c
@@ -1,7 +1,7 @@
/*
* This file is part of the coreboot project.
*
- * Copyright (C) 2015-2016 Advanced Micro Devices, Inc.
+ * Copyright (C) 2017 Advanced Micro Devices, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -12,3 +12,11 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
+
+#include <amdblocks/dimm_spd.h>
+#include <baseboard/variants.h>
+
+int mainboard_read_spd(uint8_t spdAddress, char *buf, size_t len)
+{
+ return variant_mainboard_read_spd(spdAddress, buf, len);
+}
diff --git a/src/mainboard/google/kahlee/variants/baseboard/Makefile.inc b/src/mainboard/google/kahlee/variants/baseboard/Makefile.inc
index 94f388912c..83eec96be7 100644
--- a/src/mainboard/google/kahlee/variants/baseboard/Makefile.inc
+++ b/src/mainboard/google/kahlee/variants/baseboard/Makefile.inc
@@ -19,4 +19,3 @@ romstage-y += gpio.c
romstage-y += memory.c
ramstage-y += gpio.c
-ramstage-y += memory.c
diff --git a/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/variants.h
index 45d287a11c..1d38bd4f92 100644
--- a/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/variants.h
+++ b/src/mainboard/google/kahlee/variants/baseboard/include/baseboard/variants.h
@@ -24,5 +24,6 @@
const GPIO_CONTROL *get_gpio_table(void);
const struct sci_source *get_gpe_table(size_t *num);
uint8_t variant_memory_sku(void);
+int variant_mainboard_read_spd(uint8_t spdAddress, char *buf, size_t len);
#endif /* __BASEBOARD_VARIANTS_H__ */
diff --git a/src/mainboard/google/kahlee/variants/baseboard/memory.c b/src/mainboard/google/kahlee/variants/baseboard/memory.c
index daa5ef9160..b8ec917633 100644
--- a/src/mainboard/google/kahlee/variants/baseboard/memory.c
+++ b/src/mainboard/google/kahlee/variants/baseboard/memory.c
@@ -13,9 +13,12 @@
* GNU General Public License for more details.
*/
-#include <gpio.h> /* src/include/gpio.h */
#include <baseboard/variants.h>
+#include <console/console.h>
+#include <gpio.h> /* src/include/gpio.h */
+#include <spd_bin.h>
#include <variant/gpio.h>
+#include <amdblocks/dimm_spd.h>
uint8_t __attribute__((weak)) variant_memory_sku(void)
{
@@ -28,3 +31,29 @@ uint8_t __attribute__((weak)) variant_memory_sku(void)
return gpio_base2_value(pads, ARRAY_SIZE(pads));
}
+
+int __attribute__((weak)) variant_mainboard_read_spd(uint8_t spdAddress,
+ char *buf, size_t len)
+{
+ struct region_device spd_rdev;
+ u8 spd_index = variant_memory_sku();
+
+ printk(BIOS_INFO, "%s SPD index %d\n", __func__, spd_index);
+
+ if (get_spd_cbfs_rdev(&spd_rdev, spd_index) < 0) {
+ printk(BIOS_ERR, "Error: spd.bin not found\n");
+ return -1;
+ }
+
+ if (len != region_device_sz(&spd_rdev)) {
+ printk(BIOS_ERR, "Error: spd.bin is not the correct size\n");
+ return -1;
+ }
+
+ if (rdev_readat(&spd_rdev, buf, 0, len) != len) {
+ printk(BIOS_ERR, "Error: couldn't read spd.bin\n");
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/src/mainboard/google/kahlee/variants/grunt/Makefile.inc b/src/mainboard/google/kahlee/variants/grunt/Makefile.inc
new file mode 100644
index 0000000000..319ff13b77
--- /dev/null
+++ b/src/mainboard/google/kahlee/variants/grunt/Makefile.inc
@@ -0,0 +1,16 @@
+#
+# This file is part of the coreboot project.
+#
+# Copyright (C) 2017 Google, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+
+subdirs-y += spd
diff --git a/src/mainboard/google/kahlee/variants/grunt/spd/Makefile.inc b/src/mainboard/google/kahlee/variants/grunt/spd/Makefile.inc
new file mode 100644
index 0000000000..c199629b78
--- /dev/null
+++ b/src/mainboard/google/kahlee/variants/grunt/spd/Makefile.inc
@@ -0,0 +1,26 @@
+##
+## This file is part of the coreboot project.
+##
+## Copyright (C) 2014 Google Inc.
+## Copyright (C) 2015 Intel Corporation.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; version 2 of the License.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+
+LIB_SPD_DEPS = $(foreach f, $(SPD_SOURCES), src/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/spd/$(f).spd.hex)
+
+SPD_SOURCES = empty # 0b000
+SPD_SOURCES += empty # 1b001
+SPD_SOURCES += empty # 2b010
+SPD_SOURCES += empty # 3b011
+SPD_SOURCES += empty # 4b100
+SPD_SOURCES += empty # 5b101
+SPD_SOURCES += empty # 6b110
+SPD_SOURCES += empty # 7b111
diff --git a/src/mainboard/google/kahlee/variants/grunt/spd/empty.spd.hex b/src/mainboard/google/kahlee/variants/grunt/spd/empty.spd.hex
new file mode 100644
index 0000000000..67b46cd239
--- /dev/null
+++ b/src/mainboard/google/kahlee/variants/grunt/spd/empty.spd.hex
@@ -0,0 +1,32 @@
+00 00 00 00 00 00 00 00 00 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 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 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 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
diff --git a/src/mainboard/google/kahlee/variants/kahlee/Makefile.inc b/src/mainboard/google/kahlee/variants/kahlee/Makefile.inc
index c5aab8ea27..83eec96be7 100644
--- a/src/mainboard/google/kahlee/variants/kahlee/Makefile.inc
+++ b/src/mainboard/google/kahlee/variants/kahlee/Makefile.inc
@@ -16,5 +16,6 @@
bootblock-y += gpio.c
romstage-y += gpio.c
+romstage-y += memory.c
ramstage-y += gpio.c
diff --git a/src/mainboard/google/kahlee/variants/kahlee/include/variant/gpio.h b/src/mainboard/google/kahlee/variants/kahlee/include/variant/gpio.h
index 28643fb08a..e7097c2f55 100644
--- a/src/mainboard/google/kahlee/variants/kahlee/include/variant/gpio.h
+++ b/src/mainboard/google/kahlee/variants/kahlee/include/variant/gpio.h
@@ -19,14 +19,13 @@
#ifndef __ACPI__
#include <soc/gpio.h>
-#define MEM_CONFIG0 GPIO_135
-#define MEM_CONFIG1 GPIO_140
-#define MEM_CONFIG2 GPIO_144
/*
- * Kahlee only uses 3 GPIOs to determine memory configuration, but other
- * variants use 4. MEM_CONFIG3 must be defined so that the weak baseboard
- * version of the variant_board_id() function can compile.
+ * Kahlee doesn't use MEM_CONFIG GPIOs, but they are required to build
+ * the baseboard weak memory_sku function.
*/
+#define MEM_CONFIG0 0
+#define MEM_CONFIG1 0
+#define MEM_CONFIG2 0
#define MEM_CONFIG3 0
/* SPI Write protect */
diff --git a/src/mainboard/google/kahlee/variants/kahlee/memory.c b/src/mainboard/google/kahlee/variants/kahlee/memory.c
new file mode 100644
index 0000000000..1c7c8a11f3
--- /dev/null
+++ b/src/mainboard/google/kahlee/variants/kahlee/memory.c
@@ -0,0 +1,20 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <baseboard/variants.h>
+
+int variant_mainboard_read_spd(uint8_t spdAddress, char *buf, size_t len)
+{
+ /* Return error so the default I2C SPD read is used */
+ return -1;
+}