All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support
@ 2014-12-05 14:44 Maxime Ripard
  2014-12-05 14:44 ` [PATCH 1/5] ARM: mvebu: Rename DEBUG_LL to indicate UART index Maxime Ripard
                   ` (5 more replies)
  0 siblings, 6 replies; 17+ messages in thread
From: Maxime Ripard @ 2014-12-05 14:44 UTC (permalink / raw)
  To: linux-arm-kernel

Hi everyone,

This set of patches add the support for the Armada 385 AP board.

It also adds a few clean ups here and there, a few missing pin
functions needed for the board, etc.

Maxime

Maxime Ripard (5):
  ARM: mvebu: Rename DEBUG_LL to indicate UART index
  ARM: mvebu: Add UART1 as DEBUG_LL possible target
  ARM: mvebu: a38x: Fix node names
  pinctrl: mvebu: a38x: Add UART1 muxing options
  ARM: mvebu: Add Armada 385 Access Point Development Board support

 arch/arm/Kconfig.debug                     |  35 +++--
 arch/arm/boot/dts/Makefile                 |   1 +
 arch/arm/boot/dts/armada-385-ap.dts        | 200 +++++++++++++++++++++++++++++
 arch/arm/boot/dts/armada-385-db.dts        |   2 +-
 arch/arm/boot/dts/armada-385-rd.dts        |   2 +-
 arch/arm/boot/dts/armada-385.dtsi          |   2 +-
 arch/arm/boot/dts/armada-38x.dtsi          |   4 +-
 drivers/pinctrl/mvebu/pinctrl-armada-38x.c |   6 +-
 8 files changed, 236 insertions(+), 16 deletions(-)
 create mode 100644 arch/arm/boot/dts/armada-385-ap.dts

-- 
2.2.0

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 1/5] ARM: mvebu: Rename DEBUG_LL to indicate UART index
  2014-12-05 14:44 [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support Maxime Ripard
@ 2014-12-05 14:44 ` Maxime Ripard
  2014-12-05 14:44 ` [PATCH 2/5] ARM: mvebu: Add UART1 as DEBUG_LL possible target Maxime Ripard
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 17+ messages in thread
From: Maxime Ripard @ 2014-12-05 14:44 UTC (permalink / raw)
  To: linux-arm-kernel

The mvebu SoCs actually have more UARTs than just the one exposed in DEBUG_LL
yet.

In order to differentiate them, Add the index in the configuration options and
their help.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 arch/arm/Kconfig.debug | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index d8f6a2ec3d4e..b0945d6b32b3 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -423,13 +423,13 @@ choice
 		  Please adjust DEBUG_UART_PHYS and DEBUG_UART_BASE configuration
 		  options based on your needs.
 
-	config DEBUG_MVEBU_UART
-		bool "Kernel low-level debugging messages via MVEBU UART (old bootloaders)"
+	config DEBUG_MVEBU_UART0
+		bool "Kernel low-level debugging messages via MVEBU UART0 (old bootloaders)"
 		depends on ARCH_MVEBU
 		select DEBUG_UART_8250
 		help
 		  Say Y here if you want kernel low-level debugging support
-		  on MVEBU based platforms.
+		  on MVEBU based platforms on UART0.
 
 		  This option should be used with the old bootloaders
 		  that left the internal registers mapped at
@@ -442,13 +442,13 @@ choice
 		  when u-boot hands over to the kernel, the system
 		  silently crashes, with no serial output at all.
 
-	config DEBUG_MVEBU_UART_ALTERNATE
-		bool "Kernel low-level debugging messages via MVEBU UART (new bootloaders)"
+	config DEBUG_MVEBU_UART0_ALTERNATE
+		bool "Kernel low-level debugging messages via MVEBU UART0 (new bootloaders)"
 		depends on ARCH_MVEBU
 		select DEBUG_UART_8250
 		help
 		  Say Y here if you want kernel low-level debugging support
-		  on MVEBU based platforms.
+		  on MVEBU based platforms on UART0.
 
 		  This option should be used with the new bootloaders
 		  that remap the internal registers at 0xf1000000.
@@ -1146,14 +1146,14 @@ config DEBUG_UART_PHYS
 	default 0xc8000000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN
 	default 0xc8000003 if ARCH_IXP4XX && CPU_BIG_ENDIAN
 	default 0xd0000000 if ARCH_SPEAR3XX || ARCH_SPEAR6XX
-	default 0xd0012000 if DEBUG_MVEBU_UART
+	default 0xd0012000 if DEBUG_MVEBU_UART0
 	default 0xc81004c0 if DEBUG_MESON_UARTAO
 	default 0xd4017000 if DEBUG_MMP_UART2
 	default 0xd4018000 if DEBUG_MMP_UART3
 	default 0xe0000000 if ARCH_SPEAR13XX
 	default 0xe4007000 if DEBUG_HIP04_UART
 	default 0xf0000be0 if ARCH_EBSA110
-	default 0xf1012000 if DEBUG_MVEBU_UART_ALTERNATE
+	default 0xf1012000 if DEBUG_MVEBU_UART0_ALTERNATE
 	default 0xf1012000 if ARCH_DOVE || ARCH_MV78XX0 || \
 				ARCH_ORION5X
 	default 0xf7fc9000 if DEBUG_BERLIN_UART
@@ -1223,7 +1223,7 @@ config DEBUG_UART_VIRT
 	default 0xfeb30c00 if DEBUG_KEYSTONE_UART0
 	default 0xfeb31000 if DEBUG_KEYSTONE_UART1
 	default 0xfec02000 if DEBUG_SOCFPGA_UART
-	default 0xfec12000 if DEBUG_MVEBU_UART || DEBUG_MVEBU_UART_ALTERNATE
+	default 0xfec12000 if DEBUG_MVEBU_UART0 || DEBUG_MVEBU_UART0_ALTERNATE
 	default 0xfec20000 if DEBUG_DAVINCI_DMx_UART0
 	default 0xfec90000 if DEBUG_RK32_UART2
 	default 0xfed0c000 if DEBUG_DAVINCI_DA8XX_UART1
-- 
2.2.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 2/5] ARM: mvebu: Add UART1 as DEBUG_LL possible target
  2014-12-05 14:44 [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support Maxime Ripard
  2014-12-05 14:44 ` [PATCH 1/5] ARM: mvebu: Rename DEBUG_LL to indicate UART index Maxime Ripard
@ 2014-12-05 14:44 ` Maxime Ripard
  2014-12-05 15:25   ` Jason Cooper
  2014-12-05 14:44 ` [PATCH 3/5] ARM: mvebu: a38x: Fix node names Maxime Ripard
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Maxime Ripard @ 2014-12-05 14:44 UTC (permalink / raw)
  To: linux-arm-kernel

Some mvebu boards have the UART1 more easily accessible than the other UARTs
found on the system.

Add a debug_ll option for this case.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 arch/arm/Kconfig.debug | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index b0945d6b32b3..8f119f5ffcdd 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -457,6 +457,21 @@ choice
 		  when u-boot hands over to the kernel, the system
 		  silently crashes, with no serial output at all.
 
+	config DEBUG_MVEBU_UART1_ALTERNATE
+		bool "Kernel low-level debugging messages via MVEBU UART1 (new bootloaders)"
+		depends on ARCH_MVEBU
+		select DEBUG_UART_8250
+		help
+		  Say Y here if you want kernel low-level debugging support
+		  on MVEBU based platforms on UART1.
+
+		  This option should be used with the new bootloaders
+		  that remap the internal registers at 0xf1000000.
+
+		  If the wrong DEBUG_MVEBU_UART* option is selected,
+		  when u-boot hands over to the kernel, the system
+		  silently crashes, with no serial output at all.
+
 	config DEBUG_VF_UART
 		bool "Vybrid UART"
 		depends on SOC_VF610
@@ -1154,6 +1169,7 @@ config DEBUG_UART_PHYS
 	default 0xe4007000 if DEBUG_HIP04_UART
 	default 0xf0000be0 if ARCH_EBSA110
 	default 0xf1012000 if DEBUG_MVEBU_UART0_ALTERNATE
+	default 0xf1012100 if DEBUG_MVEBU_UART1_ALTERNATE
 	default 0xf1012000 if ARCH_DOVE || ARCH_MV78XX0 || \
 				ARCH_ORION5X
 	default 0xf7fc9000 if DEBUG_BERLIN_UART
@@ -1224,6 +1240,7 @@ config DEBUG_UART_VIRT
 	default 0xfeb31000 if DEBUG_KEYSTONE_UART1
 	default 0xfec02000 if DEBUG_SOCFPGA_UART
 	default 0xfec12000 if DEBUG_MVEBU_UART0 || DEBUG_MVEBU_UART0_ALTERNATE
+	default 0xfec12100 if DEBUG_MVEBU_UART1_ALTERNATE
 	default 0xfec20000 if DEBUG_DAVINCI_DMx_UART0
 	default 0xfec90000 if DEBUG_RK32_UART2
 	default 0xfed0c000 if DEBUG_DAVINCI_DA8XX_UART1
-- 
2.2.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 3/5] ARM: mvebu: a38x: Fix node names
  2014-12-05 14:44 [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support Maxime Ripard
  2014-12-05 14:44 ` [PATCH 1/5] ARM: mvebu: Rename DEBUG_LL to indicate UART index Maxime Ripard
  2014-12-05 14:44 ` [PATCH 2/5] ARM: mvebu: Add UART1 as DEBUG_LL possible target Maxime Ripard
@ 2014-12-05 14:44 ` Maxime Ripard
  2014-12-05 14:44 ` [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options Maxime Ripard
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 17+ messages in thread
From: Maxime Ripard @ 2014-12-05 14:44 UTC (permalink / raw)
  To: linux-arm-kernel

Some nodes in the DTs have a reg property but no unit name in their node name.

This contradicts the way the ePAPR defines the node names. Fix this.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 arch/arm/boot/dts/armada-385-db.dts | 2 +-
 arch/arm/boot/dts/armada-385-rd.dts | 2 +-
 arch/arm/boot/dts/armada-385.dtsi   | 2 +-
 arch/arm/boot/dts/armada-38x.dtsi   | 4 ++--
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm/boot/dts/armada-385-db.dts b/arch/arm/boot/dts/armada-385-db.dts
index 1af886f1e486..d2ad03e08c17 100644
--- a/arch/arm/boot/dts/armada-385-db.dts
+++ b/arch/arm/boot/dts/armada-385-db.dts
@@ -74,7 +74,7 @@
 				phy-mode = "rgmii-id";
 			};
 
-			mdio {
+			mdio at 72004 {
 				phy0: ethernet-phy at 0 {
 					reg = <0>;
 				};
diff --git a/arch/arm/boot/dts/armada-385-rd.dts b/arch/arm/boot/dts/armada-385-rd.dts
index aaca2861dc87..74a3bfe6efd7 100644
--- a/arch/arm/boot/dts/armada-385-rd.dts
+++ b/arch/arm/boot/dts/armada-385-rd.dts
@@ -67,7 +67,7 @@
 			};
 
 
-			mdio {
+			mdio at 72004 {
 				phy0: ethernet-phy at 0 {
 					reg = <0>;
 				};
diff --git a/arch/arm/boot/dts/armada-385.dtsi b/arch/arm/boot/dts/armada-385.dtsi
index 6283d7912f71..5249a4d3c207 100644
--- a/arch/arm/boot/dts/armada-385.dtsi
+++ b/arch/arm/boot/dts/armada-385.dtsi
@@ -37,7 +37,7 @@
 
 	soc {
 		internal-regs {
-			pinctrl {
+			pinctrl at 18000 {
 				compatible = "marvell,mv88f6820-pinctrl";
 				reg = <0x18000 0x20>;
 			};
diff --git a/arch/arm/boot/dts/armada-38x.dtsi b/arch/arm/boot/dts/armada-38x.dtsi
index 242d0ecc99f3..221cca4e79fc 100644
--- a/arch/arm/boot/dts/armada-38x.dtsi
+++ b/arch/arm/boot/dts/armada-38x.dtsi
@@ -193,7 +193,7 @@
 				status = "disabled";
 			};
 
-			pinctrl {
+			pinctrl at 18000 {
 				compatible = "marvell,mv88f6820-pinctrl";
 				reg = <0x18000 0x20>;
 			};
@@ -373,7 +373,7 @@
 				status = "disabled";
 			};
 
-			mdio {
+			mdio at 72004 {
 				#address-cells = <1>;
 				#size-cells = <0>;
 				compatible = "marvell,orion-mdio";
-- 
2.2.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options
  2014-12-05 14:44 [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support Maxime Ripard
                   ` (2 preceding siblings ...)
  2014-12-05 14:44 ` [PATCH 3/5] ARM: mvebu: a38x: Fix node names Maxime Ripard
@ 2014-12-05 14:44 ` Maxime Ripard
  2014-12-05 15:26   ` Jason Cooper
  2015-01-09 10:05   ` Linus Walleij
  2014-12-05 14:44 ` [PATCH 5/5] ARM: mvebu: Add Armada 385 Access Point Development Board support Maxime Ripard
  2014-12-05 16:00 ` [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support Andrew Lunn
  5 siblings, 2 replies; 17+ messages in thread
From: Maxime Ripard @ 2014-12-05 14:44 UTC (permalink / raw)
  To: linux-arm-kernel

The MPP19 and MMP20 pins also have the ability to be muxed to the uart1
function.

Add this case to the pinctrl driver.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 drivers/pinctrl/mvebu/pinctrl-armada-38x.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-38x.c b/drivers/pinctrl/mvebu/pinctrl-armada-38x.c
index 1049f82fb62f..fd743fab07f5 100644
--- a/drivers/pinctrl/mvebu/pinctrl-armada-38x.c
+++ b/drivers/pinctrl/mvebu/pinctrl-armada-38x.c
@@ -145,14 +145,16 @@ static struct mvebu_mpp_mode armada_38x_mpp_modes[] = {
 		 MPP_VAR_FUNCTION(2, "ptp",   "event_req",  V_88F6810_PLUS),
 		 MPP_VAR_FUNCTION(3, "pcie0", "clkreq",     V_88F6810_PLUS),
 		 MPP_VAR_FUNCTION(4, "sata1", "prsnt",      V_88F6810_PLUS),
-		 MPP_VAR_FUNCTION(5, "ua0",   "cts",        V_88F6810_PLUS)),
+		 MPP_VAR_FUNCTION(5, "ua0",   "cts",        V_88F6810_PLUS),
+		 MPP_VAR_FUNCTION(6, "ua1",   "rxd",        V_88F6810_PLUS)),
 	MPP_MODE(20,
 		 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
 		 MPP_VAR_FUNCTION(1, "ge0",   "txclk",      V_88F6810_PLUS),
 		 MPP_VAR_FUNCTION(2, "ptp",   "clk",        V_88F6810_PLUS),
 		 MPP_VAR_FUNCTION(3, "pcie1", "rstout",     V_88F6820_PLUS),
 		 MPP_VAR_FUNCTION(4, "sata0", "prsnt",      V_88F6810_PLUS),
-		 MPP_VAR_FUNCTION(5, "ua0",   "rts",        V_88F6810_PLUS)),
+		 MPP_VAR_FUNCTION(5, "ua0",   "rts",        V_88F6810_PLUS),
+		 MPP_VAR_FUNCTION(6, "ua1",   "txd",        V_88F6810_PLUS)),
 	MPP_MODE(21,
 		 MPP_VAR_FUNCTION(0, "gpio",  NULL,         V_88F6810_PLUS),
 		 MPP_VAR_FUNCTION(1, "spi0",  "cs1",        V_88F6810_PLUS),
-- 
2.2.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 5/5] ARM: mvebu: Add Armada 385 Access Point Development Board support
  2014-12-05 14:44 [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support Maxime Ripard
                   ` (3 preceding siblings ...)
  2014-12-05 14:44 ` [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options Maxime Ripard
@ 2014-12-05 14:44 ` Maxime Ripard
  2014-12-05 15:42   ` Arnd Bergmann
  2014-12-05 16:07   ` Thomas Petazzoni
  2014-12-05 16:00 ` [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support Andrew Lunn
  5 siblings, 2 replies; 17+ messages in thread
From: Maxime Ripard @ 2014-12-05 14:44 UTC (permalink / raw)
  To: linux-arm-kernel

The A385-AP is a board produced by Marvell that holds 3 mPCIe slot, a 16MB
SPI-NOR, 3 Gigabit Ethernet ports, USB3 and NAND flash storage.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 arch/arm/boot/dts/Makefile          |   1 +
 arch/arm/boot/dts/armada-385-ap.dts | 200 ++++++++++++++++++++++++++++++++++++
 2 files changed, 201 insertions(+)
 create mode 100644 arch/arm/boot/dts/armada-385-ap.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 38c89cafa1ab..363fdeaa0368 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -499,6 +499,7 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \
 dtb-$(CONFIG_MACH_ARMADA_375) += \
 	armada-375-db.dtb
 dtb-$(CONFIG_MACH_ARMADA_38X) += \
+	armada-385-ap.dtb \
 	armada-385-db.dtb \
 	armada-385-rd.dtb
 dtb-$(CONFIG_MACH_ARMADA_XP) += \
diff --git a/arch/arm/boot/dts/armada-385-ap.dts b/arch/arm/boot/dts/armada-385-ap.dts
new file mode 100644
index 000000000000..915b4438c15d
--- /dev/null
+++ b/arch/arm/boot/dts/armada-385-ap.dts
@@ -0,0 +1,200 @@
+/*
+ * Device Tree file for Marvell Armada 385 Access Point Development board
+ * (DB-88F6820-AP)
+ *
+ *  Copyright (C) 2014 Marvell
+ *
+ * Nadav Haklai <nadavh@marvell.com>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+#include "armada-385.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+	model = "Marvell Armada 385 Access Point Development Board";
+	compatible = "marvell,a385-db-ap", "marvell,armada385", "marvell,armada38x";
+
+	chosen {
+		bootargs = "console=ttyS0,115200 earlyprintk";
+	};
+
+	memory {
+		device_type = "memory";
+		reg = <0x00000000 0x80000000>; /* 2GB */
+	};
+
+	soc {
+		ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
+			  MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
+			  MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000	/* CESA0: PHYS=0xf1100000
+									   size 64K */
+			  MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>;	/* CESA1: PHYS=0xf1110000
+									   size 64K */
+
+		internal-regs {
+			spi1: spi at 10680 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&spi1_pins>;
+				status = "okay";
+
+				spi-flash at 0 {
+					#address-cells = <1>;
+					#size-cells = <1>;
+					compatible = "st,m25p128";
+					reg = <0>; /* Chip select 0 */
+					spi-max-frequency = <108000000>;
+				};
+			};
+
+			i2c0: i2c at 11000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&i2c0_pins>;
+				status = "okay";
+				clock-frequency = <100000>;
+			};
+
+			i2c1: i2c at 11100 {
+				status = "okay";
+				clock-frequency = <100000>;
+			};
+
+			mdio at 72004 {
+				pinctrl-names = <&phy_pins>;
+
+				phy0: ethernet-phy at 0 {
+					reg = <1>;
+				};
+
+				phy1: ethernet-phy at 1 {
+					reg = <6>;
+				};
+
+				phy2: ethernet-phy at 2 {
+					reg = <4>;
+				};
+			};
+
+			uart0: serial at 12000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&uart0_pins>;
+				status = "okay";
+			};
+
+			uart1: serial at 12100 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&uart1_pins>;
+				status = "okay";
+			};
+
+			pinctrl at 18000 {
+				ge0_pins: ge-pins-0 {
+					marvell,pins = "mpp6", "mpp7", "mpp8",
+						       "mpp9", "mpp10", "mpp11",
+						       "mpp12", "mpp13", "mpp14",
+						       "mpp15", "mpp16", "mpp17";
+					marvell,function = "ge0";
+				};
+
+				i2c0_pins: i2c-pins-0 {
+					marvell,pins = "mpp2", "mpp3";
+					marvell,function = "i2c0";
+				};
+
+				phy_pins: phy-pins {
+					marvell,pins = "mpp4", "mpp5";
+					marvell,function = "ge";
+				};
+
+				ref_clk0_pins: ref-clk-pins-0 {
+					marvell,pins = "mpp45";
+					marvell,function = "ref";
+				};
+
+				spi1_pins: spi-pins-1 {
+					marvell,pins = "mpp56", "mpp57", "mpp58",
+						       "mpp59";
+					marvell,function = "spi1";
+				};
+
+				uart0_pins: uart-pins-0 {
+					marvell,pins = "mpp0", "mpp1";
+					marvell,function = "ua0";
+				};
+
+				uart1_pins: uart-pins-1 {
+					marvell,pins = "mpp19", "mpp20";
+					marvell,function = "ua1";
+				};
+
+				xhci0_vbus_pins: xhci0-vbus-pins {
+					marvell,pins = "mpp44";
+					marvell,function = "gpio";
+				};
+			};
+
+			ethernet at 30000 {
+				status = "okay";
+				phy = <&phy1>;
+				phy-mode = "sgmii";
+			};
+
+			ethernet at 34000 {
+				status = "okay";
+				phy = <&phy2>;
+				phy-mode = "sgmii";
+			};
+
+			ethernet at 70000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&ge0_pins>, <&ref_clk0_pins>;
+				status = "okay";
+				phy = <&phy0>;
+				phy-mode = "rgmii-id";
+			};
+
+			usb3 at f0000 {
+				status = "okay";
+			};
+		};
+
+		pcie-controller {
+			status = "okay";
+			/*
+			 * The two PCIe units are accessible through
+			 * standard PCIe slots on the board.
+			 */
+			pcie at 1,0 {
+				/* Port 0, Lane 0 */
+				status = "okay";
+			};
+
+			pcie at 2,0 {
+				/* Port 1, Lane 0 */
+				status = "okay";
+			};
+
+			pcie at 3,0 {
+				/* Port 2, Lane 0 */
+				status = "okay";
+			};
+		};
+	};
+
+	reg_xhci0_vbus: xhci0-vbus {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&xhci0_vbus_pins>;
+		regulator-name = "xhci0-vbus";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		enable-active-high;
+		regulator-always-on;
+		gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+	};
+};
-- 
2.2.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 2/5] ARM: mvebu: Add UART1 as DEBUG_LL possible target
  2014-12-05 14:44 ` [PATCH 2/5] ARM: mvebu: Add UART1 as DEBUG_LL possible target Maxime Ripard
@ 2014-12-05 15:25   ` Jason Cooper
  2014-12-05 15:41     ` Arnd Bergmann
  0 siblings, 1 reply; 17+ messages in thread
From: Jason Cooper @ 2014-12-05 15:25 UTC (permalink / raw)
  To: linux-arm-kernel

Maxime,

On Fri, Dec 05, 2014 at 03:44:55PM +0100, Maxime Ripard wrote:
> Some mvebu boards have the UART1 more easily accessible than the other UARTs
> found on the system.
> 
> Add a debug_ll option for this case.
> 
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
>  arch/arm/Kconfig.debug | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)

It looks to me like patches 1 and 2 should go through
Russell's patch tracker.  Is it worth having two patches?

In either case,

Acked-by: Jason Cooper <jason@lakedaemon.net>

thx,

Jason.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options
  2014-12-05 14:44 ` [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options Maxime Ripard
@ 2014-12-05 15:26   ` Jason Cooper
  2015-01-09 10:05   ` Linus Walleij
  1 sibling, 0 replies; 17+ messages in thread
From: Jason Cooper @ 2014-12-05 15:26 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Dec 05, 2014 at 03:44:57PM +0100, Maxime Ripard wrote:
> The MPP19 and MMP20 pins also have the ability to be muxed to the uart1
> function.
> 
> Add this case to the pinctrl driver.
> 
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
>  drivers/pinctrl/mvebu/pinctrl-armada-38x.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)

Acked-by: Jason Cooper <jason@lakedaemon.net>

thx,

Jason.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 2/5] ARM: mvebu: Add UART1 as DEBUG_LL possible target
  2014-12-05 15:25   ` Jason Cooper
@ 2014-12-05 15:41     ` Arnd Bergmann
  0 siblings, 0 replies; 17+ messages in thread
From: Arnd Bergmann @ 2014-12-05 15:41 UTC (permalink / raw)
  To: linux-arm-kernel

On Friday 05 December 2014 10:25:03 Jason Cooper wrote:
> On Fri, Dec 05, 2014 at 03:44:55PM +0100, Maxime Ripard wrote:
> > Some mvebu boards have the UART1 more easily accessible than the other UARTs
> > found on the system.
> > 
> > Add a debug_ll option for this case.
> > 
> > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> > ---
> >  arch/arm/Kconfig.debug | 17 +++++++++++++++++
> >  1 file changed, 17 insertions(+)
> 
> It looks to me like patches 1 and 2 should go through
> Russell's patch tracker.  Is it worth having two patches?
> 
> In either case,
> 
> Acked-by: Jason Cooper <jason@lakedaemon.net>
> 

This kind of change to Kconfig.debug frequently goes together with
soc support, so we have started merging them through arm-soc

	Arnd

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 5/5] ARM: mvebu: Add Armada 385 Access Point Development Board support
  2014-12-05 14:44 ` [PATCH 5/5] ARM: mvebu: Add Armada 385 Access Point Development Board support Maxime Ripard
@ 2014-12-05 15:42   ` Arnd Bergmann
  2014-12-05 16:07   ` Thomas Petazzoni
  1 sibling, 0 replies; 17+ messages in thread
From: Arnd Bergmann @ 2014-12-05 15:42 UTC (permalink / raw)
  To: linux-arm-kernel

On Friday 05 December 2014 15:44:58 Maxime Ripard wrote:
> +       chosen {
> +               bootargs = "console=ttyS0,115200 earlyprintk";
> +       };

We should stop using earlyprintk as the default bootargs. It's always been
problematic in case you have a kernel that contains the wrong debug_ll
stub, and starting from 3.19, we should have a working earlycon support.

	Arnd

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support
  2014-12-05 14:44 [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support Maxime Ripard
                   ` (4 preceding siblings ...)
  2014-12-05 14:44 ` [PATCH 5/5] ARM: mvebu: Add Armada 385 Access Point Development Board support Maxime Ripard
@ 2014-12-05 16:00 ` Andrew Lunn
  5 siblings, 0 replies; 17+ messages in thread
From: Andrew Lunn @ 2014-12-05 16:00 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Dec 05, 2014 at 03:44:53PM +0100, Maxime Ripard wrote:
> Hi everyone,
> 
> This set of patches add the support for the Armada 385 AP board.
> 
> It also adds a few clean ups here and there, a few missing pin
> functions needed for the board, etc.

Hi Maxime

Have you seen

https://www.mail-archive.com/devicetree at vger.kernel.org/msg51931.html

It made quite a few cleanups to 370 and XP pinctrl nodes, labels, etc.
I think quite a few of those cleanups should also be applied to 385.

  Andrew

> 
> Maxime
> 
> Maxime Ripard (5):
>   ARM: mvebu: Rename DEBUG_LL to indicate UART index
>   ARM: mvebu: Add UART1 as DEBUG_LL possible target
>   ARM: mvebu: a38x: Fix node names
>   pinctrl: mvebu: a38x: Add UART1 muxing options
>   ARM: mvebu: Add Armada 385 Access Point Development Board support
> 
>  arch/arm/Kconfig.debug                     |  35 +++--
>  arch/arm/boot/dts/Makefile                 |   1 +
>  arch/arm/boot/dts/armada-385-ap.dts        | 200 +++++++++++++++++++++++++++++
>  arch/arm/boot/dts/armada-385-db.dts        |   2 +-
>  arch/arm/boot/dts/armada-385-rd.dts        |   2 +-
>  arch/arm/boot/dts/armada-385.dtsi          |   2 +-
>  arch/arm/boot/dts/armada-38x.dtsi          |   4 +-
>  drivers/pinctrl/mvebu/pinctrl-armada-38x.c |   6 +-
>  8 files changed, 236 insertions(+), 16 deletions(-)
>  create mode 100644 arch/arm/boot/dts/armada-385-ap.dts
> 
> -- 
> 2.2.0
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 5/5] ARM: mvebu: Add Armada 385 Access Point Development Board support
  2014-12-05 14:44 ` [PATCH 5/5] ARM: mvebu: Add Armada 385 Access Point Development Board support Maxime Ripard
  2014-12-05 15:42   ` Arnd Bergmann
@ 2014-12-05 16:07   ` Thomas Petazzoni
  2014-12-10 10:17     ` Gregory CLEMENT
  1 sibling, 1 reply; 17+ messages in thread
From: Thomas Petazzoni @ 2014-12-05 16:07 UTC (permalink / raw)
  To: linux-arm-kernel

Dear Maxime Ripard,

On Fri,  5 Dec 2014 15:44:58 +0100, Maxime Ripard wrote:

> +	soc {
> +		ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
> +			  MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
> +			  MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000	/* CESA0: PHYS=0xf1100000
> +									   size 64K */
> +			  MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>;	/* CESA1: PHYS=0xf1110000
> +									   size 64K */

Those two last ranges are not needed, and may not necessarily match what
we decide to do with the crypto engine support later on.

> +			mdio at 72004 {
> +				pinctrl-names = <&phy_pins>;

These are not really "PHY" pins, but rather MDIO pins.

> +			pinctrl at 18000 {
> +				ge0_pins: ge-pins-0 {
> +					marvell,pins = "mpp6", "mpp7", "mpp8",
> +						       "mpp9", "mpp10", "mpp11",
> +						       "mpp12", "mpp13", "mpp14",
> +						       "mpp15", "mpp16", "mpp17";
> +					marvell,function = "ge0";
> +				};

This seems like the normal pin muxing for RGMII, so maybe we should
simply do like we did for Armada 370: have a ge0-rgmii-pins definition
in the .dtsi file.

> +				i2c0_pins: i2c-pins-0 {
> +					marvell,pins = "mpp2", "mpp3";
> +					marvell,function = "i2c0";
> +				};

Same question here, maybe define it in .dtsi ?

> +
> +				phy_pins: phy-pins {
> +					marvell,pins = "mpp4", "mpp5";
> +					marvell,function = "ge";
> +				};

Same here.

> +
> +				ref_clk0_pins: ref-clk-pins-0 {
> +					marvell,pins = "mpp45";
> +					marvell,function = "ref";
> +				};
> +
> +				spi1_pins: spi-pins-1 {
> +					marvell,pins = "mpp56", "mpp57", "mpp58",
> +						       "mpp59";
> +					marvell,function = "spi1";
> +				};
> +
> +				uart0_pins: uart-pins-0 {
> +					marvell,pins = "mpp0", "mpp1";
> +					marvell,function = "ua0";
> +				};
> +
> +				uart1_pins: uart-pins-1 {
> +					marvell,pins = "mpp19", "mpp20";
> +					marvell,function = "ua1";
> +				};
> +
> +				xhci0_vbus_pins: xhci0-vbus-pins {
> +					marvell,pins = "mpp44";
> +					marvell,function = "gpio";
> +				};
> +			};
> +
> +			ethernet at 30000 {
> +				status = "okay";
> +				phy = <&phy1>;
> +				phy-mode = "sgmii";
> +			};
> +
> +			ethernet at 34000 {
> +				status = "okay";
> +				phy = <&phy2>;
> +				phy-mode = "sgmii";
> +			};
> +
> +			ethernet at 70000 {
> +				pinctrl-names = "default";
> +				pinctrl-0 = <&ge0_pins>, <&ref_clk0_pins>;

Maybe a short comment about what this ref_clk0_pins is useful for would
be nice.

> +				status = "okay";
> +				phy = <&phy0>;
> +				phy-mode = "rgmii-id";
> +			};
> +
> +			usb3 at f0000 {
> +				status = "okay";
> +			};

The board also has an USB2 connector, did you try enabling it?

> +		};
> +
> +		pcie-controller {
> +			status = "okay";
> +			/*
> +			 * The two PCIe units are accessible through
> +			 * standard PCIe slots on the board.

Two, or three ? :-)

> +			 */
> +			pcie at 1,0 {
> +				/* Port 0, Lane 0 */
> +				status = "okay";
> +			};
> +
> +			pcie at 2,0 {
> +				/* Port 1, Lane 0 */
> +				status = "okay";
> +			};
> +
> +			pcie at 3,0 {
> +				/* Port 2, Lane 0 */
> +				status = "okay";
> +			};
> +		};
> +	};
> +
> +	reg_xhci0_vbus: xhci0-vbus {
> +		compatible = "regulator-fixed";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&xhci0_vbus_pins>;
> +		regulator-name = "xhci0-vbus";
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		enable-active-high;
> +		regulator-always-on;
> +		gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
> +	};

Maybe you could connect this to the USB controller by using the
usb-nop-xceiv thing (which acts as a dummy USB PHY, if I understood
correctly) ?

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 5/5] ARM: mvebu: Add Armada 385 Access Point Development Board support
  2014-12-05 16:07   ` Thomas Petazzoni
@ 2014-12-10 10:17     ` Gregory CLEMENT
  0 siblings, 0 replies; 17+ messages in thread
From: Gregory CLEMENT @ 2014-12-10 10:17 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Maxime,

[...]

>> +		};
>> +
>> +		pcie-controller {
>> +			status = "okay";
>> +			/*
>> +			 * The two PCIe units are accessible through
>> +			 * standard PCIe slots on the board.
> 
> Two, or three ? :-)

Actually there are 3 PCIe units accessible through miniPCIe slots
and not standard PCIe slots.

> 
>> +			 */
>> +			pcie at 1,0 {
>> +				/* Port 0, Lane 0 */
>> +				status = "okay";
>> +			};
>> +
>> +			pcie at 2,0 {
>> +				/* Port 1, Lane 0 */
>> +				status = "okay";
>> +			};
>> +
>> +			pcie at 3,0 {
>> +				/* Port 2, Lane 0 */
>> +				status = "okay";
>> +			};
>> +		};
>> +	};
>> +
>> +	reg_xhci0_vbus: xhci0-vbus {
>> +		compatible = "regulator-fixed";
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&xhci0_vbus_pins>;
>> +		regulator-name = "xhci0-vbus";
>> +		regulator-min-microvolt = <5000000>;
>> +		regulator-max-microvolt = <5000000>;
>> +		enable-active-high;
>> +		regulator-always-on;
>> +		gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
>> +	};
> 
> Maybe you could connect this to the USB controller by using the
> usb-nop-xceiv thing (which acts as a dummy USB PHY, if I understood
> correctly) ?
> 
> Thanks!
> 
> Thomas
> 


-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options
  2014-12-05 14:44 ` [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options Maxime Ripard
  2014-12-05 15:26   ` Jason Cooper
@ 2015-01-09 10:05   ` Linus Walleij
  2015-01-09 11:45     ` Jason Cooper
  1 sibling, 1 reply; 17+ messages in thread
From: Linus Walleij @ 2015-01-09 10:05 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Dec 5, 2014 at 3:44 PM, Maxime Ripard
<maxime.ripard@free-electrons.com> wrote:

> The MPP19 and MMP20 pins also have the ability to be muxed to the uart1
> function.
>
> Add this case to the pinctrl driver.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>

Patch applied with Jason's ACK.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options
  2015-01-09 10:05   ` Linus Walleij
@ 2015-01-09 11:45     ` Jason Cooper
  2015-01-10 21:44       ` Linus Walleij
  0 siblings, 1 reply; 17+ messages in thread
From: Jason Cooper @ 2015-01-09 11:45 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Jan 09, 2015 at 11:05:53AM +0100, Linus Walleij wrote:
> On Fri, Dec 5, 2014 at 3:44 PM, Maxime Ripard
> <maxime.ripard@free-electrons.com> wrote:
> 
> > The MPP19 and MMP20 pins also have the ability to be muxed to the uart1
> > function.
> >
> > Add this case to the pinctrl driver.
> >
> > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> 
> Patch applied with Jason's ACK.

I did?

thx,

Jason.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options
  2015-01-09 11:45     ` Jason Cooper
@ 2015-01-10 21:44       ` Linus Walleij
  2015-01-12 13:40         ` Jason Cooper
  0 siblings, 1 reply; 17+ messages in thread
From: Linus Walleij @ 2015-01-10 21:44 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Jan 9, 2015 at 12:45 PM, Jason Cooper <jason@lakedaemon.net> wrote:
> On Fri, Jan 09, 2015 at 11:05:53AM +0100, Linus Walleij wrote:
>> On Fri, Dec 5, 2014 at 3:44 PM, Maxime Ripard
>> <maxime.ripard@free-electrons.com> wrote:
>>
>> > The MPP19 and MMP20 pins also have the ability to be muxed to the uart1
>> > function.
>> >
>> > Add this case to the pinctrl driver.
>> >
>> > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
>>
>> Patch applied with Jason's ACK.
>
> I did?

Yeah...

Date: Fri, 5 Dec 2014 10:26:26 -0500
From: Jason Cooper <jason@lakedaemon.net>
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Gregory Clement <gregory.clement@free-electrons.com>,
Andrew Lunn <andrew@lunn.ch>,
Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>,
Linus Walleij <linus.walleij@linaro.org>,
Thomas Petazzoni <thomas@free-electrons.com>,
linux-arm-kernel at lists.infradead.org,
Tawfik Bayouk <tawfik@marvell.com>,
Nadav Haklai <nadavh@marvell.com>, Lior Amsalem <alior@marvell.com>
Subject: Re: [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options
Message-ID: <20141205152626.GF22670@titan.lakedaemon.net>
References: <1417790698-9792-1-git-send-email-maxime.ripard@free-electrons.com>
 <1417790698-9792-5-git-send-email-maxime.ripard@free-electrons.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <1417790698-9792-5-git-send-email-maxime.ripard@free-electrons.com>
User-Agent: Mutt/1.5.20 (2009-06-14)

On Fri, Dec 05, 2014 at 03:44:57PM +0100, Maxime Ripard wrote:
> The MPP19 and MMP20 pins also have the ability to be muxed to the uart1
> function.
>
> Add this case to the pinctrl driver.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
>  drivers/pinctrl/mvebu/pinctrl-armada-38x.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)

Acked-by: Jason Cooper <jason@lakedaemon.net>

thx,

Jason.


Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options
  2015-01-10 21:44       ` Linus Walleij
@ 2015-01-12 13:40         ` Jason Cooper
  0 siblings, 0 replies; 17+ messages in thread
From: Jason Cooper @ 2015-01-12 13:40 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Jan 10, 2015 at 10:44:00PM +0100, Linus Walleij wrote:
> On Fri, Jan 9, 2015 at 12:45 PM, Jason Cooper <jason@lakedaemon.net> wrote:
> > On Fri, Jan 09, 2015 at 11:05:53AM +0100, Linus Walleij wrote:
> >> On Fri, Dec 5, 2014 at 3:44 PM, Maxime Ripard
> >> <maxime.ripard@free-electrons.com> wrote:
> >>
> >> > The MPP19 and MMP20 pins also have the ability to be muxed to the uart1
> >> > function.
> >> >
> >> > Add this case to the pinctrl driver.
> >> >
> >> > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> >>
> >> Patch applied with Jason's ACK.
> >
> > I did?
> 
> Yeah...
> 
> Date: Fri, 5 Dec 2014 10:26:26 -0500

Ahhh.... *before* Christmas.  My memory is quickly degrading.

thx,

Jason.

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2015-01-12 13:40 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-05 14:44 [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support Maxime Ripard
2014-12-05 14:44 ` [PATCH 1/5] ARM: mvebu: Rename DEBUG_LL to indicate UART index Maxime Ripard
2014-12-05 14:44 ` [PATCH 2/5] ARM: mvebu: Add UART1 as DEBUG_LL possible target Maxime Ripard
2014-12-05 15:25   ` Jason Cooper
2014-12-05 15:41     ` Arnd Bergmann
2014-12-05 14:44 ` [PATCH 3/5] ARM: mvebu: a38x: Fix node names Maxime Ripard
2014-12-05 14:44 ` [PATCH 4/5] pinctrl: mvebu: a38x: Add UART1 muxing options Maxime Ripard
2014-12-05 15:26   ` Jason Cooper
2015-01-09 10:05   ` Linus Walleij
2015-01-09 11:45     ` Jason Cooper
2015-01-10 21:44       ` Linus Walleij
2015-01-12 13:40         ` Jason Cooper
2014-12-05 14:44 ` [PATCH 5/5] ARM: mvebu: Add Armada 385 Access Point Development Board support Maxime Ripard
2014-12-05 15:42   ` Arnd Bergmann
2014-12-05 16:07   ` Thomas Petazzoni
2014-12-10 10:17     ` Gregory CLEMENT
2014-12-05 16:00 ` [PATCH 0/5] ARM: mvebu: Add Armada 385 AP support Andrew Lunn

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.