<p>Tristan Hsieh has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/26659">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mediatek/mt8183: Add a stub implementation of the MT8183 SOC<br><br>Most things still need to be filled in, but this will allow<br>us to build boards which use this SOC.<br><br>BUG=none<br>BRANCH=none<br>TEST=timer and uart work fine<br><br>Change-Id: Ie81fa56ffce85188e1f9e979f9b0e64b764c2627<br>Signed-off-by: Tristan Shieh <tristan.shieh@mediatek.com><br>---<br>A src/mainboard/google/kukui/Kconfig<br>A src/mainboard/google/kukui/Kconfig.name<br>A src/mainboard/google/kukui/Makefile.inc<br>A src/mainboard/google/kukui/board_info.txt<br>A src/mainboard/google/kukui/chromeos.c<br>A src/mainboard/google/kukui/chromeos.fmd<br>A src/mainboard/google/kukui/devicetree.cb<br>A src/mainboard/google/kukui/memlayout.ld<br>A src/mainboard/google/kukui/romstage.c<br>A src/soc/mediatek/mt8183/Kconfig<br>A src/soc/mediatek/mt8183/Makefile.inc<br>A src/soc/mediatek/mt8183/cbmem.c<br>A src/soc/mediatek/mt8183/flash_controller.c<br>A src/soc/mediatek/mt8183/include/soc/addressmap.h<br>A src/soc/mediatek/mt8183/include/soc/flash_controller.h<br>A src/soc/mediatek/mt8183/include/soc/memlayout.ld<br>A src/soc/mediatek/mt8183/spi.c<br>M util/mtkheader/gen-bl-img.py<br>18 files changed, 450 insertions(+), 16 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/59/26659/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/mainboard/google/kukui/Kconfig b/src/mainboard/google/kukui/Kconfig</span><br><span>new file mode 100644</span><br><span>index 0000000..79679ad</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/kukui/Kconfig</span><br><span>@@ -0,0 +1,20 @@</span><br><span style="color: hsl(120, 100%, 40%);">+if BOARD_GOOGLE_KUKUI</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config BOARD_SPECIFIC_OPTIONS #dummy</span><br><span style="color: hsl(120, 100%, 40%);">+ def_bool y</span><br><span style="color: hsl(120, 100%, 40%);">+    select SOC_MEDIATEK_MT8183</span><br><span style="color: hsl(120, 100%, 40%);">+    select BOARD_ROMSIZE_KB_4096</span><br><span style="color: hsl(120, 100%, 40%);">+  select MAINBOARD_HAS_CHROMEOS</span><br><span style="color: hsl(120, 100%, 40%);">+ select COMMON_CBFS_SPI_WRAPPER</span><br><span style="color: hsl(120, 100%, 40%);">+        select SPI_FLASH</span><br><span style="color: hsl(120, 100%, 40%);">+      select FATAL_ASSERTS</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config MAINBOARD_DIR</span><br><span style="color: hsl(120, 100%, 40%);">+  string</span><br><span style="color: hsl(120, 100%, 40%);">+        default google/kukui</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config MAINBOARD_PART_NUMBER</span><br><span style="color: hsl(120, 100%, 40%);">+  string</span><br><span style="color: hsl(120, 100%, 40%);">+        default "KUKUI"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span>diff --git a/src/mainboard/google/kukui/Kconfig.name b/src/mainboard/google/kukui/Kconfig.name</span><br><span>new file mode 100644</span><br><span>index 0000000..c568891</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/kukui/Kconfig.name</span><br><span>@@ -0,0 +1,2 @@</span><br><span style="color: hsl(120, 100%, 40%);">+config BOARD_GOOGLE_KUKUI</span><br><span style="color: hsl(120, 100%, 40%);">+      bool "KUKUI"</span><br><span>diff --git a/src/mainboard/google/kukui/Makefile.inc b/src/mainboard/google/kukui/Makefile.inc</span><br><span>new file mode 100644</span><br><span>index 0000000..44a60b5</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/kukui/Makefile.inc</span><br><span>@@ -0,0 +1,11 @@</span><br><span style="color: hsl(120, 100%, 40%);">+bootblock-y += memlayout.ld</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+verstage-y += chromeos.c</span><br><span style="color: hsl(120, 100%, 40%);">+verstage-y += memlayout.ld</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-y += chromeos.c</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-y += memlayout.ld</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-y += romstage.c</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += chromeos.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += memlayout.ld</span><br><span>diff --git a/src/mainboard/google/kukui/board_info.txt b/src/mainboard/google/kukui/board_info.txt</span><br><span>new file mode 100644</span><br><span>index 0000000..c3688c1</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/kukui/board_info.txt</span><br><span>@@ -0,0 +1,6 @@</span><br><span style="color: hsl(120, 100%, 40%);">+Vendor name: Google</span><br><span style="color: hsl(120, 100%, 40%);">+Board name: Kukui MediaTek MT8183 reference board</span><br><span style="color: hsl(120, 100%, 40%);">+Category: eval</span><br><span style="color: hsl(120, 100%, 40%);">+ROM protocol: SPI</span><br><span style="color: hsl(120, 100%, 40%);">+ROM socketed: n</span><br><span style="color: hsl(120, 100%, 40%);">+Flashrom support: y</span><br><span>diff --git a/src/mainboard/google/kukui/chromeos.c b/src/mainboard/google/kukui/chromeos.c</span><br><span>new file mode 100644</span><br><span>index 0000000..7f9946a</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/kukui/chromeos.c</span><br><span>@@ -0,0 +1,31 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 MediaTek Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <bootmode.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <boot/coreboot_tables.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void fill_lb_gpios(struct lb_gpios *gpios)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+int get_recovery_mode_switch(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+int get_write_protect_state(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/mainboard/google/kukui/chromeos.fmd b/src/mainboard/google/kukui/chromeos.fmd</span><br><span>new file mode 100644</span><br><span>index 0000000..9c618e3</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/kukui/chromeos.fmd</span><br><span>@@ -0,0 +1,29 @@</span><br><span style="color: hsl(120, 100%, 40%);">+FLASH@0x0 0x400000 {</span><br><span style="color: hsl(120, 100%, 40%);">+        WP_RO@0x0 0x200000 {</span><br><span style="color: hsl(120, 100%, 40%);">+          RO_SECTION@0x0 0x1f0000 {</span><br><span style="color: hsl(120, 100%, 40%);">+                     BOOTBLOCK@0 128K</span><br><span style="color: hsl(120, 100%, 40%);">+                      COREBOOT(CBFS)@0x20000 0xe0000</span><br><span style="color: hsl(120, 100%, 40%);">+                        FMAP@0x100000 0x1000</span><br><span style="color: hsl(120, 100%, 40%);">+                  GBB@0x101000 0xeef00</span><br><span style="color: hsl(120, 100%, 40%);">+                  RO_FRID@0x1eff00 0x100</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+             RO_VPD@0x1f0000 0x10000</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     RW_SECTION_A@0x200000 0x78000 {</span><br><span style="color: hsl(120, 100%, 40%);">+               VBLOCK_A@0x0 0x2000</span><br><span style="color: hsl(120, 100%, 40%);">+           FW_MAIN_A(CBFS)@0x2000 0x75f00</span><br><span style="color: hsl(120, 100%, 40%);">+                RW_FWID_A@0x77f00 0x100</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     RW_SHARED@0x278000 0x2000 {</span><br><span style="color: hsl(120, 100%, 40%);">+           SHARED_DATA@0x0 0x2000</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+     RW_NVRAM@0x27a000 0x2000</span><br><span style="color: hsl(120, 100%, 40%);">+      RW_ELOG@0x27c000 0x4000</span><br><span style="color: hsl(120, 100%, 40%);">+       RW_SECTION_B@0x280000 0x78000 {</span><br><span style="color: hsl(120, 100%, 40%);">+               VBLOCK_B@0x0 0x2000</span><br><span style="color: hsl(120, 100%, 40%);">+           FW_MAIN_B(CBFS)@0x2000 0x75f00</span><br><span style="color: hsl(120, 100%, 40%);">+                RW_FWID_B@0x77f00 0x100</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     RW_VPD@0x2f8000 0x8000</span><br><span style="color: hsl(120, 100%, 40%);">+        RW_LEGACY(CBFS)@0x300000 0x100000</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/mainboard/google/kukui/devicetree.cb b/src/mainboard/google/kukui/devicetree.cb</span><br><span>new file mode 100644</span><br><span>index 0000000..e2f2be3</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/kukui/devicetree.cb</span><br><span>@@ -0,0 +1,20 @@</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## Copyright 2018 MediaTek Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+## it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+## the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+## This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+## but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+## GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+##</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+chip soc/mediatek/mt8183</span><br><span style="color: hsl(120, 100%, 40%);">+   device cpu_cluster 0 on</span><br><span style="color: hsl(120, 100%, 40%);">+               device cpu 0 on end</span><br><span style="color: hsl(120, 100%, 40%);">+   end</span><br><span style="color: hsl(120, 100%, 40%);">+end</span><br><span>diff --git a/src/mainboard/google/kukui/memlayout.ld b/src/mainboard/google/kukui/memlayout.ld</span><br><span>new file mode 100644</span><br><span>index 0000000..2c33306</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/kukui/memlayout.ld</span><br><span>@@ -0,0 +1,14 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <soc/memlayout.ld></span><br><span>diff --git a/src/mainboard/google/kukui/romstage.c b/src/mainboard/google/kukui/romstage.c</span><br><span>new file mode 100644</span><br><span>index 0000000..76a587d</span><br><span>--- /dev/null</span><br><span>+++ b/src/mainboard/google/kukui/romstage.c</span><br><span>@@ -0,0 +1,30 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 MediaTek Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <arch/exception.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <console/console.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <program_loading.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <timestamp.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void main(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ timestamp_add_now(TS_START_ROMSTAGE);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* init uart baudrate when pll on */</span><br><span style="color: hsl(120, 100%, 40%);">+  console_init();</span><br><span style="color: hsl(120, 100%, 40%);">+       exception_init();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   run_ramstage();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/soc/mediatek/mt8183/Kconfig b/src/soc/mediatek/mt8183/Kconfig</span><br><span>new file mode 100644</span><br><span>index 0000000..040e692</span><br><span>--- /dev/null</span><br><span>+++ b/src/soc/mediatek/mt8183/Kconfig</span><br><span>@@ -0,0 +1,21 @@</span><br><span style="color: hsl(120, 100%, 40%);">+config SOC_MEDIATEK_MT8183</span><br><span style="color: hsl(120, 100%, 40%);">+    bool</span><br><span style="color: hsl(120, 100%, 40%);">+  default n</span><br><span style="color: hsl(120, 100%, 40%);">+     select ARCH_BOOTBLOCK_ARMV8_64</span><br><span style="color: hsl(120, 100%, 40%);">+        select ARCH_RAMSTAGE_ARMV8_64</span><br><span style="color: hsl(120, 100%, 40%);">+ select ARCH_ROMSTAGE_ARMV8_64</span><br><span style="color: hsl(120, 100%, 40%);">+ select ARCH_VERSTAGE_ARMV8_64</span><br><span style="color: hsl(120, 100%, 40%);">+ select ARM64_USE_ARM_TRUSTED_FIRMWARE</span><br><span style="color: hsl(120, 100%, 40%);">+ select BOOTBLOCK_CONSOLE</span><br><span style="color: hsl(120, 100%, 40%);">+      select GENERIC_UDELAY</span><br><span style="color: hsl(120, 100%, 40%);">+ select HAVE_UART_SPECIAL</span><br><span style="color: hsl(120, 100%, 40%);">+      select HAVE_MONOTONIC_TIMER</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if SOC_MEDIATEK_MT8183</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+config VBOOT</span><br><span style="color: hsl(120, 100%, 40%);">+ select VBOOT_OPROM_MATTERS</span><br><span style="color: hsl(120, 100%, 40%);">+    select VBOOT_STARTS_IN_BOOTBLOCK</span><br><span style="color: hsl(120, 100%, 40%);">+      select VBOOT_SEPARATE_VERSTAGE</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span>diff --git a/src/soc/mediatek/mt8183/Makefile.inc b/src/soc/mediatek/mt8183/Makefile.inc</span><br><span>new file mode 100644</span><br><span>index 0000000..2ffec67</span><br><span>--- /dev/null</span><br><span>+++ b/src/soc/mediatek/mt8183/Makefile.inc</span><br><span>@@ -0,0 +1,32 @@</span><br><span style="color: hsl(120, 100%, 40%);">+ifeq ($(CONFIG_SOC_MEDIATEK_MT8183),y)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+bootblock-$(CONFIG_SPI_FLASH) += flash_controller.c</span><br><span style="color: hsl(120, 100%, 40%);">+bootblock-y += spi.c</span><br><span style="color: hsl(120, 100%, 40%);">+bootblock-y += ../common/timer.c</span><br><span style="color: hsl(120, 100%, 40%);">+ifeq ($(CONFIG_BOOTBLOCK_CONSOLE),y)</span><br><span style="color: hsl(120, 100%, 40%);">+bootblock-$(CONFIG_DRIVERS_UART) += ../common/uart.c</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+verstage-$(CONFIG_SPI_FLASH) += flash_controller.c</span><br><span style="color: hsl(120, 100%, 40%);">+verstage-y += spi.c</span><br><span style="color: hsl(120, 100%, 40%);">+verstage-y += ../common/timer.c</span><br><span style="color: hsl(120, 100%, 40%);">+verstage-$(CONFIG_DRIVERS_UART) += ../common/uart.c</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-$(CONFIG_SPI_FLASH) += flash_controller.c</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-y += spi.c</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-y += ../common/timer.c</span><br><span style="color: hsl(120, 100%, 40%);">+romstage-$(CONFIG_DRIVERS_UART) += ../common/uart.c</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += cbmem.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-$(CONFIG_SPI_FLASH) += flash_controller.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += spi.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += ../common/timer.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-$(CONFIG_DRIVERS_UART) += ../common/uart.c</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+CPPFLAGS_common += -Isrc/soc/mediatek/mt8183/include</span><br><span style="color: hsl(120, 100%, 40%);">+CPPFLAGS_common += -Isrc/soc/mediatek/common/include</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+$(objcbfs)/bootblock.bin: $(objcbfs)/bootblock.raw.bin</span><br><span style="color: hsl(120, 100%, 40%);">+        ./util/mtkheader/gen-bl-img.py mt8183 emmc $< $@</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span>diff --git a/src/soc/mediatek/mt8183/cbmem.c b/src/soc/mediatek/mt8183/cbmem.c</span><br><span>new file mode 100644</span><br><span>index 0000000..1963578</span><br><span>--- /dev/null</span><br><span>+++ b/src/soc/mediatek/mt8183/cbmem.c</span><br><span>@@ -0,0 +1,21 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 MediaTek Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <cbmem.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void *cbmem_top(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ return (void *)((uintptr_t)4 * GiB);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/soc/mediatek/mt8183/flash_controller.c b/src/soc/mediatek/mt8183/flash_controller.c</span><br><span>new file mode 100644</span><br><span>index 0000000..2855493</span><br><span>--- /dev/null</span><br><span>+++ b/src/soc/mediatek/mt8183/flash_controller.c</span><br><span>@@ -0,0 +1,59 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 MediaTek Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* this is a spi driver which adapt emmc to fake spi flash */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <soc/flash_controller.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <spi_flash.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void init_io(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static int emmc_adapter_read(const struct spi_flash *flash, u32 addr,</span><br><span style="color: hsl(120, 100%, 40%);">+               size_t len, void *buf)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static int emmc_adapter_write(const struct spi_flash *flash, u32 addr,</span><br><span style="color: hsl(120, 100%, 40%);">+                size_t len, const void *buf)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static int emmc_adapter_erase(const struct spi_flash *flash, u32 offset,</span><br><span style="color: hsl(120, 100%, 40%);">+              size_t len)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const struct spi_flash_ops spi_emmc_flash_ops = {</span><br><span style="color: hsl(120, 100%, 40%);">+     .read = emmc_adapter_read,</span><br><span style="color: hsl(120, 100%, 40%);">+    .write = emmc_adapter_write,</span><br><span style="color: hsl(120, 100%, 40%);">+  .erase = emmc_adapter_erase,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+int mtk_spi_flash_probe(const struct spi_slave *spi, struct spi_flash *flash)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  init_io();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  flash->name = "spi emmc flash controller";</span><br><span style="color: hsl(120, 100%, 40%);">+       flash->sector_size = 0x800;</span><br><span style="color: hsl(120, 100%, 40%);">+        flash->size = CONFIG_ROM_SIZE;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   flash->ops = &spi_emmc_flash_ops;</span><br><span style="color: hsl(120, 100%, 40%);">+      return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/soc/mediatek/mt8183/include/soc/addressmap.h b/src/soc/mediatek/mt8183/include/soc/addressmap.h</span><br><span>new file mode 100644</span><br><span>index 0000000..ad272b6</span><br><span>--- /dev/null</span><br><span>+++ b/src/soc/mediatek/mt8183/include/soc/addressmap.h</span><br><span>@@ -0,0 +1,26 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 MediaTek Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#pragma once</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum {</span><br><span style="color: hsl(120, 100%, 40%);">+    IO_PHYS         = 0x10000000,</span><br><span style="color: hsl(120, 100%, 40%);">+ DDR_BASE        = 0x40000000</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum {</span><br><span style="color: hsl(120, 100%, 40%);">+    GPT_BASE        = IO_PHYS + 0x00008000,</span><br><span style="color: hsl(120, 100%, 40%);">+       UART0_BASE      = IO_PHYS + 0x01002000,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span>diff --git a/src/soc/mediatek/mt8183/include/soc/flash_controller.h b/src/soc/mediatek/mt8183/include/soc/flash_controller.h</span><br><span>new file mode 100644</span><br><span>index 0000000..222b7a6</span><br><span>--- /dev/null</span><br><span>+++ b/src/soc/mediatek/mt8183/include/soc/flash_controller.h</span><br><span>@@ -0,0 +1,20 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 MediaTek Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#pragma once</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <spi-generic.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+int mtk_spi_flash_probe(const struct spi_slave *spi, struct spi_flash *flash);</span><br><span>diff --git a/src/soc/mediatek/mt8183/include/soc/memlayout.ld b/src/soc/mediatek/mt8183/include/soc/memlayout.ld</span><br><span>new file mode 100644</span><br><span>index 0000000..33742bfd</span><br><span>--- /dev/null</span><br><span>+++ b/src/soc/mediatek/mt8183/include/soc/memlayout.ld</span><br><span>@@ -0,0 +1,56 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 MediaTek Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <memlayout.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <arch/header.ld></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * SRAM_L2C is the half part of L2 cache that we borrow it to be used as SRAM.</span><br><span style="color: hsl(120, 100%, 40%);">+ * It will be returned before starting the ramstage.</span><br><span style="color: hsl(120, 100%, 40%);">+ * SRAM_L2C and SRAM can be cached, but only SRAM is DMA-able.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+#define SRAM_L2C_START(addr) SYMBOL(sram_l2c, addr)</span><br><span style="color: hsl(120, 100%, 40%);">+#define SRAM_L2C_END(addr) SYMBOL(esram_l2c, addr)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#define DRAM_DMA(addr, size) \</span><br><span style="color: hsl(120, 100%, 40%);">+     REGION(dram_dma, addr, size, 4K) \</span><br><span style="color: hsl(120, 100%, 40%);">+    _ = ASSERT(size % 4K == 0, \</span><br><span style="color: hsl(120, 100%, 40%);">+          "DRAM DMA buffer should be multiple of smallest page size (4K)!");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+SECTIONS</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   SRAM_START(0x00100000)</span><br><span style="color: hsl(120, 100%, 40%);">+        VBOOT2_WORK(0x00100000, 12K)</span><br><span style="color: hsl(120, 100%, 40%);">+  PRERAM_CBMEM_CONSOLE(0x00103000, 16K)</span><br><span style="color: hsl(120, 100%, 40%);">+ WATCHDOG_TOMBSTONE(0x00107000, 4)</span><br><span style="color: hsl(120, 100%, 40%);">+     PRERAM_CBFS_CACHE(0x00107004, 16K - 4)</span><br><span style="color: hsl(120, 100%, 40%);">+        TIMESTAMP(0x0010B000, 4K)</span><br><span style="color: hsl(120, 100%, 40%);">+     STACK(0x0010C000, 16K)</span><br><span style="color: hsl(120, 100%, 40%);">+        TTB(0x00110000, 28K)</span><br><span style="color: hsl(120, 100%, 40%);">+  DMA_COHERENT(0x00117000, 4K)</span><br><span style="color: hsl(120, 100%, 40%);">+  SRAM_END(0x00120000)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        SRAM_L2C_START(0x00200000)</span><br><span style="color: hsl(120, 100%, 40%);">+    BOOTBLOCK(0x00201000, 85K)</span><br><span style="color: hsl(120, 100%, 40%);">+    VERSTAGE(0x00217000, 114K)</span><br><span style="color: hsl(120, 100%, 40%);">+    ROMSTAGE(0x00233800, 92K)</span><br><span style="color: hsl(120, 100%, 40%);">+     SRAM_L2C_END(0x00280000)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    DRAM_START(0x40000000)</span><br><span style="color: hsl(120, 100%, 40%);">+        DRAM_DMA(0x40000000, 1M)</span><br><span style="color: hsl(120, 100%, 40%);">+      POSTRAM_CBFS_CACHE(0x40100000, 1M)</span><br><span style="color: hsl(120, 100%, 40%);">+    RAMSTAGE(0x40200000, 256K)</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/soc/mediatek/mt8183/spi.c b/src/soc/mediatek/mt8183/spi.c</span><br><span>new file mode 100644</span><br><span>index 0000000..78821d1</span><br><span>--- /dev/null</span><br><span>+++ b/src/soc/mediatek/mt8183/spi.c</span><br><span>@@ -0,0 +1,30 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 MediaTek Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <soc/flash_controller.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <spi-generic.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const struct spi_ctrlr spi_flash_ctrlr = {</span><br><span style="color: hsl(120, 100%, 40%);">+      .max_xfer_size = 65535,</span><br><span style="color: hsl(120, 100%, 40%);">+       .flash_probe = mtk_spi_flash_probe,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const struct spi_ctrlr_buses spi_ctrlr_bus_map[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+       {</span><br><span style="color: hsl(120, 100%, 40%);">+             .ctrlr = &spi_flash_ctrlr,</span><br><span style="color: hsl(120, 100%, 40%);">+        },</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const size_t spi_ctrlr_bus_map_count = ARRAY_SIZE(spi_ctrlr_bus_map);</span><br><span>diff --git a/util/mtkheader/gen-bl-img.py b/util/mtkheader/gen-bl-img.py</span><br><span>index 361912f..3f708c6 100755</span><br><span>--- a/util/mtkheader/gen-bl-img.py</span><br><span>+++ b/util/mtkheader/gen-bl-img.py</span><br><span>@@ -35,20 +35,26 @@</span><br><span> def align(data, size, pattern = '\0'):</span><br><span>         return padding(data, (len(data) + (size - 1)) & ~(size - 1), pattern)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-gfh_infos = {</span><br><span style="color: hsl(0, 100%, 40%);">-      'mt8173': struct.pack("44I",</span><br><span style="color: hsl(0, 100%, 40%);">-  0x014d4d4d, 0x00000038, 0x454c4946, 0x464e495f,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x0000004f, 0x00000001, 0x01050001, 0x000C0f50,</span><br><span style="color: hsl(0, 100%, 40%);">- 0xffffffff, 0x00020000, 0x000000a8, 0x00000020,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x000000B0, 0x00000001, 0x014d4d4d, 0x0001000c,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00000001, 0x034d4d4d, 0x00070064, 0x00001182,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00000000, 0x00000000, 0x00000000, 0x00000000,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00000000, 0x00000000, 0x00000000, 0x00000000,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00000000, 0x00000000, 0x00000000, 0x00000000,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00000000, 0x00000000, 0x00000000, 0x00000000,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00000000, 0x00000000, 0x00006400, 0x00001388,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x00000000, 0x00000000, 0x00000000, 0x00000000,</span><br><span style="color: hsl(0, 100%, 40%);">-    )}</span><br><span style="color: hsl(120, 100%, 40%);">+def gen_gfh_info(chip):</span><br><span style="color: hsl(120, 100%, 40%);">+        entries = {</span><br><span style="color: hsl(120, 100%, 40%);">+           'mt8173': 0x000C1000,</span><br><span style="color: hsl(120, 100%, 40%);">+         'mt8183': 0x00201000</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   gfh = struct.pack("44I",</span><br><span style="color: hsl(120, 100%, 40%);">+            0x014d4d4d, 0x00000038, 0x454c4946, 0x464e495f,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x0000004f, 0x00000001, 0x01050001, entries[chip] - 0xb0,</span><br><span style="color: hsl(120, 100%, 40%);">+             0xffffffff, 0x00020000, 0x000000a8, 0x00000020,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x000000B0, 0x00000001, 0x014d4d4d, 0x0001000c,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x00000001, 0x034d4d4d, 0x00070064, 0x00001182,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x00000000, 0x00000000, 0x00000000, 0x00000000,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x00000000, 0x00000000, 0x00000000, 0x00000000,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x00000000, 0x00000000, 0x00000000, 0x00000000,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x00000000, 0x00000000, 0x00000000, 0x00000000,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x00000000, 0x00000000, 0x00006400, 0x00001388,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x00000000, 0x00000000, 0x00000000, 0x00000000)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     return gfh</span><br><span> </span><br><span> def gen_emmc_header(data):</span><br><span>         header = (padding(struct.pack("<12sII", "EMMC_BOOT", 1, 512), 512, '\xff') +</span><br><span>@@ -70,7 +76,7 @@</span><br><span> }</span><br><span> </span><br><span> def gen_preloader(chip_ver, flash_type, data):</span><br><span style="color: hsl(0, 100%, 40%);">-      gfh_info = gfh_infos[chip_ver]</span><br><span style="color: hsl(120, 100%, 40%);">+        gfh_info = gen_gfh_info(chip_ver)</span><br><span>    gfh_info = gfh_info[0:32] + struct.pack("1I", len(data)+len(gfh_info)+32) + gfh_info[36:len(gfh_info)]</span><br><span> </span><br><span>         gfh_hash = hashlib.sha256(gfh_info + data).digest()</span><br><span>@@ -83,7 +89,7 @@</span><br><span>      if len(argv) != 5:</span><br><span>           print "Usage: %s <chip> <flash_type> <input_file> <output_file>" % argv[0]</span><br><span>                 print "\t flash_type: emmc/sf"</span><br><span style="color: hsl(0, 100%, 40%);">-                print "\t chip      : mt8173"</span><br><span style="color: hsl(120, 100%, 40%);">+               print "\t chip      : mt8173/mt8183"</span><br><span> </span><br><span>           exit(1)</span><br><span>      write(argv[4], gen_preloader(argv[1], argv[2], read(argv[3])))</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/26659">change 26659</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/26659"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ie81fa56ffce85188e1f9e979f9b0e64b764c2627 </div>
<div style="display:none"> Gerrit-Change-Number: 26659 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Tristan Hsieh <tristan.shieh@mediatek.com> </div>