Skip to contentSkip to conversation

Support for Broadcom Vulcan ARM64 processor

PATCH Superseded Jayachandran C 4 participants 12 messages Feb 20, 2016 – Mar 29, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

v2 cover Support for Broadcom Vulcan ARM64 processor

This patchset adds support for Broadcom's Vulcan ARM64 processor. The changes are to add the device tree files, documentation for the device tree, cpu ID and the maintainers entry.

This is v2 of the patchset, changelog below:

v1->v2 :
- dts: remove memreserve, use brcm,vulcan-soc for board (to address comments from Mark Rutland)
- Fixup copyright (Broadcomp corp -> Broadcom) (suggested by Florian Fainelli)
- Rename dts from brcm-vulcan* to vulcan* (suggested by Ray Jui)
- Add maintainers entry
(suggested by Florian Fainelli)
- Updated the device tree doc and fixed a couple of commit comments

Jayachandran C (4):
dt-bindings: Add documentation for Broadcom Vulcan
arm64: defconfig: Add Broadcom Vulcan to defconfig
arm64: cputype info for Broadcom Vulcan
MAINTAINERS: Add entry for Broadcom Vulcan SoC

Zi Shen Lim (1):
arm64: Broadcom Vulcan support

 .../bindings/arm/bcm/brcm,vulcan-soc.txt           |  10 ++
 Documentation/devicetree/bindings/arm/cpus.txt     |   1 +
 MAINTAINERS                                        |   7 +
 arch/arm64/Kconfig.platforms                       |   5 +
 arch/arm64/boot/dts/broadcom/Makefile              |   1 +
 arch/arm64/boot/dts/broadcom/vulcan-eval.dts       |  33 +++++
 arch/arm64/boot/dts/broadcom/vulcan.dtsi           | 144 +++++++++++++++++++++
 arch/arm64/configs/defconfig                       |   1 +
 arch/arm64/include/asm/cputype.h                   |   3 +
 9 files changed, 205 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/bcm/brcm,vulcan-soc.txt
 create mode 100644 arch/arm64/boot/dts/broadcom/vulcan-eval.dts
 create mode 100644 arch/arm64/boot/dts/broadcom/vulcan.dtsi
Signature · 1 line
1.9.1
#1 lore raw

PATCH v2 1/5 arm64: Broadcom Vulcan support

From: Zi Shen Lim <[email protected]>

Add a configuration option and a device tree for Broadcom's Vulcan ARM64 processor. vulcan.dtsi has the on-chip blocks like the PCIe controller, GICv3 with ITS, PMU, system timer and the pl011 UART. vulcan-eval.dts has definitions for a basic evaluation board.

Vulcan's processor cores support the ARMv8.1 instruction set and will use "brcm,vulcan" as the compatible property. The firmware has PSCI 0.2 support for cpu wakeup.

[ updated and split dts - jchandra at broadcom.com ]
---
 arch/arm64/Kconfig.platforms                 |   5 +
 arch/arm64/boot/dts/broadcom/Makefile        |   1 +
 arch/arm64/boot/dts/broadcom/vulcan-eval.dts |  33 ++++++
 arch/arm64/boot/dts/broadcom/vulcan.dtsi     | 144 +++++++++++++++++++++++++++
 4 files changed, 183 insertions(+)
 create mode 100644 arch/arm64/boot/dts/broadcom/vulcan-eval.dts
 create mode 100644 arch/arm64/boot/dts/broadcom/vulcan.dtsi
arch/arm64/Kconfig.platforms +5 -0
index 21074f6..75e1bfe 100644
@@ -131,6 +131,11 @@ config ARCH_VEXPRESS
 	  This enables support for the ARMv8 software model (Versatile
 	  Express).
 
+config ARCH_VULCAN
+	bool "Broadcom Vulcan SOC Family"
+	help
+	  This enables support for Broadcom Vulcan SoC Family
+
 config ARCH_XGENE
 	bool "AppliedMicro X-Gene SOC Family"
 	help
arch/arm64/boot/dts/broadcom/Makefile +1 -0
index e21fe66..bec1f8b 100644
@@ -1,4 +1,5 @@
 dtb-$(CONFIG_ARCH_BCM_IPROC) += ns2-svk.dtb
+dtb-$(CONFIG_ARCH_VULCAN) += vulcan-eval.dtb
 
 always		:= $(dtb-y)
 subdir-y	:= $(dts-dirs)
arch/arm64/boot/dts/broadcom/vulcan-eval.dts new file +33 -0
new file mode 100644
index 0000000..9ee8d3d
@@ -0,0 +1,33 @@
+/*
+ * dts file for Broadcom (BRCM) Vulcan Evaluation Platform
+ *
+ * Copyright (c) 2013-2016 Broadcom
+ *
+ * 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.
+ */
+
+/dts-v1/;
+
+#include "vulcan.dtsi"
+
+/ {
+	model = "Broadcom Vulcan Eval Platform";
+	compatible = "brcm,vulcan-eval", "brcm,vulcan-soc";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x80000000 0x0 0x80000000>,  /* 2G @ 2G  */
+		      <0x00000008 0x80000000 0x0 0x80000000>;  /* 2G @ 34G */
+	};
+
+	aliases {
+		serial0 = &uart0;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+};
arch/arm64/boot/dts/broadcom/vulcan.dtsi new file +144 -0

144 lines not on this page · raw message

Signature · 1 line
1.9.1
#2 lore raw

PATCH v2 2/5 dt-bindings: Add documentation for Broadcom Vulcan

In reply to Jayachandran C

Update arm/cpus.txt to add "brcm,vulcan" CPU. Add documentation for Broadcom Vulcan boards in arm/bcm/brcm,vulcan-soc.txt

---
 Documentation/devicetree/bindings/arm/bcm/brcm,vulcan-soc.txt | 10 ++++++++++
 Documentation/devicetree/bindings/arm/cpus.txt                |  1 +
 2 files changed, 11 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/bcm/brcm,vulcan-soc.txt
Documentation/devicetree/bindings/arm/bcm/brcm,vulcan-soc.txt new file +10 -0
new file mode 100644
index 0000000..223ed34
@@ -0,0 +1,10 @@
+Broadcom Vulcan device tree bindings
+------------------------------------
+
+Boards with Broadcom Vulcan shall have the following root property:
+
+Broadcom Vulcan Evaluation Board:
+  compatible = "brcm,vulcan-eval", "brcm,vulcan-soc";
+
+Generic Vulcan board:
+  compatible = "brcm,vulcan-soc";
Documentation/devicetree/bindings/arm/cpus.txt +1 -0
index ae9be07..bc43ad7 100644
@@ -167,6 +167,7 @@ nodes to be present and contain the properties described below.
 			    "arm,cortex-r5"
 			    "arm,cortex-r7"
 			    "brcm,brahma-b15"
+			    "brcm,vulcan"
 			    "cavium,thunder"
 			    "faraday,fa526"
 			    "intel,sa110"
Signature · 1 line
1.9.1
#3 lore raw

PATCH v2 3/5 arm64: defconfig: Add Broadcom Vulcan to defconfig

In reply to Jayachandran C

Enable Broadcom Vulcan support in arm64 default configuration. This will build the device tree needed to boot on a Broadcom Vulcan board.

---
 arch/arm64/configs/defconfig | 1 +
 1 file changed, 1 insertion(+)
arch/arm64/configs/defconfig +1 -0
index 86581f7..6c1b3a6 100644
@@ -47,6 +47,7 @@ CONFIG_ARCH_SPRD=y
 CONFIG_ARCH_THUNDER=y
 CONFIG_ARCH_UNIPHIER=y
 CONFIG_ARCH_VEXPRESS=y
+CONFIG_ARCH_VULCAN=y
 CONFIG_ARCH_XGENE=y
 CONFIG_ARCH_ZYNQMP=y
 CONFIG_PCI=y
Signature · 1 line
1.9.1
#4 lore raw

PATCH v2 4/5 arm64: cputype info for Broadcom Vulcan

In reply to Jayachandran C

Add Broadcom Vulcan implementor ID and part ID in cputype.h. This is to document the values.

---
 arch/arm64/include/asm/cputype.h | 3 +++
 1 file changed, 3 insertions(+)
arch/arm64/include/asm/cputype.h +3 -0
index 1a59493..3dcecdf 100644
@@ -65,6 +65,7 @@
 #define ARM_CPU_IMP_ARM			0x41
 #define ARM_CPU_IMP_APM			0x50
 #define ARM_CPU_IMP_CAVIUM		0x43
+#define ARM_CPU_IMP_BRCM		0x42
 
 #define ARM_CPU_PART_AEM_V8		0xD0F
 #define ARM_CPU_PART_FOUNDATION		0xD00
@@ -75,6 +76,8 @@
 
 #define CAVIUM_CPU_PART_THUNDERX	0x0A1
 
+#define BRCM_CPU_PART_VULCAN		0x516
+
 #ifndef __ASSEMBLY__
 
 /*
Signature · 1 line
1.9.1
#5 lore raw

PATCH v2 5/5 MAINTAINERS: Add entry for Broadcom Vulcan SoC

In reply to Jayachandran C

Add maintainer information for Broadcom's Vulcan arm64 SoC.

---
 MAINTAINERS | 7 +++++++
 1 file changed, 7 insertions(+)
MAINTAINERS +7 -0
index cc2f753..eac98eb 100644
@@ -2512,6 +2512,13 @@ L:	netdev at vger.kernel.org
 S:	Supported
 F:	drivers/net/ethernet/broadcom/bcmsysport.*
 
+BROADCOM VULCAN ARM64 SOC
+M:	Jayachandran C. <[email protected]>
+L:	linux-arm-kernel at lists.infradead.org (moderated for non-subscribers)
+L:	bcm-kernel-feedback-list at broadcom.com
+S:	Maintained
+F:	arch/arm64/boot/dts/broadcom/vulcan*
+
 BROCADE BFA FC SCSI DRIVER
 M:	Anil Gurumurthy <[email protected]>
 M:	Sudarsana Kalluru <[email protected]>
Signature · 1 line
1.9.1
#6 lore raw

v2 cover Support for Broadcom Vulcan ARM64 processor

In reply to Jayachandran C

Le 20/02/2016 06:19, Jayachandran C a ?crit :

Quoted 18 lines

This patchset adds support for Broadcom's Vulcan ARM64 processor. The changes are to add the device tree files, documentation for the device tree, cpu ID and the maintainers entry.

This is v2 of the patchset, changelog below:

v1->v2 :
- dts: remove memreserve, use brcm,vulcan-soc for board (to address comments from Mark Rutland)
- Fixup copyright (Broadcomp corp -> Broadcom) (suggested by Florian Fainelli)
- Rename dts from brcm-vulcan* to vulcan* (suggested by Ray Jui)
- Add maintainers entry
(suggested by Florian Fainelli)
- Updated the device tree doc and fixed a couple of commit comments

Quoted 8 lines

Jayachandran C (4):
dt-bindings: Add documentation for Broadcom Vulcan
arm64: defconfig: Add Broadcom Vulcan to defconfig
arm64: cputype info for Broadcom Vulcan
MAINTAINERS: Add entry for Broadcom Vulcan SoC

Zi Shen Lim (1):
arm64: Broadcom Vulcan support

All applied and submitted for 4.6 thanks!

Signature · 1 line
Florian
#7 lore raw

PATCH v3 1/5 arm64: Broadcom Vulcan support

From: Zi Shen Lim <[email protected]>

Add a configuration option and a device tree for Broadcom's Vulcan ARM64 processor. vulcan.dtsi has the on-chip blocks like the PCIe controller, GICv3 with ITS, PMU, system timer and the pl011 UART. vulcan-eval.dts has definitions for a basic evaluation board.

Vulcan's processor cores support the ARMv8.1 instruction set and will use "brcm,vulcan" as the compatible property. The firmware has PSCI 0.2 support for cpu wakeup.

[ updated and split dts - jchandra at broadcom.com ]

---

There is a minor update to this patch.

After some discussions here, it looks like it is necessary to increase the PCI mem and mem64 ranges to support all the use cases. We are updating the firmware to use these ranges as well.

Hope it is not too late to fix this, sorry for the late churn.

Thanks,
JC.

v2->v3:
update ranges in the pci entry in vulcan.dtsi, changes are:
IO: removed, since it is not supported
MEM: 0x4800_0000-0x5000_0000 to 0x4000_0000-0x6000_0000
MEM 64: 0x6_0000_0000-0x7_0000_0000 to 0x40_0000_0000-0x60_0000_0000

 arch/arm64/Kconfig.platforms                 |   5 +
 arch/arm64/boot/dts/broadcom/Makefile        |   1 +
 arch/arm64/boot/dts/broadcom/vulcan-eval.dts |  33 ++++++
 arch/arm64/boot/dts/broadcom/vulcan.dtsi     | 147 +++++++++++++++++++++++++++
 4 files changed, 186 insertions(+)
 create mode 100644 arch/arm64/boot/dts/broadcom/vulcan-eval.dts
 create mode 100644 arch/arm64/boot/dts/broadcom/vulcan.dtsi
arch/arm64/Kconfig.platforms +5 -0
index 21074f6..75e1bfe 100644
@@ -131,6 +131,11 @@ config ARCH_VEXPRESS
 	  This enables support for the ARMv8 software model (Versatile
 	  Express).
 
+config ARCH_VULCAN
+	bool "Broadcom Vulcan SOC Family"
+	help
+	  This enables support for Broadcom Vulcan SoC Family
+
 config ARCH_XGENE
 	bool "AppliedMicro X-Gene SOC Family"
 	help
arch/arm64/boot/dts/broadcom/Makefile +1 -0
index e21fe66..bec1f8b 100644
@@ -1,4 +1,5 @@
 dtb-$(CONFIG_ARCH_BCM_IPROC) += ns2-svk.dtb
+dtb-$(CONFIG_ARCH_VULCAN) += vulcan-eval.dtb
 
 always		:= $(dtb-y)
 subdir-y	:= $(dts-dirs)
arch/arm64/boot/dts/broadcom/vulcan-eval.dts new file +33 -0
new file mode 100644
index 0000000..9ee8d3d
@@ -0,0 +1,33 @@
+/*
+ * dts file for Broadcom (BRCM) Vulcan Evaluation Platform
+ *
+ * Copyright (c) 2013-2016 Broadcom
+ *
+ * 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.
+ */
+
+/dts-v1/;
+
+#include "vulcan.dtsi"
+
+/ {
+	model = "Broadcom Vulcan Eval Platform";
+	compatible = "brcm,vulcan-eval", "brcm,vulcan-soc";
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x80000000 0x0 0x80000000>,  /* 2G @ 2G  */
+		      <0x00000008 0x80000000 0x0 0x80000000>;  /* 2G @ 34G */
+	};
+
+	aliases {
+		serial0 = &uart0;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+};
arch/arm64/boot/dts/broadcom/vulcan.dtsi new file +147 -0

147 lines not on this page · raw message

Signature · 1 line
1.9.1
#8 lore raw

PATCH v3 1/5 arm64: Broadcom Vulcan support

Quoted 16 lines · Jayachandran C

From: Zi Shen Lim <[email protected]>

Add a configuration option and a device tree for Broadcom's Vulcan ARM64 processor. vulcan.dtsi has the on-chip blocks like the PCIe controller, GICv3 with ITS, PMU, system timer and the pl011 UART. vulcan-eval.dts has definitions for a basic evaluation board.

Vulcan's processor cores support the ARMv8.1 instruction set and will use "brcm,vulcan" as the compatible property. The firmware has PSCI 0.2 support for cpu wakeup.

[ updated and split dts - jchandra at broadcom.com ]

---

Quoted 7 lines

There is a minor update to this patch.

After some discussions here, it looks like it is necessary to increase the PCI mem and mem64 ranges to support all the use cases. We are updating the firmware to use these ranges as well.

Hope it is not too late to fix this, sorry for the late churn.

V2 got merged already into next/dt64 by the arm-soc maintainers, could you provide an incremental patch to your v2? Thanks!
--
Florian

#9 lore raw

PATCH 1/1 arm64: dts: vulcan: Update PCI ranges

The PCI memory windows available in vulcan.dtsi are limited to 128MB for 32-bit BARs, and 4GB for 64-bit BARs. Given the memory mapped IO space available in arm64, these windows can be increased substantially to support more use cases.

The change increases the 32-bit window to 256MB and the 64-bit window to 128 GB. The firmware on vulcan boards will use these ranges as well.

PCI IO windows are not supported on Vulcan, so remove them instead of keeping an unused value.

---

This is an update to the patch with subject
"arm64: Broadcom Vulcan support"
I had sent earlier, please fold it into that patch if possible

Thanks,
JC.

 arch/arm64/boot/dts/broadcom/vulcan.dtsi | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
arch/arm64/boot/dts/broadcom/vulcan.dtsi +9 -6
index c49b5a8..85820e2 100644
@@ -108,12 +108,15 @@
 		reg = <0x0 0x30000000  0x0 0x10000000>;
 		reg-names = "PCI ECAM";
 
-			  /* IO 0x4000_0000 - 0x4001_0000 */
-		ranges = <0x01000000 0 0x40000000 0 0x40000000 0 0x00010000
-			  /* MEM 0x4800_0000 - 0x5000_0000 */
-			  0x02000000 0 0x48000000 0 0x48000000 0 0x08000000
-			  /* MEM64 pref 0x6_0000_0000 - 0x7_0000_0000 */
-			  0x43000000 6 0x00000000 6 0x00000000 1 0x00000000>;
+		/*
+		 * PCI ranges:
+		 *   IO		no supported
+		 *   MEM        0x4000_0000 - 0x6000_0000
+		 *   MEM64 pref 0x40_0000_0000 - 0x60_0000_0000
+		 */
+		ranges =
+		  <0x02000000    0 0x40000000    0 0x40000000    0 0x20000000
+		   0x43000000 0x40 0x00000000 0x40 0x00000000 0x20 0x00000000>;
 		interrupt-map-mask = <0 0 0 7>;
 		interrupt-map =
 		      /* addr  pin  ic   icaddr  icintr */
Signature · 1 line
1.9.1
#10 lore raw

PATCH 1/1 arm64: dts: vulcan: Update PCI ranges

Quoted 11 lines · Jayachandran C

The PCI memory windows available in vulcan.dtsi are limited to 128MB for 32-bit BARs, and 4GB for 64-bit BARs. Given the memory mapped IO space available in arm64, these windows can be increased substantially to support more use cases.

The change increases the 32-bit window to 256MB and the 64-bit window to 128 GB. The firmware on vulcan boards will use these ranges as well.

PCI IO windows are not supported on Vulcan, so remove them instead of keeping an unused value.

Quoted 6 lines

---

This is an update to the patch with subject
"arm64: Broadcom Vulcan support"
I had sent earlier, please fold it into that patch if possible

Arnd, I do not have any other Broadcom ARM64 DT changes for 4.6 to be sent at the moment, do you mind taking this patch directly?

Feel free to add my:

Thanks!

Quoted 35 lines

Thanks,
JC.

 arch/arm64/boot/dts/broadcom/vulcan.dtsi | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
arch/arm64/boot/dts/broadcom/vulcan.dtsi +9 -6
index c49b5a8..85820e2 100644
@@ -108,12 +108,15 @@
 		reg = <0x0 0x30000000  0x0 0x10000000>;
 		reg-names = "PCI ECAM";
 
-			  /* IO 0x4000_0000 - 0x4001_0000 */
-		ranges = <0x01000000 0 0x40000000 0 0x40000000 0 0x00010000
-			  /* MEM 0x4800_0000 - 0x5000_0000 */
-			  0x02000000 0 0x48000000 0 0x48000000 0 0x08000000
-			  /* MEM64 pref 0x6_0000_0000 - 0x7_0000_0000 */
-			  0x43000000 6 0x00000000 6 0x00000000 1 0x00000000>;
+		/*
+		 * PCI ranges:
+		 *   IO		no supported
+		 *   MEM        0x4000_0000 - 0x6000_0000
+		 *   MEM64 pref 0x40_0000_0000 - 0x60_0000_0000
+		 */
+		ranges =
+		  <0x02000000    0 0x40000000    0 0x40000000    0 0x20000000
+		   0x43000000 0x40 0x00000000 0x40 0x00000000 0x20 0x00000000>;
 		interrupt-map-mask = <0 0 0 7>;
 		interrupt-map =
 		      /* addr  pin  ic   icaddr  icintr */
Signature · 1 line
Florian
#11 lore raw

PATCH 1/1 arm64: dts: vulcan: Update PCI ranges

Quoted 19 lines · On Friday 11 March 2016 12:16:15 Florian Fainelli wrote:
Quoted 11 lines · Jayachandran C

The PCI memory windows available in vulcan.dtsi are limited to 128MB for 32-bit BARs, and 4GB for 64-bit BARs. Given the memory mapped IO space available in arm64, these windows can be increased substantially to support more use cases.

The change increases the 32-bit window to 256MB and the 64-bit window to 128 GB. The firmware on vulcan boards will use these ranges as well.

PCI IO windows are not supported on Vulcan, so remove them instead of keeping an unused value.

Quoted 6 lines

---

This is an update to the patch with subject
"arm64: Broadcom Vulcan support"
I had sent earlier, please fold it into that patch if possible

Quoted 8 lines

Arnd, I do not have any other Broadcom ARM64 DT changes for 4.6 to be sent at the moment, do you mind taking this patch directly?

Feel free to add my:

Applied to the 4.6 fixes branch now, thanks!

Arnd