aboutsummaryrefslogtreecommitdiff
path: root/src/mainboard/google/gru/sdram_configs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainboard/google/gru/sdram_configs.c')
-rw-r--r--src/mainboard/google/gru/sdram_configs.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mainboard/google/gru/sdram_configs.c b/src/mainboard/google/gru/sdram_configs.c
index aeb355e986..1cfef06189 100644
--- a/src/mainboard/google/gru/sdram_configs.c
+++ b/src/mainboard/google/gru/sdram_configs.c
@@ -23,13 +23,22 @@
#include <types.h>
static const char *sdram_configs[] = {
+#if IS_ENABLED(CONFIG_BOARD_GOOGLE_BOB)
+ "sdram-lpddr3-samsung-2GB-24EB",
+ "sdram-lpddr3-micron-2GB",
+ "sdram-lpddr3-samsung-4GB-04EB",
+ "sdram-lpddr3-micron-4GB",
+#else
"sdram-lpddr3-hynix-4GB-666",
"sdram-lpddr3-hynix-4GB-800",
"sdram-lpddr3-hynix-4GB-933",
+#endif
};
static struct rk3399_sdram_params params;
+#if IS_ENABLED(CONFIG_BOARD_GOOGLE_GRU) || \
+ IS_ENABLED(CONFIG_BOARD_GOOGLE_KEVIN)
enum dram_speeds {
dram_666MHz = 0,
dram_800MHz = 1,
@@ -53,11 +62,28 @@ static enum dram_speeds get_sdram_index(void)
if (IS_ENABLED(CONFIG_BOARD_GOOGLE_GRU))
return dram_800MHz;
}
+#endif
const struct rk3399_sdram_params *get_sdram_config()
{
+#if IS_ENABLED(CONFIG_BOARD_GOOGLE_BOB)
+ u32 ramcode = ram_code();
+
+ /*
+ * through schematic, ramid arrange like following:
+ * 0: sdram-lpddr3-samsung-2GB-24EB
+ * 2: sdram-lpddr3-micron-2GB
+ * 4: sdram-lpddr3-samsung-4GB-04EB
+ * 6: sdram-lpddr3-micron-4GB
+ */
+ ramcode = ramcode / 2;
+
+ if (cbfs_boot_load_struct(sdram_configs[ramcode],
+ &params, sizeof(params)) != sizeof(params))
+#else
if (cbfs_boot_load_struct(sdram_configs[get_sdram_index()],
&params, sizeof(params)) != sizeof(params))
+#endif
die("Cannot load SDRAM parameter file!");
return &params;
}