Skip to contentSkip to conversation

drivers/phy: Add Marvell SerDes / PHY drivers used on Armada 7K/8K

PATCH New Stefan Roese 1 participant 9 messages Sep 16, 2016

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

PATCH 1/9 drivers/phy: Add Marvell SerDes / PHY drivers used on Armada 7K/8K

This version is based on the Marvell U-Boot version with this patch applied as latest patch:

Git ID 7f408573: "fix: comphy: cp110: add comphy initialization for usb device mode" from 2016-07-05.

Cc Nadav Haklai <[email protected]>
Cc Neta Zur Hershkovits <[email protected]>
Cc Kostya Porotchkin <[email protected]>
Cc Omri Itach <[email protected]>
Cc Igal Liberman <[email protected]>
Cc Haim Boot <[email protected]>
Cc Hanna Hawa <[email protected]>
---
 drivers/phy/marvell/Makefile       |    1 +
 drivers/phy/marvell/comphy.h       |   18 +-
 drivers/phy/marvell/comphy_core.c  |    3 +
 drivers/phy/marvell/comphy_cp110.c | 1726 ++++++++++++++++++++++++++++++++++++
 drivers/phy/marvell/comphy_hpipe.h |   38 +
 drivers/phy/marvell/sata.h         |   30 +
 drivers/phy/marvell/utmi_phy.h     |   90 ++
 7 files changed, 1904 insertions(+), 2 deletions(-)
 create mode 100644 drivers/phy/marvell/comphy_cp110.c
 create mode 100644 drivers/phy/marvell/sata.h
 create mode 100644 drivers/phy/marvell/utmi_phy.h
drivers/phy/marvell/Makefile +1 -0
index 91df554..f181505 100644
@@ -5,3 +5,4 @@
 obj-$(CONFIG_MVEBU_COMPHY_SUPPORT) += comphy_core.o
 obj-$(CONFIG_MVEBU_COMPHY_SUPPORT) += comphy_mux.o
 obj-$(CONFIG_ARMADA_3700) += comphy_a3700.o
+obj-$(CONFIG_ARMADA_8K) += comphy_cp110.o
drivers/phy/marvell/comphy.h +16 -2
index 5c50e9c..df5b7d5 100644
@@ -60,6 +60,9 @@
 #define COMMON_PHY_SD_CTRL1_RXAUI0_MASK		\
 	(0x1 << COMMON_PHY_SD_CTRL1_RXAUI0_OFFSET)
 
+/* ToDo: Get this address via DT */
+#define MVEBU_CP0_REGS_BASE			0xF2000000UL
+
 #define DFX_DEV_GEN_CTRL12			(MVEBU_CP0_REGS_BASE + 0x400280)
 #define DFX_DEV_GEN_PCIE_CLK_SRC_OFFSET		7
 #define DFX_DEV_GEN_PCIE_CLK_SRC_MASK		\
@@ -117,10 +120,21 @@ static inline int comphy_a3700_init(struct chip_serdes_phy_config *ptr_chip_cfg,
 	return -1;
 }
 #endif
-int comphy_ap806_init(struct chip_serdes_phy_config *ptr_chip_cfg,
-		      struct comphy_map *serdes_map);
+
+#ifdef CONFIG_ARMADA_8K
 int comphy_cp110_init(struct chip_serdes_phy_config *ptr_chip_cfg,
 		      struct comphy_map *serdes_map);
+#else
+static inline int comphy_cp110_init(struct chip_serdes_phy_config *ptr_chip_cfg,
+		      struct comphy_map *serdes_map)
+{
+	/*
+	 * This function should never be called in this configuration, so
+	 * lets return an error here.
+	 */
+	return -1;
+}
+#endif
 
 void comphy_dedicated_phys_init(void);
 
drivers/phy/marvell/comphy_core.c +3 -0
index 519bc16..799e034 100644
@@ -139,6 +139,9 @@ static int comphy_probe(struct udevice *dev)
 	if (of_device_is_compatible(dev, "marvell,comphy-armada-3700"))
 		chip_cfg->ptr_comphy_chip_init = comphy_a3700_init;
 
+	if (of_device_is_compatible(dev, "marvell,comphy-cp110"))
+		chip_cfg->ptr_comphy_chip_init = comphy_cp110_init;
+
 	/*
 	 * Bail out if no chip_init function is defined, e.g. no
 	 * compatible node is found
drivers/phy/marvell/comphy_cp110.c new file +1726 -0

1,726 lines not on this page · raw message

drivers/phy/marvell/comphy_hpipe.h +38 -0
index 0c9b500..179e910 100644
@@ -78,6 +78,14 @@
 #define HPIPE_KVCO_CALIB_CTRL_MAX_PLL_MASK	\
 	(0x1 << HPIPE_KVCO_CALIB_CTRL_MAX_PLL_OFFSET)
 
+#define HPIPE_CAL_REG1_REG			0xc
+#define HPIPE_CAL_REG_1_EXT_TXIMP_OFFSET	10
+#define HPIPE_CAL_REG_1_EXT_TXIMP_MASK		\
+	(0x1f << HPIPE_CAL_REG_1_EXT_TXIMP_OFFSET)
+#define HPIPE_CAL_REG_1_EXT_TXIMP_EN_OFFSET	15
+#define HPIPE_CAL_REG_1_EXT_TXIMP_EN_MASK	\
+	(0x1 << HPIPE_CAL_REG_1_EXT_TXIMP_EN_OFFSET)
+
 #define HPIPE_SQUELCH_FFE_SETTING_REG           0x018
 
 #define HPIPE_DFE_REG0				0x01C
@@ -94,6 +102,9 @@
 	(0x1 << HPIPE_DFE_F3_F5_DFE_CTRL_OFFSET)
 
 #define HPIPE_G1_SET_0_REG			0x034
+#define HPIPE_G1_SET_0_G1_TX_AMP_OFFSET		1
+#define HPIPE_G1_SET_0_G1_TX_AMP_MASK		\
+	(0x1f << HPIPE_G1_SET_0_G1_TX_AMP_OFFSET)
 #define HPIPE_G1_SET_0_G1_TX_EMPH1_OFFSET	7
 #define HPIPE_G1_SET_0_G1_TX_EMPH1_MASK		\
 	(0xf << HPIPE_G1_SET_0_G1_TX_EMPH1_OFFSET)
@@ -145,6 +156,14 @@
 #define HPIPE_ISOLATE_MODE_GEN_TX_MASK		\
 	(0xf << HPIPE_ISOLATE_MODE_GEN_TX_OFFSET)
 
+#define HPIPE_G1_SET_2_REG			0xf4
+#define HPIPE_G1_SET_2_G1_TX_EMPH0_OFFSET	0
+#define HPIPE_G1_SET_2_G1_TX_EMPH0_MASK		\
+	(0xf << HPIPE_G1_SET_2_G1_TX_EMPH0_OFFSET)
+#define HPIPE_G1_SET_2_G1_TX_EMPH0_EN_OFFSET	4
+#define HPIPE_G1_SET_2_G1_TX_EMPH0_EN_MASK	\
+	(0x1 << HPIPE_G1_SET_2_G1_TX_EMPH0_MASK)
+
 #define HPIPE_VTHIMPCAL_CTRL_REG                0x104
 
 #define HPIPE_PCIE_REG0                         0x120
@@ -164,6 +183,9 @@
 #define HPIPE_MISC_CLK100M_125M_OFFSET		4
 #define HPIPE_MISC_CLK100M_125M_MASK		\
 	(0x1 << HPIPE_MISC_CLK100M_125M_OFFSET)
+#define HPIPE_MISC_ICP_FORCE_OFFSET		5
+#define HPIPE_MISC_ICP_FORCE_MASK		\
+	(0x1 << HPIPE_MISC_ICP_FORCE_OFFSET)
 #define HPIPE_MISC_TXDCLK_2X_OFFSET		6
 #define HPIPE_MISC_TXDCLK_2X_MASK		\
 	(0x1 << HPIPE_MISC_TXDCLK_2X_OFFSET)
@@ -197,6 +219,14 @@
 #define HPIPE_SMAPLER_MASK			\
 	(0x1 << HPIPE_SMAPLER_OFFSET)
 
+#define HPIPE_TX_REG1_REG			0x174
+#define HPIPE_TX_REG1_TX_EMPH_RES_OFFSET	5
+#define HPIPE_TX_REG1_TX_EMPH_RES_MASK		\
+	(0x3 << HPIPE_TX_REG1_TX_EMPH_RES_OFFSET)
+#define HPIPE_TX_REG1_SLC_EN_OFFSET		10
+#define HPIPE_TX_REG1_SLC_EN_MASK		\
+	(0x3f << HPIPE_TX_REG1_SLC_EN_OFFSET)
+
 #define HPIPE_PWR_CTR_DTL_REG			0x184
 #define HPIPE_PWR_CTR_DTL_FLOOP_EN_OFFSET	2
 #define HPIPE_PWR_CTR_DTL_FLOOP_EN_MASK		\
@@ -262,6 +292,9 @@
 	(0x1 << HPIPE_TX_SWEEP_PRESET_EN_OFFSET)
 
 #define HPIPE_G1_SETTINGS_3_REG			0x440
+#define HPIPE_G1_SETTINGS_3_G1_FBCK_SEL_OFFSET	9
+#define HPIPE_G1_SETTINGS_3_G1_FBCK_SEL_MASK	\
+	(0x1 << HPIPE_G1_SETTINGS_3_G1_FBCK_SEL_OFFSET)
 
 #define HPIPE_G1_SETTINGS_4_REG			0x444
 #define HPIPE_G1_SETTINGS_4_G1_DFE_RES_OFFSET	8
@@ -289,6 +322,11 @@
 #define HPIPE_DFE_CTRL_28_PIPE4_MASK		\
 	(0x1 << HPIPE_DFE_CTRL_28_PIPE4_OFFSET)
 
+#define HPIPE_G1_SETTING_5_REG			0x538
+#define HPIPE_G1_SETTING_5_G1_ICP_OFFSET	0
+#define HPIPE_G1_SETTING_5_G1_ICP_MASK		\
+	(0xf << HPIPE_G1_SETTING_5_G1_ICP_OFFSET)
+
 #define HPIPE_LANE_CONFIG0_REG			0x600
 #define HPIPE_LANE_CONFIG0_TXDEEMPH0_OFFSET	0
 #define HPIPE_LANE_CONFIG0_TXDEEMPH0_MASK	\
drivers/phy/marvell/sata.h new file +30 -0
new file mode 100644
index 0000000..be2ba54
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2015-2016 Marvell International Ltd.
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef _SATA_H_
+#define _SATA_H_
+
+/* SATA3 Unit address */
+#define SATA3_VENDOR_ADDRESS		0xA0
+#define SATA3_VENDOR_ADDR_OFSSET	0
+#define SATA3_VENDOR_ADDR_MASK		(0xFFFFFFFF << SATA3_VENDOR_ADDR_OFSSET)
+#define SATA3_VENDOR_DATA		0xA4
+
+#define SATA_CONTROL_REG		0x0
+#define SATA3_CTRL_SATA0_PD_OFFSET	6
+#define SATA3_CTRL_SATA0_PD_MASK	(1 << SATA3_CTRL_SATA0_PD_OFFSET)
+#define SATA3_CTRL_SATA1_PD_OFFSET	14
+#define SATA3_CTRL_SATA1_PD_MASK	(1 << SATA3_CTRL_SATA1_PD_OFFSET)
+#define SATA3_CTRL_SATA1_ENABLE_OFFSET	22
+#define SATA3_CTRL_SATA1_ENABLE_MASK	(1 << SATA3_CTRL_SATA1_ENABLE_OFFSET)
+#define SATA3_CTRL_SATA_SSU_OFFSET	23
+#define SATA3_CTRL_SATA_SSU_MASK	(1 << SATA3_CTRL_SATA_SSU_OFFSET)
+
+#define SATA_MBUS_SIZE_SELECT_REG	0x4
+#define SATA_MBUS_REGRET_EN_OFFSET	7
+#define SATA_MBUS_REGRET_EN_MASK	(0x1 << SATA_MBUS_REGRET_EN_OFFSET)
+
+#endif /* _SATA_H_ */
drivers/phy/marvell/utmi_phy.h new file +90 -0

90 lines not on this page · raw message

Signature · 1 line
2.9.3
#1 lore raw

PATCH 2/9 usb: xhci-mvebu: Add Armada 8K to compatiblity list

To enable this driver on Armada 7K/8K this patch adds the compatibility property to the list.

Cc Nadav Haklai <[email protected]>
Cc Neta Zur Hershkovits <[email protected]>
Cc Kostya Porotchkin <[email protected]>
Cc Omri Itach <[email protected]>
Cc Igal Liberman <[email protected]>
Cc Haim Boot <[email protected]>
Cc Hanna Hawa <[email protected]>
---
 drivers/usb/host/xhci-mvebu.c | 1 +
 1 file changed, 1 insertion(+)
drivers/usb/host/xhci-mvebu.c +1 -0
index e09e87a..23c241a 100644
@@ -79,6 +79,7 @@ static int xhci_usb_ofdata_to_platdata(struct udevice *dev)
 
 static const struct udevice_id xhci_usb_ids[] = {
 	{ .compatible = "marvell,armada3700-xhci" },
+	{ .compatible = "marvell,armada-8k-xhci" },
 	{ }
 };
 
Signature · 1 line
2.9.3
#2 lore raw

PATCH 3/9 ahci: Make ahci_port_base() non-static to enable overwrite

In reply to Stefan Roese

To allow a board- / platform-specific ahci_port_base() function, this patch removes "static inline" and adds __weak to this function. This will be used by the upcoming Armada 7K/8K SATA / AHCI support, which unfortunately needs a different port base address calculation.

Cc Nadav Haklai <[email protected]>
Cc Neta Zur Hershkovits <[email protected]>
Cc Kostya Porotchkin <[email protected]>
Cc Omri Itach <[email protected]>
Cc Igal Liberman <[email protected]>
Cc Haim Boot <[email protected]>
Cc Hanna Hawa <[email protected]>
---
 drivers/block/ahci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/block/ahci.c +1 -1
index e3e783a..cd99737 100644
@@ -45,7 +45,7 @@ u16 *ataid[AHCI_MAX_PORTS];
 #define WAIT_MS_FLUSH	5000
 #define WAIT_MS_LINKUP	200
 
-static inline void __iomem *ahci_port_base(void __iomem *base, u32 port)
+__weak void __iomem *ahci_port_base(void __iomem *base, u32 port)
 {
 	return base + 0x100 + (port * 0x80);
 }
Signature · 1 line
2.9.3
#3 lore raw

PATCH 4/9 arm64: mvebu: Armada 7K/8K: Add Armada 7K/8K dts files

In reply to Stefan Roese

This patch integrates the Armada 7K/8K dts files from the latest submission on the linux-arm-kernel mailing list.

Cc Nadav Haklai <[email protected]>
Cc Neta Zur Hershkovits <[email protected]>
Cc Kostya Porotchkin <[email protected]>
Cc Omri Itach <[email protected]>
Cc Igal Liberman <[email protected]>
Cc Haim Boot <[email protected]>
Cc Hanna Hawa <[email protected]>
---
 arch/arm/dts/Makefile                 |   1 +
 arch/arm/dts/armada-7040-db.dts       | 148 ++++++++++++++++++++++
 arch/arm/dts/armada-7040.dtsi         |  55 ++++++++
 arch/arm/dts/armada-ap806-quad.dtsi   |  82 ++++++++++++
 arch/arm/dts/armada-ap806.dtsi        | 229 ++++++++++++++++++++++++++++++++++
 arch/arm/dts/armada-cp110-master.dtsi | 228 +++++++++++++++++++++++++++++++++
 6 files changed, 743 insertions(+)
 create mode 100644 arch/arm/dts/armada-7040-db.dts
 create mode 100644 arch/arm/dts/armada-7040.dtsi
 create mode 100644 arch/arm/dts/armada-ap806-quad.dtsi
 create mode 100644 arch/arm/dts/armada-ap806.dtsi
 create mode 100644 arch/arm/dts/armada-cp110-master.dtsi
arch/arm/dts/Makefile +1 -0
index 4a51de1..92155f5 100644
@@ -71,6 +71,7 @@ dtb-$(CONFIG_ARCH_MVEBU) +=			\
 	armada-375-db.dtb			\
 	armada-388-clearfog.dtb			\
 	armada-388-gp.dtb			\
+	armada-7040-db.dtb			\
 	armada-xp-gp.dtb			\
 	armada-xp-maxbcm.dtb			\
 	armada-xp-synology-ds414.dtb		\
arch/arm/dts/armada-7040-db.dts new file +148 -0

148 lines not on this page · raw message

arch/arm/dts/armada-7040.dtsi new file +55 -0

55 lines not on this page · raw message

arch/arm/dts/armada-ap806-quad.dtsi new file +82 -0

82 lines not on this page · raw message

arch/arm/dts/armada-ap806.dtsi new file +229 -0

229 lines not on this page · raw message

arch/arm/dts/armada-cp110-master.dtsi new file +228 -0

228 lines not on this page · raw message

Signature · 1 line
2.9.3
#4 lore raw

PATCH 5/9 arm64: mvebu: Add basic support for the Marvell Armada 7K/8K SoC

In reply to Stefan Roese

Compared to the Armada 3700, the Armada 7K and 8K are much more on the high-end side: they use a dual Cortex-A72 or a quad Cortex-A72, as opposed to the Cortex-A53 for the Armada 3700.

The Armada 7K and 8K also use a fairly unique architecture, internally they are composed of several components:

- One AP (Application Processor), which contains the processor itself and a few core hardware blocks. The AP used in the Armada 7K and 8K is called AP806, and is available in two configurations:
dual Cortex-A72 and quad Cortex-A72.
- One or two CP (Communication Processor), which contain most of the I/O interfaces (SATA, PCIe, Ethernet, etc.). The 7K family chips have one CP, while the 8K family chips integrate two CPs, providing two times the number of I/O interfaces available in the CP.
The CP used in the 7K and 8K is called CP110.

All in all, this gives the following combinations:

- Armada 7020, which is a dual Cortex-A72 with one CP
- Armada 7040, which is a quad Cortex-A72 with one CP
- Armada 8020, which is a dual Cortex-A72 with two CPs
- Armada 8040, which is a quad Cortex-A72 with two CPs

This patch adds basic support for this ARMv8 based SoC into U-Boot. Future patches will integrate other device drivers and board support, starting with the Marvell DB-88F7040 development board.

Cc Nadav Haklai <[email protected]>
Cc Neta Zur Hershkovits <[email protected]>
Cc Kostya Porotchkin <[email protected]>
Cc Omri Itach <[email protected]>
Cc Igal Liberman <[email protected]>
Cc Haim Boot <[email protected]>
Cc Hanna Hawa <[email protected]>
---
 arch/arm/Kconfig                            |   2 +-
 arch/arm/mach-mvebu/Kconfig                 |   7 +-
 arch/arm/mach-mvebu/Makefile                |   3 +
 arch/arm/mach-mvebu/arm64-common.c          | 124 ++++++++++++++++++++++++++++
 arch/arm/mach-mvebu/armada3700/Makefile     |   1 -
 arch/arm/mach-mvebu/armada3700/cpu.c        | 107 ------------------------
 arch/arm/mach-mvebu/armada8k/Makefile       |   7 ++
 arch/arm/mach-mvebu/armada8k/cpu.c          |  64 ++++++++++++++
 arch/arm/mach-mvebu/include/mach/soc.h      |   2 +
 arch/arm/mach-mvebu/{armada3700 => }/sata.c |   9 ++
 10 files changed, 216 insertions(+), 110 deletions(-)
 create mode 100644 arch/arm/mach-mvebu/arm64-common.c
 create mode 100644 arch/arm/mach-mvebu/armada8k/Makefile
 create mode 100644 arch/arm/mach-mvebu/armada8k/cpu.c
 rename arch/arm/mach-mvebu/{armada3700 => }/sata.c (77%)
arch/arm/Kconfig +1 -1
index f9d0d2e..61a2fe6 100644
@@ -164,7 +164,7 @@ config KIRKWOOD
 	select CPU_ARM926EJS
 
 config ARCH_MVEBU
-	bool "Marvell MVEBU family (Armada XP/375/38x)"
+	bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)"
 	select OF_CONTROL
 	select OF_SEPARATE
 	select DM
arch/arm/mach-mvebu/Kconfig +6 -1
index bede700..54b3b72 100644
@@ -31,6 +31,11 @@ config ARMADA_3700
 	bool
 	select ARM64
 
+# Armada 7K and 8K are very similar - use only one Kconfig symbol for both
+config ARMADA_8K
+	bool
+	select ARM64
+
 # Armada XP/38x SoC types...
 config MV78230
 	bool
@@ -49,7 +54,7 @@ config DB_88F6820_GP
 	select ARMADA_38X
 
 choice
-	prompt "Marvell MVEBU (Armada XP/375/38x/3700) board select"
+	prompt "Armada XP/375/38x/3700/7K/8K board select"
 	optional
 
 config TARGET_CLEARFOG
arch/arm/mach-mvebu/Makefile +3 -0
index 07dc16c..65e90c4 100644
@@ -7,6 +7,9 @@
 ifdef CONFIG_ARM64
 
 obj-$(CONFIG_ARMADA_3700) += armada3700/
+obj-$(CONFIG_ARMADA_8K) += armada8k/
+obj-y += arm64-common.o
+obj-y += sata.o
 
 else # CONFIG_ARM64
 
arch/arm/mach-mvebu/arm64-common.c new file +124 -0

124 lines not on this page · raw message

arch/arm/mach-mvebu/armada3700/Makefile +0 -1
index b1fac57..84c69d9 100644
@@ -5,4 +5,3 @@
 #
 
 obj-y = cpu.o
-obj-y += sata.o
arch/arm/mach-mvebu/armada3700/cpu.c +0 -107

116 lines not on this page · raw message

arch/arm/mach-mvebu/armada8k/Makefile new file +7 -0
new file mode 100644
index 0000000..84c69d9
@@ -0,0 +1,7 @@
+#
+# Copyright (C) 2016 Stefan Roese <[email protected]>
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y = cpu.o
arch/arm/mach-mvebu/armada8k/cpu.c new file +64 -0

64 lines not on this page · raw message

arch/arm/mach-mvebu/include/mach/soc.h +2 -0
index 063d6cc..731fe65 100644
@@ -46,6 +46,8 @@
  * required for the Linux kernel.
  */
 #define SOC_REGS_PHY_BASE	0xd0000000
+#elif defined(CONFIG_ARMADA_8K)
+#define SOC_REGS_PHY_BASE	0xf0000000
 #else
 #define SOC_REGS_PHY_BASE	0xf1000000
 #endif
arch/arm/mach-mvebu/sata.c renamed from arch/arm/mach-mvebu/armada3700/sata.c +9 -0
similarity index 77%
rename from arch/arm/mach-mvebu/armada3700/sata.c
rename to arch/arm/mach-mvebu/sata.c
index e0e8381..140a295 100644
@@ -19,6 +19,14 @@ __weak int board_ahci_enable(void)
 	return 0;
 }
 
+#ifdef CONFIG_ARMADA_8K
+/* CP110 has different AHCI port addresses */
+void __iomem *ahci_port_base(void __iomem *base, u32 port)
+{
+	return base + 0x10000 + (port * 0x10000);
+}
+#endif
+
 static int mvebu_ahci_probe(struct udevice *dev)
 {
 	/*
@@ -34,6 +42,7 @@ static int mvebu_ahci_probe(struct udevice *dev)
 
 static const struct udevice_id mvebu_ahci_ids[] = {
 	{ .compatible = "marvell,armada-3700-ahci" },
+	{ .compatible = "marvell,armada-8k-ahci" },
 	{ }
 };
 
Signature · 1 line
2.9.3
#5 lore raw

PATCH 6/9 arm64: mvebu: Add Armada 7K db-88f7040 development board support

In reply to Stefan Roese

This patch adds basic support for the Marvell Armada 7K DB-88F7040 development board. Supported are the following interfaces:
- UART
- SPI (incl. SPI NOR)
- I2C
- USB
- SATA / AHCI

Support for other interfaces will follow.

Cc Nadav Haklai <[email protected]>
Cc Neta Zur Hershkovits <[email protected]>
Cc Kostya Porotchkin <[email protected]>
Cc Omri Itach <[email protected]>
Cc Igal Liberman <[email protected]>
Cc Haim Boot <[email protected]>
Cc Hanna Hawa <[email protected]>
---
 arch/arm/mach-mvebu/Kconfig                |   7 ++
 board/Marvell/mvebu_db-88f7040/MAINTAINERS |   6 ++
 board/Marvell/mvebu_db-88f7040/Makefile    |   7 ++
 board/Marvell/mvebu_db-88f7040/board.c     | 152 +++++++++++++++++++++++++++++
 configs/mvebu_db-88f7040_defconfig         |  47 +++++++++
 include/configs/mvebu_db-88f7040.h         | 133 +++++++++++++++++++++++++
 6 files changed, 352 insertions(+)
 create mode 100644 board/Marvell/mvebu_db-88f7040/MAINTAINERS
 create mode 100644 board/Marvell/mvebu_db-88f7040/Makefile
 create mode 100644 board/Marvell/mvebu_db-88f7040/board.c
 create mode 100644 configs/mvebu_db-88f7040_defconfig
 create mode 100644 include/configs/mvebu_db-88f7040.h
arch/arm/mach-mvebu/Kconfig +7 -0
index 54b3b72..9bdcdc8 100644
@@ -73,6 +73,10 @@ config TARGET_DB_88F6820_GP
 	bool "Support DB-88F6820-GP"
 	select DB_88F6820_GP
 
+config TARGET_MVEBU_DB_88F7040
+	bool "Support DB-88F7040 Armada 7040"
+	select ARMADA_8K
+
 config TARGET_DB_MV784MP_GP
 	bool "Support db-mv784mp-gp"
 	select MV78460
@@ -96,6 +100,7 @@ config SYS_BOARD
 	default "mvebu_db-88f3720" if TARGET_MVEBU_DB_88F3720
 	default "db-88f6720" if TARGET_DB_88F6720
 	default "db-88f6820-gp" if TARGET_DB_88F6820_GP
+	default "mvebu_db-88f7040" if TARGET_MVEBU_DB_88F7040
 	default "db-mv784mp-gp" if TARGET_DB_MV784MP_GP
 	default "ds414" if TARGET_DS414
 	default "maxbcm" if TARGET_MAXBCM
@@ -106,6 +111,7 @@ config SYS_CONFIG_NAME
 	default "mvebu_db-88f3720" if TARGET_MVEBU_DB_88F3720
 	default "db-88f6720" if TARGET_DB_88F6720
 	default "db-88f6820-gp" if TARGET_DB_88F6820_GP
+	default "mvebu_db-88f7040" if TARGET_MVEBU_DB_88F7040
 	default "db-mv784mp-gp" if TARGET_DB_MV784MP_GP
 	default "ds414" if TARGET_DS414
 	default "maxbcm" if TARGET_MAXBCM
@@ -116,6 +122,7 @@ config SYS_VENDOR
 	default "Marvell" if TARGET_MVEBU_DB_88F3720
 	default "Marvell" if TARGET_DB_88F6720
 	default "Marvell" if TARGET_DB_88F6820_GP
+	default "Marvell" if TARGET_MVEBU_DB_88F7040
 	default "solidrun" if TARGET_CLEARFOG
 	default "Synology" if TARGET_DS414
 
board/Marvell/mvebu_db-88f7040/MAINTAINERS new file +6 -0
new file mode 100644
index 0000000..820461b
@@ -0,0 +1,6 @@
+MVEBU_DB_88F7040 BOARD
+M:	Stefan Roese <[email protected]>
+S:	Maintained
+F:	board/Marvell/mvebu_db-88f7040/
+F:	include/configs/mvebu_db-88f7040.h
+F:	configs/mvebu_db-88f7040_defconfig
board/Marvell/mvebu_db-88f7040/Makefile new file +7 -0
new file mode 100644
index 0000000..ed39738
@@ -0,0 +1,7 @@
+#
+# Copyright (C) 2016 Stefan Roese <[email protected]>
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y	:= board.o
board/Marvell/mvebu_db-88f7040/board.c new file +152 -0

152 lines not on this page · raw message

configs/mvebu_db-88f7040_defconfig new file +47 -0

47 lines not on this page · raw message

include/configs/mvebu_db-88f7040.h new file +133 -0

133 lines not on this page · raw message

Signature · 1 line
2.9.3
#6 lore raw

PATCH 7/9 arm64: mvebu: armada-ap806.dtsi: Add clock-frequency to UART DT node

In reply to Stefan Roese

The clock frequency needs to be provided in the DT. Otherwise the driver won't start in U-Boot.

Cc Nadav Haklai <[email protected]>
Cc Neta Zur Hershkovits <[email protected]>
Cc Kostya Porotchkin <[email protected]>
Cc Omri Itach <[email protected]>
Cc Igal Liberman <[email protected]>
Cc Haim Boot <[email protected]>
Cc Hanna Hawa <[email protected]>
---
 arch/arm/dts/armada-ap806.dtsi | 1 +
 1 file changed, 1 insertion(+)
arch/arm/dts/armada-ap806.dtsi +1 -0
index 20d256b..d315b29 100644
@@ -202,6 +202,7 @@
 				reg-io-width = <1>;
 				clocks = <&ap_syscon 3>;
 				status = "disabled";
+				clock-frequency = <200000000>;
 			};
 
 			uart1: serial at 512100 {
Signature · 1 line
2.9.3
#7 lore raw

PATCH 8/9 arm64: mvebu: Armada 7K/8K: Add COMPHY device tree nodes

In reply to Stefan Roese

This patch adds the COMPHY device tree nodes that are still missing to the Armada 7K/8K dts files.

Cc Nadav Haklai <[email protected]>
Cc Neta Zur Hershkovits <[email protected]>
Cc Kostya Porotchkin <[email protected]>
Cc Omri Itach <[email protected]>
Cc Igal Liberman <[email protected]>
Cc Haim Boot <[email protected]>
Cc Hanna Hawa <[email protected]>
---
 arch/arm/dts/armada-7040-db.dts       | 40 +++++++++++++++++++++++++++++++++++
 arch/arm/dts/armada-cp110-master.dtsi | 28 ++++++++++++++++++++++++
 2 files changed, 68 insertions(+)
arch/arm/dts/armada-7040-db.dts +40 -0
index 070b589..df0c327 100644
@@ -146,3 +146,43 @@
 &cpm_usb3_1 {
 	status = "okay";
 };
+
+&comphy_cp110 {
+	phy0 {
+		phy-type = <PHY_TYPE_SGMII2>;
+		phy-speed = <PHY_SPEED_3_125G>;
+	};
+
+	phy1 {
+		phy-type = <PHY_TYPE_USB3_HOST0>;
+		phy-speed = <PHY_SPEED_5G>;
+	};
+
+	phy2 {
+		phy-type = <PHY_TYPE_SGMII0>;
+		phy-speed = <PHY_SPEED_1_25G>;
+	};
+
+	phy3 {
+		phy-type = <PHY_TYPE_SATA1>;
+		phy-speed = <PHY_SPEED_5G>;
+	};
+
+	phy4 {
+		phy-type = <PHY_TYPE_USB3_HOST1>;
+		phy-speed = <PHY_SPEED_5G>;
+	};
+
+	phy5 {
+		phy-type = <PHY_TYPE_PEX2>;
+		phy-speed = <PHY_SPEED_5G>;
+	};
+};
+
+&utmi0 {
+	status = "okay";
+};
+
+&utmi1 {
+	status = "okay";
+};
arch/arm/dts/armada-cp110-master.dtsi +28 -0
index 367138b..7da98bf 100644
@@ -44,6 +44,8 @@
  * Device Tree file for Marvell Armada CP110 Master.
  */
 
+#include <dt-bindings/comphy/comphy_data.h>
+
 / {
 	cp110-master {
 		#address-cells = <2>;
@@ -146,6 +148,32 @@
 				clocks = <&cpm_syscon0 1 21>;
 				status = "disabled";
 			};
+
+			comphy_cp110: comphy at 441000 {
+				compatible = "marvell,mvebu-comphy", "marvell,comphy-cp110";
+				reg = <0x441000 0x8>,
+				      <0x120000 0x8>;
+				mux-bitcount = <4>;
+				max-lanes = <6>;
+			};
+
+			utmi0: utmi at 580000 {
+				compatible = "marvell,mvebu-utmi-2.6.0";
+				reg = <0x580000 0x1000>,	/* utmi-unit */
+				      <0x440420 0x4>,		/* usb-cfg */
+				      <0x440440 0x4>;		/* utmi-cfg */
+				utmi-port = <UTMI_PHY_TO_USB_HOST0>;
+				status = "disabled";
+			};
+
+			utmi1: utmi at 581000 {
+				compatible = "marvell,mvebu-utmi-2.6.0";
+				reg = <0x581000 0x1000>,	/* utmi-unit */
+				      <0x440420 0x4>,		/* usb-cfg */
+				      <0x440444 0x4>;		/* utmi-cfg */
+				utmi-port = <UTMI_PHY_TO_USB_HOST1>;
+				status = "disabled";
+			};
 		};
 
 		cpm_pcie0: pcie at f2600000 {
Signature · 1 line
2.9.3
#8 lore raw

PATCH 9/9 arm64: mvebu: armada-7040-db.dts: Add I2C and SPI aliases

In reply to Stefan Roese

Add I2C and SPI aliases to enable usage in U-Boot.

Cc Nadav Haklai <[email protected]>
Cc Neta Zur Hershkovits <[email protected]>
Cc Kostya Porotchkin <[email protected]>
Cc Omri Itach <[email protected]>
Cc Igal Liberman <[email protected]>
Cc Haim Boot <[email protected]>
Cc Hanna Hawa <[email protected]>
---
 arch/arm/dts/armada-7040-db.dts | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm/dts/armada-7040-db.dts +5 -0
index df0c327..7d0059a 100644
@@ -55,6 +55,11 @@
 		stdout-path = "serial0:115200n8";
 	};
 
+	aliases {
+		i2c0 = &cpm_i2c0;
+		spi0 = &cpm_spi1;
+	};
+
 	memory at 00000000 {
 		device_type = "memory";
 		reg = <0x0 0x0 0x0 0x80000000>;
Signature · 1 line
2.9.3