Patrick Georgi (pgeorgi(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/9352
-gerrit
commit 1315b60dc975aecab84b3f7803cec92d18b35977
Author: Vadim Bendebury <vbendeb(a)chromium.org>
Date: Wed Oct 15 16:13:45 2014 -0700
bg4cd: add uart driver skeleton
This adds the file to be filled up with the uart driver implementation
for bg4cd.
The console driver structure when required is provided by
src/console/uart_wrapper.c.
BRANCH=none
BUG=chrome-os-partner:32772
TEST=none yet, this file is not event being compiled
Change-Id: I9bf02f9d8e253764faa3a3b0424736cba66a8cda
Signed-off-by: Patrick Georgi <pgeorgi(a)chromium.org>
Original-Commit-Id: 99b13bf9da92c772621094e5da31277362388b1f
Original-Change-Id: I73c12ddcd6f5099cc2196820452e714eeb736cdc
Original-Signed-off-by: Vadim Bendebury <vbendeb(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/223595
Original-Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/soc/marvell/bg4cd/uart.c | 47 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/src/soc/marvell/bg4cd/uart.c b/src/soc/marvell/bg4cd/uart.c
new file mode 100644
index 0000000..3de37c0
--- /dev/null
+++ b/src/soc/marvell/bg4cd/uart.c
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <uart.h>
+
+void uart_init(void)
+{
+}
+
+void uart_tx_byte(unsigned char data)
+{
+}
+
+int uart_can_rx_byte(void)
+{
+ return 0;
+}
+
+void uart_tx_flush(void)
+{
+}
+
+unsigned char uart_rx_byte(void)
+{
+ return '\0';
+}
+
+/* Not really needed on this chip, but helps to keep coreboot table happy. */
+u32 uartmem_getbaseaddr(void)
+{
+ return 0;
+}
Patrick Georgi (pgeorgi(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/9351
-gerrit
commit 179e8f227cb16ae73dc546f629c1f96c44dc5e79
Author: Daisuke Nojiri <dnojiri(a)chromium.org>
Date: Wed Oct 8 11:38:52 2014 -0700
cosmos: add template for soc and board files
This adds board and soc files as a template for cosmos.
BUG=chrome-os-partner:32772
BRANCH=none
TEST=Built coreboot for cosmos and veyron_pinky.
Signed-off-by: Daisuke Nojiri <dnojiri(a)chromium.org>
Change-Id: I6e17058afaa629c6aa70c2d195230dba782af526
Signed-off-by: Patrick Georgi <pgeorgi(a)chromium.org>
Original-Commit-Id: fd9dbcf1023a79921c8501bbe09969d65ca9e742
Original-Change-Id: I676bdf460f5dd996dcce1fc422a69882798bc112
Original-Reviewed-on: https://chromium-review.googlesource.com/222050
Original-Reviewed-by: Vadim Bendebury <vbendeb(a)chromium.org>
Original-Reviewed-by: Daisuke Nojiri <dnojiri(a)chromium.org>
Original-Tested-by: Daisuke Nojiri <dnojiri(a)chromium.org>
Original-Commit-Queue: Daisuke Nojiri <dnojiri(a)chromium.org>
---
configs/config.cosmos | 6 +++
configs/fwserial.cosmos | 1 +
src/mainboard/google/Kconfig | 3 ++
src/mainboard/google/cosmos/Kconfig | 56 +++++++++++++++++++++
src/mainboard/google/cosmos/Makefile.inc | 40 +++++++++++++++
src/mainboard/google/cosmos/boardid.c | 25 ++++++++++
src/mainboard/google/cosmos/bootblock.c | 24 +++++++++
src/mainboard/google/cosmos/chromeos.c | 41 ++++++++++++++++
src/mainboard/google/cosmos/devicetree.cb | 23 +++++++++
src/mainboard/google/cosmos/mainboard.c | 38 ++++++++++++++
src/mainboard/google/cosmos/memlayout.ld | 1 +
src/mainboard/google/cosmos/reset.c | 26 ++++++++++
src/mainboard/google/cosmos/romstage.c | 82 +++++++++++++++++++++++++++++++
src/soc/Kconfig | 1 +
src/soc/Makefile.inc | 1 +
src/soc/marvell/Kconfig | 20 ++++++++
src/soc/marvell/Makefile.inc | 20 ++++++++
src/soc/marvell/bg4cd/Kconfig | 52 ++++++++++++++++++++
src/soc/marvell/bg4cd/Makefile.inc | 47 ++++++++++++++++++
src/soc/marvell/bg4cd/bootblock.c | 24 +++++++++
src/soc/marvell/bg4cd/cbmem.c | 26 ++++++++++
src/soc/marvell/bg4cd/i2c.c | 30 +++++++++++
src/soc/marvell/bg4cd/i2c.h | 26 ++++++++++
src/soc/marvell/bg4cd/media.c | 25 ++++++++++
src/soc/marvell/bg4cd/memlayout.ld | 39 +++++++++++++++
src/soc/marvell/bg4cd/monotonic_timer.c | 24 +++++++++
src/soc/marvell/bg4cd/sdram.c | 26 ++++++++++
src/soc/marvell/bg4cd/sdram.h | 24 +++++++++
28 files changed, 751 insertions(+)
diff --git a/configs/config.cosmos b/configs/config.cosmos
new file mode 100644
index 0000000..d8cdac2
--- /dev/null
+++ b/configs/config.cosmos
@@ -0,0 +1,6 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_COSMOS=y
+CONFIG_COREBOOT_ROMSIZE_KB_1024=y
+CONFIG_FLASHMAP_OFFSET=0x00100000
+CONFIG_VBOOT2_VERIFY_FIRMWARE=y
+# CONFIG_CONSOLE_SERIAL is not set
\ No newline at end of file
diff --git a/configs/fwserial.cosmos b/configs/fwserial.cosmos
new file mode 100644
index 0000000..7e9268b
--- /dev/null
+++ b/configs/fwserial.cosmos
@@ -0,0 +1 @@
+CONFIG_CONSOLE_SERIAL=y
diff --git a/src/mainboard/google/Kconfig b/src/mainboard/google/Kconfig
index c193d81..22e8618 100644
--- a/src/mainboard/google/Kconfig
+++ b/src/mainboard/google/Kconfig
@@ -25,6 +25,8 @@ config BOARD_GOOGLE_BOLT
bool "Bolt"
config BOARD_GOOGLE_BUTTERFLY
bool "Butterfly"
+config BOARD_GOOGLE_COSMOS
+ bool "Cosmos"
config BOARD_GOOGLE_DAISY
bool "Daisy"
config BOARD_GOOGLE_FALCO
@@ -68,6 +70,7 @@ endchoice
source "src/mainboard/google/bolt/Kconfig"
source "src/mainboard/google/butterfly/Kconfig"
+source "src/mainboard/google/cosmos/Kconfig"
source "src/mainboard/google/daisy/Kconfig"
source "src/mainboard/google/falco/Kconfig"
source "src/mainboard/google/link/Kconfig"
diff --git a/src/mainboard/google/cosmos/Kconfig b/src/mainboard/google/cosmos/Kconfig
new file mode 100644
index 0000000..ccce6a8
--- /dev/null
+++ b/src/mainboard/google/cosmos/Kconfig
@@ -0,0 +1,56 @@
+##
+## 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.
+##
+## 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+##
+
+if BOARD_GOOGLE_COSMOS
+
+config BOARD_SPECIFIC_OPTIONS # dummy
+ def_bool y
+ select BOARD_ID_SUPPORT
+ select CHROMEOS
+ select CHROMEOS_VBNV_FLASH
+ select SOC_MARVELL_BG4CD
+ select MAINBOARD_HAS_BOOTBLOCK_INIT
+ select HAVE_HARD_RESET
+ select RETURN_FROM_VERSTAGE
+
+config MAINBOARD_DIR
+ string
+ default google/cosmos
+
+config MAINBOARD_PART_NUMBER
+ string
+ default "Cosmos"
+
+config MAINBOARD_VENDOR
+ string
+ default "Google"
+
+config VBOOT_RAMSTAGE_INDEX
+ hex
+ default 0x3
+
+config BOOT_MEDIA_SPI_BUS
+ int
+ default 2
+
+config DRAM_SIZE_MB
+ int
+ default 1024
+
+endif # BOARD_GOOGLE_COSMOS
diff --git a/src/mainboard/google/cosmos/Makefile.inc b/src/mainboard/google/cosmos/Makefile.inc
new file mode 100644
index 0000000..3e970fb
--- /dev/null
+++ b/src/mainboard/google/cosmos/Makefile.inc
@@ -0,0 +1,40 @@
+##
+## 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.
+##
+## 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+##
+bootblock-y += bootblock.c
+bootblock-y += boardid.c
+bootblock-y += chromeos.c
+bootblock-y += reset.c
+
+verstage-y += boardid.c
+verstage-y += chromeos.c
+verstage-y += reset.c
+
+romstage-y += boardid.c
+romstage-y += romstage.c
+romstage-y += reset.c
+
+ramstage-y += boardid.c
+ramstage-y += chromeos.c
+ramstage-y += mainboard.c
+ramstage-y += reset.c
+
+bootblock-y += memlayout.ld
+verstage-y += memlayout.ld
+romstage-y += memlayout.ld
+ramstage-y += memlayout.ld
diff --git a/src/mainboard/google/cosmos/boardid.c b/src/mainboard/google/cosmos/boardid.c
new file mode 100644
index 0000000..8b61891
--- /dev/null
+++ b/src/mainboard/google/cosmos/boardid.c
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <boardid.h>
+
+uint8_t board_id(void)
+{
+ return -1;
+}
diff --git a/src/mainboard/google/cosmos/bootblock.c b/src/mainboard/google/cosmos/bootblock.c
new file mode 100644
index 0000000..d5bffea
--- /dev/null
+++ b/src/mainboard/google/cosmos/bootblock.c
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <bootblock_common.h>
+
+void bootblock_mainboard_init(void)
+{
+}
diff --git a/src/mainboard/google/cosmos/chromeos.c b/src/mainboard/google/cosmos/chromeos.c
new file mode 100644
index 0000000..0ad05c8
--- /dev/null
+++ b/src/mainboard/google/cosmos/chromeos.c
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <boot/coreboot_tables.h>
+#include <vendorcode/google/chromeos/chromeos.h>
+
+void fill_lb_gpios(struct lb_gpios *gpios)
+{
+}
+
+int get_developer_mode_switch(void)
+{
+ return 0;
+}
+
+int get_recovery_mode_switch(void)
+{
+ return 0;
+}
+
+int get_write_protect_state(void)
+{
+ return 0;
+}
+
diff --git a/src/mainboard/google/cosmos/devicetree.cb b/src/mainboard/google/cosmos/devicetree.cb
new file mode 100644
index 0000000..b82d57c
--- /dev/null
+++ b/src/mainboard/google/cosmos/devicetree.cb
@@ -0,0 +1,23 @@
+##
+## 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.
+##
+## 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+##
+
+# TODO fill with Versatile Express board data in QEMU.
+chip soc/marvell/bg4cd
+ device cpu_cluster 0 on end
+end
diff --git a/src/mainboard/google/cosmos/mainboard.c b/src/mainboard/google/cosmos/mainboard.c
new file mode 100644
index 0000000..5866fea
--- /dev/null
+++ b/src/mainboard/google/cosmos/mainboard.c
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <device/device.h>
+#include <boot/coreboot_tables.h>
+
+static void mainboard_init(device_t dev)
+{
+}
+
+static void mainboard_enable(device_t dev)
+{
+ dev->ops->init = &mainboard_init;
+}
+
+struct chip_operations mainboard_ops = {
+ .enable_dev = mainboard_enable,
+};
+
+void lb_board(struct lb_header *header)
+{
+}
diff --git a/src/mainboard/google/cosmos/memlayout.ld b/src/mainboard/google/cosmos/memlayout.ld
new file mode 100644
index 0000000..d788b78
--- /dev/null
+++ b/src/mainboard/google/cosmos/memlayout.ld
@@ -0,0 +1 @@
+#include <soc/marvell/bg4cd/memlayout.ld>
diff --git a/src/mainboard/google/cosmos/reset.c b/src/mainboard/google/cosmos/reset.c
new file mode 100644
index 0000000..8020fbf
--- /dev/null
+++ b/src/mainboard/google/cosmos/reset.c
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <reset.h>
+
+void hard_reset(void)
+{
+ while (1)
+ ;
+}
diff --git a/src/mainboard/google/cosmos/romstage.c b/src/mainboard/google/cosmos/romstage.c
new file mode 100644
index 0000000..a78debe
--- /dev/null
+++ b/src/mainboard/google/cosmos/romstage.c
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <types.h>
+#include <armv7.h>
+#include <cbfs.h>
+#include <console/console.h>
+#include <arch/stages.h>
+#include <cbmem.h>
+#include <delay.h>
+#include <timestamp.h>
+#include <arch/cache.h>
+#include <arch/exception.h>
+#include <stdlib.h>
+#include <vendorcode/google/chromeos/chromeos.h>
+#include <soc/marvell/bg4cd/sdram.h>
+#include <symbols.h>
+#include "timer.h"
+
+void main(void)
+{
+ void *entry;
+#if CONFIG_COLLECT_TIMESTAMPS
+ uint64_t start_romstage_time;
+ uint64_t before_dram_time;
+ uint64_t after_dram_time;
+ uint64_t base_time = timestamp_get();
+ start_romstage_time = timestamp_get();
+#endif
+
+ console_init();
+
+#if CONFIG_COLLECT_TIMESTAMPS
+ before_dram_time = timestamp_get();
+#endif
+ sdram_init();
+#if CONFIG_COLLECT_TIMESTAMPS
+ after_dram_time = timestamp_get();
+#endif
+ mmu_init();
+ mmu_config_range(0, 4096, DCACHE_OFF);
+ dcache_mmu_enable();
+
+ cbmem_initialize_empty();
+#if CONFIG_COLLECT_TIMESTAMPS
+ timestamp_init(base_time);
+ timestamp_add(TS_START_ROMSTAGE, start_romstage_time);
+ timestamp_add(TS_BEFORE_INITRAM, before_dram_time);
+ timestamp_add(TS_AFTER_INITRAM, after_dram_time);
+#endif
+
+ entry = vboot_load_ramstage();
+
+ if (entry == NULL) {
+ timestamp_add(TS_START_COPYRAM, timestamp_get());
+ entry = cbfs_load_stage(CBFS_DEFAULT_MEDIA,
+ CONFIG_CBFS_PREFIX "/ramstage");
+ timestamp_add(TS_END_COPYRAM, timestamp_get());
+ if (entry == (void *)-1)
+ die("failed to load ramstage\n");
+ }
+#if CONFIG_COLLECT_TIMESTAMPS
+ timestamp_add_now(TS_END_ROMSTAGE);
+#endif
+ stage_exit(entry);
+}
diff --git a/src/soc/Kconfig b/src/soc/Kconfig
index 43c2010..cff6f27 100644
--- a/src/soc/Kconfig
+++ b/src/soc/Kconfig
@@ -1,5 +1,6 @@
source src/soc/imgtec/Kconfig
source src/soc/intel/Kconfig
+source src/soc/marvell/Kconfig
source src/soc/nvidia/Kconfig
source src/soc/qualcomm/Kconfig
source src/soc/rockchip/Kconfig
diff --git a/src/soc/Makefile.inc b/src/soc/Makefile.inc
index 543e155..b722323 100644
--- a/src/soc/Makefile.inc
+++ b/src/soc/Makefile.inc
@@ -3,6 +3,7 @@
################################################################################
subdirs-y += imgtec
subdirs-y += intel
+subdirs-y += marvell
subdirs-y += nvidia
subdirs-y += qualcomm
subdirs-y += rockchip
diff --git a/src/soc/marvell/Kconfig b/src/soc/marvell/Kconfig
new file mode 100644
index 0000000..95b8c50
--- /dev/null
+++ b/src/soc/marvell/Kconfig
@@ -0,0 +1,20 @@
+##
+## 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.
+##
+## 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+##
+
+source src/soc/marvell/bg4cd/Kconfig
diff --git a/src/soc/marvell/Makefile.inc b/src/soc/marvell/Makefile.inc
new file mode 100644
index 0000000..ef7bcd9
--- /dev/null
+++ b/src/soc/marvell/Makefile.inc
@@ -0,0 +1,20 @@
+##
+## 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.
+##
+## 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+##
+
+subdirs-$(CONFIG_SOC_MARVELL_BG4CD) += bg4cd
diff --git a/src/soc/marvell/bg4cd/Kconfig b/src/soc/marvell/bg4cd/Kconfig
new file mode 100644
index 0000000..8ff2e0d
--- /dev/null
+++ b/src/soc/marvell/bg4cd/Kconfig
@@ -0,0 +1,52 @@
+##
+## 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.
+##
+## 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+##
+
+config SOC_MARVELL_BG4CD
+ bool
+ default n
+ select CPU_HAS_BOOTBLOCK_INIT
+ select HAVE_MONOTONIC_TIMER
+ select GENERIC_UDELAY
+ select EARLY_CONSOLE
+ select DYNAMIC_CBMEM
+ select ARCH_BOOTBLOCK_ARM_V7
+ select ARCH_VERSTAGE_ARM_V7
+ select ARCH_ROMSTAGE_ARM_V7
+ select ARCH_RAMSTAGE_ARM_V7
+ select BOOTBLOCK_CONSOLE
+
+if SOC_MARVELL_BG4CD
+
+config BOOTBLOCK_CPU_INIT
+ string
+ default "soc/marvell/bg4cd/bootblock.c"
+
+config BOOTBLOCK_ROM_OFFSET
+ hex
+ default 0x0
+
+config CBFS_HEADER_ROM_OFFSET
+ hex
+ default 0x0008000
+
+config CBFS_ROM_OFFSET
+ hex
+ default 0x0018000
+
+endif
diff --git a/src/soc/marvell/bg4cd/Makefile.inc b/src/soc/marvell/bg4cd/Makefile.inc
new file mode 100644
index 0000000..a196851
--- /dev/null
+++ b/src/soc/marvell/bg4cd/Makefile.inc
@@ -0,0 +1,47 @@
+##
+## 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.
+##
+## 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+##
+
+bootblock-y += bootblock.c
+bootblock-y += cbmem.c
+bootblock-y += monotonic_timer.c
+bootblock-y += media.c
+bootblock-y += i2c.c
+
+verstage-y += monotonic_timer.c
+verstage-y += i2c.c
+verstage-y += media.c
+
+romstage-y += cbmem.c
+romstage-y += monotonic_timer.c
+romstage-y += i2c.c
+romstage-y += media.c
+romstage-y += sdram.c
+
+ramstage-y += cbmem.c
+ramstage-y += monotonic_timer.c
+ramstage-y += i2c.c
+ramstage-y += media.c
+
+$(objcbfs)/bootblock.raw.elf: $(objcbfs)/bootblock.elf
+ cp $< $@
+
+$(objcbfs)/bootblock.bin: $(objcbfs)/bootblock.raw.bin
+ @printf "Generating: $(subst $(obj)/,,$(@))\n"
+ @mkdir -p $(dir $@)
+ @mv $< $@
diff --git a/src/soc/marvell/bg4cd/bootblock.c b/src/soc/marvell/bg4cd/bootblock.c
new file mode 100644
index 0000000..e7ce203
--- /dev/null
+++ b/src/soc/marvell/bg4cd/bootblock.c
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <bootblock_common.h>
+
+void bootblock_cpu_init(void)
+{
+}
diff --git a/src/soc/marvell/bg4cd/cbmem.c b/src/soc/marvell/bg4cd/cbmem.c
new file mode 100644
index 0000000..168673d
--- /dev/null
+++ b/src/soc/marvell/bg4cd/cbmem.c
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <cbmem.h>
+#include <stddef.h>
+
+void *cbmem_top(void)
+{
+ return NULL;
+}
diff --git a/src/soc/marvell/bg4cd/i2c.c b/src/soc/marvell/bg4cd/i2c.c
new file mode 100644
index 0000000..1aa02d0
--- /dev/null
+++ b/src/soc/marvell/bg4cd/i2c.c
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <device/i2c.h>
+#include "i2c.h"
+
+int platform_i2c_transfer(unsigned bus, struct i2c_seg *segments, int seg_count)
+{
+ return 0;
+}
+
+void i2c_init(unsigned int bus, unsigned int hz)
+{
+}
diff --git a/src/soc/marvell/bg4cd/i2c.h b/src/soc/marvell/bg4cd/i2c.h
new file mode 100644
index 0000000..40db31a
--- /dev/null
+++ b/src/soc/marvell/bg4cd/i2c.h
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef __SOC_MARVELL_BG4CD_I2C_H__
+#define __SOC_MARVELL_BG4CD_I2C_H__
+
+void i2c_init(unsigned int bus, unsigned int hz);
+
+#endif
+
diff --git a/src/soc/marvell/bg4cd/media.c b/src/soc/marvell/bg4cd/media.c
new file mode 100644
index 0000000..5a4dc5f
--- /dev/null
+++ b/src/soc/marvell/bg4cd/media.c
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <cbfs.h>
+
+int init_default_cbfs_media(struct cbfs_media *media)
+{
+ return 0;
+}
diff --git a/src/soc/marvell/bg4cd/memlayout.ld b/src/soc/marvell/bg4cd/memlayout.ld
new file mode 100644
index 0000000..45cf395
--- /dev/null
+++ b/src/soc/marvell/bg4cd/memlayout.ld
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <memlayout.h>
+#include <vendorcode/google/chromeos/memlayout.h>
+
+#include <arch/header.ld>
+
+SECTIONS
+{
+ DRAM_START(0x00000000)
+ RAMSTAGE(0x00200000, 128K)
+ POSTRAM_CBFS_CACHE(0x01000000, 1M)
+
+ SRAM_START(0x80000000)
+ TTB(0x80000000, 16K)
+ BOOTBLOCK(0x80004004, 16K - 4)
+ VBOOT2_WORK(0x80008000, 16K)
+ OVERLAP_VERSTAGE_ROMSTAGE(0x8000C000, 40K)
+ PRERAM_CBFS_CACHE(0x80016000, 4K)
+ STACK(0x80017000, 4K)
+ SRAM_END(0x80018000)
+}
diff --git a/src/soc/marvell/bg4cd/monotonic_timer.c b/src/soc/marvell/bg4cd/monotonic_timer.c
new file mode 100644
index 0000000..efc2a8f
--- /dev/null
+++ b/src/soc/marvell/bg4cd/monotonic_timer.c
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <timer.h>
+
+void timer_monotonic_get(struct mono_time *mt)
+{
+}
diff --git a/src/soc/marvell/bg4cd/sdram.c b/src/soc/marvell/bg4cd/sdram.c
new file mode 100644
index 0000000..1b5575b
--- /dev/null
+++ b/src/soc/marvell/bg4cd/sdram.c
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+#include <console/console.h>
+#include "sdram.h"
+
+void sdram_init(void)
+{
+ printk(BIOS_INFO, "Starting SDRAM initialization...\n");
+ printk(BIOS_INFO, "Finish SDRAM initialization...\n");
+}
diff --git a/src/soc/marvell/bg4cd/sdram.h b/src/soc/marvell/bg4cd/sdram.h
new file mode 100644
index 0000000..6850d27
--- /dev/null
+++ b/src/soc/marvell/bg4cd/sdram.h
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef __SOC_MARVELL_BG4CD_SDRAM_H__
+#define __SOC_MARVELL_BG4CD_SDRAM_H__
+
+void sdram_init(void);
+#endif
Patrick Georgi (pgeorgi(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/9342
-gerrit
commit 193e607da6f88db1238a8530833b5283820c4933
Author: Julius Werner <jwerner(a)chromium.org>
Date: Wed Oct 15 18:50:45 2014 -0700
rk3288: Add early SRAM mapping
Solving the DACR bug will mean that XN bits suddenly become enforced on
non-LPAE systems, and we will no longer be able to execute out of a
region mapped DCACHE_OFF. When we enable the MMU in romstage we are
still executing out of SRAM, so we would instantly kill ourselves.
Solve this issue by enabling the MMU earlier (in the bootblock) and
mapping the SRAM regions as DCACHE_WRITETHROUGH. They should really be
DCACHE_WRITEBACK, but it looks like there might be hardware limitations
in the Cortex-A12 cache architecture that prevent us from doing so.
Write-through mappings are equivalent to normal non-cacheable on the A12
anyway, and by using this attribute we don't need to introduce a new
DCACHE_OFF_BUT_WITHOUT_XN_BIT type in our API. (Also, using normal
non-cacheable might still have a slight speed advantage over strongly
ordered since it should fetch whole cache lines at once if the processor
finds enough accesses it can combine.)
CQ-DEPEND=CL:223783
BUG=chrome-os-partner:32118
TEST=None (depends on follow-up CL)
Change-Id: I1e5127421f82177ca11af892b1539538b379625e
Signed-off-by: Patrick Georgi <pgeorgi(a)chromium.org>
Original-Commit-Id: e7b079f4b6a69449f3c7cc18ef0e1704f2006847
Original-Change-Id: I53e827d95acc2db909f1251de78d65e295eceaa7
Original-Signed-off-by: Julius Werner <jwerner(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/223782
Original-Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/mainboard/google/veyron_pinky/romstage.c | 18 ++++--------------
src/soc/rockchip/rk3288/bootblock.c | 11 +++++++++++
src/soc/rockchip/rk3288/memlayout.ld | 3 ++-
3 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/src/mainboard/google/veyron_pinky/romstage.c b/src/mainboard/google/veyron_pinky/romstage.c
index 1d7812b..6f9b9d1 100644
--- a/src/mainboard/google/veyron_pinky/romstage.c
+++ b/src/mainboard/google/veyron_pinky/romstage.c
@@ -64,10 +64,6 @@ void main(void)
uint64_t base_time = timestamp_get();
start_romstage_time = timestamp_get();
#endif
- /* used for MMU and CBMEM setup, in MB */
- u32 dram_start_mb = (uintptr_t)_dram/MiB;
- u32 dram_size_mb = CONFIG_DRAM_SIZE_MB;
- u32 dram_end_mb = dram_start_mb + dram_size_mb;
console_init();
@@ -80,18 +76,12 @@ void main(void)
#if CONFIG_COLLECT_TIMESTAMPS
after_dram_time = timestamp_get();
#endif
- mmu_init();
- /* Device memory below DRAM is uncached. */
- mmu_config_range(0, dram_start_mb, DCACHE_OFF);
- /* DRAM is cached. */
- mmu_config_range(dram_start_mb, dram_size_mb, DCACHE_WRITEBACK);
- /* A window for DMA is uncached. */
+
+ /* Now that DRAM is up, add mappings for it and DMA coherency buffer. */
+ mmu_config_range((uintptr_t)_dram/MiB,
+ CONFIG_DRAM_SIZE_MB, DCACHE_WRITEBACK);
mmu_config_range((uintptr_t)_dma_coherent/MiB,
_dma_coherent_size/MiB, DCACHE_OFF);
- /* The space above DRAM is uncached. */
- if (dram_end_mb < 4096)
- mmu_config_range(dram_end_mb, 4096 - dram_end_mb, DCACHE_OFF);
- dcache_mmu_enable();
cbmem_initialize_empty();
diff --git a/src/soc/rockchip/rk3288/bootblock.c b/src/soc/rockchip/rk3288/bootblock.c
index eec3456..b2f5bd9 100644
--- a/src/soc/rockchip/rk3288/bootblock.c
+++ b/src/soc/rockchip/rk3288/bootblock.c
@@ -17,10 +17,12 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#include <arch/cache.h>
#include <arch/io.h>
#include <bootblock_common.h>
#include <console/console.h>
#include <soc/rockchip/rk3288/grf.h>
+#include <symbols.h>
#include "addressmap.h"
#include "timer.h"
#include "clock.h"
@@ -41,4 +43,13 @@ static void bootblock_cpu_init(void)
}
rkclk_init();
+
+ mmu_init();
+ /* Start with a clean slate. */
+ mmu_config_range(0, 4096, DCACHE_OFF);
+ /* SRAM is tightly wedged between registers, need to use subtables. Map
+ * write-through as equivalent for non-cacheable without XN on A17. */
+ mmu_config_range_kb((uintptr_t)_sram/KiB,
+ _sram_size/KiB, DCACHE_WRITETHROUGH);
+ dcache_mmu_enable();
}
diff --git a/src/soc/rockchip/rk3288/memlayout.ld b/src/soc/rockchip/rk3288/memlayout.ld
index 6faec63..2ddb6a6 100644
--- a/src/soc/rockchip/rk3288/memlayout.ld
+++ b/src/soc/rockchip/rk3288/memlayout.ld
@@ -34,7 +34,8 @@ SECTIONS
SRAM_START(0xFF700000)
TTB(0xFF700000, 16K)
- BOOTBLOCK(0xFF704004, 16K - 4)
+ BOOTBLOCK(0xFF704004, 15K - 4)
+ TTB_SUBTABLES(0xFF707c00, 1K)
VBOOT2_WORK(0xFF708000, 16K)
OVERLAP_VERSTAGE_ROMSTAGE(0xFF70C000, 40K)
PRERAM_CBFS_CACHE(0xFF716000, 4K)
Patrick Georgi (pgeorgi(a)google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/9343
-gerrit
commit 161531f460bb8a967a8134fccc33853d5f81ca56
Author: Julius Werner <jwerner(a)chromium.org>
Date: Thu Oct 16 09:56:27 2014 -0700
armv7: Change all memory domains to Client so XN bits work
Remember the XN bit? The one we had so much fun with on Nyan (LPAE)
because not setting it allows random instruction prefetches to device
memory that hang the system every few thousand boots? Thankfully, we had
always been setting it in the non-LPAE MMU code already...
"When the XN bit is 1, a Permission fault is generated if the processor
attempts to execute an instruction fetched from the corresponding memory
region. However, when using the Short-descriptor translation table
format, the fault is generated only if the access is to memory in the
Client domain, see Domains[...]" - ARM A.R.M. section B3.7.2
Oops. This patch changes our Domain Access Control Register (DACR) to
set domain 0 (the only one we are using) to Client. This means that
access permissions (AP[2:0] bits) become enforced, but they are already
set to full access (0b011). It also means that non-LPAE systems will not
be allowed to execute from DCACHE_OFF memory with enabled MMU anymore.
As far as I can see, Veyron_Pinky has been the only board that does
that.
BUG=chrome-os-partner:32118
TEST=Booted Veyron_Pinky with MMU in the bootblock, saw hangs that look
like spurious prefetches and confirmed that this patch fixes them.
Change-Id: I81c00743f938924a5dc8825389fe512a069b77db
Signed-off-by: Patrick Georgi <pgeorgi(a)chromium.org>
Original-Commit-Id: cbc96db296a41ae700371a8515a1179c142f58e7
Original-Change-Id: I30676a5bfe12d516e5f910f51ee6854f6e5be557
Original-Signed-off-by: Julius Werner <jwerner(a)chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/223783
Original-Reviewed-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/arch/arm/armv7/mmu.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/arch/arm/armv7/mmu.c b/src/arch/arm/armv7/mmu.c
index de7fa40..581c572 100644
--- a/src/arch/arm/armv7/mmu.c
+++ b/src/arch/arm/armv7/mmu.c
@@ -302,6 +302,6 @@ void mmu_init(void)
0 << 16 | 0 << 0 /* Use TTBR0 for all addresses */
);
- /* disable domain-level checking of permissions */
- write_dacr(~0);
+ /* Set domain 0 to Client so XN bit works (to prevent prefetches) */
+ write_dacr(0x5);
}