summaryrefslogtreecommitdiffstats
path: root/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0002-rpi-passthrough-of-the-firmware-provided-FDT-blob.patch
diff options
context:
space:
mode:
authorPatrick Williams <patrick@stwcx.xyz>2017-02-23 20:31:26 -0600
committerPatrick Williams <patrick@stwcx.xyz>2017-03-29 21:31:40 +0000
commitb2e6a9b5bcc725ab21f4a319e32ea09700a732b6 (patch)
treeea703254597ea62d8ea0055c428b2709b80d649e /import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0002-rpi-passthrough-of-the-firmware-provided-FDT-blob.patch
parentddad1a1568cc6c729bcb317fae411152024437fa (diff)
downloadtalos-openbmc-b2e6a9b5bcc725ab21f4a319e32ea09700a732b6.tar.gz
talos-openbmc-b2e6a9b5bcc725ab21f4a319e32ea09700a732b6.zip
Squashed 'import-layers/meta-raspberrypi/'.
cce6292 linux-raspberrypi_4.9.bb: Upgrade to 4.9.10 c34a6b0 linux-raspberrypi_4.4: Update to 4.4.48 7398030 Revert "u-boot: drop patch to include lowlevel_init" 69c5675 README: Mention CM1 and CM3 support 56b0c59 rpi-base.inc: Include dtb file for CM1 and CM3 a735477 raspberrypi*.conf: Minor tweaks 9923618 raspberrypi-cm3.conf: Add dummy machine for CM3 (alias for RPi2) d5aa048 raspberrypi-cm.conf: Add dummy machine for CM1 (alias for RPi1) 5b5c4d9 linux-raspberrypi_4.9: Update to 4.9.4 f81f022 linux-raspberrypi_4.4: Update to 4.4.43 263e6bd linux-raspberrypi: Drop v4.8 121e200 linux-raspberrypi: Drop v4.7 cb7068a linux-raspberrypi: Upgrade to v4.4.39 38bc324 linux-raspberrypi: Drop v4.1 e1f69da linux-raspberrypi_4.9.bb: Add recipe for 4.9 release 02c0d41 linux-raspberrypi_4.8.bb: Upgrade to 4.8.16 031e2695 u-boot: drop patch to include lowlevel_init c405581 rpi-base.inc: remove input modules form XSERVER d77f3d4 rpi-base.inc: add xserver-xorg-extension-glx to XSERVER for vc4 enabled 672e025 linux-raspberrypi-4.8: Upgrade to 4.8.15 1bf09a4 userland: Fix building on aarch64 22fb2b4 linux-raspberrypi-4.8: Upgrade to 4.8.13 90c45b4 userland: Update to latest 96b9c63 linux-raspberrypi-base.bbclass: remove version hack 17f0c23 linux-rpi.inc: Do not rely on DISTRO_TYPE to enable/disable kernel debug 064aa0a u-boot: Simplify boot script 0e66d69 linux-raspberrypi_4.8.bb: upgrade to 4.8.12 18cf04d firmware: Update to 20161125 1f64604 linux-raspberrypi_4.4.bb: upgrade to 4.4.35 44d41bf raspberrypi3.conf: fix typo for BCM43430 6bd1bfe linux-raspberrypi: remove not needed bundle_initramfs_append() b030814 u-boot: Fix appending to RDEPENDS 9c12ac8 linux-raspberrypi_4.8.bb: Upgrade to 4.8.6 380740d linux-firmware_git.bbappend: Delete a5f95f4 userland: Bump to latest and add ASNEEDED = "" 716b6a9 firmware: Use release tarballs 6c755af weston: Unify bbappends for weston into single file b9e6f04 userland: Update to latest master tip 00300d9 firmware: Update to 20161030 3e6e890 linux-raspberrypi-4.4: Update to 4.4.28 12aa27d gstreamer1.0-plugins-bad_%.bbappend: Set PACKAGECONFIG_GL for RPi ab39653 rpi-base.inc: Include pi3-disable-bt-overlay.dtb 17a6933 linux-raspberrypi: Update to 4.8.4 ddc9390 linux-firmware: Fix "No generic license file exists" warning d51a8a7 linux-raspberrypi_4.8.bb: Update to 4.8.2 e991148 firmware: Update to latest ed54bd3 linux-firmware: Correct the LICENSE for brcm43430-license 3360f98 sdcard_image-rpi.bbclass: Include boot script when using u-boot 1d629b1 u-boot: Add RDEPENDS on rpi-u-boot-scr 56047ad rpi-u-boot-scr: Add recipe to create u-boot boot script 1f24992 rpi-base.inc: Don't install kernel image into rootfs c62e088 eglinfo-x11: align to VC4 1ebb370 vc4: why no framebuffer device? 8d17669 xorg align for vc4 3b9aebd mesa: align for vc4 de016ce bluez5: correctly append brcm43438 service b6c954d Fix DISPMANX_OFFLINE variable typo d778d0a README: Replace references to Redmine with Github Issues 1e3983f linux-raspberrypi_4.7.bb: Update to 4.7.7 ecd8875 linux-raspberrypi: Add recipe for 4.8 release 05be947 firmware: Upgrade to latest 585838e userland: Upgrade to latest 41689e8 sdcard_image-rpi.bbclass: Remove redundant RPI_KERNEL_VERSION 5697e77 linux-raspberrypi_4.4: Upgrade to 4.4.23 4817e2c sdcard_image-rpi.bbclass: avoid corrupted images with latest oe-core ac6f357 weston: Fix typo with override 760ddd0 Switch to using 4.4 as default kernel ed84c2c vc4graphics: Support X11 with the VC4 driver. 55388a5 firmware, userland: Bump to latest b24afdc linux-raspberrypi_3.18: Remove e993bdc linux-raspberrypi: Add recipe for 4.7 release c2f7643 linux-raspberrypi_4.4: upgrade to 4.4.16 d511c7c linux-raspberrypi-4.4: add patch to enable proper operation of renderD128 device ef22ff4 linux-rpi.inc: add the configuration options required to support vc4graphics 6b4de2b mesa_%.bbappend: new file to add the correct configuration options to support vc4graphics bee7643 weston/weston_%.bbappend: modify configuration options to support vc4graphics 72b9635 wayland/weston_%.bbappend: modify configuration options to support vc4graphics ba9c466 rpi-config_git.bb: add v4c overlay to config.txt to support vc4graphics 5d2722c raspberrypi3.conf: set the default value of VC4_CMA_SIZE to support vc4graphics 824b78c raspberrypi2.conf: set the default value of VC4_CMA_SIZE to support vc4graphics dfce95f raspberrypi0.conf: set the default value of VC4_CMA_SIZE to support vc4graphics 224b9e9 raspberrypi.conf: set the default value of VC4_CMA_SIZE to support vc4graphics 0035bc8 rpi-base.inc: add vc4-kms-v3d to the overlays to support vc4graphics 6e535dd rpi-default-providers.inc: change default providers to support vc4graphics 1a32817 sdcard_image-rpi.bbclass: support for .dtbo files for dtb overlays d98f2a7 linux-raspberrypi-base.bbclass: support for .dtbo files for dtb overlays 09b76a4 rpi-base.inc: support for .dtbo files for dtb overlays 18a2fb6 linux-raspberrypi_4.4.bb: support for .dtbo files for dtb overlays a5f9b07 bcm2835: Compile examples correct LDFLAGS to avoid HASH errors 8c5eba1 bcm2835: Update to 1.50 5229f75 wiringPi: Fix compilation of libraries 5771c7f wiringpi: Fix prepend space 1b2c25e wiringpi: Update to 2.32 4c02c7c sdcard_image-rpi.bbclass: remove redundant IMAGEDATESTAMP cc64d63 userland: Add bash to RDEPENDS Change-Id: Ic9e50299fcba012068cea0c0a971c48c6da4138f git-subtree-dir: import-layers/meta-raspberrypi git-subtree-split: cce6292e41493158c26f5b1b7fded97faacf10d7 Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Diffstat (limited to 'import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0002-rpi-passthrough-of-the-firmware-provided-FDT-blob.patch')
-rw-r--r--import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0002-rpi-passthrough-of-the-firmware-provided-FDT-blob.patch156
1 files changed, 156 insertions, 0 deletions
diff --git a/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0002-rpi-passthrough-of-the-firmware-provided-FDT-blob.patch b/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0002-rpi-passthrough-of-the-firmware-provided-FDT-blob.patch
new file mode 100644
index 000000000..323b7ab40
--- /dev/null
+++ b/import-layers/meta-raspberrypi/recipes-bsp/u-boot/files/0002-rpi-passthrough-of-the-firmware-provided-FDT-blob.patch
@@ -0,0 +1,156 @@
+From ade243a211d62327e9ebadce27bbbff7981e37f0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?C=C3=A9dric=20Schieli?= <cschieli@gmail.com>
+Date: Fri, 11 Nov 2016 11:59:07 +0100
+Subject: [PATCH] rpi: passthrough of the firmware provided FDT blob
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Raspberry firmware used to pass a FDT blob at a fixed address (0x100),
+but this is not true anymore. The address now depends on both the
+memory size and the blob size [1].
+
+If one wants to passthrough this FDT blob to the kernel, the most
+reliable way is to save its address from the r2/x0 register in the
+U-Boot entry point and expose it in a environment variable for
+further processing.
+
+This patch just does this:
+- save the provided address in the global variable fw_dtb_pointer
+- expose it in ${fdt_addr} if it points to a a valid FDT blob
+
+There are many different ways to use it. One can, for example, use
+the following script which will extract from the tree the command
+line built by the firmware, then hand over the blob to a previously
+loaded kernel:
+
+fdt addr ${fdt_addr}
+fdt get value bootargs /chosen bootargs
+bootz ${kernel_addr_r} - ${fdt_addr}
+
+Alternatively, users relying on sysboot/pxe can simply omit any FDT
+statement in their extlinux.conf file, U-Boot will automagically pick
+${fdt_addr} and pass it to the kernel.
+
+[1] https://www.raspberrypi.org/forums//viewtopic.php?f=107&t=134018
+
+Upstream-Status: Backport
+
+Signed-off-by: Cédric Schieli <cschieli@gmail.com>
+Acked-by: Stephen Warren <swarren@nvidia.com>
+Signed-off-by: Jonathan Liu <net147@gmail.com>
+---
+ board/raspberrypi/rpi/Makefile | 1 +
+ board/raspberrypi/rpi/lowlevel_init.S | 36 +++++++++++++++++++++++++++++++++++
+ board/raspberrypi/rpi/rpi.c | 29 ++++++++++++++++++++++++++++
+ 3 files changed, 66 insertions(+)
+ create mode 100644 board/raspberrypi/rpi/lowlevel_init.S
+
+diff --git a/board/raspberrypi/rpi/Makefile b/board/raspberrypi/rpi/Makefile
+index 4ce2c98..dcb25ac 100644
+--- a/board/raspberrypi/rpi/Makefile
++++ b/board/raspberrypi/rpi/Makefile
+@@ -5,3 +5,4 @@
+ #
+
+ obj-y := rpi.o
++obj-y += lowlevel_init.o
+diff --git a/board/raspberrypi/rpi/lowlevel_init.S b/board/raspberrypi/rpi/lowlevel_init.S
+new file mode 100644
+index 0000000..cdbd8e1
+--- /dev/null
++++ b/board/raspberrypi/rpi/lowlevel_init.S
+@@ -0,0 +1,36 @@
++/*
++ * (C) Copyright 2016
++ * Cédric Schieli <cschieli@gmail.com>
++ *
++ * SPDX-License-Identifier: GPL-2.0+
++ */
++
++#include <config.h>
++
++.align 8
++.global fw_dtb_pointer
++fw_dtb_pointer:
++#ifdef CONFIG_ARM64
++ .dword 0x0
++#else
++ .word 0x0
++#endif
++
++/*
++ * Routine: save_boot_params (called after reset from start.S)
++ * Description: save ATAG/FDT address provided by the firmware at boot time
++ */
++
++.global save_boot_params
++save_boot_params:
++
++ /* The firmware provided ATAG/FDT address can be found in r2/x0 */
++#ifdef CONFIG_ARM64
++ adr x8, fw_dtb_pointer
++ str x0, [x8]
++#else
++ str r2, fw_dtb_pointer
++#endif
++
++ /* Returns */
++ b save_boot_params_ret
+diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
+index 6245b36..ffd6d31 100644
+--- a/board/raspberrypi/rpi/rpi.c
++++ b/board/raspberrypi/rpi/rpi.c
+@@ -25,6 +25,9 @@
+
+ DECLARE_GLOBAL_DATA_PTR;
+
++/* From lowlevel_init.S */
++extern unsigned long fw_dtb_pointer;
++
+ static const struct bcm2835_gpio_platdata gpio_platdata = {
+ .base = BCM2835_GPIO_BASE,
+ };
+@@ -285,6 +288,31 @@ static void set_fdtfile(void)
+ setenv("fdtfile", fdtfile);
+ }
+
++/*
++ * If the firmware provided a valid FDT at boot time, let's expose it in
++ * ${fdt_addr} so it may be passed unmodified to the kernel.
++ */
++static void set_fdt_addr(void)
++{
++ if (getenv("fdt_addr"))
++ return;
++
++ if (fdt_magic(fw_dtb_pointer) != FDT_MAGIC)
++ return;
++
++ setenv_hex("fdt_addr", fw_dtb_pointer);
++}
++
++/*
++ * Prevent relocation from stomping on a firmware provided FDT blob.
++ */
++unsigned long board_get_usable_ram_top(unsigned long total_size)
++{
++ if ((gd->ram_top - fw_dtb_pointer) > SZ_64M)
++ return gd->ram_top;
++ return fw_dtb_pointer & ~0xffff;
++}
++
+ static void set_usbethaddr(void)
+ {
+ ALLOC_CACHE_ALIGN_BUFFER(struct msg_get_mac_address, msg, 1);
+@@ -356,6 +384,7 @@ static void set_serial_number(void)
+
+ int misc_init_r(void)
+ {
++ set_fdt_addr();
+ set_fdtfile();
+ set_usbethaddr();
+ #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+--
+2.10.2
+
OpenPOWER on IntegriCloud