2012-11-19 18:40:56

by Josh Cartwright

[permalink] [raw]
Subject: [PATCH 0/3] ARM: zynq: ARCH_MULTIPLATFORM support

Michal-

Here's an attempt at supporting ARCH_MULTIPLATFORM on Zynq. I've gotten
a multiplatform kernel building and booting on the zc702, although I
haven't tried to boot the same image on another non-Zynq board, due to
lack of available hardware.

It would be super awesome if this set could land in 3.8, but I know
we're running out of time there. I wouldn't be too heartbroken if it
didn't make it.

This patchset is on top of your arm-next branch and with the
debug_ll_init support patch @ arm-soc/devel/debug_ll_init.

Patch 1 drops the early TTC mapping. It is not necessary, since the TTC
driver now supports pulling mapping info from the device tree.

Patch 2 converts zynq to use the debug_ll_init() infrastructure slated
to go into 3.8.

Patch 3 is the bulk of the set, moving around logic around within
mach-zynq/include, and setting up the necessary build magic to get Zynq
building w/ CONFIG_ARCH_MULTIPLATFORM.

Thanks,
Josh

---
Josh Cartwright (3):
ARM: zynq: remove TTC early mapping
ARM: zynq: make use of debug_ll_io_init()
ARM: zynq: add support for ARCH_MULTIPLATFORM

arch/arm/Kconfig | 14 +-----
arch/arm/Kconfig.debug | 1 +
.../mach/debug-macro.S => include/debug/zynq.S} | 23 ++++++++--
arch/arm/mach-zynq/Kconfig | 13 ++++++
arch/arm/mach-zynq/common.c | 38 +++++-----------
arch/arm/mach-zynq/include/mach/uart.h | 25 ----------
arch/arm/mach-zynq/include/mach/uncompress.h | 51 ---------------------
arch/arm/mach-zynq/include/mach/zynq_soc.h | 53 ----------------------
arch/arm/mach-zynq/timer.c | 1 -
9 files changed, 46 insertions(+), 173 deletions(-)
rename arch/arm/{mach-zynq/include/mach/debug-macro.S => include/debug/zynq.S} (61%)
create mode 100644 arch/arm/mach-zynq/Kconfig
delete mode 100644 arch/arm/mach-zynq/include/mach/uart.h
delete mode 100644 arch/arm/mach-zynq/include/mach/uncompress.h
delete mode 100644 arch/arm/mach-zynq/include/mach/zynq_soc.h

--
1.8.0


2012-11-19 18:40:19

by Josh Cartwright

[permalink] [raw]
Subject: [PATCH 1/3] ARM: zynq: remove TTC early mapping

Now that the TTC driver has proper support for DT bindings, it is not
necessary for the registers to be mapped early. They will be mapped
during clock initialization using of_iomap(). Remove the early mapping.

In addition, remove the extraneous zynq_soc.h include from the timer
driver.

Signed-off-by: Josh Cartwright <[email protected]>
---
arch/arm/mach-zynq/common.c | 5 -----
arch/arm/mach-zynq/include/mach/zynq_soc.h | 6 +-----
arch/arm/mach-zynq/timer.c | 1 -
3 files changed, 1 insertion(+), 11 deletions(-)

diff --git a/arch/arm/mach-zynq/common.c b/arch/arm/mach-zynq/common.c
index 79bf5fb..2202f67 100644
--- a/arch/arm/mach-zynq/common.c
+++ b/arch/arm/mach-zynq/common.c
@@ -74,11 +74,6 @@ static void __init xilinx_irq_init(void)

static struct map_desc io_desc[] __initdata = {
{
- .virtual = TTC0_VIRT,
- .pfn = __phys_to_pfn(TTC0_PHYS),
- .length = TTC0_SIZE,
- .type = MT_DEVICE,
- }, {
.virtual = SCU_PERIPH_VIRT,
.pfn = __phys_to_pfn(SCU_PERIPH_PHYS),
.length = SCU_PERIPH_SIZE,
diff --git a/arch/arm/mach-zynq/include/mach/zynq_soc.h b/arch/arm/mach-zynq/include/mach/zynq_soc.h
index 5ebbd8e..2995044 100644
--- a/arch/arm/mach-zynq/include/mach/zynq_soc.h
+++ b/arch/arm/mach-zynq/include/mach/zynq_soc.h
@@ -29,13 +29,9 @@
#define UART_SIZE SZ_4K
#define UART_VIRT 0xF0001000

-#define TTC0_PHYS 0xF8001000
-#define TTC0_SIZE SZ_4K
-#define TTC0_VIRT (VMALLOC_END - TTC0_SIZE)
-
#define SCU_PERIPH_PHYS 0xF8F00000
#define SCU_PERIPH_SIZE SZ_8K
-#define SCU_PERIPH_VIRT (TTC0_VIRT - SCU_PERIPH_SIZE)
+#define SCU_PERIPH_VIRT (VMALLOC_END - SCU_PERIPH_SIZE)

#if IS_ENABLED(CONFIG_DEBUG_ZYNQ_UART1)
# define LL_UART_PADDR UART1_PHYS
diff --git a/arch/arm/mach-zynq/timer.c b/arch/arm/mach-zynq/timer.c
index 9662306..de3df28 100644
--- a/arch/arm/mach-zynq/timer.c
+++ b/arch/arm/mach-zynq/timer.c
@@ -29,7 +29,6 @@
#include <linux/slab.h>
#include <linux/clk-provider.h>

-#include <mach/zynq_soc.h>
#include "common.h"

/*
--
1.8.0

2012-11-19 18:40:26

by Josh Cartwright

[permalink] [raw]
Subject: [PATCH 2/3] ARM: zynq: make use of debug_ll_io_init()

Convert low-level debugging routines to make use of debug_ll_io_init().
This is part of the preparation for ARCH_MULTIPLATFORM support for Zynq.

Signed-off-by: Josh Cartwright <[email protected]>
---
arch/arm/Kconfig.debug | 1 +
.../mach/debug-macro.S => include/debug/zynq.S} | 3 +--
arch/arm/mach-zynq/common.c | 25 ++++++----------------
3 files changed, 9 insertions(+), 20 deletions(-)
rename arch/arm/{mach-zynq/include/mach/debug-macro.S => include/debug/zynq.S} (94%)

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 7754d51..d6bdad2 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -435,6 +435,7 @@ config DEBUG_LL_INCLUDE
default "debug/socfpga.S" if DEBUG_SOCFPGA_UART
default "debug/vexpress.S" if DEBUG_VEXPRESS_UART0_DETECT || \
DEBUG_VEXPRESS_UART0_CA9 || DEBUG_VEXPRESS_UART0_RS1
+ default "debug/zynq.S" if DEBUG_ZYNQ_UART0 || DEBUG_ZYNQ_UART1
default "mach/debug-macro.S"

config EARLY_PRINTK
diff --git a/arch/arm/mach-zynq/include/mach/debug-macro.S b/arch/arm/include/debug/zynq.S
similarity index 94%
rename from arch/arm/mach-zynq/include/mach/debug-macro.S
rename to arch/arm/include/debug/zynq.S
index 3ab0be1..08aed97 100644
--- a/arch/arm/mach-zynq/include/mach/debug-macro.S
+++ b/arch/arm/include/debug/zynq.S
@@ -1,5 +1,4 @@
-/* arch/arm/mach-zynq/include/mach/debug-macro.S
- *
+/*
* Debugging macro include header
*
* Copyright (C) 2011 Xilinx
diff --git a/arch/arm/mach-zynq/common.c b/arch/arm/mach-zynq/common.c
index 2202f67..a2f48da 100644
--- a/arch/arm/mach-zynq/common.c
+++ b/arch/arm/mach-zynq/common.c
@@ -72,23 +72,11 @@ static void __init xilinx_irq_init(void)
* running include the GIC, UART and Timer Counter.
*/

-static struct map_desc io_desc[] __initdata = {
- {
- .virtual = SCU_PERIPH_VIRT,
- .pfn = __phys_to_pfn(SCU_PERIPH_PHYS),
- .length = SCU_PERIPH_SIZE,
- .type = MT_DEVICE,
- },
-
-#ifdef CONFIG_DEBUG_LL
- {
- .virtual = LL_UART_VADDR,
- .pfn = __phys_to_pfn(LL_UART_PADDR),
- .length = UART_SIZE,
- .type = MT_DEVICE,
- },
-#endif
-
+static struct map_desc scu_desc __initdata = {
+ .virtual = SCU_PERIPH_VIRT,
+ .pfn = __phys_to_pfn(SCU_PERIPH_PHYS),
+ .length = SCU_PERIPH_SIZE,
+ .type = MT_DEVICE,
};

static void __init xilinx_zynq_timer_init(void)
@@ -117,7 +105,8 @@ static struct sys_timer xttcpss_sys_timer = {
*/
static void __init xilinx_map_io(void)
{
- iotable_init(io_desc, ARRAY_SIZE(io_desc));
+ debug_ll_io_init();
+ iotable_init(&scu_desc, 1);
}

static const char *xilinx_dt_match[] = {
--
1.8.0

2012-11-19 18:40:42

by Josh Cartwright

[permalink] [raw]
Subject: [PATCH 3/3] ARM: zynq: add support for ARCH_MULTIPLATFORM

The majority of changes are necessary to remove dependencies on header
files within arch/arm/mach-zynq/include/mach:

uncompress.h
- Deleted. It is unused for ARCH_MULTIPLATFORM builds.

uart.h:
- Move uart definitions out of uart.h into debug/zynq.S, which is
now the only user

zynq_soc.h:
- Move SCU address definitions into common.c.
- Other #defines, such as PERIPHERAL_CLOCK_RATE, TTC0_BASE, etc, are
unused and can be dropped

Signed-off-by: Josh Cartwright <[email protected]>
---
arch/arm/Kconfig | 14 ++------
arch/arm/include/debug/zynq.S | 20 +++++++++--
arch/arm/mach-zynq/Kconfig | 13 +++++++
arch/arm/mach-zynq/common.c | 8 ++---
arch/arm/mach-zynq/include/mach/uart.h | 25 --------------
arch/arm/mach-zynq/include/mach/uncompress.h | 51 ----------------------------
arch/arm/mach-zynq/include/mach/zynq_soc.h | 49 --------------------------
7 files changed, 37 insertions(+), 143 deletions(-)
create mode 100644 arch/arm/mach-zynq/Kconfig
delete mode 100644 arch/arm/mach-zynq/include/mach/uart.h
delete mode 100644 arch/arm/mach-zynq/include/mach/uncompress.h
delete mode 100644 arch/arm/mach-zynq/include/mach/zynq_soc.h

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index ccfe0ab..28a2048 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -955,18 +955,6 @@ config ARCH_VT8500
help
Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.

-config ARCH_ZYNQ
- bool "Xilinx Zynq ARM Cortex A9 Platform"
- select ARM_AMBA
- select ARM_GIC
- select COMMON_CLK
- select CPU_V7
- select GENERIC_CLOCKEVENTS
- select ICST
- select MIGHT_HAVE_CACHE_L2X0
- select USE_OF
- help
- Support for Xilinx Zynq ARM Cortex A9 Platform
endchoice

menu "Multiple platform selection"
@@ -1128,6 +1116,8 @@ source "arch/arm/plat-versatile/Kconfig"

source "arch/arm/mach-w90x900/Kconfig"

+source "arch/arm/mach-zynq/Kconfig"
+
# Definitions to make life easier
config ARCH_ACORN
bool
diff --git a/arch/arm/include/debug/zynq.S b/arch/arm/include/debug/zynq.S
index 08aed97..f9aa974 100644
--- a/arch/arm/include/debug/zynq.S
+++ b/arch/arm/include/debug/zynq.S
@@ -12,9 +12,25 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
+#define UART_CR_OFFSET 0x00 /* Control Register [8:0] */
+#define UART_SR_OFFSET 0x2C /* Channel Status [11:0] */
+#define UART_FIFO_OFFSET 0x30 /* FIFO [15:0] or [7:0] */

-#include <mach/zynq_soc.h>
-#include <mach/uart.h>
+#define UART_SR_TXFULL 0x00000010 /* TX FIFO full */
+#define UART_SR_TXEMPTY 0x00000008 /* TX FIFO empty */
+
+#define UART0_PHYS 0xE0000000
+#define UART1_PHYS 0xE0001000
+#define UART_SIZE SZ_4K
+#define UART_VIRT 0xF0001000
+
+#if IS_ENABLED(CONFIG_DEBUG_ZYNQ_UART1)
+# define LL_UART_PADDR UART1_PHYS
+#else
+# define LL_UART_PADDR UART0_PHYS
+#endif
+
+#define LL_UART_VADDR UART_VIRT

.macro addruart, rp, rv, tmp
ldr \rp, =LL_UART_PADDR @ physical
diff --git a/arch/arm/mach-zynq/Kconfig b/arch/arm/mach-zynq/Kconfig
new file mode 100644
index 0000000..adb6c0e
--- /dev/null
+++ b/arch/arm/mach-zynq/Kconfig
@@ -0,0 +1,13 @@
+config ARCH_ZYNQ
+ bool "Xilinx Zynq ARM Cortex A9 Platform" if ARCH_MULTI_V7
+ select ARM_AMBA
+ select ARM_GIC
+ select COMMON_CLK
+ select CPU_V7
+ select GENERIC_CLOCKEVENTS
+ select ICST
+ select MIGHT_HAVE_CACHE_L2X0
+ select USE_OF
+ select SPARSE_IRQ
+ help
+ Support for Xilinx Zynq ARM Cortex A9 Platform
diff --git a/arch/arm/mach-zynq/common.c b/arch/arm/mach-zynq/common.c
index a2f48da..e16d4be 100644
--- a/arch/arm/mach-zynq/common.c
+++ b/arch/arm/mach-zynq/common.c
@@ -30,10 +30,10 @@
#include <asm/mach/time.h>
#include <asm/mach-types.h>
#include <asm/page.h>
+#include <asm/pgtable.h>
#include <asm/hardware/gic.h>
#include <asm/hardware/cache-l2x0.h>

-#include <mach/zynq_soc.h>
#include "common.h"

static struct of_device_id zynq_of_bus_ids[] __initdata = {
@@ -68,9 +68,9 @@ static void __init xilinx_irq_init(void)
of_irq_init(irq_match);
}

-/* The minimum devices needed to be mapped before the VM system is up and
- * running include the GIC, UART and Timer Counter.
- */
+#define SCU_PERIPH_PHYS 0xF8F00000
+#define SCU_PERIPH_SIZE SZ_8K
+#define SCU_PERIPH_VIRT (VMALLOC_END - SCU_PERIPH_SIZE)

static struct map_desc scu_desc __initdata = {
.virtual = SCU_PERIPH_VIRT,
diff --git a/arch/arm/mach-zynq/include/mach/uart.h b/arch/arm/mach-zynq/include/mach/uart.h
deleted file mode 100644
index 5c47c97..0000000
--- a/arch/arm/mach-zynq/include/mach/uart.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* arch/arm/mach-zynq/include/mach/uart.h
- *
- * Copyright (C) 2011 Xilinx
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#ifndef __MACH_UART_H__
-#define __MACH_UART_H__
-
-#define UART_CR_OFFSET 0x00 /* Control Register [8:0] */
-#define UART_SR_OFFSET 0x2C /* Channel Status [11:0] */
-#define UART_FIFO_OFFSET 0x30 /* FIFO [15:0] or [7:0] */
-
-#define UART_SR_TXFULL 0x00000010 /* TX FIFO full */
-#define UART_SR_TXEMPTY 0x00000008 /* TX FIFO empty */
-
-#endif
diff --git a/arch/arm/mach-zynq/include/mach/uncompress.h b/arch/arm/mach-zynq/include/mach/uncompress.h
deleted file mode 100644
index af4e844..0000000
--- a/arch/arm/mach-zynq/include/mach/uncompress.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* arch/arm/mach-zynq/include/mach/uncompress.h
- *
- * Copyright (C) 2011 Xilinx
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#ifndef __MACH_UNCOMPRESS_H__
-#define __MACH_UNCOMPRESS_H__
-
-#include <linux/io.h>
-#include <asm/processor.h>
-#include <mach/zynq_soc.h>
-#include <mach/uart.h>
-
-void arch_decomp_setup(void)
-{
-}
-
-static inline void flush(void)
-{
- /*
- * Wait while the FIFO is not empty
- */
- while (!(__raw_readl(IOMEM(LL_UART_PADDR + UART_SR_OFFSET)) &
- UART_SR_TXEMPTY))
- cpu_relax();
-}
-
-#define arch_decomp_wdog()
-
-static void putc(char ch)
-{
- /*
- * Wait for room in the FIFO, then write the char into the FIFO
- */
- while (__raw_readl(IOMEM(LL_UART_PADDR + UART_SR_OFFSET)) &
- UART_SR_TXFULL)
- cpu_relax();
-
- __raw_writel(ch, IOMEM(LL_UART_PADDR + UART_FIFO_OFFSET));
-}
-
-#endif
diff --git a/arch/arm/mach-zynq/include/mach/zynq_soc.h b/arch/arm/mach-zynq/include/mach/zynq_soc.h
deleted file mode 100644
index 2995044..0000000
--- a/arch/arm/mach-zynq/include/mach/zynq_soc.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* arch/arm/mach-zynq/include/mach/zynq_soc.h
- *
- * Copyright (C) 2011 Xilinx
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#ifndef __MACH_XILINX_SOC_H__
-#define __MACH_XILINX_SOC_H__
-
-#include <asm/pgtable.h>
-
-#define PERIPHERAL_CLOCK_RATE 2500000
-
-/* Static peripheral mappings are mapped at the top of the vmalloc region. The
- * early uart mapping causes intermediate problems/failure at certain
- * addresses, including the very top of the vmalloc region. Map it at an
- * address that is known to work.
- */
-#define UART0_PHYS 0xE0000000
-#define UART1_PHYS 0xE0001000
-#define UART_SIZE SZ_4K
-#define UART_VIRT 0xF0001000
-
-#define SCU_PERIPH_PHYS 0xF8F00000
-#define SCU_PERIPH_SIZE SZ_8K
-#define SCU_PERIPH_VIRT (VMALLOC_END - SCU_PERIPH_SIZE)
-
-#if IS_ENABLED(CONFIG_DEBUG_ZYNQ_UART1)
-# define LL_UART_PADDR UART1_PHYS
-#else
-# define LL_UART_PADDR UART0_PHYS
-#endif
-
-#define LL_UART_VADDR UART_VIRT
-
-/* The following are intended for the devices that are mapped early */
-
-#define TTC0_BASE IOMEM(TTC0_VIRT)
-#define SCU_PERIPH_BASE IOMEM(SCU_PERIPH_VIRT)
-
-#endif
--
1.8.0

2012-11-20 12:31:01

by Michal Simek

[permalink] [raw]
Subject: Re: [PATCH 0/3] ARM: zynq: ARCH_MULTIPLATFORM support

Hi Josh, Arnd and Olof,

2012/11/19 Josh Cartwright <[email protected]>:
> Michal-
>
> Here's an attempt at supporting ARCH_MULTIPLATFORM on Zynq. I've gotten
> a multiplatform kernel building and booting on the zc702, although I
> haven't tried to boot the same image on another non-Zynq board, due to
> lack of available hardware.
>
> It would be super awesome if this set could land in 3.8, but I know
> we're running out of time there. I wouldn't be too heartbroken if it
> didn't make it.
>
> This patchset is on top of your arm-next branch and with the
> debug_ll_init support patch @ arm-soc/devel/debug_ll_init.
>
> Patch 1 drops the early TTC mapping. It is not necessary, since the TTC
> driver now supports pulling mapping info from the device tree.
>
> Patch 2 converts zynq to use the debug_ll_init() infrastructure slated
> to go into 3.8.
>
> Patch 3 is the bulk of the set, moving around logic around within
> mach-zynq/include, and setting up the necessary build magic to get Zynq
> building w/ CONFIG_ARCH_MULTIPLATFORM.
>

I wanted to look at it too today. You were faster!
I have tested your patches and all works for me.
I have also added them to my arm-next branch.

I don't have others ARM boards to test but it shouldn't be big problem
because others will test it.

We are out of merge window that's why we should wait to the next one.
Anyway Arnd/Olof if there is any option to get this to v3.8, please let me know.

Thanks,
Michal


--
Michal Simek, Ing. (M.Eng)
w: http://www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian

2012-11-20 12:41:19

by Michal Simek

[permalink] [raw]
Subject: Re: [PATCH 1/3] ARM: zynq: remove TTC early mapping

2012/11/19 Josh Cartwright <[email protected]>:
> Now that the TTC driver has proper support for DT bindings, it is not
> necessary for the registers to be mapped early. They will be mapped
> during clock initialization using of_iomap(). Remove the early mapping.
>
> In addition, remove the extraneous zynq_soc.h include from the timer
> driver.
>
> Signed-off-by: Josh Cartwright <[email protected]>
> ---
> arch/arm/mach-zynq/common.c | 5 -----
> arch/arm/mach-zynq/include/mach/zynq_soc.h | 6 +-----
> arch/arm/mach-zynq/timer.c | 1 -
> 3 files changed, 1 insertion(+), 11 deletions(-)

Tested-by: Michal Simek <[email protected]>

Applied to xilinx arm-next branch.

Thanks,
Michal


--
Michal Simek, Ing. (M.Eng)
w: http://www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian

2012-11-20 12:41:44

by Michal Simek

[permalink] [raw]
Subject: Re: [PATCH 2/3] ARM: zynq: make use of debug_ll_io_init()

2012/11/19 Josh Cartwright <[email protected]>:
> Convert low-level debugging routines to make use of debug_ll_io_init().
> This is part of the preparation for ARCH_MULTIPLATFORM support for Zynq.
>
> Signed-off-by: Josh Cartwright <[email protected]>
> ---
> arch/arm/Kconfig.debug | 1 +
> .../mach/debug-macro.S => include/debug/zynq.S} | 3 +--
> arch/arm/mach-zynq/common.c | 25 ++++++----------------
> 3 files changed, 9 insertions(+), 20 deletions(-)
> rename arch/arm/{mach-zynq/include/mach/debug-macro.S => include/debug/zynq.S} (94%)

Tested-by: Michal Simek <[email protected]>

Applied to xilinx arm-next branch.

Thanks,
Michal

2012-11-20 12:42:35

by Michal Simek

[permalink] [raw]
Subject: Re: [PATCH 3/3] ARM: zynq: add support for ARCH_MULTIPLATFORM

2012/11/19 Josh Cartwright <[email protected]>:
> The majority of changes are necessary to remove dependencies on header
> files within arch/arm/mach-zynq/include/mach:
>
> uncompress.h
> - Deleted. It is unused for ARCH_MULTIPLATFORM builds.
>
> uart.h:
> - Move uart definitions out of uart.h into debug/zynq.S, which is
> now the only user
>
> zynq_soc.h:
> - Move SCU address definitions into common.c.
> - Other #defines, such as PERIPHERAL_CLOCK_RATE, TTC0_BASE, etc, are
> unused and can be dropped
>
> Signed-off-by: Josh Cartwright <[email protected]>
> ---
> arch/arm/Kconfig | 14 ++------
> arch/arm/include/debug/zynq.S | 20 +++++++++--
> arch/arm/mach-zynq/Kconfig | 13 +++++++
> arch/arm/mach-zynq/common.c | 8 ++---
> arch/arm/mach-zynq/include/mach/uart.h | 25 --------------
> arch/arm/mach-zynq/include/mach/uncompress.h | 51 ----------------------------
> arch/arm/mach-zynq/include/mach/zynq_soc.h | 49 --------------------------
> 7 files changed, 37 insertions(+), 143 deletions(-)
> create mode 100644 arch/arm/mach-zynq/Kconfig
> delete mode 100644 arch/arm/mach-zynq/include/mach/uart.h
> delete mode 100644 arch/arm/mach-zynq/include/mach/uncompress.h
> delete mode 100644 arch/arm/mach-zynq/include/mach/zynq_soc.h

Tested-by: Michal Simek <[email protected]>

Applied to xilinx arm-next branch.

Thanks,
Michal

2012-11-21 07:23:06

by Olof Johansson

[permalink] [raw]
Subject: Re: [PATCH 0/3] ARM: zynq: ARCH_MULTIPLATFORM support

On Tue, Nov 20, 2012 at 01:30:58PM +0100, Michal Simek wrote:
> Hi Josh, Arnd and Olof,
>
> 2012/11/19 Josh Cartwright <[email protected]>:
> > Michal-
> >
> > Here's an attempt at supporting ARCH_MULTIPLATFORM on Zynq. I've gotten
> > a multiplatform kernel building and booting on the zc702, although I
> > haven't tried to boot the same image on another non-Zynq board, due to
> > lack of available hardware.
> >
> > It would be super awesome if this set could land in 3.8, but I know
> > we're running out of time there. I wouldn't be too heartbroken if it
> > didn't make it.
> >
> > This patchset is on top of your arm-next branch and with the
> > debug_ll_init support patch @ arm-soc/devel/debug_ll_init.
> >
> > Patch 1 drops the early TTC mapping. It is not necessary, since the TTC
> > driver now supports pulling mapping info from the device tree.
> >
> > Patch 2 converts zynq to use the debug_ll_init() infrastructure slated
> > to go into 3.8.
> >
> > Patch 3 is the bulk of the set, moving around logic around within
> > mach-zynq/include, and setting up the necessary build magic to get Zynq
> > building w/ CONFIG_ARCH_MULTIPLATFORM.
> >
>
> I wanted to look at it too today. You were faster!
> I have tested your patches and all works for me.
> I have also added them to my arm-next branch.
>
> I don't have others ARM boards to test but it shouldn't be big problem
> because others will test it.
>
> We are out of merge window that's why we should wait to the next one.
> Anyway Arnd/Olof if there is any option to get this to v3.8, please let me know.

Feel free to post a pull request, if things look clean we can probably pick it up.


-Olof (playing good cop for once :-)