]> Git Repo - linux.git/commitdiff
ARM: orion/mvebu: unify debug-ll virtual addresses
authorArnd Bergmann <[email protected]>
Wed, 31 Jul 2019 19:56:55 +0000 (21:56 +0200)
committerArnd Bergmann <[email protected]>
Wed, 14 Aug 2019 17:24:58 +0000 (19:24 +0200)
In a multiplatform configuration, enabling DEBUG_LL breaks booting
on all platforms with incompatible settings. In case of the Marvell
platforms of the Orion/MVEBU family, the physical addresses are
all the same, we just map them at different virtual addresses,
which makes it impossible to run a kernel with DEBUG_LL enabled on
a combination of the merged mvebu and the legacy boardfile based
platforms.

This is easily solved by using the same virtual address everywhere.
I picked the address that is already used by mach-mvebu for UART0:
0xfec12000. All these platforms have a 1MB region with their internal
registers, almost always at physical address 0xf1000000, so I'm
updating the iotable for that entry.

In case of mach-dove, this is slightly trickier, as the existing
mapping is 8MB and a second 8MB mapping is already at the 0xfec00000
address. I have verified from the datasheet that the last 7MB of the
physical mapping are "reserved" and nothing in Linux tries to use
it either. I'm putting this 1MB mapping at the same address as the
others, and the second 8MB register area immediately before that.

Link: https://lore.kernel.org/r/[email protected]
Link: https://lore.kernel.org/linux-arm-kernel/[email protected]/
Signed-off-by: Arnd Bergmann <[email protected]>
arch/arm/Kconfig.debug
arch/arm/mach-dove/dove.h
arch/arm/mach-mv78xx0/mv78xx0.h
arch/arm/mach-orion5x/orion5x.h

index a4447f21bb2579a3c3a84d83b116f62cae49c569..96a8a1973fa3938aeda4d842c9ac1730d4ec9ab2 100644 (file)
@@ -1760,10 +1760,7 @@ config DEBUG_UART_VIRT
        default 0xfc705000 if DEBUG_ZTE_ZX
        default 0xfcfe8600 if DEBUG_BCM63XX_UART
        default 0xfd000000 if DEBUG_SPEAR3XX || DEBUG_SPEAR13XX
-       default 0xfd012000 if DEBUG_MVEBU_UART0_ALTERNATE && ARCH_MV78XX0
        default 0xfd883000 if DEBUG_ALPINE_UART0
-       default 0xfde12000 if DEBUG_MVEBU_UART0_ALTERNATE && ARCH_DOVE
-       default 0xfe012000 if DEBUG_MVEBU_UART0_ALTERNATE && ARCH_ORION5X
        default 0xfe017000 if DEBUG_MMP_UART2
        default 0xfe018000 if DEBUG_MMP_UART3
        default 0xfe100000 if DEBUG_IMX23_UART || DEBUG_IMX28_UART
@@ -1778,7 +1775,7 @@ config DEBUG_UART_VIRT
        default 0xfec02000 if DEBUG_SOCFPGA_UART0
        default 0xfec02100 if DEBUG_SOCFPGA_ARRIA10_UART1
        default 0xfec03000 if DEBUG_SOCFPGA_CYCLONE5_UART1
-       default 0xfec12000 if (DEBUG_MVEBU_UART0 || DEBUG_MVEBU_UART0_ALTERNATE) && ARCH_MVEBU
+       default 0xfec12000 if DEBUG_MVEBU_UART0 || DEBUG_MVEBU_UART0_ALTERNATE
        default 0xfec12100 if DEBUG_MVEBU_UART1_ALTERNATE
        default 0xfec10000 if DEBUG_SIRFATLAS7_UART0
        default 0xfec20000 if DEBUG_DAVINCI_DMx_UART0
index 539e735f968df1f464878e7ddcf7c61ab030a71a..320ed1696abdc0661ab3487bb91e043a8226bc19 100644 (file)
@@ -18,8 +18,8 @@
  * c8000000    fdb00000        1M      Cryptographic SRAM
  * e0000000    @runtime        128M    PCIe-0 Memory space
  * e8000000    @runtime        128M    PCIe-1 Memory space
- * f1000000    fde00000        8M      on-chip south-bridge registers
- * f1800000    fe600000        8M      on-chip north-bridge registers
+ * f1000000    fec00000        1M      on-chip south-bridge registers
+ * f1800000    fe400000        8M      on-chip north-bridge registers
  * f2000000    fee00000        1M      PCIe-0 I/O space
  * f2100000    fef00000        1M      PCIe-1 I/O space
  */
 #define DOVE_SCRATCHPAD_SIZE           SZ_1M
 
 #define DOVE_SB_REGS_PHYS_BASE         0xf1000000
-#define DOVE_SB_REGS_VIRT_BASE         IOMEM(0xfde00000)
-#define DOVE_SB_REGS_SIZE              SZ_8M
+#define DOVE_SB_REGS_VIRT_BASE         IOMEM(0xfec00000)
+#define DOVE_SB_REGS_SIZE              SZ_1M
 
 #define DOVE_NB_REGS_PHYS_BASE         0xf1800000
-#define DOVE_NB_REGS_VIRT_BASE         IOMEM(0xfe600000)
+#define DOVE_NB_REGS_VIRT_BASE         IOMEM(0xfe400000)
 #define DOVE_NB_REGS_SIZE              SZ_8M
 
 #define DOVE_PCIE0_IO_PHYS_BASE                0xf2000000
index 2db1265ec12189cfc22eee5ddd1441a2fc3fd19d..c1a9a1d1b29574af98c558311fcf78def80cf49c 100644 (file)
@@ -37,7 +37,7 @@
  * fee50000    f0d00000        64K     PCIe #5 I/O space
  * fee60000    f0e00000        64K     PCIe #6 I/O space
  * fee70000    f0f00000        64K     PCIe #7 I/O space
- * fd000000    f1000000        1M      on-chip peripheral registers
+ * fec00000    f1000000        1M      on-chip peripheral registers
  */
 #define MV78XX0_CORE0_REGS_PHYS_BASE   0xf1020000
 #define MV78XX0_CORE1_REGS_PHYS_BASE   0xf1024000
@@ -49,7 +49,7 @@
 #define MV78XX0_PCIE_IO_SIZE           SZ_1M
 
 #define MV78XX0_REGS_PHYS_BASE         0xf1000000
-#define MV78XX0_REGS_VIRT_BASE         IOMEM(0xfd000000)
+#define MV78XX0_REGS_VIRT_BASE         IOMEM(0xfec00000)
 #define MV78XX0_REGS_SIZE              SZ_1M
 
 #define MV78XX0_PCIE_MEM_PHYS_BASE     0xc0000000
index 3364df331f01e4a992c90d3cc157c37c9a23d678..2b66120fba86cded9d255b5e802abfc56cc4abdb 100644 (file)
  * fc000000    device bus mappings (cs0/cs1)
  *
  * virt                phys            size
- * fe000000    f1000000        1M      on-chip peripheral registers
+ * fec00000    f1000000        1M      on-chip peripheral registers
  * fee00000    f2000000        64K     PCIe I/O space
  * fee10000    f2100000        64K     PCI I/O space
  * fd000000    f0000000        16M     PCIe WA space (Orion-1/Orion-NAS only)
  ****************************************************************************/
 #define ORION5X_REGS_PHYS_BASE         0xf1000000
-#define ORION5X_REGS_VIRT_BASE         IOMEM(0xfe000000)
+#define ORION5X_REGS_VIRT_BASE         IOMEM(0xfec00000)
 #define ORION5X_REGS_SIZE              SZ_1M
 
 #define ORION5X_PCIE_IO_PHYS_BASE      0xf2000000
This page took 0.083574 seconds and 4 git commands to generate.