mirror of
https://github.com/fail0verflow/switch-coreboot.git
synced 2025-05-04 01:39:18 -04:00
We found some boards are not stable when sdram is run at 933Mhz.
Before we can fix it, we need to lower the sdram frequency to 800MHz.
In this patch we modify the DQS delay from 0x280 to 0x260 and extend
the DQS window.
BRANCH=None
BUG=chrome-os-partner:56940
TEST=Booted Kevin.
Change-Id: I68561c4aa4d9ab66acfa3515a42d696157aff759
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: 877a7f6ad2
Original-Change-Id: I5eab6bbe96f0dae095c5353403292022e7a25421
Original-Signed-off-by: Lin Huang <hl@rock-chips.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/382724
Original-Commit-Ready: Douglas Anderson <dianders@chromium.org>
Original-Tested-by: Douglas Anderson <dianders@chromium.org>
Original-Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-on: https://review.coreboot.org/16709
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
78 lines
1.7 KiB
C
78 lines
1.7 KiB
C
/*
|
|
* This file is part of the coreboot project.
|
|
*
|
|
* Copyright 2014 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.
|
|
*/
|
|
|
|
#include <arch/io.h>
|
|
#include <boardid.h>
|
|
#include <cbfs.h>
|
|
#include <console/console.h>
|
|
#include <gpio.h>
|
|
#include <soc/sdram.h>
|
|
#include <string.h>
|
|
#include <types.h>
|
|
|
|
static const char *sdram_configs[] = {
|
|
"sdram-lpddr3-hynix-4GB-200",
|
|
"sdram-lpddr3-hynix-4GB-666",
|
|
"sdram-lpddr3-hynix-4GB-800",
|
|
"sdram-lpddr3-hynix-4GB-666-no-odt",
|
|
"sdram-lpddr3-hynix-4GB-800-no-odt",
|
|
"sdram-lpddr3-hynix-4GB-933",
|
|
};
|
|
|
|
static struct rk3399_sdram_params params;
|
|
|
|
enum dram_speeds {
|
|
dram_200MHz = 0,
|
|
dram_666MHz = 1,
|
|
dram_800MHz = 2,
|
|
dram_666MHz_NO_ODT = 3,
|
|
dram_800MHz_NO_ODT = 4,
|
|
dram_933MHz = 5,
|
|
};
|
|
|
|
static enum dram_speeds get_sdram_index(void)
|
|
{
|
|
uint32_t id;
|
|
|
|
id = board_id();
|
|
|
|
if (IS_ENABLED(CONFIG_BOARD_GOOGLE_KEVIN))
|
|
switch (id) {
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
return dram_200MHz;
|
|
case 3:
|
|
return dram_666MHz_NO_ODT;
|
|
default:
|
|
return dram_800MHz;
|
|
}
|
|
|
|
if (IS_ENABLED(CONFIG_BOARD_GOOGLE_GRU))
|
|
switch (id) {
|
|
case 0:
|
|
return dram_800MHz_NO_ODT;
|
|
default:
|
|
return dram_800MHz;
|
|
}
|
|
}
|
|
|
|
const struct rk3399_sdram_params *get_sdram_config()
|
|
{
|
|
if (cbfs_boot_load_struct(sdram_configs[get_sdram_index()],
|
|
¶ms, sizeof(params)) != sizeof(params))
|
|
die("Cannot load SDRAM parameter file!");
|
|
return ¶ms;
|
|
}
|