Skip to contentSkip to conversation

ARM: vexpress: add support for A5 core tile

PATCH New Ryan Harkin 2 participants 6 messages Oct 18, 2011 – Nov 8, 2011 Arm/versatile express platform

lore
Share & tools
lore
#0 lore raw

cover ARM: vexpress: add support for A5 core tile

Add support for the A5 Core Tile on the Versatile Express motherboard.

Ryan Harkin (3):
ARM: vexpress: move files in preparation for adding a new platform
ARM: vexpress: create A9 specific board config
ARM: vexpress: create A5 specific board config

 MAINTAINERS                                        |    3 +-
 board/armltd/vexpress/Makefile                     |    2 +-
 .../vexpress/{ca9x4_ct_vxp.c => vexpress_common.c} |   29 ++-
 boards.cfg                                         |    3 +-
 include/configs/ca9x4_ct_vxp.h                     |  206 -------------
 include/configs/vexpress_ca5x2.h                   |   34 +++
 include/configs/vexpress_ca9x4.h                   |   34 +++
 include/configs/vexpress_common.h                  |  314 ++++++++++++++++++++
 8 files changed, 410 insertions(+), 215 deletions(-)
 rename board/armltd/vexpress/{ca9x4_ct_vxp.c => vexpress_common.c} (90%)
 delete mode 100644 include/configs/ca9x4_ct_vxp.h
 create mode 100644 include/configs/vexpress_ca5x2.h
 create mode 100644 include/configs/vexpress_ca9x4.h
 create mode 100644 include/configs/vexpress_common.h
Signature · 1 line
1.7.4.1
#1 lore raw

PATCH 1/3 ARM: vexpress: move files in preparation for adding a new platform

The current ca9x4_ct_vxp platform contains support for a Versatile Express motherboard with a quad core A9 core tile.

This patch is the first stage of making separating the Versatile Express motherboard code and the A9 specific code, before adding support for the dual core A5 core tile.

---
 MAINTAINERS                                        |    2 +-
 board/armltd/vexpress/Makefile                     |    2 +-
 .../vexpress/{ca9x4_ct_vxp.c => vexpress_common.c} |    0
 boards.cfg                                         |    2 +-
 .../configs/{ca9x4_ct_vxp.h => vexpress_common.h}  |    0
 5 files changed, 3 insertions(+), 3 deletions(-)
MAINTAINERS +1 -1
index dc5a913..bc89a4e 100644
@@ -858,7 +858,7 @@ Hugo Villeneuve <[email protected]>
 
 Matt Waddel <[email protected]>
 
-	ca9x4_ct_vxp	ARM ARMV7 (Quad Core)
+	vexpress_common	ARM ARMV7 (Quad Core)
 
 Prafulla Wadaskar <[email protected]>
 
board/armltd/vexpress/Makefile +1 -1
index 49c4b81..cdfe70e 100644
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(BOARD).o
 
-COBJS	:= ca9x4_ct_vxp.o
+COBJS	:= vexpress_common.o
 
 SRCS	:= $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
board/armltd/vexpress/vexpress_common.c renamed from board/armltd/vexpress/ca9x4_ct_vxp.c +0 -0
similarity index 100%
rename from board/armltd/vexpress/ca9x4_ct_vxp.c
rename to board/armltd/vexpress/vexpress_common.c
boards.cfg +1 -1
index fb4c1b7..31202b8 100644
@@ -154,7 +154,7 @@ edminiv2                     arm         arm926ejs   -                   LaCie
 dkb			     arm         arm926ejs   -                   Marvell        pantheon
 integratorap_cm946es         arm         arm946es    integrator          armltd         -               integratorap
 integratorcp_cm946es         arm         arm946es    integrator          armltd         -               integratorcp
-ca9x4_ct_vxp                 arm         armv7       vexpress            armltd
+vexpress_common              arm         armv7       vexpress            armltd
 highbank                     arm         armv7       highbank            -              highbank
 efikamx                      arm         armv7       efikamx             -              mx5		efikamx:IMX_CONFIG=board/efikamx/imximage.cfg
 mx51evk                      arm         armv7       mx51evk             freescale      mx5		mx51evk:IMX_CONFIG=board/freescale/mx51evk/imximage.cfg
include/configs/vexpress_common.h renamed from include/configs/ca9x4_ct_vxp.h +0 -0
similarity index 100%
rename from include/configs/ca9x4_ct_vxp.h
rename to include/configs/vexpress_common.h
Signature · 1 line
1.7.4.1
#2 lore raw

PATCH 2/3 ARM: vexpress: create A9 specific board config

In reply to Ryan Harkin

This patch creates a new config for the A9 quad core tile that includes the generic config for the Versatile Express platform.

---
 MAINTAINERS                       |    2 +-
 boards.cfg                        |    2 +-
 include/configs/vexpress_ca9x4.h  |   34 ++++++++++++++++++++++++++++++++++
 include/configs/vexpress_common.h |    1 -
 4 files changed, 36 insertions(+), 3 deletions(-)
MAINTAINERS +1 -1
index bc89a4e..c1973d3 100644
@@ -858,7 +858,7 @@ Hugo Villeneuve <[email protected]>
 
 Matt Waddel <[email protected]>
 
-	vexpress_common	ARM ARMV7 (Quad Core)
+	vexpress_ca9x4	ARM ARMV7 (Quad Core)
 
 Prafulla Wadaskar <[email protected]>
 
boards.cfg +1 -1
index 31202b8..1043e98 100644
@@ -154,7 +154,7 @@ edminiv2                     arm         arm926ejs   -                   LaCie
 dkb			     arm         arm926ejs   -                   Marvell        pantheon
 integratorap_cm946es         arm         arm946es    integrator          armltd         -               integratorap
 integratorcp_cm946es         arm         arm946es    integrator          armltd         -               integratorcp
-vexpress_common              arm         armv7       vexpress            armltd
+vexpress_ca9x4               arm         armv7       vexpress            armltd
 highbank                     arm         armv7       highbank            -              highbank
 efikamx                      arm         armv7       efikamx             -              mx5		efikamx:IMX_CONFIG=board/efikamx/imximage.cfg
 mx51evk                      arm         armv7       mx51evk             freescale      mx5		mx51evk:IMX_CONFIG=board/freescale/mx51evk/imximage.cfg
include/configs/vexpress_ca9x4.h new file +34 -0
new file mode 100644
index 0000000..f8066a2
@@ -0,0 +1,34 @@
+/*
+ * (C) Copyright 2011 Linaro
+ * Ryan Harkin, <[email protected]>
+ *
+ * Configuration for Versatile Express. Parts were derived from other ARM
+ *   configurations.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __VEXPRESS_CA9X4_H
+#define __VEXPRESS_CA9X4_H
+
+#define CONFIG_VEXPRESS_ORIGINAL_MEMORY_MAP
+#include "vexpress_common.h"
+#define CONFIG_BOOTP_VCI_STRING     "U-boot.armv7.vexpress_ca9x4"
+
+#endif // VEXPRESS_CA9X4_H
include/configs/vexpress_common.h +0 -1
index 5adfe64..d37924f 100644
@@ -100,7 +100,6 @@
 #define CONFIG_BOOTP_HOSTNAME
 #define CONFIG_BOOTP_PXE
 #define CONFIG_BOOTP_PXE_CLIENTARCH	0x100
-#define CONFIG_BOOTP_VCI_STRING		"U-boot.armv7.ca9x4_ct_vxp"
 
 /* Miscellaneous configurable options */
 #undef	CONFIG_SYS_CLKS_IN_HZ
Signature · 1 line
1.7.4.1
#3 lore raw

PATCH 3/3 ARM: vexpress: create A5 specific board config

In reply to Ryan Harkin

This patch creates a new config for the A5 dual core tile that includes the generic config for the Versatile Express platform.

The generic config has been modified to provide support for the Extended Memory Map, as used on the A5 core tile. A5 does not support the legacy memory map.

---
 MAINTAINERS                             |    1 +
 board/armltd/vexpress/vexpress_common.c |   29 +++++--
 boards.cfg                              |    1 +
 include/configs/vexpress_ca5x2.h        |   34 +++++++
 include/configs/vexpress_common.h       |  147 +++++++++++++++++++++++++++----
 5 files changed, 187 insertions(+), 25 deletions(-)
MAINTAINERS +1 -0
index c1973d3..578f38e 100644
@@ -859,6 +859,7 @@ Hugo Villeneuve <[email protected]>
 Matt Waddel <[email protected]>
 
 	vexpress_ca9x4	ARM ARMV7 (Quad Core)
+	vexpress_ca5x2	ARM ARMV7 (Dual Core)
 
 Prafulla Wadaskar <[email protected]>
 
board/armltd/vexpress/vexpress_common.c +23 -6
index da6f14d..df20ee9 100644
@@ -43,8 +43,7 @@
 static ulong timestamp;
 static ulong lastdec;
 
-static struct wdt *wdt_base = (struct wdt *)WDT_BASE;
-static struct systimer *systimer_base = (struct systimer *)SYSTIMER_BASE;
+static struct systimer *systimer_base = (struct systimer *)V2M_TIMER01;
 static struct sysctrl *sysctrl_base = (struct sysctrl *)SCTL_BASE;
 
 static void flash__init(void);
@@ -154,13 +153,31 @@ static void vexpress_timer_init(void)
 	reset_timer_masked();
 }
 
+int v2m_cfg_write(u32 devfn, u32 data)
+{
+	/* Configuration interface broken? */
+	u32 val;
+
+	devfn |= SYS_CFG_START | SYS_CFG_WRITE;
+
+	val = readl(V2M_SYS_CFGSTAT);
+	writel(val & ~SYS_CFG_COMPLETE, V2M_SYS_CFGSTAT);
+
+	writel(data, V2M_SYS_CFGDATA);
+	writel(devfn, V2M_SYS_CFGCTRL);
+
+	do {
+		val = readl(V2M_SYS_CFGSTAT);
+	} while (val == 0);
+
+	return !!(val & SYS_CFG_ERR);
+}
+
 /* Use the ARM Watchdog System to cause reset */
 void reset_cpu(ulong addr)
 {
-	writeb(WDT_EN, &wdt_base->wdogcontrol);
-	writel(WDT_RESET_LOAD, &wdt_base->wdogload);
-	while (1)
-		;
+	if (v2m_cfg_write(SYS_CFG_REBOOT | SYS_CFG_SITE_MB, 0))
+		printf("Unable to reboot\n");
 }
 
 /*
boards.cfg +1 -0
index 1043e98..ad51b73 100644
@@ -154,6 +154,7 @@ edminiv2                     arm         arm926ejs   -                   LaCie
 dkb			     arm         arm926ejs   -                   Marvell        pantheon
 integratorap_cm946es         arm         arm946es    integrator          armltd         -               integratorap
 integratorcp_cm946es         arm         arm946es    integrator          armltd         -               integratorcp
+vexpress_ca5x2               arm         armv7       vexpress            armltd
 vexpress_ca9x4               arm         armv7       vexpress            armltd
 highbank                     arm         armv7       highbank            -              highbank
 efikamx                      arm         armv7       efikamx             -              mx5		efikamx:IMX_CONFIG=board/efikamx/imximage.cfg
include/configs/vexpress_ca5x2.h new file +34 -0
new file mode 100644
index 0000000..5998530
@@ -0,0 +1,34 @@
+/*
+ * (C) Copyright 2011 Linaro
+ * Ryan Harkin, <[email protected]>
+ *
+ * Configuration for Versatile Express. Parts were derived from other ARM
+ *   configurations.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __VEXPRESS_CA5X2_h
+#define __VEXPRESS_CA5X2_h
+
+#define CONFIG_VEXPRESS_EXTENDED_MEMORY_MAP
+#include "vexpress_common.h"
+#define CONFIG_BOOTP_VCI_STRING     "U-boot.armv7.vexpress_ca5x2"
+
+#endif // __VEXPRESS_CA5X2_h
include/configs/vexpress_common.h +128 -19

218 lines not on this page · raw message

Signature · 1 line
1.7.4.1
#4 lore raw

cover ARM: vexpress: add support for A5 core tile

In reply to Ryan Harkin

Le 18/10/2011 14:41, Ryan Harkin a ?crit :

Quoted 16 lines

Add support for the A5 Core Tile on the Versatile Express motherboard.

Ryan Harkin (3):
ARM: vexpress: move files in preparation for adding a new platform
ARM: vexpress: create A9 specific board config
ARM: vexpress: create A5 specific board config

  MAINTAINERS                                        |    3 +-
  board/armltd/vexpress/Makefile                     |    2 +-
  .../vexpress/{ca9x4_ct_vxp.c =>  vexpress_common.c} |   29 ++-
  boards.cfg                                         |    3 +-
  include/configs/ca9x4_ct_vxp.h                     |  206 -------------
  include/configs/vexpress_ca5x2.h                   |   34 +++
  include/configs/vexpress_ca9x4.h                   |   34 +++
  include/configs/vexpress_common.h                  |  314 ++++++++++++++++++++
  8 files changed, 410 insertions(+), 215 deletions(-)
Quoted 5 lines

rename board/armltd/vexpress/{ca9x4_ct_vxp.c => vexpress_common.c} (90%) delete mode 100644 include/configs/ca9x4_ct_vxp.h
create mode 100644 include/configs/vexpress_ca5x2.h
create mode 100644 include/configs/vexpress_ca9x4.h
create mode 100644 include/configs/vexpress_common.h

The series is not bisectable in that board ca9x4_ct_vxp disappears in patch 1/3 to reappear in patch 2/3. Please reorganize patch set so that common files are extracted without preventing ca9x4_ct_vxp from building.

Amicalement,

Signature · 1 line
Albert.
#5 lore raw

cover ARM: vexpress: add support for A5 core tile

Hi Albert,

Thanks for looking at my patches.

I'm not sure exactly what you mean, so I'll explain that I am doing here and see if that help resolve the issue you are seeing, if not, hopefully you'll have more info to help clarify.

The first patch is simply moving and renaming files in preparation for me adding A5 support in a later patch. So, the ca9x4_ct_vxp platform is renamed to vexpress_common. You can still build it, it's just named "funny". You would build it with "make ... vexpress_common_config". I did this because I wanted the first patch to only contain file moves and renames without changing any code, in the hope that it would be easier to review. Perhaps I failed in that goal!

The next patch then adds a new config file so that the board is named as the more friendly vexpress_ca9x4 and you can no longer build a vexpress_common board.

The final patch then adds a further config for A5 and makes some changes for the RS1 memory map.

I hope this clarifies what I've done. Please ask more questions or make suggestions to help improve my patch sequence.

Regards,
Ryan.

Quoted 33 lines · Albert ARIBAUD

Le 18/10/2011 14:41, Ryan Harkin a ?crit :

Quoted 16 lines

Add support for the A5 Core Tile on the Versatile Express motherboard.

Ryan Harkin (3):
? ARM: vexpress: move files in preparation for adding a new platform ? ARM: vexpress: create A9 specific board config
? ARM: vexpress: create A5 specific board config

?MAINTAINERS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| ? ?3 +- ?board/armltd/vexpress/Makefile ? ? ? ? ? ? ? ? ? ? | ? ?2 +- ?.../vexpress/{ca9x4_ct_vxp.c => ?vexpress_common.c} | ? 29 ++-

?boards.cfg ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ?3 +-
?include/configs/ca9x4_ct_vxp.h ? ? ? ? ? ? ? ? ? ? | ?206 -------------
?include/configs/vexpress_ca5x2.h ? ? ? ? ? ? ? ? ? | ? 34 +++
?include/configs/vexpress_ca9x4.h ? ? ? ? ? ? ? ? ? | ? 34 +++
?include/configs/vexpress_common.h ? ? ? ? ? ? ? ? ?| ?314
Quoted 7 lines

++++++++++++++++++++
?8 files changed, 410 insertions(+), 215 deletions(-)
?rename board/armltd/vexpress/{ca9x4_ct_vxp.c => ?vexpress_common.c} (90%) ?delete mode 100644 include/configs/ca9x4_ct_vxp.h
?create mode 100644 include/configs/vexpress_ca5x2.h
?create mode 100644 include/configs/vexpress_ca9x4.h
?create mode 100644 include/configs/vexpress_common.h

The series is not bisectable in that board ca9x4_ct_vxp disappears in patch 1/3 to reappear in patch 2/3. Please reorganize patch set so that common files are extracted without preventing ca9x4_ct_vxp from building.

Amicalement,
--
Albert.