ipq806x: 6.1: replace ZRELADDR HACK patch with new version
With 6.1 lots have changed and the platform for Makefile.boot got dropped. Replace the patch with a new version that is alligned to the new implementation. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This commit is contained in:
parent
d06b859ada
commit
f92bf3ffbc
2 changed files with 67 additions and 62 deletions
|
@ -0,0 +1,67 @@
|
||||||
|
From 9c896e9fc2ef1209e4a56d8c9fdd183847c2c814 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
Date: Tue, 18 Oct 2022 22:02:46 +0200
|
||||||
|
Subject: [PATCH] ARM: mach-qcom: fix support for ipq806x
|
||||||
|
|
||||||
|
Add a specific config flag for Qcom IPQ806x as this SoC can't use
|
||||||
|
AUTO_ZRELADDR and require the PHYS_OFFSET set to 0x42000000.
|
||||||
|
|
||||||
|
This is needed as some legacy board (or some wrongly configured
|
||||||
|
bootloader) pass the wrong memory map and doesn't exclude the first
|
||||||
|
~20MB of RAM reserved for the hardware network accellerators.
|
||||||
|
|
||||||
|
With this change we can correctly support each board and prevent any
|
||||||
|
kind of misconfiguration done by the OEM.
|
||||||
|
|
||||||
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm/Kconfig | 3 ++-
|
||||||
|
arch/arm/mach-qcom/Kconfig | 13 +++++++++++++
|
||||||
|
2 files changed, 15 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
|
||||||
|
index 1af63e17b4ad..0818d35973ad 100644
|
||||||
|
--- a/arch/arm/Kconfig
|
||||||
|
+++ b/arch/arm/Kconfig
|
||||||
|
@@ -282,6 +282,7 @@ config PHYS_OFFSET
|
||||||
|
default 0x30000000 if ARCH_S3C24XX
|
||||||
|
default 0xa0000000 if ARCH_IOP32X || ARCH_PXA
|
||||||
|
default 0xc0000000 if ARCH_EP93XX || ARCH_SA1100
|
||||||
|
+ default 0x42000000 if ARCH_IPQ806X
|
||||||
|
default 0
|
||||||
|
help
|
||||||
|
Please provide the physical address corresponding to the
|
||||||
|
@@ -1701,7 +1702,7 @@ config CRASH_DUMP
|
||||||
|
|
||||||
|
config AUTO_ZRELADDR
|
||||||
|
bool "Auto calculation of the decompressed kernel image address" if !ARCH_MULTIPLATFORM
|
||||||
|
- default !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
|
||||||
|
+ default !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100 || ARCH_IPQ806X)
|
||||||
|
help
|
||||||
|
ZRELADDR is the physical address where the decompressed kernel
|
||||||
|
image will be placed. If AUTO_ZRELADDR is selected, the address
|
||||||
|
diff --git a/arch/arm/mach-qcom/Kconfig b/arch/arm/mach-qcom/Kconfig
|
||||||
|
index 12a812e61c16..b11b6e391ff0 100644
|
||||||
|
--- a/arch/arm/mach-qcom/Kconfig
|
||||||
|
+++ b/arch/arm/mach-qcom/Kconfig
|
||||||
|
@@ -46,4 +46,17 @@ config ARCH_MDM9615
|
||||||
|
bool "Enable support for MDM9615"
|
||||||
|
select CLKSRC_QCOM
|
||||||
|
|
||||||
|
+config ARCH_IPQ806X
|
||||||
|
+ bool "Enable support for IPQ806x"
|
||||||
|
+ help
|
||||||
|
+ Enable support for the Qualcomm IPQ806x.
|
||||||
|
+
|
||||||
|
+ IPQ806x require special PHYS_OFFSET and can't use AUTO_ZRELADDR.
|
||||||
|
+ The first ~20MB of RAM is reserved for the hardware network accelerators,
|
||||||
|
+ and the bootloader removes this section from the layout passed from the
|
||||||
|
+ ATAGS (when used by some bootloader doesn't even do that).
|
||||||
|
+
|
||||||
|
+ To support every system and handle legacy systems, hardcode PHYS_OFFSET and
|
||||||
|
+ disable AUTO_ZRELADDR.
|
||||||
|
+
|
||||||
|
endif
|
||||||
|
--
|
||||||
|
2.37.2
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
From fa71139b55e114aa8c3c4823ff8ee7d49ee810d4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mathieu Olivari <mathieu@codeaurora.org>
|
|
||||||
Date: Wed, 29 Apr 2015 15:21:46 -0700
|
|
||||||
Subject: [PATCH 60/69] HACK: arch: arm: force ZRELADDR on arch-qcom
|
|
||||||
|
|
||||||
ARCH_QCOM is using the ARCH_MULTIPLATFORM option, as now recommended
|
|
||||||
on most ARM architectures. This automatically calculate ZRELADDR by
|
|
||||||
masking PHYS_OFFSET with 0xf8000000.
|
|
||||||
|
|
||||||
However, on IPQ806x, the first ~20MB of RAM is reserved for the hardware
|
|
||||||
network accelerators, and the bootloader removes this section from the
|
|
||||||
layout passed from the ATAGS (when used).
|
|
||||||
|
|
||||||
For newer bootloader, when DT is used, this is not a problem, we just
|
|
||||||
reserve this memory in the device tree. But if the bootloader doesn't
|
|
||||||
have DT support, then ATAGS have to be used. In this case, the ARM
|
|
||||||
decompressor will position the kernel in this low mem, which will not be
|
|
||||||
in the RAM section mapped by the bootloader, which means the kernel will
|
|
||||||
freeze in the middle of the boot process trying to map the memory.
|
|
||||||
|
|
||||||
As a work around, this patch allows disabling AUTO_ZRELADDR when
|
|
||||||
ARCH_QCOM is selected. It makes the zImage usage possible on bootloaders
|
|
||||||
which don't support device-tree, which is the case on certain early
|
|
||||||
IPQ806x based designs.
|
|
||||||
|
|
||||||
Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
|
|
||||||
---
|
|
||||||
arch/arm/Kconfig | 2 +-
|
|
||||||
arch/arm/Makefile | 2 ++
|
|
||||||
arch/arm/mach-qcom/Makefile.boot | 1 +
|
|
||||||
3 files changed, 4 insertions(+), 1 deletion(-)
|
|
||||||
create mode 100644 arch/arm/mach-qcom/Makefile.boot
|
|
||||||
|
|
||||||
--- a/arch/arm/Kconfig
|
|
||||||
+++ b/arch/arm/Kconfig
|
|
||||||
@@ -317,7 +317,7 @@ config ARCH_MULTIPLATFORM
|
|
||||||
select ARCH_SELECT_MEMORY_MODEL
|
|
||||||
select ARM_HAS_SG_CHAIN
|
|
||||||
select ARM_PATCH_PHYS_VIRT
|
|
||||||
- select AUTO_ZRELADDR
|
|
||||||
+ select AUTO_ZRELADDR if !ARCH_QCOM
|
|
||||||
select TIMER_OF
|
|
||||||
select COMMON_CLK
|
|
||||||
select GENERIC_IRQ_MULTI_HANDLER
|
|
||||||
--- a/arch/arm/Makefile
|
|
||||||
+++ b/arch/arm/Makefile
|
|
||||||
@@ -237,9 +237,11 @@ MACHINE := arch/arm/mach-$(word 1,$(mac
|
|
||||||
else
|
|
||||||
MACHINE :=
|
|
||||||
endif
|
|
||||||
+ifeq ($(CONFIG_ARCH_QCOM),)
|
|
||||||
ifeq ($(CONFIG_ARCH_MULTIPLATFORM),y)
|
|
||||||
MACHINE :=
|
|
||||||
endif
|
|
||||||
+endif
|
|
||||||
|
|
||||||
machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
|
|
||||||
platdirs := $(patsubst %,arch/arm/plat-%/,$(sort $(plat-y)))
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/arm/mach-qcom/Makefile.boot
|
|
||||||
@@ -0,0 +1 @@
|
|
||||||
+zreladdr-y+= 0x42208000
|
|
Loading…
Reference in a new issue