diff options
Diffstat (limited to 'src/mainboard/google/glados/spd')
-rw-r--r-- | src/mainboard/google/glados/spd/Makefile.inc | 39 | ||||
-rw-r--r-- | src/mainboard/google/glados/spd/spd.c | 21 |
2 files changed, 10 insertions, 50 deletions
diff --git a/src/mainboard/google/glados/spd/Makefile.inc b/src/mainboard/google/glados/spd/Makefile.inc deleted file mode 100644 index 0d6da9ebcc..0000000000 --- a/src/mainboard/google/glados/spd/Makefile.inc +++ /dev/null @@ -1,39 +0,0 @@ -## -## This file is part of the coreboot project. -## -## Copyright (C) 2015 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. -## - -romstage-y += spd.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/spd/spd.c b/src/mainboard/google/glados/spd/spd.c index 251b6de3cb..391b702172 100644 --- a/src/mainboard/google/glados/spd/spd.c +++ b/src/mainboard/google/glados/spd/spd.c @@ -22,8 +22,7 @@ #include <soc/pei_data.h> #include <soc/romstage.h> #include <string.h> - -#include "../gpio.h" +#include <baseboard/variant.h> #include "spd.h" static void mainboard_print_spd_info(uint8_t spd[]) @@ -77,6 +76,12 @@ static void mainboard_print_spd_info(uint8_t spd[]) } } +__weak int is_dual_channel(const int spd_index) +{ + /* default to dual channel */ + return 1; +} + /* Copy SPD data for on-board memory */ void mainboard_fill_spd_data(struct pei_data *pei_data) { @@ -84,14 +89,7 @@ void mainboard_fill_spd_data(struct pei_data *pei_data) size_t spd_file_len; int spd_index; - gpio_t spd_gpios[] = { - GPIO_MEM_CONFIG_0, - GPIO_MEM_CONFIG_1, - GPIO_MEM_CONFIG_2, - GPIO_MEM_CONFIG_3, - }; - - spd_index = gpio_base2_value(spd_gpios, ARRAY_SIZE(spd_gpios)); + spd_index = pei_data->mem_cfg_id; printk(BIOS_INFO, "SPD index %d\n", spd_index); /* Load SPD data from CBFS */ @@ -113,7 +111,8 @@ void mainboard_fill_spd_data(struct pei_data *pei_data) /* Assume same memory in both channels */ spd_index *= SPD_LEN; memcpy(pei_data->spd_data[0][0], spd_file + spd_index, SPD_LEN); - memcpy(pei_data->spd_data[1][0], spd_file + spd_index, SPD_LEN); + if (is_dual_channel(spd_index)) + memcpy(pei_data->spd_data[1][0], spd_file + spd_index, SPD_LEN); /* Make sure a valid SPD was found */ if (pei_data->spd_data[0][0][0] == 0) |