* [PATCH v5 0/6] A3700 USB UTMI PHY support
@ 2019-01-29 9:36 Miquel Raynal
2019-01-29 9:36 ` [PATCH v5 1/6] phy: add A3700 UTMI PHY driver Miquel Raynal
` (6 more replies)
0 siblings, 7 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
USB2 on A3700 only works because U-Boot initializes the UTMI PHYs (one
wired to each USB controller). While there is no issue with regular
use, this architecture does not allow suspend to RAM to work as the
PHYs must be re-initialized at resume. In order to support this
feature, this series adds a UTMI PHY driver for the A3700 SoC.
The A3700 device tree is updated to reference the PHYs.
Thanks,
Miquèl
Changes since v4:
=================
* Drop USB patches as they have been sent in a separate series. No
real functional changes since the v4 though, kind of a resend of the
PHY patches from the "A3700 USB S2RAM support" series.
Changes since v3:
=================
* Bindings: as suggested by Gregory and Rob, used the "-misc" suffix
instead of "-miscellaneous" and prefixed the compatible with
"armada-3700" to follow what has been used for the other IPs of the
same SoC (and added Rob's ack).
Changes since v2:
=================
* Typos
* UTMI PHY bindings:
> New name for the USB2 host/PHY syscons (+ changes in the DT).
> Clearly state that the PHYs are different between OTG and
host-only controllers.
* UTMI PHY driver:
> Use GENMASK macro.
> Removed useless checks on driver data retrieval.
> Dropped the empty ->remove() hook.
> Updated the licence macro to match the SPDX tag.
> Used the of_device_get_match_data() helper.
> Removed the use of a local variable in the ->probe() for the
driver's operations.
> Fixed the driver co-author: Igal, not Evan.
Changes since v1:
=================
* Add UTMI PHY driver/bindings/DT changes to bring S2RAM support to
both USB ports available on the A3700 SoC.
* Rebased on top of v5.0-rc1.
Miquel Raynal (6):
phy: add A3700 UTMI PHY driver
dt-bindings: phy: mvebu-utmi: add UTMI PHY bindings
MAINTAINERS: phy: fill Armada 3700 PHY drivers entry
ARM64: dts: marvell: armada-37xx: fix USB2 memory region
ARM64: dts: marvell: armada-37xx: declare USB2 UTMI PHYs
ARM64: dts: marvell: armada-37xx: link USB hosts with their PHYs
.../bindings/phy/phy-mvebu-utmi.txt | 38 +++
MAINTAINERS | 4 +-
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 34 ++-
drivers/phy/marvell/Kconfig | 9 +
drivers/phy/marvell/Makefile | 1 +
drivers/phy/marvell/phy-mvebu-a3700-utmi.c | 278 ++++++++++++++++++
6 files changed, 362 insertions(+), 2 deletions(-)
create mode 100644 Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
create mode 100644 drivers/phy/marvell/phy-mvebu-a3700-utmi.c
--
2.19.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v5 1/6] phy: add A3700 UTMI PHY driver
2019-01-29 9:36 [PATCH v5 0/6] A3700 USB UTMI PHY support Miquel Raynal
@ 2019-01-29 9:36 ` Miquel Raynal
2019-01-29 9:36 ` Miquel Raynal
` (5 subsequent siblings)
6 siblings, 0 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Igal Liberman, Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Marvell Armada 3700 SoC has two USB controllers, each of them being
wired to an internal UTMI PHY. Add a driver to control them.
Igal Liberman worked on supporting the PHY, I took the while 'register
configuration' from his work and rewrote almost entirely the
driver/bindings around it.
Co-developed-by: Igal Liberman <igall@marvell.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Igal Liberman <igall@marvell.com>
---
drivers/phy/marvell/Kconfig | 9 +
drivers/phy/marvell/Makefile | 1 +
drivers/phy/marvell/phy-mvebu-a3700-utmi.c | 278 +++++++++++++++++++++
3 files changed, 288 insertions(+)
create mode 100644 drivers/phy/marvell/phy-mvebu-a3700-utmi.c
diff --git a/drivers/phy/marvell/Kconfig b/drivers/phy/marvell/Kconfig
index 9c90c0408ea3..b8e9dd38ad0d 100644
--- a/drivers/phy/marvell/Kconfig
+++ b/drivers/phy/marvell/Kconfig
@@ -33,6 +33,15 @@ config PHY_MVEBU_A3700_COMPHY
shared serdes PHYs on Marvell Armada 3700. Its serdes lanes can be
used by various controllers: Ethernet, SATA, USB3, PCIe.
+config PHY_MVEBU_A3700_UTMI
+ tristate "Marvell A3700 UTMI driver"
+ depends on ARCH_MVEBU || COMPILE_TEST
+ depends on OF
+ default y
+ select GENERIC_PHY
+ help
+ Enable this to support Marvell A3700 UTMI PHY driver.
+
config PHY_MVEBU_CP110_COMPHY
tristate "Marvell CP110 comphy driver"
depends on ARCH_MVEBU || COMPILE_TEST
diff --git a/drivers/phy/marvell/Makefile b/drivers/phy/marvell/Makefile
index c13a0c8ab6f0..82f291cf59ee 100644
--- a/drivers/phy/marvell/Makefile
+++ b/drivers/phy/marvell/Makefile
@@ -3,6 +3,7 @@ obj-$(CONFIG_ARMADA375_USBCLUSTER_PHY) += phy-armada375-usb2.o
obj-$(CONFIG_PHY_BERLIN_SATA) += phy-berlin-sata.o
obj-$(CONFIG_PHY_BERLIN_USB) += phy-berlin-usb.o
obj-$(CONFIG_PHY_MVEBU_A3700_COMPHY) += phy-mvebu-a3700-comphy.o
+obj-$(CONFIG_PHY_MVEBU_A3700_UTMI) += phy-mvebu-a3700-utmi.o
obj-$(CONFIG_PHY_MVEBU_CP110_COMPHY) += phy-mvebu-cp110-comphy.o
obj-$(CONFIG_PHY_MVEBU_SATA) += phy-mvebu-sata.o
obj-$(CONFIG_PHY_PXA_28NM_HSIC) += phy-pxa-28nm-hsic.o
diff --git a/drivers/phy/marvell/phy-mvebu-a3700-utmi.c b/drivers/phy/marvell/phy-mvebu-a3700-utmi.c
new file mode 100644
index 000000000000..94a29dea57af
--- /dev/null
+++ b/drivers/phy/marvell/phy-mvebu-a3700-utmi.c
@@ -0,0 +1,278 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2018 Marvell
+ *
+ * Authors:
+ * Igal Liberman <igall@marvell.com>
+ * Miquèl Raynal <miquel.raynal@bootlin.com>
+ *
+ * Marvell A3700 UTMI PHY driver
+ */
+
+#include <linux/io.h>
+#include <linux/iopoll.h>
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/of_device.h>
+#include <linux/phy/phy.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+
+/* Armada 3700 UTMI PHY registers */
+#define USB2_PHY_PLL_CTRL_REG0 0x0
+#define PLL_REF_DIV_OFF 0
+#define PLL_REF_DIV_MASK GENMASK(6, 0)
+#define PLL_REF_DIV_5 5
+#define PLL_FB_DIV_OFF 16
+#define PLL_FB_DIV_MASK GENMASK(24, 16)
+#define PLL_FB_DIV_96 96
+#define PLL_SEL_LPFR_OFF 28
+#define PLL_SEL_LPFR_MASK GENMASK(29, 28)
+#define PLL_READY BIT(31)
+#define USB2_PHY_CAL_CTRL 0x8
+#define PHY_PLLCAL_DONE BIT(31)
+#define PHY_IMPCAL_DONE BIT(23)
+#define USB2_RX_CHAN_CTRL1 0x18
+#define USB2PHY_SQCAL_DONE BIT(31)
+#define USB2_PHY_OTG_CTRL 0x34
+#define PHY_PU_OTG BIT(4)
+#define USB2_PHY_CHRGR_DETECT 0x38
+#define PHY_CDP_EN BIT(2)
+#define PHY_DCP_EN BIT(3)
+#define PHY_PD_EN BIT(4)
+#define PHY_PU_CHRG_DTC BIT(5)
+#define PHY_CDP_DM_AUTO BIT(7)
+#define PHY_ENSWITCH_DP BIT(12)
+#define PHY_ENSWITCH_DM BIT(13)
+
+/* Armada 3700 USB miscellaneous registers */
+#define USB2_PHY_CTRL(usb32) (usb32 ? 0x20 : 0x4)
+#define RB_USB2PHY_PU BIT(0)
+#define USB2_DP_PULLDN_DEV_MODE BIT(5)
+#define USB2_DM_PULLDN_DEV_MODE BIT(6)
+#define RB_USB2PHY_SUSPM(usb32) (usb32 ? BIT(14) : BIT(7))
+
+#define PLL_LOCK_DELAY_US 10000
+#define PLL_LOCK_TIMEOUT_US 1000000
+
+/**
+ * struct mvebu_a3700_utmi_caps - PHY capabilities
+ *
+ * @usb32: Flag indicating which PHY is in use (impacts the register map):
+ * - The UTMI PHY wired to the USB3/USB2 controller (otg)
+ * - The UTMI PHY wired to the USB2 controller (host only)
+ * @ops: PHY operations
+ */
+struct mvebu_a3700_utmi_caps {
+ int usb32;
+ const struct phy_ops *ops;
+};
+
+/**
+ * struct mvebu_a3700_utmi - PHY driver data
+ *
+ * @regs: PHY registers
+ * @usb_mis: Regmap with USB miscellaneous registers including PHY ones
+ * @caps: PHY capabilities
+ * @phy: PHY handle
+ */
+struct mvebu_a3700_utmi {
+ void __iomem *regs;
+ struct regmap *usb_misc;
+ const struct mvebu_a3700_utmi_caps *caps;
+ struct phy *phy;
+};
+
+static int mvebu_a3700_utmi_phy_power_on(struct phy *phy)
+{
+ struct mvebu_a3700_utmi *utmi = phy_get_drvdata(phy);
+ struct device *dev = &phy->dev;
+ int usb32 = utmi->caps->usb32;
+ int ret = 0;
+ u32 reg;
+
+ /*
+ * Setup PLL. 40MHz clock used to be the default, being 25MHz now.
+ * See "PLL Settings for Typical REFCLK" table.
+ */
+ reg = readl(utmi->regs + USB2_PHY_PLL_CTRL_REG0);
+ reg &= ~(PLL_REF_DIV_MASK | PLL_FB_DIV_MASK | PLL_SEL_LPFR_MASK);
+ reg |= (PLL_REF_DIV_5 << PLL_REF_DIV_OFF) |
+ (PLL_FB_DIV_96 << PLL_FB_DIV_OFF);
+ writel(reg, utmi->regs + USB2_PHY_PLL_CTRL_REG0);
+
+ /* Enable PHY pull up and disable USB2 suspend */
+ regmap_update_bits(utmi->usb_misc, USB2_PHY_CTRL(usb32),
+ RB_USB2PHY_SUSPM(usb32) | RB_USB2PHY_PU,
+ RB_USB2PHY_SUSPM(usb32) | RB_USB2PHY_PU);
+
+ if (usb32) {
+ /* Power up OTG module */
+ reg = readl(utmi->regs + USB2_PHY_OTG_CTRL);
+ reg |= PHY_PU_OTG;
+ writel(reg, utmi->regs + USB2_PHY_OTG_CTRL);
+
+ /* Disable PHY charger detection */
+ reg = readl(utmi->regs + USB2_PHY_CHRGR_DETECT);
+ reg &= ~(PHY_CDP_EN | PHY_DCP_EN | PHY_PD_EN | PHY_PU_CHRG_DTC |
+ PHY_CDP_DM_AUTO | PHY_ENSWITCH_DP | PHY_ENSWITCH_DM);
+ writel(reg, utmi->regs + USB2_PHY_CHRGR_DETECT);
+
+ /* Disable PHY DP/DM pull-down (used for device mode) */
+ regmap_update_bits(utmi->usb_misc, USB2_PHY_CTRL(usb32),
+ USB2_DP_PULLDN_DEV_MODE |
+ USB2_DM_PULLDN_DEV_MODE, 0);
+ }
+
+ /* Wait for PLL calibration */
+ ret = readl_poll_timeout(utmi->regs + USB2_PHY_CAL_CTRL, reg,
+ reg & PHY_PLLCAL_DONE,
+ PLL_LOCK_DELAY_US, PLL_LOCK_TIMEOUT_US);
+ if (ret) {
+ dev_err(dev, "Failed to end USB2 PLL calibration\n");
+ return ret;
+ }
+
+ /* Wait for impedance calibration */
+ ret = readl_poll_timeout(utmi->regs + USB2_PHY_CAL_CTRL, reg,
+ reg & PHY_IMPCAL_DONE,
+ PLL_LOCK_DELAY_US, PLL_LOCK_TIMEOUT_US);
+ if (ret) {
+ dev_err(dev, "Failed to end USB2 impedance calibration\n");
+ return ret;
+ }
+
+ /* Wait for squelch calibration */
+ ret = readl_poll_timeout(utmi->regs + USB2_RX_CHAN_CTRL1, reg,
+ reg & USB2PHY_SQCAL_DONE,
+ PLL_LOCK_DELAY_US, PLL_LOCK_TIMEOUT_US);
+ if (ret) {
+ dev_err(dev, "Failed to end USB2 unknown calibration\n");
+ return ret;
+ }
+
+ /* Wait for PLL to be locked */
+ ret = readl_poll_timeout(utmi->regs + USB2_PHY_PLL_CTRL_REG0, reg,
+ reg & PLL_READY,
+ PLL_LOCK_DELAY_US, PLL_LOCK_TIMEOUT_US);
+ if (ret)
+ dev_err(dev, "Failed to lock USB2 PLL\n");
+
+ return ret;
+}
+
+static int mvebu_a3700_utmi_phy_power_off(struct phy *phy)
+{
+ struct mvebu_a3700_utmi *utmi = phy_get_drvdata(phy);
+ int usb32 = utmi->caps->usb32;
+ u32 reg;
+
+ /* Disable PHY pull-up and enable USB2 suspend */
+ reg = readl(utmi->regs + USB2_PHY_CTRL(usb32));
+ reg &= ~(RB_USB2PHY_PU | RB_USB2PHY_SUSPM(usb32));
+ writel(reg, utmi->regs + USB2_PHY_CTRL(usb32));
+
+ /* Power down OTG module */
+ if (usb32) {
+ reg = readl(utmi->regs + USB2_PHY_OTG_CTRL);
+ reg &= ~PHY_PU_OTG;
+ writel(reg, utmi->regs + USB2_PHY_OTG_CTRL);
+ }
+
+ return 0;
+}
+
+static const struct phy_ops mvebu_a3700_utmi_phy_ops = {
+ .power_on = mvebu_a3700_utmi_phy_power_on,
+ .power_off = mvebu_a3700_utmi_phy_power_off,
+ .owner = THIS_MODULE,
+};
+
+static const struct mvebu_a3700_utmi_caps mvebu_a3700_utmi_otg_phy_caps = {
+ .usb32 = true,
+ .ops = &mvebu_a3700_utmi_phy_ops,
+};
+
+static const struct mvebu_a3700_utmi_caps mvebu_a3700_utmi_host_phy_caps = {
+ .usb32 = false,
+ .ops = &mvebu_a3700_utmi_phy_ops,
+};
+
+static const struct of_device_id mvebu_a3700_utmi_of_match[] = {
+ {
+ .compatible = "marvell,a3700-utmi-otg-phy",
+ .data = &mvebu_a3700_utmi_otg_phy_caps,
+ },
+ {
+ .compatible = "marvell,a3700-utmi-host-phy",
+ .data = &mvebu_a3700_utmi_host_phy_caps,
+ },
+ {},
+};
+MODULE_DEVICE_TABLE(of, mvebu_a3700_utmi_of_match);
+
+static int mvebu_a3700_utmi_phy_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct mvebu_a3700_utmi *utmi;
+ struct phy_provider *provider;
+ struct resource *res;
+
+ utmi = devm_kzalloc(dev, sizeof(*utmi), GFP_KERNEL);
+ if (!utmi)
+ return -ENOMEM;
+
+ /* Get UTMI memory region */
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res) {
+ dev_err(dev, "Missing UTMI PHY memory resource\n");
+ return -ENODEV;
+ }
+
+ utmi->regs = devm_ioremap_resource(dev, res);
+ if (IS_ERR(utmi->regs))
+ return PTR_ERR(utmi->regs);
+
+ /* Get miscellaneous Host/PHY region */
+ utmi->usb_misc = syscon_regmap_lookup_by_phandle(dev->of_node,
+ "marvell,usb-misc-reg");
+ if (IS_ERR(utmi->usb_misc)) {
+ dev_err(dev,
+ "Missing USB misc purpose system controller\n");
+ return PTR_ERR(utmi->usb_misc);
+ }
+
+ /* Retrieve PHY capabilities */
+ utmi->caps = of_device_get_match_data(dev);
+
+ /* Instantiate the PHY */
+ utmi->phy = devm_phy_create(dev, NULL, utmi->caps->ops);
+ if (IS_ERR(utmi->phy)) {
+ dev_err(dev, "Failed to create the UTMI PHY\n");
+ return PTR_ERR(utmi->phy);
+ }
+
+ phy_set_drvdata(utmi->phy, utmi);
+
+ /* Ensure the PHY is powered off */
+ utmi->caps->ops->power_off(utmi->phy);
+
+ provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
+
+ return PTR_ERR_OR_ZERO(provider);
+}
+
+static struct platform_driver mvebu_a3700_utmi_driver = {
+ .probe = mvebu_a3700_utmi_phy_probe,
+ .driver = {
+ .name = "mvebu-a3700-utmi-phy",
+ .owner = THIS_MODULE,
+ .of_match_table = mvebu_a3700_utmi_of_match,
+ },
+};
+module_platform_driver(mvebu_a3700_utmi_driver);
+
+MODULE_AUTHOR("Igal Liberman <igall@marvell.com>");
+MODULE_AUTHOR("Miquel Raynal <miquel.raynal@bootlin.com>");
+MODULE_DESCRIPTION("Marvell EBU A3700 UTMI PHY driver");
+MODULE_LICENSE("GPL v2");
--
2.19.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v5 2/6] dt-bindings: phy: mvebu-utmi: add UTMI PHY bindings
2019-01-29 9:36 [PATCH v5 0/6] A3700 USB UTMI PHY support Miquel Raynal
@ 2019-01-29 9:36 ` Miquel Raynal
2019-01-29 9:36 ` Miquel Raynal
` (5 subsequent siblings)
6 siblings, 0 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Add bindings for Marvell Armada 3700 USB2 UTMI+ PHY.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
.../bindings/phy/phy-mvebu-utmi.txt | 38 +++++++++++++++++++
1 file changed, 38 insertions(+)
create mode 100644 Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
diff --git a/Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt b/Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
new file mode 100644
index 000000000000..aa99ceec73b0
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
@@ -0,0 +1,38 @@
+MVEBU A3700 UTMI PHY
+--------------------
+
+USB2 UTMI+ PHY controllers can be found on the following Marvell MVEBU SoCs:
+* Armada 3700
+
+On Armada 3700, there are two USB controllers, one is compatible with the USB2
+and USB3 specifications and supports OTG. The other one is USB2 compliant and
+only supports host mode. Both of these controllers come with a slightly
+different UTMI PHY.
+
+Required Properties:
+
+- compatible: Should be one of:
+ * "marvell,a3700-utmi-host-phy" for the PHY connected to
+ the USB2 host-only controller.
+ * "marvell,a3700-utmi-otg-phy" for the PHY connected to
+ the USB3 and USB2 OTG capable controller.
+- reg: PHY IP register range.
+- marvell,usb-misc-reg: handle on the "USB miscellaneous registers" shared
+ region covering registers related to both the host
+ controller and the PHY.
+- #phy-cells: Standard property (Documentation: phy-bindings.txt) Should be 0.
+
+
+Example:
+
+ usb2_utmi_host_phy: phy@5f000 {
+ compatible = "marvell,armada-3700-utmi-host-phy";
+ reg = <0x5f000 0x800>;
+ marvell,usb-misc-reg = <&usb2_syscon>;
+ #phy-cells = <0>;
+ };
+
+ usb2_syscon: system-controller@5f800 {
+ compatible = "marvell,armada-3700-usb2-host-misc", "syscon";
+ reg = <0x5f800 0x800>;
+ };
--
2.19.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v5 2/6] dt-bindings: phy: mvebu-utmi: add UTMI PHY bindings
@ 2019-01-29 9:36 ` Miquel Raynal
0 siblings, 0 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Add bindings for Marvell Armada 3700 USB2 UTMI+ PHY.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
.../bindings/phy/phy-mvebu-utmi.txt | 38 +++++++++++++++++++
1 file changed, 38 insertions(+)
create mode 100644 Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
diff --git a/Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt b/Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
new file mode 100644
index 000000000000..aa99ceec73b0
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
@@ -0,0 +1,38 @@
+MVEBU A3700 UTMI PHY
+--------------------
+
+USB2 UTMI+ PHY controllers can be found on the following Marvell MVEBU SoCs:
+* Armada 3700
+
+On Armada 3700, there are two USB controllers, one is compatible with the USB2
+and USB3 specifications and supports OTG. The other one is USB2 compliant and
+only supports host mode. Both of these controllers come with a slightly
+different UTMI PHY.
+
+Required Properties:
+
+- compatible: Should be one of:
+ * "marvell,a3700-utmi-host-phy" for the PHY connected to
+ the USB2 host-only controller.
+ * "marvell,a3700-utmi-otg-phy" for the PHY connected to
+ the USB3 and USB2 OTG capable controller.
+- reg: PHY IP register range.
+- marvell,usb-misc-reg: handle on the "USB miscellaneous registers" shared
+ region covering registers related to both the host
+ controller and the PHY.
+- #phy-cells: Standard property (Documentation: phy-bindings.txt) Should be 0.
+
+
+Example:
+
+ usb2_utmi_host_phy: phy@5f000 {
+ compatible = "marvell,armada-3700-utmi-host-phy";
+ reg = <0x5f000 0x800>;
+ marvell,usb-misc-reg = <&usb2_syscon>;
+ #phy-cells = <0>;
+ };
+
+ usb2_syscon: system-controller@5f800 {
+ compatible = "marvell,armada-3700-usb2-host-misc", "syscon";
+ reg = <0x5f800 0x800>;
+ };
--
2.19.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v5 3/6] MAINTAINERS: phy: fill Armada 3700 PHY drivers entry
2019-01-29 9:36 [PATCH v5 0/6] A3700 USB UTMI PHY support Miquel Raynal
@ 2019-01-29 9:36 ` Miquel Raynal
2019-01-29 9:36 ` Miquel Raynal
` (5 subsequent siblings)
6 siblings, 0 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Update the Armada 3700 PHY drivers entry with the recently added UTMI
PHY driver.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
MAINTAINERS | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/MAINTAINERS b/MAINTAINERS
index abfd80f21b24..2a08a097e107 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9080,11 +9080,13 @@ F: drivers/gpu/drm/armada/
F: include/uapi/drm/armada_drm.h
F: Documentation/devicetree/bindings/display/armada/
-MARVELL ARMADA 3700 COMPHY DRIVER
+MARVELL ARMADA 3700 PHY DRIVERS
M: Miquel Raynal <miquel.raynal@bootlin.com>
S: Maintained
F: drivers/phy/marvell/phy-mvebu-a3700-comphy.c
+F: drivers/phy/marvell/phy-mvebu-a3700-utmi.c
F: Documentation/devicetree/bindings/phy/phy-mvebu-comphy.txt
+F: Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
MARVELL CRYPTO DRIVER
M: Boris Brezillon <bbrezillon@kernel.org>
--
2.19.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v5 3/6] MAINTAINERS: phy: fill Armada 3700 PHY drivers entry
@ 2019-01-29 9:36 ` Miquel Raynal
0 siblings, 0 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Update the Armada 3700 PHY drivers entry with the recently added UTMI
PHY driver.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
MAINTAINERS | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/MAINTAINERS b/MAINTAINERS
index abfd80f21b24..2a08a097e107 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9080,11 +9080,13 @@ F: drivers/gpu/drm/armada/
F: include/uapi/drm/armada_drm.h
F: Documentation/devicetree/bindings/display/armada/
-MARVELL ARMADA 3700 COMPHY DRIVER
+MARVELL ARMADA 3700 PHY DRIVERS
M: Miquel Raynal <miquel.raynal@bootlin.com>
S: Maintained
F: drivers/phy/marvell/phy-mvebu-a3700-comphy.c
+F: drivers/phy/marvell/phy-mvebu-a3700-utmi.c
F: Documentation/devicetree/bindings/phy/phy-mvebu-comphy.txt
+F: Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
MARVELL CRYPTO DRIVER
M: Boris Brezillon <bbrezillon@kernel.org>
--
2.19.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v5 4/6] ARM64: dts: marvell: armada-37xx: fix USB2 memory region
2019-01-29 9:36 [PATCH v5 0/6] A3700 USB UTMI PHY support Miquel Raynal
@ 2019-01-29 9:36 ` Miquel Raynal
2019-01-29 9:36 ` Miquel Raynal
` (5 subsequent siblings)
6 siblings, 0 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
The specification splits the USB2 memory region into three sections:
1/ 0xD005E000-0xD005EFFF: USB2 Host Controller Registers
2/ 0xD005F000-0xD005F7FF: USB2 UTMI PHY Registers
3/ 0xD005F800-0xD005FFFF: USB2 Host Miscellaneous Registers
Section 1/ belongs to the USB2 node but section 2/ belongs to the UTMI
PHY node. Section 3/ can be accessed by both the USB controller and
the PHY because of the miscaellaneous nature of the registers inside
so a specific node will be created to cover the area and a handle to
it will be added in both the USB controller and the PHY node.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
index d6e548618a95..5cfd1b920f31 100644
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
@@ -351,7 +351,7 @@
usb2: usb@5e000 {
compatible = "marvell,armada-3700-ehci";
- reg = <0x5e000 0x2000>;
+ reg = <0x5e000 0x1000>;
interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
--
2.19.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v5 4/6] ARM64: dts: marvell: armada-37xx: fix USB2 memory region
@ 2019-01-29 9:36 ` Miquel Raynal
0 siblings, 0 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
The specification splits the USB2 memory region into three sections:
1/ 0xD005E000-0xD005EFFF: USB2 Host Controller Registers
2/ 0xD005F000-0xD005F7FF: USB2 UTMI PHY Registers
3/ 0xD005F800-0xD005FFFF: USB2 Host Miscellaneous Registers
Section 1/ belongs to the USB2 node but section 2/ belongs to the UTMI
PHY node. Section 3/ can be accessed by both the USB controller and
the PHY because of the miscaellaneous nature of the registers inside
so a specific node will be created to cover the area and a handle to
it will be added in both the USB controller and the PHY node.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
index d6e548618a95..5cfd1b920f31 100644
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
@@ -351,7 +351,7 @@
usb2: usb@5e000 {
compatible = "marvell,armada-3700-ehci";
- reg = <0x5e000 0x2000>;
+ reg = <0x5e000 0x1000>;
interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
--
2.19.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v5 5/6] ARM64: dts: marvell: armada-37xx: declare USB2 UTMI PHYs
2019-01-29 9:36 [PATCH v5 0/6] A3700 USB UTMI PHY support Miquel Raynal
@ 2019-01-29 9:36 ` Miquel Raynal
2019-01-29 9:36 ` Miquel Raynal
` (5 subsequent siblings)
6 siblings, 0 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
On Marvell Armada 3700 SoCs there are two USB2 UTMI PHYs. They are
both very similar but only one has OTG/charging capabilities.
Because there are USB host registers and PHY registers mixed in a
single area, a system controller is also created and referenced from
both the USB host node and the PHY node.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 28 ++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
index 5cfd1b920f31..d2d8ef00c592 100644
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
@@ -344,18 +344,46 @@
compatible = "marvell,armada3700-xhci",
"generic-xhci";
reg = <0x58000 0x4000>;
+ marvell,usb-misc-reg = <&usb32_syscon>;
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&sb_periph_clk 12>;
status = "disabled";
};
+ usb2_utmi_otg_phy: phy@5d000 {
+ compatible = "marvell,a3700-utmi-otg-phy";
+ reg = <0x5d000 0x800>;
+ marvell,usb-misc-reg = <&usb32_syscon>;
+ #phy-cells = <0>;
+ };
+
+ usb32_syscon: system-controller@5d800 {
+ compatible = "marvell,armada-3700-usb2-host-device-misc",
+ "syscon";
+ reg = <0x5d800 0x800>;
+ };
+
usb2: usb@5e000 {
compatible = "marvell,armada-3700-ehci";
reg = <0x5e000 0x1000>;
+ marvell,usb-misc-reg = <&usb2_syscon>;
interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
+ usb2_utmi_host_phy: phy@5f000 {
+ compatible = "marvell,a3700-utmi-host-phy";
+ reg = <0x5f000 0x800>;
+ marvell,usb-misc-reg = <&usb2_syscon>;
+ #phy-cells = <0>;
+ };
+
+ usb2_syscon: system-controller@5f800 {
+ compatible = "marvell,armada-3700-usb2-host-misc",
+ "syscon";
+ reg = <0x5f800 0x800>;
+ };
+
xor@60900 {
compatible = "marvell,armada-3700-xor";
reg = <0x60900 0x100>,
--
2.19.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v5 5/6] ARM64: dts: marvell: armada-37xx: declare USB2 UTMI PHYs
@ 2019-01-29 9:36 ` Miquel Raynal
0 siblings, 0 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
On Marvell Armada 3700 SoCs there are two USB2 UTMI PHYs. They are
both very similar but only one has OTG/charging capabilities.
Because there are USB host registers and PHY registers mixed in a
single area, a system controller is also created and referenced from
both the USB host node and the PHY node.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 28 ++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
index 5cfd1b920f31..d2d8ef00c592 100644
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
@@ -344,18 +344,46 @@
compatible = "marvell,armada3700-xhci",
"generic-xhci";
reg = <0x58000 0x4000>;
+ marvell,usb-misc-reg = <&usb32_syscon>;
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&sb_periph_clk 12>;
status = "disabled";
};
+ usb2_utmi_otg_phy: phy@5d000 {
+ compatible = "marvell,a3700-utmi-otg-phy";
+ reg = <0x5d000 0x800>;
+ marvell,usb-misc-reg = <&usb32_syscon>;
+ #phy-cells = <0>;
+ };
+
+ usb32_syscon: system-controller@5d800 {
+ compatible = "marvell,armada-3700-usb2-host-device-misc",
+ "syscon";
+ reg = <0x5d800 0x800>;
+ };
+
usb2: usb@5e000 {
compatible = "marvell,armada-3700-ehci";
reg = <0x5e000 0x1000>;
+ marvell,usb-misc-reg = <&usb2_syscon>;
interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};
+ usb2_utmi_host_phy: phy@5f000 {
+ compatible = "marvell,a3700-utmi-host-phy";
+ reg = <0x5f000 0x800>;
+ marvell,usb-misc-reg = <&usb2_syscon>;
+ #phy-cells = <0>;
+ };
+
+ usb2_syscon: system-controller@5f800 {
+ compatible = "marvell,armada-3700-usb2-host-misc",
+ "syscon";
+ reg = <0x5f800 0x800>;
+ };
+
xor@60900 {
compatible = "marvell,armada-3700-xor";
reg = <0x60900 0x100>,
--
2.19.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v5 6/6] ARM64: dts: marvell: armada-37xx: link USB hosts with their PHYs
2019-01-29 9:36 [PATCH v5 0/6] A3700 USB UTMI PHY support Miquel Raynal
@ 2019-01-29 9:36 ` Miquel Raynal
2019-01-29 9:36 ` Miquel Raynal
` (5 subsequent siblings)
6 siblings, 0 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Reference the PHY nodes from the USB controller nodes.
The USB3 host controller is wired to:
* the first PHY of the COMPHY IP
* the OTG-capable UTMI PHY
The USB2 host controller is wired to:
* the host-only UTMI PHY
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
index d2d8ef00c592..c0b1c9146525 100644
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
@@ -347,6 +347,8 @@
marvell,usb-misc-reg = <&usb32_syscon>;
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&sb_periph_clk 12>;
+ phys = <&comphy0 0>, <&usb2_utmi_otg_phy>;
+ phy-names = "usb3-phy", "usb2-utmi-otg-phy";
status = "disabled";
};
@@ -368,6 +370,8 @@
reg = <0x5e000 0x1000>;
marvell,usb-misc-reg = <&usb2_syscon>;
interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+ phys = <&usb2_utmi_host_phy>;
+ phy-names = "usb2-utmi-host-phy";
status = "disabled";
};
--
2.19.1
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v5 6/6] ARM64: dts: marvell: armada-37xx: link USB hosts with their PHYs
@ 2019-01-29 9:36 ` Miquel Raynal
0 siblings, 0 replies; 19+ messages in thread
From: Miquel Raynal @ 2019-01-29 9:36 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Gregory Clement, Jason Cooper, Andrew Lunn,
Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Reference the PHY nodes from the USB controller nodes.
The USB3 host controller is wired to:
* the first PHY of the COMPHY IP
* the OTG-capable UTMI PHY
The USB2 host controller is wired to:
* the host-only UTMI PHY
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
index d2d8ef00c592..c0b1c9146525 100644
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
@@ -347,6 +347,8 @@
marvell,usb-misc-reg = <&usb32_syscon>;
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&sb_periph_clk 12>;
+ phys = <&comphy0 0>, <&usb2_utmi_otg_phy>;
+ phy-names = "usb3-phy", "usb2-utmi-otg-phy";
status = "disabled";
};
@@ -368,6 +370,8 @@
reg = <0x5e000 0x1000>;
marvell,usb-misc-reg = <&usb2_syscon>;
interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+ phys = <&usb2_utmi_host_phy>;
+ phy-names = "usb2-utmi-host-phy";
status = "disabled";
};
--
2.19.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v5 4/6] ARM64: dts: marvell: armada-37xx: fix USB2 memory region
2019-01-29 9:36 ` Miquel Raynal
@ 2019-02-06 11:09 ` Gregory CLEMENT
-1 siblings, 0 replies; 19+ messages in thread
From: Gregory CLEMENT @ 2019-02-06 11:09 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland, Jason Cooper,
Andrew Lunn, Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Hi Miquel,
On mar., janv. 29 2019, Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> The specification splits the USB2 memory region into three sections:
> 1/ 0xD005E000-0xD005EFFF: USB2 Host Controller Registers
> 2/ 0xD005F000-0xD005F7FF: USB2 UTMI PHY Registers
> 3/ 0xD005F800-0xD005FFFF: USB2 Host Miscellaneous Registers
>
> Section 1/ belongs to the USB2 node but section 2/ belongs to the UTMI
> PHY node. Section 3/ can be accessed by both the USB controller and
> the PHY because of the miscaellaneous nature of the registers inside
> so a specific node will be created to cover the area and a handle to
> it will be added in both the USB controller and the PHY node.
>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Applied to mvebu/dt64
Thanks,
Gregory
> ---
> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> index d6e548618a95..5cfd1b920f31 100644
> --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> @@ -351,7 +351,7 @@
>
> usb2: usb@5e000 {
> compatible = "marvell,armada-3700-ehci";
> - reg = <0x5e000 0x2000>;
> + reg = <0x5e000 0x1000>;
> interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
> status = "disabled";
> };
> --
> 2.19.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
Gregory Clement, Bootlin
Embedded Linux and Kernel engineering
http://bootlin.com
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v5 4/6] ARM64: dts: marvell: armada-37xx: fix USB2 memory region
@ 2019-02-06 11:09 ` Gregory CLEMENT
0 siblings, 0 replies; 19+ messages in thread
From: Gregory CLEMENT @ 2019-02-06 11:09 UTC (permalink / raw)
To: Miquel Raynal, Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Jason Cooper, Andrew Lunn, Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Hi Miquel,
On mar., janv. 29 2019, Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> The specification splits the USB2 memory region into three sections:
> 1/ 0xD005E000-0xD005EFFF: USB2 Host Controller Registers
> 2/ 0xD005F000-0xD005F7FF: USB2 UTMI PHY Registers
> 3/ 0xD005F800-0xD005FFFF: USB2 Host Miscellaneous Registers
>
> Section 1/ belongs to the USB2 node but section 2/ belongs to the UTMI
> PHY node. Section 3/ can be accessed by both the USB controller and
> the PHY because of the miscaellaneous nature of the registers inside
> so a specific node will be created to cover the area and a handle to
> it will be added in both the USB controller and the PHY node.
>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Applied to mvebu/dt64
Thanks,
Gregory
> ---
> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> index d6e548618a95..5cfd1b920f31 100644
> --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> @@ -351,7 +351,7 @@
>
> usb2: usb@5e000 {
> compatible = "marvell,armada-3700-ehci";
> - reg = <0x5e000 0x2000>;
> + reg = <0x5e000 0x1000>;
> interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
> status = "disabled";
> };
> --
> 2.19.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
Gregory Clement, Bootlin
Embedded Linux and Kernel engineering
http://bootlin.com
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v5 5/6] ARM64: dts: marvell: armada-37xx: declare USB2 UTMI PHYs
2019-01-29 9:36 ` Miquel Raynal
@ 2019-02-06 11:10 ` Gregory CLEMENT
-1 siblings, 0 replies; 19+ messages in thread
From: Gregory CLEMENT @ 2019-02-06 11:10 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland, Jason Cooper,
Andrew Lunn, Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Hi Miquel,
On mar., janv. 29 2019, Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> On Marvell Armada 3700 SoCs there are two USB2 UTMI PHYs. They are
> both very similar but only one has OTG/charging capabilities.
>
> Because there are USB host registers and PHY registers mixed in a
> single area, a system controller is also created and referenced from
> both the USB host node and the PHY node.
>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Applied to mvebu/dt64
Thanks,
Gregory
> ---
> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 28 ++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> index 5cfd1b920f31..d2d8ef00c592 100644
> --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> @@ -344,18 +344,46 @@
> compatible = "marvell,armada3700-xhci",
> "generic-xhci";
> reg = <0x58000 0x4000>;
> + marvell,usb-misc-reg = <&usb32_syscon>;
> interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&sb_periph_clk 12>;
> status = "disabled";
> };
>
> + usb2_utmi_otg_phy: phy@5d000 {
> + compatible = "marvell,a3700-utmi-otg-phy";
> + reg = <0x5d000 0x800>;
> + marvell,usb-misc-reg = <&usb32_syscon>;
> + #phy-cells = <0>;
> + };
> +
> + usb32_syscon: system-controller@5d800 {
> + compatible = "marvell,armada-3700-usb2-host-device-misc",
> + "syscon";
> + reg = <0x5d800 0x800>;
> + };
> +
> usb2: usb@5e000 {
> compatible = "marvell,armada-3700-ehci";
> reg = <0x5e000 0x1000>;
> + marvell,usb-misc-reg = <&usb2_syscon>;
> interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
> status = "disabled";
> };
>
> + usb2_utmi_host_phy: phy@5f000 {
> + compatible = "marvell,a3700-utmi-host-phy";
> + reg = <0x5f000 0x800>;
> + marvell,usb-misc-reg = <&usb2_syscon>;
> + #phy-cells = <0>;
> + };
> +
> + usb2_syscon: system-controller@5f800 {
> + compatible = "marvell,armada-3700-usb2-host-misc",
> + "syscon";
> + reg = <0x5f800 0x800>;
> + };
> +
> xor@60900 {
> compatible = "marvell,armada-3700-xor";
> reg = <0x60900 0x100>,
> --
> 2.19.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
Gregory Clement, Bootlin
Embedded Linux and Kernel engineering
http://bootlin.com
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v5 5/6] ARM64: dts: marvell: armada-37xx: declare USB2 UTMI PHYs
@ 2019-02-06 11:10 ` Gregory CLEMENT
0 siblings, 0 replies; 19+ messages in thread
From: Gregory CLEMENT @ 2019-02-06 11:10 UTC (permalink / raw)
To: Miquel Raynal, Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Jason Cooper, Andrew Lunn, Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Hi Miquel,
On mar., janv. 29 2019, Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> On Marvell Armada 3700 SoCs there are two USB2 UTMI PHYs. They are
> both very similar but only one has OTG/charging capabilities.
>
> Because there are USB host registers and PHY registers mixed in a
> single area, a system controller is also created and referenced from
> both the USB host node and the PHY node.
>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Applied to mvebu/dt64
Thanks,
Gregory
> ---
> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 28 ++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> index 5cfd1b920f31..d2d8ef00c592 100644
> --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> @@ -344,18 +344,46 @@
> compatible = "marvell,armada3700-xhci",
> "generic-xhci";
> reg = <0x58000 0x4000>;
> + marvell,usb-misc-reg = <&usb32_syscon>;
> interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&sb_periph_clk 12>;
> status = "disabled";
> };
>
> + usb2_utmi_otg_phy: phy@5d000 {
> + compatible = "marvell,a3700-utmi-otg-phy";
> + reg = <0x5d000 0x800>;
> + marvell,usb-misc-reg = <&usb32_syscon>;
> + #phy-cells = <0>;
> + };
> +
> + usb32_syscon: system-controller@5d800 {
> + compatible = "marvell,armada-3700-usb2-host-device-misc",
> + "syscon";
> + reg = <0x5d800 0x800>;
> + };
> +
> usb2: usb@5e000 {
> compatible = "marvell,armada-3700-ehci";
> reg = <0x5e000 0x1000>;
> + marvell,usb-misc-reg = <&usb2_syscon>;
> interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
> status = "disabled";
> };
>
> + usb2_utmi_host_phy: phy@5f000 {
> + compatible = "marvell,a3700-utmi-host-phy";
> + reg = <0x5f000 0x800>;
> + marvell,usb-misc-reg = <&usb2_syscon>;
> + #phy-cells = <0>;
> + };
> +
> + usb2_syscon: system-controller@5f800 {
> + compatible = "marvell,armada-3700-usb2-host-misc",
> + "syscon";
> + reg = <0x5f800 0x800>;
> + };
> +
> xor@60900 {
> compatible = "marvell,armada-3700-xor";
> reg = <0x60900 0x100>,
> --
> 2.19.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
Gregory Clement, Bootlin
Embedded Linux and Kernel engineering
http://bootlin.com
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v5 0/6] A3700 USB UTMI PHY support
2019-01-29 9:36 [PATCH v5 0/6] A3700 USB UTMI PHY support Miquel Raynal
` (5 preceding siblings ...)
2019-01-29 9:36 ` Miquel Raynal
@ 2019-02-06 11:34 ` Kishon Vijay Abraham I
6 siblings, 0 replies; 19+ messages in thread
From: Kishon Vijay Abraham I @ 2019-02-06 11:34 UTC (permalink / raw)
To: Miquel Raynal, Rob Herring, Mark Rutland, Gregory Clement,
Jason Cooper, Andrew Lunn, Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, linux-arm-kernel
On 29/01/19 3:06 PM, Miquel Raynal wrote:
> USB2 on A3700 only works because U-Boot initializes the UTMI PHYs (one
> wired to each USB controller). While there is no issue with regular
> use, this architecture does not allow suspend to RAM to work as the
> PHYs must be re-initialized at resume. In order to support this
> feature, this series adds a UTMI PHY driver for the A3700 SoC.
>
> The A3700 device tree is updated to reference the PHYs.
merged the PHY patches.
Thanks
Kishon
>
> Thanks,
> Miquèl
>
> Changes since v4:
> =================
> * Drop USB patches as they have been sent in a separate series. No
> real functional changes since the v4 though, kind of a resend of the
> PHY patches from the "A3700 USB S2RAM support" series.
>
> Changes since v3:
> =================
> * Bindings: as suggested by Gregory and Rob, used the "-misc" suffix
> instead of "-miscellaneous" and prefixed the compatible with
> "armada-3700" to follow what has been used for the other IPs of the
> same SoC (and added Rob's ack).
>
> Changes since v2:
> =================
> * Typos
> * UTMI PHY bindings:
> > New name for the USB2 host/PHY syscons (+ changes in the DT).
> > Clearly state that the PHYs are different between OTG and
> host-only controllers.
> * UTMI PHY driver:
> > Use GENMASK macro.
> > Removed useless checks on driver data retrieval.
> > Dropped the empty ->remove() hook.
> > Updated the licence macro to match the SPDX tag.
> > Used the of_device_get_match_data() helper.
> > Removed the use of a local variable in the ->probe() for the
> driver's operations.
> > Fixed the driver co-author: Igal, not Evan.
>
> Changes since v1:
> =================
> * Add UTMI PHY driver/bindings/DT changes to bring S2RAM support to
> both USB ports available on the A3700 SoC.
> * Rebased on top of v5.0-rc1.
>
>
> Miquel Raynal (6):
> phy: add A3700 UTMI PHY driver
> dt-bindings: phy: mvebu-utmi: add UTMI PHY bindings
> MAINTAINERS: phy: fill Armada 3700 PHY drivers entry
> ARM64: dts: marvell: armada-37xx: fix USB2 memory region
> ARM64: dts: marvell: armada-37xx: declare USB2 UTMI PHYs
> ARM64: dts: marvell: armada-37xx: link USB hosts with their PHYs
>
> .../bindings/phy/phy-mvebu-utmi.txt | 38 +++
> MAINTAINERS | 4 +-
> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 34 ++-
> drivers/phy/marvell/Kconfig | 9 +
> drivers/phy/marvell/Makefile | 1 +
> drivers/phy/marvell/phy-mvebu-a3700-utmi.c | 278 ++++++++++++++++++
> 6 files changed, 362 insertions(+), 2 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/phy/phy-mvebu-utmi.txt
> create mode 100644 drivers/phy/marvell/phy-mvebu-a3700-utmi.c
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v5 6/6] ARM64: dts: marvell: armada-37xx: link USB hosts with their PHYs
2019-01-29 9:36 ` Miquel Raynal
@ 2019-02-06 14:30 ` Gregory CLEMENT
-1 siblings, 0 replies; 19+ messages in thread
From: Gregory CLEMENT @ 2019-02-06 14:30 UTC (permalink / raw)
To: Kishon Vijay Abraham I, Rob Herring, Mark Rutland, Jason Cooper,
Andrew Lunn, Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Hi Miquel,
On mar., janv. 29 2019, Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> Reference the PHY nodes from the USB controller nodes.
>
> The USB3 host controller is wired to:
> * the first PHY of the COMPHY IP
> * the OTG-capable UTMI PHY
>
> The USB2 host controller is wired to:
> * the host-only UTMI PHY
>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Applied to mvebu/dt64
Thanks,
Gregory
> ---
> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> index d2d8ef00c592..c0b1c9146525 100644
> --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> @@ -347,6 +347,8 @@
> marvell,usb-misc-reg = <&usb32_syscon>;
> interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&sb_periph_clk 12>;
> + phys = <&comphy0 0>, <&usb2_utmi_otg_phy>;
> + phy-names = "usb3-phy", "usb2-utmi-otg-phy";
> status = "disabled";
> };
>
> @@ -368,6 +370,8 @@
> reg = <0x5e000 0x1000>;
> marvell,usb-misc-reg = <&usb2_syscon>;
> interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
> + phys = <&usb2_utmi_host_phy>;
> + phy-names = "usb2-utmi-host-phy";
> status = "disabled";
> };
>
> --
> 2.19.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
Gregory Clement, Bootlin
Embedded Linux and Kernel engineering
http://bootlin.com
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v5 6/6] ARM64: dts: marvell: armada-37xx: link USB hosts with their PHYs
@ 2019-02-06 14:30 ` Gregory CLEMENT
0 siblings, 0 replies; 19+ messages in thread
From: Gregory CLEMENT @ 2019-02-06 14:30 UTC (permalink / raw)
To: Miquel Raynal, Kishon Vijay Abraham I, Rob Herring, Mark Rutland,
Jason Cooper, Andrew Lunn, Sebastian Hesselbarth
Cc: devicetree, Antoine Tenart, Maxime Chevallier, Nadav Haklai,
Thomas Petazzoni, Miquel Raynal, linux-arm-kernel
Hi Miquel,
On mar., janv. 29 2019, Miquel Raynal <miquel.raynal@bootlin.com> wrote:
> Reference the PHY nodes from the USB controller nodes.
>
> The USB3 host controller is wired to:
> * the first PHY of the COMPHY IP
> * the OTG-capable UTMI PHY
>
> The USB2 host controller is wired to:
> * the host-only UTMI PHY
>
> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Applied to mvebu/dt64
Thanks,
Gregory
> ---
> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> index d2d8ef00c592..c0b1c9146525 100644
> --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> @@ -347,6 +347,8 @@
> marvell,usb-misc-reg = <&usb32_syscon>;
> interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&sb_periph_clk 12>;
> + phys = <&comphy0 0>, <&usb2_utmi_otg_phy>;
> + phy-names = "usb3-phy", "usb2-utmi-otg-phy";
> status = "disabled";
> };
>
> @@ -368,6 +370,8 @@
> reg = <0x5e000 0x1000>;
> marvell,usb-misc-reg = <&usb2_syscon>;
> interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
> + phys = <&usb2_utmi_host_phy>;
> + phy-names = "usb2-utmi-host-phy";
> status = "disabled";
> };
>
> --
> 2.19.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
Gregory Clement, Bootlin
Embedded Linux and Kernel engineering
http://bootlin.com
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2019-02-06 14:30 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-29 9:36 [PATCH v5 0/6] A3700 USB UTMI PHY support Miquel Raynal
2019-01-29 9:36 ` [PATCH v5 1/6] phy: add A3700 UTMI PHY driver Miquel Raynal
2019-01-29 9:36 ` [PATCH v5 2/6] dt-bindings: phy: mvebu-utmi: add UTMI PHY bindings Miquel Raynal
2019-01-29 9:36 ` Miquel Raynal
2019-01-29 9:36 ` [PATCH v5 3/6] MAINTAINERS: phy: fill Armada 3700 PHY drivers entry Miquel Raynal
2019-01-29 9:36 ` Miquel Raynal
2019-01-29 9:36 ` [PATCH v5 4/6] ARM64: dts: marvell: armada-37xx: fix USB2 memory region Miquel Raynal
2019-01-29 9:36 ` Miquel Raynal
2019-02-06 11:09 ` Gregory CLEMENT
2019-02-06 11:09 ` Gregory CLEMENT
2019-01-29 9:36 ` [PATCH v5 5/6] ARM64: dts: marvell: armada-37xx: declare USB2 UTMI PHYs Miquel Raynal
2019-01-29 9:36 ` Miquel Raynal
2019-02-06 11:10 ` Gregory CLEMENT
2019-02-06 11:10 ` Gregory CLEMENT
2019-01-29 9:36 ` [PATCH v5 6/6] ARM64: dts: marvell: armada-37xx: link USB hosts with their PHYs Miquel Raynal
2019-01-29 9:36 ` Miquel Raynal
2019-02-06 14:30 ` Gregory CLEMENT
2019-02-06 14:30 ` Gregory CLEMENT
2019-02-06 11:34 ` [PATCH v5 0/6] A3700 USB UTMI PHY support Kishon Vijay Abraham I
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.