diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0200-arm-bcm2835-Fix-FIQ-early-ioremap.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0200-arm-bcm2835-Fix-FIQ-early-ioremap.patch | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0200-arm-bcm2835-Fix-FIQ-early-ioremap.patch b/target/linux/bcm27xx/patches-5.4/950-0200-arm-bcm2835-Fix-FIQ-early-ioremap.patch deleted file mode 100644 index 1521476de1..0000000000 --- a/target/linux/bcm27xx/patches-5.4/950-0200-arm-bcm2835-Fix-FIQ-early-ioremap.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 9b9474236597f87247fcf93147598e50f7f02b9e Mon Sep 17 00:00:00 2001 -From: Phil Elwell <phil@raspberrypi.org> -Date: Wed, 20 Feb 2019 08:49:39 +0000 -Subject: [PATCH] arm: bcm2835: Fix FIQ early ioremap - -The ioremapping creates mappings within the vmalloc area. The -equivalent early function, create_mapping, now checks that the -requested explicit virtual address is between VMALLOC_START and -VMALLOC_END. As there is no reason to have any correlation between -the physical and virtual addresses, put the required mappings at -VMALLOC_START and above. - -Signed-off-by: Phil Elwell <phil@raspberrypi.org> ---- - arch/arm/mach-bcm/board_bcm2835.c | 21 +++++++++++++++------ - 1 file changed, 15 insertions(+), 6 deletions(-) - ---- a/arch/arm/mach-bcm/board_bcm2835.c -+++ b/arch/arm/mach-bcm/board_bcm2835.c -@@ -5,17 +5,20 @@ - - #include <linux/init.h> - #include <linux/irqchip.h> -+#include <linux/mm.h> - #include <linux/of_address.h> - #include <linux/of_fdt.h> - #include <asm/system_info.h> - - #include <asm/mach/arch.h> - #include <asm/mach/map.h> -+#include <asm/memory.h> -+#include <asm/pgtable.h> - - #include "platsmp.h" - --#define BCM2835_USB_VIRT_BASE 0xf0980000 --#define BCM2835_USB_VIRT_MPHI 0xf0006000 -+#define BCM2835_USB_VIRT_BASE (VMALLOC_START) -+#define BCM2835_USB_VIRT_MPHI (VMALLOC_START + 0x10000) - - static void __init bcm2835_init(void) - { -@@ -74,20 +77,26 @@ static int __init bcm2835_map_usb(unsign - - static void __init bcm2835_map_io(void) - { -- const __be32 *ranges; -+ const __be32 *ranges, *address_cells; -+ unsigned long root, addr_cells; - int soc, len; - unsigned long p2b_offset; - - debug_ll_io_init(); - -+ root = of_get_flat_dt_root(); - /* Find out how to map bus to physical address first from soc/ranges */ -- soc = of_get_flat_dt_subnode_by_name(of_get_flat_dt_root(), "soc"); -+ soc = of_get_flat_dt_subnode_by_name(root, "soc"); - if (soc < 0) - return; -+ address_cells = of_get_flat_dt_prop(root, "#address-cells", &len); -+ if (!address_cells || len < (sizeof(unsigned long))) -+ return; -+ addr_cells = be32_to_cpu(address_cells[0]); - ranges = of_get_flat_dt_prop(soc, "ranges", &len); -- if (!ranges || len < (sizeof(unsigned long) * 3)) -+ if (!ranges || len < (sizeof(unsigned long) * (2 + addr_cells))) - return; -- p2b_offset = be32_to_cpu(ranges[0]) - be32_to_cpu(ranges[1]); -+ p2b_offset = be32_to_cpu(ranges[0]) - be32_to_cpu(ranges[addr_cells]); - - /* Now search for bcm2708-usb node in device tree */ - of_scan_flat_dt(bcm2835_map_usb, &p2b_offset); |