summaryrefslogtreecommitdiff
path: root/src/mainboard/google/snow/smdk5250_spl.c
diff options
context:
space:
mode:
authorRonald G. Minnich <rminnich@gmail.com>2012-12-10 16:13:43 -0800
committerRonald G. Minnich <rminnich@gmail.com>2012-12-12 06:01:26 +0100
commitf89e6b22c0c42983f94316d29cf4f2f73a6d2b84 (patch)
tree5410b4d3885a8878a51f646f2873e8d3dd91f130 /src/mainboard/google/snow/smdk5250_spl.c
parent3600e960b603a610064c6024c275e149944df1ca (diff)
downloadcoreboot-f89e6b22c0c42983f94316d29cf4f2f73a6d2b84.tar.xz
Add minimal mainboard support for snow
This is the minimal set of sources that allow the board to build. These need to be filled in with actual code. But if we get these in upstream we can stop working against a WIP patch. Change-Id: I9347a573bb40761f6a12be3ee8febe3ca4be55a3 Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Reviewed-on: http://review.coreboot.org/2018 Tested-by: build bot (Jenkins)
Diffstat (limited to 'src/mainboard/google/snow/smdk5250_spl.c')
-rw-r--r--src/mainboard/google/snow/smdk5250_spl.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/mainboard/google/snow/smdk5250_spl.c b/src/mainboard/google/snow/smdk5250_spl.c
new file mode 100644
index 0000000000..204e41106b
--- /dev/null
+++ b/src/mainboard/google/snow/smdk5250_spl.c
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2012 The Chromium OS Authors.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <arch/gpio.h>
+#include <cpu/samsung/exynos5-common/spl.h>
+#include <cpu/samsung/exynos5250/gpio.h>
+
+#define SIGNATURE 0xdeadbeef
+
+/* Parameters of early board initialization in SPL */
+static struct spl_machine_param machine_param
+ __attribute__((section(".machine_param"))) = {
+ .signature = SIGNATURE,
+ .version = 1,
+ .params = "vmubfasirMw",
+ .size = sizeof(machine_param),
+
+ .mem_iv_size = 0x1f,
+ .mem_type = DDR_MODE_DDR3,
+
+ /*
+ * Set uboot_size to 0x100000 bytes.
+ *
+ * This is an overly conservative value chosen to accommodate all
+ * possible U-Boot image. You are advised to set this value to a
+ * smaller realistic size via scripts that modifies the .machine_param
+ * section of output U-Boot image.
+ */
+ .uboot_size = 0x100000,
+
+ .boot_source = BOOT_MODE_OM,
+ .frequency_mhz = 800,
+ .arm_freq_mhz = 1700,
+ .serial_base = 0x12c30000,
+ .i2c_base = 0x12c60000,
+ .board_rev_gpios = GPIO_D00 | (GPIO_D01 << 16),
+ .mem_manuf = MEM_MANUF_SAMSUNG,
+ .bad_wake_gpio = GPIO_Y10,
+};
+
+struct spl_machine_param *spl_get_machine_params(void)
+{
+ if (machine_param.signature != SIGNATURE) {
+ /* TODO: Call panic() here */
+ while (1)
+ ;
+ }
+
+ return &machine_param;
+}
+
+int board_wakeup_permitted(void)
+{
+ struct spl_machine_param *param = spl_get_machine_params();
+ const int gpio = param->bad_wake_gpio;
+ int is_bad_wake;
+
+ /* We're a bad wakeup if the gpio was defined and was high */
+ is_bad_wake = ((gpio != -1) && gpio_get_value(gpio));
+
+ return !is_bad_wake;
+}