diff options
Diffstat (limited to 'src/mainboard/google/gru/sdram_configs.c')
-rw-r--r-- | src/mainboard/google/gru/sdram_configs.c | 26 |
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], + ¶ms, sizeof(params)) != sizeof(params)) +#else if (cbfs_boot_load_struct(sdram_configs[get_sdram_index()], ¶ms, sizeof(params)) != sizeof(params)) +#endif die("Cannot load SDRAM parameter file!"); return ¶ms; } |