* [PATCH 00/10] meson: enable USB Gadget support fot GXL/GXM SoCs
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot
Thit patchset adds support for OTG Gadget mode on the GXL/GXM SoCs.
It adds a new API generic_phy_get_by_node() to get the PHY by it's node.
It enabled Gadget and USB Mass Storage for libretech-cc, libretech-ac,
khadas-vim, khadas-vim2, libretech-s905d-pc and libretech-s912-pc boards.
Neil Armstrong (10):
generic-phy: add generic_phy_get_by_node()
phy: meson-gxl-usb: add set_mode call to force switch to peripheral
mode
arm: meson-gx: add board_usb_init()/cleanup() for USB gadget
arm: dts: meson-gxl: Add USB Gadget nodes for U-Boot
configs: libretech-cc: Enable USB gadget with Mass Storage function
configs: libretech-ac: Enable USB gadget with Mass Storage function
configs: khadas-vim2: Enable USB gadget with Mass Storage function
configs: khadas-vim: Enable USB gadget with Mass Storage function
configs: libretech-s905d-pc: Enable USB gadget with Mass Storage
function
configs: libretech-s912-pc: Enable USB gadget with Mass Storage
function
.../meson-gxl-s905x-khadas-vim-u-boot.dtsi | 2 +-
.../meson-gxl-s905x-libretech-cc-u-boot.dtsi | 6 +-
arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi | 2 +-
arch/arm/dts/meson-gxl-u-boot.dtsi | 23 ++++
arch/arm/include/asm/arch-meson/usb-gx.h | 16 +++
arch/arm/mach-meson/board-gx.c | 118 ++++++++++++++++++
configs/khadas-vim2_defconfig | 7 ++
configs/khadas-vim_defconfig | 7 ++
configs/libretech-ac_defconfig | 7 ++
configs/libretech-cc_defconfig | 7 ++
configs/libretech-s905d-pc_defconfig | 7 ++
configs/libretech-s912-pc_defconfig | 7 ++
drivers/phy/meson-gxl-usb2.c | 30 ++++-
drivers/phy/meson-gxl-usb3.c | 44 +++++--
drivers/phy/phy-uclass.c | 17 ++-
include/generic-phy.h | 27 ++++
16 files changed, 301 insertions(+), 26 deletions(-)
create mode 100644 arch/arm/dts/meson-gxl-u-boot.dtsi
create mode 100644 arch/arm/include/asm/arch-meson/usb-gx.h
--
2.22.0
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 00/10] meson: enable USB Gadget support fot GXL/GXM SoCs
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic, Neil Armstrong
Thit patchset adds support for OTG Gadget mode on the GXL/GXM SoCs.
It adds a new API generic_phy_get_by_node() to get the PHY by it's node.
It enabled Gadget and USB Mass Storage for libretech-cc, libretech-ac,
khadas-vim, khadas-vim2, libretech-s905d-pc and libretech-s912-pc boards.
Neil Armstrong (10):
generic-phy: add generic_phy_get_by_node()
phy: meson-gxl-usb: add set_mode call to force switch to peripheral
mode
arm: meson-gx: add board_usb_init()/cleanup() for USB gadget
arm: dts: meson-gxl: Add USB Gadget nodes for U-Boot
configs: libretech-cc: Enable USB gadget with Mass Storage function
configs: libretech-ac: Enable USB gadget with Mass Storage function
configs: khadas-vim2: Enable USB gadget with Mass Storage function
configs: khadas-vim: Enable USB gadget with Mass Storage function
configs: libretech-s905d-pc: Enable USB gadget with Mass Storage
function
configs: libretech-s912-pc: Enable USB gadget with Mass Storage
function
.../meson-gxl-s905x-khadas-vim-u-boot.dtsi | 2 +-
.../meson-gxl-s905x-libretech-cc-u-boot.dtsi | 6 +-
arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi | 2 +-
arch/arm/dts/meson-gxl-u-boot.dtsi | 23 ++++
arch/arm/include/asm/arch-meson/usb-gx.h | 16 +++
arch/arm/mach-meson/board-gx.c | 118 ++++++++++++++++++
configs/khadas-vim2_defconfig | 7 ++
configs/khadas-vim_defconfig | 7 ++
configs/libretech-ac_defconfig | 7 ++
configs/libretech-cc_defconfig | 7 ++
configs/libretech-s905d-pc_defconfig | 7 ++
configs/libretech-s912-pc_defconfig | 7 ++
drivers/phy/meson-gxl-usb2.c | 30 ++++-
drivers/phy/meson-gxl-usb3.c | 44 +++++--
drivers/phy/phy-uclass.c | 17 ++-
include/generic-phy.h | 27 ++++
16 files changed, 301 insertions(+), 26 deletions(-)
create mode 100644 arch/arm/dts/meson-gxl-u-boot.dtsi
create mode 100644 arch/arm/include/asm/arch-meson/usb-gx.h
--
2.22.0
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 01/10] generic-phy: add generic_phy_get_by_node()
2020-03-30 9:27 ` Neil Armstrong
@ 2020-03-30 9:27 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot
Add generic_phy_get_by_node() to get a PHY phandle from a node instead
of a udevice.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
drivers/phy/phy-uclass.c | 17 ++++++++++++-----
include/generic-phy.h | 27 +++++++++++++++++++++++++++
2 files changed, 39 insertions(+), 5 deletions(-)
diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c
index e201a90c8c..de2c3d2b8e 100644
--- a/drivers/phy/phy-uclass.c
+++ b/drivers/phy/phy-uclass.c
@@ -31,20 +31,20 @@ static int generic_phy_xlate_offs_flags(struct phy *phy,
return 0;
}
-int generic_phy_get_by_index(struct udevice *dev, int index,
- struct phy *phy)
+int generic_phy_get_by_node(ofnode node, int index, struct phy *phy)
{
struct ofnode_phandle_args args;
struct phy_ops *ops;
struct udevice *phydev;
int i, ret;
- debug("%s(dev=%p, index=%d, phy=%p)\n", __func__, dev, index, phy);
+ debug("%s(node=%s, index=%d, phy=%p)\n",
+ __func__, ofnode_get_name(node), index, phy);
assert(phy);
phy->dev = NULL;
- ret = dev_read_phandle_with_args(dev, "phys", "#phy-cells", 0, index,
- &args);
+ ret = ofnode_parse_phandle_with_args(node, "phys", "#phy-cells", 0,
+ index, &args);
if (ret) {
debug("%s: dev_read_phandle_with_args failed: err=%d\n",
__func__, ret);
@@ -88,6 +88,12 @@ int generic_phy_get_by_index(struct udevice *dev, int index,
err:
return ret;
+}
+
+int generic_phy_get_by_index(struct udevice *dev, int index,
+ struct phy *phy)
+{
+ return generic_phy_get_by_node(dev_ofnode(dev), index, phy);
}
int generic_phy_get_by_name(struct udevice *dev, const char *phy_name,
diff --git a/include/generic-phy.h b/include/generic-phy.h
index 95caf58341..5873ffb2e0 100644
--- a/include/generic-phy.h
+++ b/include/generic-phy.h
@@ -193,6 +193,33 @@ int generic_phy_power_off(struct phy *phy);
int generic_phy_get_by_index(struct udevice *user, int index,
struct phy *phy);
+/**
+ * generic_phy_get_by_node() - Get a PHY device by integer index on ofnode
+ *
+ * @node: the device node
+ * @index: The index in the list of available PHYs
+ * @phy: A pointer to the PHY port
+ *
+ * This looks up a PHY device for a client device based on its ofnode and on
+ * its position in the list of the possible PHYs.
+ *
+ * example:
+ * usb1: usb_otg_ss at xxx {
+ * compatible = "xxx";
+ * reg = <xxx>;
+ * .
+ * .
+ * phys = <&usb2_phy>, <&usb3_phy>;
+ * .
+ * .
+ * };
+ * the USB2 phy can be accessed by passing index '0' and the USB3 phy can
+ * be accessed by passing index '1'
+ *
+ * @return 0 if OK, or a negative error code
+ */
+int generic_phy_get_by_node(ofnode node, int index, struct phy *phy);
+
/**
* generic_phy_get_by_name() - Get a PHY device by its name.
*
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 01/10] generic-phy: add generic_phy_get_by_node()
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic, Neil Armstrong
Add generic_phy_get_by_node() to get a PHY phandle from a node instead
of a udevice.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
drivers/phy/phy-uclass.c | 17 ++++++++++++-----
include/generic-phy.h | 27 +++++++++++++++++++++++++++
2 files changed, 39 insertions(+), 5 deletions(-)
diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c
index e201a90c8c..de2c3d2b8e 100644
--- a/drivers/phy/phy-uclass.c
+++ b/drivers/phy/phy-uclass.c
@@ -31,20 +31,20 @@ static int generic_phy_xlate_offs_flags(struct phy *phy,
return 0;
}
-int generic_phy_get_by_index(struct udevice *dev, int index,
- struct phy *phy)
+int generic_phy_get_by_node(ofnode node, int index, struct phy *phy)
{
struct ofnode_phandle_args args;
struct phy_ops *ops;
struct udevice *phydev;
int i, ret;
- debug("%s(dev=%p, index=%d, phy=%p)\n", __func__, dev, index, phy);
+ debug("%s(node=%s, index=%d, phy=%p)\n",
+ __func__, ofnode_get_name(node), index, phy);
assert(phy);
phy->dev = NULL;
- ret = dev_read_phandle_with_args(dev, "phys", "#phy-cells", 0, index,
- &args);
+ ret = ofnode_parse_phandle_with_args(node, "phys", "#phy-cells", 0,
+ index, &args);
if (ret) {
debug("%s: dev_read_phandle_with_args failed: err=%d\n",
__func__, ret);
@@ -88,6 +88,12 @@ int generic_phy_get_by_index(struct udevice *dev, int index,
err:
return ret;
+}
+
+int generic_phy_get_by_index(struct udevice *dev, int index,
+ struct phy *phy)
+{
+ return generic_phy_get_by_node(dev_ofnode(dev), index, phy);
}
int generic_phy_get_by_name(struct udevice *dev, const char *phy_name,
diff --git a/include/generic-phy.h b/include/generic-phy.h
index 95caf58341..5873ffb2e0 100644
--- a/include/generic-phy.h
+++ b/include/generic-phy.h
@@ -193,6 +193,33 @@ int generic_phy_power_off(struct phy *phy);
int generic_phy_get_by_index(struct udevice *user, int index,
struct phy *phy);
+/**
+ * generic_phy_get_by_node() - Get a PHY device by integer index on ofnode
+ *
+ * @node: the device node
+ * @index: The index in the list of available PHYs
+ * @phy: A pointer to the PHY port
+ *
+ * This looks up a PHY device for a client device based on its ofnode and on
+ * its position in the list of the possible PHYs.
+ *
+ * example:
+ * usb1: usb_otg_ss@xxx {
+ * compatible = "xxx";
+ * reg = <xxx>;
+ * .
+ * .
+ * phys = <&usb2_phy>, <&usb3_phy>;
+ * .
+ * .
+ * };
+ * the USB2 phy can be accessed by passing index '0' and the USB3 phy can
+ * be accessed by passing index '1'
+ *
+ * @return 0 if OK, or a negative error code
+ */
+int generic_phy_get_by_node(ofnode node, int index, struct phy *phy);
+
/**
* generic_phy_get_by_name() - Get a PHY device by its name.
*
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 02/10] phy: meson-gxl-usb: add set_mode call to force switch to peripheral mode
2020-03-30 9:27 ` Neil Armstrong
@ 2020-03-30 9:27 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot
Add set_mode function in the Amlogic GXL PHYs that will be called by
the arch code to switch PHYs from/to gadget mode.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
arch/arm/include/asm/arch-meson/usb-gx.h | 16 +++++++++
drivers/phy/meson-gxl-usb2.c | 30 ++++++++++++----
drivers/phy/meson-gxl-usb3.c | 44 +++++++++++++++++-------
3 files changed, 72 insertions(+), 18 deletions(-)
create mode 100644 arch/arm/include/asm/arch-meson/usb-gx.h
diff --git a/arch/arm/include/asm/arch-meson/usb-gx.h b/arch/arm/include/asm/arch-meson/usb-gx.h
new file mode 100644
index 0000000000..aeb8e0c673
--- /dev/null
+++ b/arch/arm/include/asm/arch-meson/usb-gx.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2019 BayLibre SAS
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ */
+#ifndef _ARCH_MESON_USB_GX_H_
+#define _ARCH_MESON_USB_GX_H_
+
+#include <generic-phy.h>
+#include <linux/usb/otg.h>
+
+/* TOFIX add set_mode to struct phy_ops */
+void phy_meson_gxl_usb2_set_mode(struct phy *phy, enum usb_dr_mode mode);
+void phy_meson_gxl_usb3_set_mode(struct phy *phy, enum usb_dr_mode mode);
+
+#endif
diff --git a/drivers/phy/meson-gxl-usb2.c b/drivers/phy/meson-gxl-usb2.c
index c98d12b627..b4f4c3c76b 100644
--- a/drivers/phy/meson-gxl-usb2.c
+++ b/drivers/phy/meson-gxl-usb2.c
@@ -17,6 +17,9 @@
#include <regmap.h>
#include <power/regulator.h>
#include <clk.h>
+#include <linux/usb/otg.h>
+
+#include <asm/arch/usb-gx.h>
#include <linux/bitops.h>
#include <linux/compat.h>
@@ -121,15 +124,30 @@ static void phy_meson_gxl_usb2_reset(struct phy_meson_gxl_usb2_priv *priv)
udelay(RESET_COMPLETE_TIME);
}
-static void
-phy_meson_gxl_usb2_set_host_mode(struct phy_meson_gxl_usb2_priv *priv)
+void phy_meson_gxl_usb2_set_mode(struct phy *phy, enum usb_dr_mode mode)
{
+ struct udevice *dev = phy->dev;
+ struct phy_meson_gxl_usb2_priv *priv = dev_get_priv(dev);
uint val;
regmap_read(priv->regmap, U2P_R0, &val);
- val |= U2P_R0_DM_PULLDOWN;
- val |= U2P_R0_DP_PULLDOWN;
- val &= ~U2P_R0_ID_PULLUP;
+
+ switch (mode) {
+ case USB_DR_MODE_UNKNOWN:
+ case USB_DR_MODE_HOST:
+ case USB_DR_MODE_OTG:
+ val |= U2P_R0_DM_PULLDOWN;
+ val |= U2P_R0_DP_PULLDOWN;
+ val &= ~U2P_R0_ID_PULLUP;
+ break;
+
+ case USB_DR_MODE_PERIPHERAL:
+ val &= ~U2P_R0_DM_PULLDOWN;
+ val &= ~U2P_R0_DP_PULLDOWN;
+ val |= U2P_R0_ID_PULLUP;
+ break;
+ }
+
regmap_write(priv->regmap, U2P_R0, val);
phy_meson_gxl_usb2_reset(priv);
@@ -146,7 +164,7 @@ static int phy_meson_gxl_usb2_power_on(struct phy *phy)
val &= ~U2P_R0_POWER_ON_RESET;
regmap_write(priv->regmap, U2P_R0, val);
- phy_meson_gxl_usb2_set_host_mode(priv);
+ phy_meson_gxl_usb2_set_mode(phy, USB_DR_MODE_HOST);
#if CONFIG_IS_ENABLED(DM_REGULATOR)
if (priv->phy_supply) {
diff --git a/drivers/phy/meson-gxl-usb3.c b/drivers/phy/meson-gxl-usb3.c
index c2a8593b39..227efa7a17 100644
--- a/drivers/phy/meson-gxl-usb3.c
+++ b/drivers/phy/meson-gxl-usb3.c
@@ -16,6 +16,9 @@
#include <generic-phy.h>
#include <regmap.h>
#include <clk.h>
+#include <linux/usb/otg.h>
+
+#include <asm/arch/usb-gx.h>
#include <linux/bitops.h>
#include <linux/compat.h>
@@ -93,20 +96,35 @@ struct phy_meson_gxl_usb3_priv {
#endif
};
-static int
-phy_meson_gxl_usb3_set_host_mode(struct phy_meson_gxl_usb3_priv *priv)
+void phy_meson_gxl_usb3_set_mode(struct phy *phy, enum usb_dr_mode mode)
{
+ struct udevice *dev = phy->dev;
+ struct phy_meson_gxl_usb3_priv *priv = dev_get_priv(dev);
uint val;
- regmap_read(priv->regmap, USB_R0, &val);
- val &= ~USB_R0_U2D_ACT;
- regmap_write(priv->regmap, USB_R0, val);
-
- regmap_read(priv->regmap, USB_R4, &val);
- val &= ~USB_R4_P21_SLEEP_M0;
- regmap_write(priv->regmap, USB_R4, val);
-
- return 0;
+ switch (mode) {
+ case USB_DR_MODE_UNKNOWN:
+ case USB_DR_MODE_HOST:
+ case USB_DR_MODE_OTG:
+ regmap_read(priv->regmap, USB_R0, &val);
+ val &= ~USB_R0_U2D_ACT;
+ regmap_write(priv->regmap, USB_R0, val);
+
+ regmap_read(priv->regmap, USB_R4, &val);
+ val &= ~USB_R4_P21_SLEEP_M0;
+ regmap_write(priv->regmap, USB_R4, val);
+ break;
+
+ case USB_DR_MODE_PERIPHERAL:
+ regmap_read(priv->regmap, USB_R0, &val);
+ val |= USB_R0_U2D_ACT;
+ regmap_write(priv->regmap, USB_R0, val);
+
+ regmap_read(priv->regmap, USB_R4, &val);
+ val |= USB_R4_P21_SLEEP_M0;
+ regmap_write(priv->regmap, USB_R4, val);
+ break;
+ }
}
static int phy_meson_gxl_usb3_power_on(struct phy *phy)
@@ -122,7 +140,9 @@ static int phy_meson_gxl_usb3_power_on(struct phy *phy)
val |= FIELD_PREP(USB_R5_ID_DIG_TH_MASK, 0xff);
regmap_write(priv->regmap, USB_R5, val);
- return phy_meson_gxl_usb3_set_host_mode(priv);
+ phy_meson_gxl_usb3_set_mode(phy, USB_DR_MODE_HOST);
+
+ return 0;
}
static int phy_meson_gxl_usb3_power_off(struct phy *phy)
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 02/10] phy: meson-gxl-usb: add set_mode call to force switch to peripheral mode
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic, Neil Armstrong
Add set_mode function in the Amlogic GXL PHYs that will be called by
the arch code to switch PHYs from/to gadget mode.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
arch/arm/include/asm/arch-meson/usb-gx.h | 16 +++++++++
drivers/phy/meson-gxl-usb2.c | 30 ++++++++++++----
drivers/phy/meson-gxl-usb3.c | 44 +++++++++++++++++-------
3 files changed, 72 insertions(+), 18 deletions(-)
create mode 100644 arch/arm/include/asm/arch-meson/usb-gx.h
diff --git a/arch/arm/include/asm/arch-meson/usb-gx.h b/arch/arm/include/asm/arch-meson/usb-gx.h
new file mode 100644
index 0000000000..aeb8e0c673
--- /dev/null
+++ b/arch/arm/include/asm/arch-meson/usb-gx.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2019 BayLibre SAS
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ */
+#ifndef _ARCH_MESON_USB_GX_H_
+#define _ARCH_MESON_USB_GX_H_
+
+#include <generic-phy.h>
+#include <linux/usb/otg.h>
+
+/* TOFIX add set_mode to struct phy_ops */
+void phy_meson_gxl_usb2_set_mode(struct phy *phy, enum usb_dr_mode mode);
+void phy_meson_gxl_usb3_set_mode(struct phy *phy, enum usb_dr_mode mode);
+
+#endif
diff --git a/drivers/phy/meson-gxl-usb2.c b/drivers/phy/meson-gxl-usb2.c
index c98d12b627..b4f4c3c76b 100644
--- a/drivers/phy/meson-gxl-usb2.c
+++ b/drivers/phy/meson-gxl-usb2.c
@@ -17,6 +17,9 @@
#include <regmap.h>
#include <power/regulator.h>
#include <clk.h>
+#include <linux/usb/otg.h>
+
+#include <asm/arch/usb-gx.h>
#include <linux/bitops.h>
#include <linux/compat.h>
@@ -121,15 +124,30 @@ static void phy_meson_gxl_usb2_reset(struct phy_meson_gxl_usb2_priv *priv)
udelay(RESET_COMPLETE_TIME);
}
-static void
-phy_meson_gxl_usb2_set_host_mode(struct phy_meson_gxl_usb2_priv *priv)
+void phy_meson_gxl_usb2_set_mode(struct phy *phy, enum usb_dr_mode mode)
{
+ struct udevice *dev = phy->dev;
+ struct phy_meson_gxl_usb2_priv *priv = dev_get_priv(dev);
uint val;
regmap_read(priv->regmap, U2P_R0, &val);
- val |= U2P_R0_DM_PULLDOWN;
- val |= U2P_R0_DP_PULLDOWN;
- val &= ~U2P_R0_ID_PULLUP;
+
+ switch (mode) {
+ case USB_DR_MODE_UNKNOWN:
+ case USB_DR_MODE_HOST:
+ case USB_DR_MODE_OTG:
+ val |= U2P_R0_DM_PULLDOWN;
+ val |= U2P_R0_DP_PULLDOWN;
+ val &= ~U2P_R0_ID_PULLUP;
+ break;
+
+ case USB_DR_MODE_PERIPHERAL:
+ val &= ~U2P_R0_DM_PULLDOWN;
+ val &= ~U2P_R0_DP_PULLDOWN;
+ val |= U2P_R0_ID_PULLUP;
+ break;
+ }
+
regmap_write(priv->regmap, U2P_R0, val);
phy_meson_gxl_usb2_reset(priv);
@@ -146,7 +164,7 @@ static int phy_meson_gxl_usb2_power_on(struct phy *phy)
val &= ~U2P_R0_POWER_ON_RESET;
regmap_write(priv->regmap, U2P_R0, val);
- phy_meson_gxl_usb2_set_host_mode(priv);
+ phy_meson_gxl_usb2_set_mode(phy, USB_DR_MODE_HOST);
#if CONFIG_IS_ENABLED(DM_REGULATOR)
if (priv->phy_supply) {
diff --git a/drivers/phy/meson-gxl-usb3.c b/drivers/phy/meson-gxl-usb3.c
index c2a8593b39..227efa7a17 100644
--- a/drivers/phy/meson-gxl-usb3.c
+++ b/drivers/phy/meson-gxl-usb3.c
@@ -16,6 +16,9 @@
#include <generic-phy.h>
#include <regmap.h>
#include <clk.h>
+#include <linux/usb/otg.h>
+
+#include <asm/arch/usb-gx.h>
#include <linux/bitops.h>
#include <linux/compat.h>
@@ -93,20 +96,35 @@ struct phy_meson_gxl_usb3_priv {
#endif
};
-static int
-phy_meson_gxl_usb3_set_host_mode(struct phy_meson_gxl_usb3_priv *priv)
+void phy_meson_gxl_usb3_set_mode(struct phy *phy, enum usb_dr_mode mode)
{
+ struct udevice *dev = phy->dev;
+ struct phy_meson_gxl_usb3_priv *priv = dev_get_priv(dev);
uint val;
- regmap_read(priv->regmap, USB_R0, &val);
- val &= ~USB_R0_U2D_ACT;
- regmap_write(priv->regmap, USB_R0, val);
-
- regmap_read(priv->regmap, USB_R4, &val);
- val &= ~USB_R4_P21_SLEEP_M0;
- regmap_write(priv->regmap, USB_R4, val);
-
- return 0;
+ switch (mode) {
+ case USB_DR_MODE_UNKNOWN:
+ case USB_DR_MODE_HOST:
+ case USB_DR_MODE_OTG:
+ regmap_read(priv->regmap, USB_R0, &val);
+ val &= ~USB_R0_U2D_ACT;
+ regmap_write(priv->regmap, USB_R0, val);
+
+ regmap_read(priv->regmap, USB_R4, &val);
+ val &= ~USB_R4_P21_SLEEP_M0;
+ regmap_write(priv->regmap, USB_R4, val);
+ break;
+
+ case USB_DR_MODE_PERIPHERAL:
+ regmap_read(priv->regmap, USB_R0, &val);
+ val |= USB_R0_U2D_ACT;
+ regmap_write(priv->regmap, USB_R0, val);
+
+ regmap_read(priv->regmap, USB_R4, &val);
+ val |= USB_R4_P21_SLEEP_M0;
+ regmap_write(priv->regmap, USB_R4, val);
+ break;
+ }
}
static int phy_meson_gxl_usb3_power_on(struct phy *phy)
@@ -122,7 +140,9 @@ static int phy_meson_gxl_usb3_power_on(struct phy *phy)
val |= FIELD_PREP(USB_R5_ID_DIG_TH_MASK, 0xff);
regmap_write(priv->regmap, USB_R5, val);
- return phy_meson_gxl_usb3_set_host_mode(priv);
+ phy_meson_gxl_usb3_set_mode(phy, USB_DR_MODE_HOST);
+
+ return 0;
}
static int phy_meson_gxl_usb3_power_off(struct phy *phy)
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 03/10] arm: meson-gx: add board_usb_init()/cleanup() for USB gadget
2020-03-30 9:27 ` Neil Armstrong
@ 2020-03-30 9:27 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot
Add arch code to initialize USB Gadget mode using the DWC2 controller,
and using the previously added set_mode() phy functions.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
arch/arm/mach-meson/board-gx.c | 118 +++++++++++++++++++++++++++++++++
1 file changed, 118 insertions(+)
diff --git a/arch/arm/mach-meson/board-gx.c b/arch/arm/mach-meson/board-gx.c
index 191fd49005..1a7e102c38 100644
--- a/arch/arm/mach-meson/board-gx.c
+++ b/arch/arm/mach-meson/board-gx.c
@@ -14,6 +14,11 @@
#include <asm/io.h>
#include <asm/armv8/mmu.h>
#include <linux/sizes.h>
+#include <usb.h>
+#include <linux/usb/otg.h>
+#include <asm/arch/usb-gx.h>
+#include <usb/dwc2_udc.h>
+#include <clk.h>
#include <phy.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -149,3 +154,116 @@ void meson_eth_init(phy_interface_t mode, unsigned int flags)
/* Enable power gate */
clrbits_le32(GX_MEM_PD_REG_0, GX_MEM_PD_REG_0_ETH_MASK);
}
+
+#if CONFIG_IS_ENABLED(USB_XHCI_DWC3_OF_SIMPLE) && \
+ CONFIG_IS_ENABLED(USB_GADGET_DWC2_OTG)
+static struct dwc2_plat_otg_data meson_gx_dwc2_data;
+static struct phy usb_phys[2];
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+ struct ofnode_phandle_args args;
+ struct udevice *clk_dev;
+ ofnode dwc2_node;
+ struct clk clk;
+ int ret, i;
+ u32 val;
+
+ /* find the dwc2 node */
+ dwc2_node = ofnode_by_compatible(ofnode_null(), "snps,dwc2");
+ if (!ofnode_valid(dwc2_node)) {
+ debug("Not found dwc2 node\n");
+ return -ENODEV;
+ }
+
+ if (!ofnode_is_available(dwc2_node)) {
+ debug("dwc2 is disabled in the device tree\n");
+ return -ENODEV;
+ }
+
+ /* get the PHYs */
+ for (i = 0; i < 2; i++) {
+ ret = generic_phy_get_by_node(dwc2_node, i, &usb_phys[i]);
+ if (ret && ret != -ENOENT) {
+ pr_err("Failed to get USB PHY%d for %s\n",
+ i, ofnode_get_name(dwc2_node));
+ return ret;
+ }
+ }
+
+ for (i = 0; i < 2; i++) {
+ ret = generic_phy_init(&usb_phys[i]);
+ if (ret) {
+ pr_err("Can't init USB PHY%d for %s\n",
+ i, ofnode_get_name(dwc2_node));
+ return ret;
+ }
+ }
+
+ for (i = 0; i < 2; i++) {
+ ret = generic_phy_power_on(&usb_phys[i]);
+ if (ret) {
+ pr_err("Can't power USB PHY%d for %s\n",
+ i, ofnode_get_name(dwc2_node));
+ return ret;
+ }
+ }
+
+ phy_meson_gxl_usb3_set_mode(&usb_phys[0], USB_DR_MODE_PERIPHERAL);
+ phy_meson_gxl_usb2_set_mode(&usb_phys[1], USB_DR_MODE_PERIPHERAL);
+
+ meson_gx_dwc2_data.regs_otg = ofnode_get_addr(dwc2_node);
+ if (meson_gx_dwc2_data.regs_otg == FDT_ADDR_T_NONE) {
+ debug("usbotg: can't get base address\n");
+ return -ENODATA;
+ }
+
+ /* Enable clock */
+ ret = ofnode_parse_phandle_with_args(dwc2_node, "clocks",
+ "#clock-cells", 0, 0, &args);
+ if (ret) {
+ debug("usbotg has no clocks defined in the device tree\n");
+ return ret;
+ }
+
+ ret = uclass_get_device_by_ofnode(UCLASS_CLK, args.node, &clk_dev);
+ if (ret)
+ return ret;
+
+ if (args.args_count != 1) {
+ debug("Can't find clock ID in the device tree\n");
+ return -ENODATA;
+ }
+
+ clk.dev = clk_dev;
+ clk.id = args.args[0];
+
+ ret = clk_enable(&clk);
+ if (ret) {
+ debug("Failed to enable usbotg clock\n");
+ return ret;
+ }
+
+ ofnode_read_u32(dwc2_node, "g-rx-fifo-size", &val);
+ meson_gx_dwc2_data.rx_fifo_sz = val;
+ ofnode_read_u32(dwc2_node, "g-np-tx-fifo-size", &val);
+ meson_gx_dwc2_data.np_tx_fifo_sz = val;
+ ofnode_read_u32(dwc2_node, "g-tx-fifo-size", &val);
+ meson_gx_dwc2_data.tx_fifo_sz = val;
+
+ return dwc2_udc_probe(&meson_gx_dwc2_data);
+}
+
+int board_usb_cleanup(int index, enum usb_init_type init)
+{
+ int i;
+
+ phy_meson_gxl_usb3_set_mode(&usb_phys[0], USB_DR_MODE_HOST);
+ phy_meson_gxl_usb3_set_mode(&usb_phys[1], USB_DR_MODE_HOST);
+
+ for (i = 0; i < 2; i++)
+ usb_phys[i].dev = NULL;
+
+ return 0;
+}
+#endif
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 03/10] arm: meson-gx: add board_usb_init()/cleanup() for USB gadget
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic, Neil Armstrong
Add arch code to initialize USB Gadget mode using the DWC2 controller,
and using the previously added set_mode() phy functions.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
arch/arm/mach-meson/board-gx.c | 118 +++++++++++++++++++++++++++++++++
1 file changed, 118 insertions(+)
diff --git a/arch/arm/mach-meson/board-gx.c b/arch/arm/mach-meson/board-gx.c
index 191fd49005..1a7e102c38 100644
--- a/arch/arm/mach-meson/board-gx.c
+++ b/arch/arm/mach-meson/board-gx.c
@@ -14,6 +14,11 @@
#include <asm/io.h>
#include <asm/armv8/mmu.h>
#include <linux/sizes.h>
+#include <usb.h>
+#include <linux/usb/otg.h>
+#include <asm/arch/usb-gx.h>
+#include <usb/dwc2_udc.h>
+#include <clk.h>
#include <phy.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -149,3 +154,116 @@ void meson_eth_init(phy_interface_t mode, unsigned int flags)
/* Enable power gate */
clrbits_le32(GX_MEM_PD_REG_0, GX_MEM_PD_REG_0_ETH_MASK);
}
+
+#if CONFIG_IS_ENABLED(USB_XHCI_DWC3_OF_SIMPLE) && \
+ CONFIG_IS_ENABLED(USB_GADGET_DWC2_OTG)
+static struct dwc2_plat_otg_data meson_gx_dwc2_data;
+static struct phy usb_phys[2];
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+ struct ofnode_phandle_args args;
+ struct udevice *clk_dev;
+ ofnode dwc2_node;
+ struct clk clk;
+ int ret, i;
+ u32 val;
+
+ /* find the dwc2 node */
+ dwc2_node = ofnode_by_compatible(ofnode_null(), "snps,dwc2");
+ if (!ofnode_valid(dwc2_node)) {
+ debug("Not found dwc2 node\n");
+ return -ENODEV;
+ }
+
+ if (!ofnode_is_available(dwc2_node)) {
+ debug("dwc2 is disabled in the device tree\n");
+ return -ENODEV;
+ }
+
+ /* get the PHYs */
+ for (i = 0; i < 2; i++) {
+ ret = generic_phy_get_by_node(dwc2_node, i, &usb_phys[i]);
+ if (ret && ret != -ENOENT) {
+ pr_err("Failed to get USB PHY%d for %s\n",
+ i, ofnode_get_name(dwc2_node));
+ return ret;
+ }
+ }
+
+ for (i = 0; i < 2; i++) {
+ ret = generic_phy_init(&usb_phys[i]);
+ if (ret) {
+ pr_err("Can't init USB PHY%d for %s\n",
+ i, ofnode_get_name(dwc2_node));
+ return ret;
+ }
+ }
+
+ for (i = 0; i < 2; i++) {
+ ret = generic_phy_power_on(&usb_phys[i]);
+ if (ret) {
+ pr_err("Can't power USB PHY%d for %s\n",
+ i, ofnode_get_name(dwc2_node));
+ return ret;
+ }
+ }
+
+ phy_meson_gxl_usb3_set_mode(&usb_phys[0], USB_DR_MODE_PERIPHERAL);
+ phy_meson_gxl_usb2_set_mode(&usb_phys[1], USB_DR_MODE_PERIPHERAL);
+
+ meson_gx_dwc2_data.regs_otg = ofnode_get_addr(dwc2_node);
+ if (meson_gx_dwc2_data.regs_otg == FDT_ADDR_T_NONE) {
+ debug("usbotg: can't get base address\n");
+ return -ENODATA;
+ }
+
+ /* Enable clock */
+ ret = ofnode_parse_phandle_with_args(dwc2_node, "clocks",
+ "#clock-cells", 0, 0, &args);
+ if (ret) {
+ debug("usbotg has no clocks defined in the device tree\n");
+ return ret;
+ }
+
+ ret = uclass_get_device_by_ofnode(UCLASS_CLK, args.node, &clk_dev);
+ if (ret)
+ return ret;
+
+ if (args.args_count != 1) {
+ debug("Can't find clock ID in the device tree\n");
+ return -ENODATA;
+ }
+
+ clk.dev = clk_dev;
+ clk.id = args.args[0];
+
+ ret = clk_enable(&clk);
+ if (ret) {
+ debug("Failed to enable usbotg clock\n");
+ return ret;
+ }
+
+ ofnode_read_u32(dwc2_node, "g-rx-fifo-size", &val);
+ meson_gx_dwc2_data.rx_fifo_sz = val;
+ ofnode_read_u32(dwc2_node, "g-np-tx-fifo-size", &val);
+ meson_gx_dwc2_data.np_tx_fifo_sz = val;
+ ofnode_read_u32(dwc2_node, "g-tx-fifo-size", &val);
+ meson_gx_dwc2_data.tx_fifo_sz = val;
+
+ return dwc2_udc_probe(&meson_gx_dwc2_data);
+}
+
+int board_usb_cleanup(int index, enum usb_init_type init)
+{
+ int i;
+
+ phy_meson_gxl_usb3_set_mode(&usb_phys[0], USB_DR_MODE_HOST);
+ phy_meson_gxl_usb3_set_mode(&usb_phys[1], USB_DR_MODE_HOST);
+
+ for (i = 0; i < 2; i++)
+ usb_phys[i].dev = NULL;
+
+ return 0;
+}
+#endif
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 04/10] arm: dts: meson-gxl: Add USB Gadget nodes for U-Boot
2020-03-30 9:27 ` Neil Armstrong
@ 2020-03-30 9:27 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot
Add the USB DWC2 node to u-boot specific dtsi files since Gadget
support is not (yet) available in upstream Linux yet.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
.../meson-gxl-s905x-khadas-vim-u-boot.dtsi | 2 +-
.../meson-gxl-s905x-libretech-cc-u-boot.dtsi | 6 ++++-
arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi | 2 +-
arch/arm/dts/meson-gxl-u-boot.dtsi | 23 +++++++++++++++++++
4 files changed, 30 insertions(+), 3 deletions(-)
create mode 100644 arch/arm/dts/meson-gxl-u-boot.dtsi
diff --git a/arch/arm/dts/meson-gxl-s905x-khadas-vim-u-boot.dtsi b/arch/arm/dts/meson-gxl-s905x-khadas-vim-u-boot.dtsi
index c35158d7e9..39270ea71c 100644
--- a/arch/arm/dts/meson-gxl-s905x-khadas-vim-u-boot.dtsi
+++ b/arch/arm/dts/meson-gxl-s905x-khadas-vim-u-boot.dtsi
@@ -4,4 +4,4 @@
* Author: Neil Armstrong <narmstrong@baylibre.com>
*/
-#include "meson-gx-u-boot.dtsi"
+#include "meson-gxl-u-boot.dtsi"
diff --git a/arch/arm/dts/meson-gxl-s905x-libretech-cc-u-boot.dtsi b/arch/arm/dts/meson-gxl-s905x-libretech-cc-u-boot.dtsi
index c35158d7e9..474a3e1604 100644
--- a/arch/arm/dts/meson-gxl-s905x-libretech-cc-u-boot.dtsi
+++ b/arch/arm/dts/meson-gxl-s905x-libretech-cc-u-boot.dtsi
@@ -4,4 +4,8 @@
* Author: Neil Armstrong <narmstrong@baylibre.com>
*/
-#include "meson-gx-u-boot.dtsi"
+#include "meson-gxl-u-boot.dtsi"
+
+&dwc2 {
+ status = "okay";
+};
diff --git a/arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi b/arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi
index c35158d7e9..39270ea71c 100644
--- a/arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi
+++ b/arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi
@@ -4,4 +4,4 @@
* Author: Neil Armstrong <narmstrong@baylibre.com>
*/
-#include "meson-gx-u-boot.dtsi"
+#include "meson-gxl-u-boot.dtsi"
diff --git a/arch/arm/dts/meson-gxl-u-boot.dtsi b/arch/arm/dts/meson-gxl-u-boot.dtsi
new file mode 100644
index 0000000000..9e88afd30e
--- /dev/null
+++ b/arch/arm/dts/meson-gxl-u-boot.dtsi
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 BayLibre, SAS.
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ */
+
+#include "meson-gx-u-boot.dtsi"
+
+&usb0 {
+ dwc2: usb at c9100000 {
+ compatible = "snps,dwc2";
+ reg = <0x0 0xc9100000 0x0 0x40000>;
+ interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
+ clock-names = "ddr";
+ phys = <&usb3_phy>, <&usb2_phy1>;
+ dr_mode = "peripheral";
+ g-rx-fifo-size = <192>;
+ g-np-tx-fifo-size = <128>;
+ g-tx-fifo-size = <128 128 16 16 16>;
+ status = "disabled";
+ };
+};
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 04/10] arm: dts: meson-gxl: Add USB Gadget nodes for U-Boot
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic, Neil Armstrong
Add the USB DWC2 node to u-boot specific dtsi files since Gadget
support is not (yet) available in upstream Linux yet.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
.../meson-gxl-s905x-khadas-vim-u-boot.dtsi | 2 +-
.../meson-gxl-s905x-libretech-cc-u-boot.dtsi | 6 ++++-
arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi | 2 +-
arch/arm/dts/meson-gxl-u-boot.dtsi | 23 +++++++++++++++++++
4 files changed, 30 insertions(+), 3 deletions(-)
create mode 100644 arch/arm/dts/meson-gxl-u-boot.dtsi
diff --git a/arch/arm/dts/meson-gxl-s905x-khadas-vim-u-boot.dtsi b/arch/arm/dts/meson-gxl-s905x-khadas-vim-u-boot.dtsi
index c35158d7e9..39270ea71c 100644
--- a/arch/arm/dts/meson-gxl-s905x-khadas-vim-u-boot.dtsi
+++ b/arch/arm/dts/meson-gxl-s905x-khadas-vim-u-boot.dtsi
@@ -4,4 +4,4 @@
* Author: Neil Armstrong <narmstrong@baylibre.com>
*/
-#include "meson-gx-u-boot.dtsi"
+#include "meson-gxl-u-boot.dtsi"
diff --git a/arch/arm/dts/meson-gxl-s905x-libretech-cc-u-boot.dtsi b/arch/arm/dts/meson-gxl-s905x-libretech-cc-u-boot.dtsi
index c35158d7e9..474a3e1604 100644
--- a/arch/arm/dts/meson-gxl-s905x-libretech-cc-u-boot.dtsi
+++ b/arch/arm/dts/meson-gxl-s905x-libretech-cc-u-boot.dtsi
@@ -4,4 +4,8 @@
* Author: Neil Armstrong <narmstrong@baylibre.com>
*/
-#include "meson-gx-u-boot.dtsi"
+#include "meson-gxl-u-boot.dtsi"
+
+&dwc2 {
+ status = "okay";
+};
diff --git a/arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi b/arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi
index c35158d7e9..39270ea71c 100644
--- a/arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi
+++ b/arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi
@@ -4,4 +4,4 @@
* Author: Neil Armstrong <narmstrong@baylibre.com>
*/
-#include "meson-gx-u-boot.dtsi"
+#include "meson-gxl-u-boot.dtsi"
diff --git a/arch/arm/dts/meson-gxl-u-boot.dtsi b/arch/arm/dts/meson-gxl-u-boot.dtsi
new file mode 100644
index 0000000000..9e88afd30e
--- /dev/null
+++ b/arch/arm/dts/meson-gxl-u-boot.dtsi
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 BayLibre, SAS.
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ */
+
+#include "meson-gx-u-boot.dtsi"
+
+&usb0 {
+ dwc2: usb@c9100000 {
+ compatible = "snps,dwc2";
+ reg = <0x0 0xc9100000 0x0 0x40000>;
+ interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&clkc CLKID_USB1_DDR_BRIDGE>;
+ clock-names = "ddr";
+ phys = <&usb3_phy>, <&usb2_phy1>;
+ dr_mode = "peripheral";
+ g-rx-fifo-size = <192>;
+ g-np-tx-fifo-size = <128>;
+ g-tx-fifo-size = <128 128 16 16 16>;
+ status = "disabled";
+ };
+};
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 05/10] configs: libretech-cc: Enable USB gadget with Mass Storage function
2020-03-30 9:27 ` Neil Armstrong
@ 2020-03-30 9:27 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/libretech-cc_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/libretech-cc_defconfig b/configs/libretech-cc_defconfig
index 7c257b33b3..2c512ebc1e 100644
--- a/configs/libretech-cc_defconfig
+++ b/configs/libretech-cc_defconfig
@@ -19,6 +19,7 @@ CONFIG_CMD_GPIO=y
# CONFIG_CMD_LOADS is not set
CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -51,6 +52,12 @@ CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_DM_VIDEO=y
# CONFIG_VIDEO_BPP8 is not set
# CONFIG_VIDEO_BPP16 is not set
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 05/10] configs: libretech-cc: Enable USB gadget with Mass Storage function
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic, Neil Armstrong
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/libretech-cc_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/libretech-cc_defconfig b/configs/libretech-cc_defconfig
index 7c257b33b3..2c512ebc1e 100644
--- a/configs/libretech-cc_defconfig
+++ b/configs/libretech-cc_defconfig
@@ -19,6 +19,7 @@ CONFIG_CMD_GPIO=y
# CONFIG_CMD_LOADS is not set
CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -51,6 +52,12 @@ CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_DM_VIDEO=y
# CONFIG_VIDEO_BPP8 is not set
# CONFIG_VIDEO_BPP16 is not set
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 06/10] configs: libretech-ac: Enable USB gadget with Mass Storage function
2020-03-30 9:27 ` Neil Armstrong
@ 2020-03-30 9:27 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/libretech-ac_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/libretech-ac_defconfig b/configs/libretech-ac_defconfig
index 09b87c54d5..7e486757a2 100644
--- a/configs/libretech-ac_defconfig
+++ b/configs/libretech-ac_defconfig
@@ -27,6 +27,7 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_SF_TEST=y
CONFIG_CMD_SPI=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -69,6 +70,12 @@ CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
CONFIG_USB_KEYBOARD=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_DM_VIDEO=y
# CONFIG_VIDEO_BPP8 is not set
# CONFIG_VIDEO_BPP16 is not set
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 06/10] configs: libretech-ac: Enable USB gadget with Mass Storage function
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic, Neil Armstrong
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/libretech-ac_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/libretech-ac_defconfig b/configs/libretech-ac_defconfig
index 09b87c54d5..7e486757a2 100644
--- a/configs/libretech-ac_defconfig
+++ b/configs/libretech-ac_defconfig
@@ -27,6 +27,7 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_SF_TEST=y
CONFIG_CMD_SPI=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -69,6 +70,12 @@ CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
CONFIG_USB_KEYBOARD=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_DM_VIDEO=y
# CONFIG_VIDEO_BPP8 is not set
# CONFIG_VIDEO_BPP16 is not set
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 07/10] configs: khadas-vim2: Enable USB gadget with Mass Storage function
2020-03-30 9:27 ` Neil Armstrong
@ 2020-03-30 9:27 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/khadas-vim2_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/khadas-vim2_defconfig b/configs/khadas-vim2_defconfig
index 9cb377e55e..a533566410 100644
--- a/configs/khadas-vim2_defconfig
+++ b/configs/khadas-vim2_defconfig
@@ -20,6 +20,7 @@ CONFIG_CMD_GPIO=y
# CONFIG_CMD_LOADS is not set
CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -49,4 +50,10 @@ CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_OF_LIBFDT_OVERLAY=y
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 07/10] configs: khadas-vim2: Enable USB gadget with Mass Storage function
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic, Neil Armstrong
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/khadas-vim2_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/khadas-vim2_defconfig b/configs/khadas-vim2_defconfig
index 9cb377e55e..a533566410 100644
--- a/configs/khadas-vim2_defconfig
+++ b/configs/khadas-vim2_defconfig
@@ -20,6 +20,7 @@ CONFIG_CMD_GPIO=y
# CONFIG_CMD_LOADS is not set
CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -49,4 +50,10 @@ CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_OF_LIBFDT_OVERLAY=y
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 08/10] configs: khadas-vim: Enable USB gadget with Mass Storage function
2020-03-30 9:27 ` Neil Armstrong
@ 2020-03-30 9:27 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/khadas-vim_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/khadas-vim_defconfig b/configs/khadas-vim_defconfig
index e18a5e62bb..8a0af5cebb 100644
--- a/configs/khadas-vim_defconfig
+++ b/configs/khadas-vim_defconfig
@@ -20,6 +20,7 @@ CONFIG_CMD_GPIO=y
# CONFIG_CMD_LOADS is not set
CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -50,4 +51,10 @@ CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_OF_LIBFDT_OVERLAY=y
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 08/10] configs: khadas-vim: Enable USB gadget with Mass Storage function
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic, Neil Armstrong
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/khadas-vim_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/khadas-vim_defconfig b/configs/khadas-vim_defconfig
index e18a5e62bb..8a0af5cebb 100644
--- a/configs/khadas-vim_defconfig
+++ b/configs/khadas-vim_defconfig
@@ -20,6 +20,7 @@ CONFIG_CMD_GPIO=y
# CONFIG_CMD_LOADS is not set
CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -50,4 +51,10 @@ CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_OF_LIBFDT_OVERLAY=y
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 09/10] configs: libretech-s905d-pc: Enable USB gadget with Mass Storage function
2020-03-30 9:27 ` Neil Armstrong
@ 2020-03-30 9:27 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/libretech-s905d-pc_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/libretech-s905d-pc_defconfig b/configs/libretech-s905d-pc_defconfig
index 7e0c95872a..531d519a7c 100644
--- a/configs/libretech-s905d-pc_defconfig
+++ b/configs/libretech-s905d-pc_defconfig
@@ -26,6 +26,7 @@ CONFIG_CMD_SF=y
CONFIG_CMD_SF_TEST=y
CONFIG_CMD_SPI=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -65,6 +66,12 @@ CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_USB_KEYBOARD=y
CONFIG_DM_VIDEO=y
CONFIG_SYS_WHITE_ON_BLACK=y
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 09/10] configs: libretech-s905d-pc: Enable USB gadget with Mass Storage function
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic, Neil Armstrong
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/libretech-s905d-pc_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/libretech-s905d-pc_defconfig b/configs/libretech-s905d-pc_defconfig
index 7e0c95872a..531d519a7c 100644
--- a/configs/libretech-s905d-pc_defconfig
+++ b/configs/libretech-s905d-pc_defconfig
@@ -26,6 +26,7 @@ CONFIG_CMD_SF=y
CONFIG_CMD_SF_TEST=y
CONFIG_CMD_SPI=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -65,6 +66,12 @@ CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_USB_KEYBOARD=y
CONFIG_DM_VIDEO=y
CONFIG_SYS_WHITE_ON_BLACK=y
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 10/10] configs: libretech-s912-pc: Enable USB gadget with Mass Storage function
2020-03-30 9:27 ` Neil Armstrong
@ 2020-03-30 9:27 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/libretech-s912-pc_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/libretech-s912-pc_defconfig b/configs/libretech-s912-pc_defconfig
index 5f4ee329e2..595ec21da7 100644
--- a/configs/libretech-s912-pc_defconfig
+++ b/configs/libretech-s912-pc_defconfig
@@ -26,6 +26,7 @@ CONFIG_CMD_SF=y
CONFIG_CMD_SF_TEST=y
CONFIG_CMD_SPI=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -65,6 +66,12 @@ CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_USB_KEYBOARD=y
CONFIG_DM_VIDEO=y
CONFIG_SYS_WHITE_ON_BLACK=y
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 10/10] configs: libretech-s912-pc: Enable USB gadget with Mass Storage function
@ 2020-03-30 9:27 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-03-30 9:27 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic, Neil Armstrong
Enable configs to support USB gadget and Mass Storage
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
configs/libretech-s912-pc_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs/libretech-s912-pc_defconfig b/configs/libretech-s912-pc_defconfig
index 5f4ee329e2..595ec21da7 100644
--- a/configs/libretech-s912-pc_defconfig
+++ b/configs/libretech-s912-pc_defconfig
@@ -26,6 +26,7 @@ CONFIG_CMD_SF=y
CONFIG_CMD_SF_TEST=y
CONFIG_CMD_SPI=y
CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_REGULATOR=y
CONFIG_OF_CONTROL=y
@@ -65,6 +66,12 @@ CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_DWC3=y
CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_USB_KEYBOARD=y
CONFIG_DM_VIDEO=y
CONFIG_SYS_WHITE_ON_BLACK=y
--
2.22.0
^ permalink raw reply related [flat|nested] 28+ messages in thread
* [PATCH 01/10] generic-phy: add generic_phy_get_by_node()
2020-03-30 9:27 ` Neil Armstrong
@ 2020-04-15 16:14 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-04-15 16:14 UTC (permalink / raw)
To: u-boot
Tom, Marek,
On 30/03/2020 11:27, Neil Armstrong wrote:
> Add generic_phy_get_by_node() to get a PHY phandle from a node instead
> of a udevice.
>
> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
> ---
> drivers/phy/phy-uclass.c | 17 ++++++++++++-----
> include/generic-phy.h | 27 +++++++++++++++++++++++++++
> 2 files changed, 39 insertions(+), 5 deletions(-)
Are you ok with this change ?
Neil
>
> diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c
> index e201a90c8c..de2c3d2b8e 100644
> --- a/drivers/phy/phy-uclass.c
> +++ b/drivers/phy/phy-uclass.c
> @@ -31,20 +31,20 @@ static int generic_phy_xlate_offs_flags(struct phy *phy,
> return 0;
> }
>
> -int generic_phy_get_by_index(struct udevice *dev, int index,
> - struct phy *phy)
> +int generic_phy_get_by_node(ofnode node, int index, struct phy *phy)
> {
> struct ofnode_phandle_args args;
> struct phy_ops *ops;
> struct udevice *phydev;
> int i, ret;
>
> - debug("%s(dev=%p, index=%d, phy=%p)\n", __func__, dev, index, phy);
> + debug("%s(node=%s, index=%d, phy=%p)\n",
> + __func__, ofnode_get_name(node), index, phy);
>
> assert(phy);
> phy->dev = NULL;
> - ret = dev_read_phandle_with_args(dev, "phys", "#phy-cells", 0, index,
> - &args);
> + ret = ofnode_parse_phandle_with_args(node, "phys", "#phy-cells", 0,
> + index, &args);
> if (ret) {
> debug("%s: dev_read_phandle_with_args failed: err=%d\n",
> __func__, ret);
> @@ -88,6 +88,12 @@ int generic_phy_get_by_index(struct udevice *dev, int index,
>
> err:
> return ret;
> +}
> +
> +int generic_phy_get_by_index(struct udevice *dev, int index,
> + struct phy *phy)
> +{
> + return generic_phy_get_by_node(dev_ofnode(dev), index, phy);
> }
>
> int generic_phy_get_by_name(struct udevice *dev, const char *phy_name,
> diff --git a/include/generic-phy.h b/include/generic-phy.h
> index 95caf58341..5873ffb2e0 100644
> --- a/include/generic-phy.h
> +++ b/include/generic-phy.h
> @@ -193,6 +193,33 @@ int generic_phy_power_off(struct phy *phy);
> int generic_phy_get_by_index(struct udevice *user, int index,
> struct phy *phy);
>
> +/**
> + * generic_phy_get_by_node() - Get a PHY device by integer index on ofnode
> + *
> + * @node: the device node
> + * @index: The index in the list of available PHYs
> + * @phy: A pointer to the PHY port
> + *
> + * This looks up a PHY device for a client device based on its ofnode and on
> + * its position in the list of the possible PHYs.
> + *
> + * example:
> + * usb1: usb_otg_ss at xxx {
> + * compatible = "xxx";
> + * reg = <xxx>;
> + * .
> + * .
> + * phys = <&usb2_phy>, <&usb3_phy>;
> + * .
> + * .
> + * };
> + * the USB2 phy can be accessed by passing index '0' and the USB3 phy can
> + * be accessed by passing index '1'
> + *
> + * @return 0 if OK, or a negative error code
> + */
> +int generic_phy_get_by_node(ofnode node, int index, struct phy *phy);
> +
> /**
> * generic_phy_get_by_name() - Get a PHY device by its name.
> *
>
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 01/10] generic-phy: add generic_phy_get_by_node()
@ 2020-04-15 16:14 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-04-15 16:14 UTC (permalink / raw)
To: u-boot, marex, Tom Rini; +Cc: u-boot-amlogic
Tom, Marek,
On 30/03/2020 11:27, Neil Armstrong wrote:
> Add generic_phy_get_by_node() to get a PHY phandle from a node instead
> of a udevice.
>
> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
> ---
> drivers/phy/phy-uclass.c | 17 ++++++++++++-----
> include/generic-phy.h | 27 +++++++++++++++++++++++++++
> 2 files changed, 39 insertions(+), 5 deletions(-)
Are you ok with this change ?
Neil
>
> diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c
> index e201a90c8c..de2c3d2b8e 100644
> --- a/drivers/phy/phy-uclass.c
> +++ b/drivers/phy/phy-uclass.c
> @@ -31,20 +31,20 @@ static int generic_phy_xlate_offs_flags(struct phy *phy,
> return 0;
> }
>
> -int generic_phy_get_by_index(struct udevice *dev, int index,
> - struct phy *phy)
> +int generic_phy_get_by_node(ofnode node, int index, struct phy *phy)
> {
> struct ofnode_phandle_args args;
> struct phy_ops *ops;
> struct udevice *phydev;
> int i, ret;
>
> - debug("%s(dev=%p, index=%d, phy=%p)\n", __func__, dev, index, phy);
> + debug("%s(node=%s, index=%d, phy=%p)\n",
> + __func__, ofnode_get_name(node), index, phy);
>
> assert(phy);
> phy->dev = NULL;
> - ret = dev_read_phandle_with_args(dev, "phys", "#phy-cells", 0, index,
> - &args);
> + ret = ofnode_parse_phandle_with_args(node, "phys", "#phy-cells", 0,
> + index, &args);
> if (ret) {
> debug("%s: dev_read_phandle_with_args failed: err=%d\n",
> __func__, ret);
> @@ -88,6 +88,12 @@ int generic_phy_get_by_index(struct udevice *dev, int index,
>
> err:
> return ret;
> +}
> +
> +int generic_phy_get_by_index(struct udevice *dev, int index,
> + struct phy *phy)
> +{
> + return generic_phy_get_by_node(dev_ofnode(dev), index, phy);
> }
>
> int generic_phy_get_by_name(struct udevice *dev, const char *phy_name,
> diff --git a/include/generic-phy.h b/include/generic-phy.h
> index 95caf58341..5873ffb2e0 100644
> --- a/include/generic-phy.h
> +++ b/include/generic-phy.h
> @@ -193,6 +193,33 @@ int generic_phy_power_off(struct phy *phy);
> int generic_phy_get_by_index(struct udevice *user, int index,
> struct phy *phy);
>
> +/**
> + * generic_phy_get_by_node() - Get a PHY device by integer index on ofnode
> + *
> + * @node: the device node
> + * @index: The index in the list of available PHYs
> + * @phy: A pointer to the PHY port
> + *
> + * This looks up a PHY device for a client device based on its ofnode and on
> + * its position in the list of the possible PHYs.
> + *
> + * example:
> + * usb1: usb_otg_ss@xxx {
> + * compatible = "xxx";
> + * reg = <xxx>;
> + * .
> + * .
> + * phys = <&usb2_phy>, <&usb3_phy>;
> + * .
> + * .
> + * };
> + * the USB2 phy can be accessed by passing index '0' and the USB3 phy can
> + * be accessed by passing index '1'
> + *
> + * @return 0 if OK, or a negative error code
> + */
> +int generic_phy_get_by_node(ofnode node, int index, struct phy *phy);
> +
> /**
> * generic_phy_get_by_name() - Get a PHY device by its name.
> *
>
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 01/10] generic-phy: add generic_phy_get_by_node()
2020-04-15 16:14 ` Neil Armstrong
@ 2020-04-16 18:15 ` Tom Rini
-1 siblings, 0 replies; 28+ messages in thread
From: Tom Rini @ 2020-04-16 18:15 UTC (permalink / raw)
To: u-boot
On Wed, Apr 15, 2020 at 06:14:18PM +0200, Neil Armstrong wrote:
> Tom, Marek,
>
> On 30/03/2020 11:27, Neil Armstrong wrote:
> > Add generic_phy_get_by_node() to get a PHY phandle from a node instead
> > of a udevice.
> >
> > Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
> > ---
> > drivers/phy/phy-uclass.c | 17 ++++++++++++-----
> > include/generic-phy.h | 27 +++++++++++++++++++++++++++
> > 2 files changed, 39 insertions(+), 5 deletions(-)
>
>
> Are you ok with this change ?
Reviewed-by: Tom Rini <trini@konsulko.com>
>
> Neil
>
> >
> > diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c
> > index e201a90c8c..de2c3d2b8e 100644
> > --- a/drivers/phy/phy-uclass.c
> > +++ b/drivers/phy/phy-uclass.c
> > @@ -31,20 +31,20 @@ static int generic_phy_xlate_offs_flags(struct phy *phy,
> > return 0;
> > }
> >
> > -int generic_phy_get_by_index(struct udevice *dev, int index,
> > - struct phy *phy)
> > +int generic_phy_get_by_node(ofnode node, int index, struct phy *phy)
> > {
> > struct ofnode_phandle_args args;
> > struct phy_ops *ops;
> > struct udevice *phydev;
> > int i, ret;
> >
> > - debug("%s(dev=%p, index=%d, phy=%p)\n", __func__, dev, index, phy);
> > + debug("%s(node=%s, index=%d, phy=%p)\n",
> > + __func__, ofnode_get_name(node), index, phy);
> >
> > assert(phy);
> > phy->dev = NULL;
> > - ret = dev_read_phandle_with_args(dev, "phys", "#phy-cells", 0, index,
> > - &args);
> > + ret = ofnode_parse_phandle_with_args(node, "phys", "#phy-cells", 0,
> > + index, &args);
> > if (ret) {
> > debug("%s: dev_read_phandle_with_args failed: err=%d\n",
> > __func__, ret);
> > @@ -88,6 +88,12 @@ int generic_phy_get_by_index(struct udevice *dev, int index,
> >
> > err:
> > return ret;
> > +}
> > +
> > +int generic_phy_get_by_index(struct udevice *dev, int index,
> > + struct phy *phy)
> > +{
> > + return generic_phy_get_by_node(dev_ofnode(dev), index, phy);
> > }
> >
> > int generic_phy_get_by_name(struct udevice *dev, const char *phy_name,
> > diff --git a/include/generic-phy.h b/include/generic-phy.h
> > index 95caf58341..5873ffb2e0 100644
> > --- a/include/generic-phy.h
> > +++ b/include/generic-phy.h
> > @@ -193,6 +193,33 @@ int generic_phy_power_off(struct phy *phy);
> > int generic_phy_get_by_index(struct udevice *user, int index,
> > struct phy *phy);
> >
> > +/**
> > + * generic_phy_get_by_node() - Get a PHY device by integer index on ofnode
> > + *
> > + * @node: the device node
> > + * @index: The index in the list of available PHYs
> > + * @phy: A pointer to the PHY port
> > + *
> > + * This looks up a PHY device for a client device based on its ofnode and on
> > + * its position in the list of the possible PHYs.
> > + *
> > + * example:
> > + * usb1: usb_otg_ss at xxx {
> > + * compatible = "xxx";
> > + * reg = <xxx>;
> > + * .
> > + * .
> > + * phys = <&usb2_phy>, <&usb3_phy>;
> > + * .
> > + * .
> > + * };
> > + * the USB2 phy can be accessed by passing index '0' and the USB3 phy can
> > + * be accessed by passing index '1'
> > + *
> > + * @return 0 if OK, or a negative error code
> > + */
> > +int generic_phy_get_by_node(ofnode node, int index, struct phy *phy);
> > +
> > /**
> > * generic_phy_get_by_name() - Get a PHY device by its name.
> > *
> >
>
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200416/ada5ed4c/attachment.sig>
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 01/10] generic-phy: add generic_phy_get_by_node()
@ 2020-04-16 18:15 ` Tom Rini
0 siblings, 0 replies; 28+ messages in thread
From: Tom Rini @ 2020-04-16 18:15 UTC (permalink / raw)
To: Neil Armstrong; +Cc: u-boot, marex, u-boot-amlogic
[-- Attachment #1: Type: text/plain, Size: 3480 bytes --]
On Wed, Apr 15, 2020 at 06:14:18PM +0200, Neil Armstrong wrote:
> Tom, Marek,
>
> On 30/03/2020 11:27, Neil Armstrong wrote:
> > Add generic_phy_get_by_node() to get a PHY phandle from a node instead
> > of a udevice.
> >
> > Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
> > ---
> > drivers/phy/phy-uclass.c | 17 ++++++++++++-----
> > include/generic-phy.h | 27 +++++++++++++++++++++++++++
> > 2 files changed, 39 insertions(+), 5 deletions(-)
>
>
> Are you ok with this change ?
Reviewed-by: Tom Rini <trini@konsulko.com>
>
> Neil
>
> >
> > diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c
> > index e201a90c8c..de2c3d2b8e 100644
> > --- a/drivers/phy/phy-uclass.c
> > +++ b/drivers/phy/phy-uclass.c
> > @@ -31,20 +31,20 @@ static int generic_phy_xlate_offs_flags(struct phy *phy,
> > return 0;
> > }
> >
> > -int generic_phy_get_by_index(struct udevice *dev, int index,
> > - struct phy *phy)
> > +int generic_phy_get_by_node(ofnode node, int index, struct phy *phy)
> > {
> > struct ofnode_phandle_args args;
> > struct phy_ops *ops;
> > struct udevice *phydev;
> > int i, ret;
> >
> > - debug("%s(dev=%p, index=%d, phy=%p)\n", __func__, dev, index, phy);
> > + debug("%s(node=%s, index=%d, phy=%p)\n",
> > + __func__, ofnode_get_name(node), index, phy);
> >
> > assert(phy);
> > phy->dev = NULL;
> > - ret = dev_read_phandle_with_args(dev, "phys", "#phy-cells", 0, index,
> > - &args);
> > + ret = ofnode_parse_phandle_with_args(node, "phys", "#phy-cells", 0,
> > + index, &args);
> > if (ret) {
> > debug("%s: dev_read_phandle_with_args failed: err=%d\n",
> > __func__, ret);
> > @@ -88,6 +88,12 @@ int generic_phy_get_by_index(struct udevice *dev, int index,
> >
> > err:
> > return ret;
> > +}
> > +
> > +int generic_phy_get_by_index(struct udevice *dev, int index,
> > + struct phy *phy)
> > +{
> > + return generic_phy_get_by_node(dev_ofnode(dev), index, phy);
> > }
> >
> > int generic_phy_get_by_name(struct udevice *dev, const char *phy_name,
> > diff --git a/include/generic-phy.h b/include/generic-phy.h
> > index 95caf58341..5873ffb2e0 100644
> > --- a/include/generic-phy.h
> > +++ b/include/generic-phy.h
> > @@ -193,6 +193,33 @@ int generic_phy_power_off(struct phy *phy);
> > int generic_phy_get_by_index(struct udevice *user, int index,
> > struct phy *phy);
> >
> > +/**
> > + * generic_phy_get_by_node() - Get a PHY device by integer index on ofnode
> > + *
> > + * @node: the device node
> > + * @index: The index in the list of available PHYs
> > + * @phy: A pointer to the PHY port
> > + *
> > + * This looks up a PHY device for a client device based on its ofnode and on
> > + * its position in the list of the possible PHYs.
> > + *
> > + * example:
> > + * usb1: usb_otg_ss@xxx {
> > + * compatible = "xxx";
> > + * reg = <xxx>;
> > + * .
> > + * .
> > + * phys = <&usb2_phy>, <&usb3_phy>;
> > + * .
> > + * .
> > + * };
> > + * the USB2 phy can be accessed by passing index '0' and the USB3 phy can
> > + * be accessed by passing index '1'
> > + *
> > + * @return 0 if OK, or a negative error code
> > + */
> > +int generic_phy_get_by_node(ofnode node, int index, struct phy *phy);
> > +
> > /**
> > * generic_phy_get_by_name() - Get a PHY device by its name.
> > *
> >
>
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH 00/10] meson: enable USB Gadget support fot GXL/GXM SoCs
2020-03-30 9:27 ` Neil Armstrong
@ 2020-04-17 9:43 ` Neil Armstrong
-1 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-04-17 9:43 UTC (permalink / raw)
To: u-boot
On 30/03/2020 11:27, Neil Armstrong wrote:
> Thit patchset adds support for OTG Gadget mode on the GXL/GXM SoCs.
>
> It adds a new API generic_phy_get_by_node() to get the PHY by it's node.
>
> It enabled Gadget and USB Mass Storage for libretech-cc, libretech-ac,
> khadas-vim, khadas-vim2, libretech-s905d-pc and libretech-s912-pc boards.
>
> Neil Armstrong (10):
> generic-phy: add generic_phy_get_by_node()
> phy: meson-gxl-usb: add set_mode call to force switch to peripheral
> mode
> arm: meson-gx: add board_usb_init()/cleanup() for USB gadget
> arm: dts: meson-gxl: Add USB Gadget nodes for U-Boot
> configs: libretech-cc: Enable USB gadget with Mass Storage function
> configs: libretech-ac: Enable USB gadget with Mass Storage function
> configs: khadas-vim2: Enable USB gadget with Mass Storage function
> configs: khadas-vim: Enable USB gadget with Mass Storage function
> configs: libretech-s905d-pc: Enable USB gadget with Mass Storage
> function
> configs: libretech-s912-pc: Enable USB gadget with Mass Storage
> function
>
> .../meson-gxl-s905x-khadas-vim-u-boot.dtsi | 2 +-
> .../meson-gxl-s905x-libretech-cc-u-boot.dtsi | 6 +-
> arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi | 2 +-
> arch/arm/dts/meson-gxl-u-boot.dtsi | 23 ++++
> arch/arm/include/asm/arch-meson/usb-gx.h | 16 +++
> arch/arm/mach-meson/board-gx.c | 118 ++++++++++++++++++
> configs/khadas-vim2_defconfig | 7 ++
> configs/khadas-vim_defconfig | 7 ++
> configs/libretech-ac_defconfig | 7 ++
> configs/libretech-cc_defconfig | 7 ++
> configs/libretech-s905d-pc_defconfig | 7 ++
> configs/libretech-s912-pc_defconfig | 7 ++
> drivers/phy/meson-gxl-usb2.c | 30 ++++-
> drivers/phy/meson-gxl-usb3.c | 44 +++++--
> drivers/phy/phy-uclass.c | 17 ++-
> include/generic-phy.h | 27 ++++
> 16 files changed, 301 insertions(+), 26 deletions(-)
> create mode 100644 arch/arm/dts/meson-gxl-u-boot.dtsi
> create mode 100644 arch/arm/include/asm/arch-meson/usb-gx.h
>
Applied to u-boot-amlogic with tom's review tag on patch 1
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [PATCH 00/10] meson: enable USB Gadget support fot GXL/GXM SoCs
@ 2020-04-17 9:43 ` Neil Armstrong
0 siblings, 0 replies; 28+ messages in thread
From: Neil Armstrong @ 2020-04-17 9:43 UTC (permalink / raw)
To: u-boot, marex; +Cc: u-boot-amlogic
On 30/03/2020 11:27, Neil Armstrong wrote:
> Thit patchset adds support for OTG Gadget mode on the GXL/GXM SoCs.
>
> It adds a new API generic_phy_get_by_node() to get the PHY by it's node.
>
> It enabled Gadget and USB Mass Storage for libretech-cc, libretech-ac,
> khadas-vim, khadas-vim2, libretech-s905d-pc and libretech-s912-pc boards.
>
> Neil Armstrong (10):
> generic-phy: add generic_phy_get_by_node()
> phy: meson-gxl-usb: add set_mode call to force switch to peripheral
> mode
> arm: meson-gx: add board_usb_init()/cleanup() for USB gadget
> arm: dts: meson-gxl: Add USB Gadget nodes for U-Boot
> configs: libretech-cc: Enable USB gadget with Mass Storage function
> configs: libretech-ac: Enable USB gadget with Mass Storage function
> configs: khadas-vim2: Enable USB gadget with Mass Storage function
> configs: khadas-vim: Enable USB gadget with Mass Storage function
> configs: libretech-s905d-pc: Enable USB gadget with Mass Storage
> function
> configs: libretech-s912-pc: Enable USB gadget with Mass Storage
> function
>
> .../meson-gxl-s905x-khadas-vim-u-boot.dtsi | 2 +-
> .../meson-gxl-s905x-libretech-cc-u-boot.dtsi | 6 +-
> arch/arm/dts/meson-gxl-s905x-p212-u-boot.dtsi | 2 +-
> arch/arm/dts/meson-gxl-u-boot.dtsi | 23 ++++
> arch/arm/include/asm/arch-meson/usb-gx.h | 16 +++
> arch/arm/mach-meson/board-gx.c | 118 ++++++++++++++++++
> configs/khadas-vim2_defconfig | 7 ++
> configs/khadas-vim_defconfig | 7 ++
> configs/libretech-ac_defconfig | 7 ++
> configs/libretech-cc_defconfig | 7 ++
> configs/libretech-s905d-pc_defconfig | 7 ++
> configs/libretech-s912-pc_defconfig | 7 ++
> drivers/phy/meson-gxl-usb2.c | 30 ++++-
> drivers/phy/meson-gxl-usb3.c | 44 +++++--
> drivers/phy/phy-uclass.c | 17 ++-
> include/generic-phy.h | 27 ++++
> 16 files changed, 301 insertions(+), 26 deletions(-)
> create mode 100644 arch/arm/dts/meson-gxl-u-boot.dtsi
> create mode 100644 arch/arm/include/asm/arch-meson/usb-gx.h
>
Applied to u-boot-amlogic with tom's review tag on patch 1
^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2020-04-17 9:43 UTC | newest]
Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-30 9:27 [PATCH 00/10] meson: enable USB Gadget support fot GXL/GXM SoCs Neil Armstrong
2020-03-30 9:27 ` Neil Armstrong
2020-03-30 9:27 ` [PATCH 01/10] generic-phy: add generic_phy_get_by_node() Neil Armstrong
2020-03-30 9:27 ` Neil Armstrong
2020-04-15 16:14 ` Neil Armstrong
2020-04-15 16:14 ` Neil Armstrong
2020-04-16 18:15 ` Tom Rini
2020-04-16 18:15 ` Tom Rini
2020-03-30 9:27 ` [PATCH 02/10] phy: meson-gxl-usb: add set_mode call to force switch to peripheral mode Neil Armstrong
2020-03-30 9:27 ` Neil Armstrong
2020-03-30 9:27 ` [PATCH 03/10] arm: meson-gx: add board_usb_init()/cleanup() for USB gadget Neil Armstrong
2020-03-30 9:27 ` Neil Armstrong
2020-03-30 9:27 ` [PATCH 04/10] arm: dts: meson-gxl: Add USB Gadget nodes for U-Boot Neil Armstrong
2020-03-30 9:27 ` Neil Armstrong
2020-03-30 9:27 ` [PATCH 05/10] configs: libretech-cc: Enable USB gadget with Mass Storage function Neil Armstrong
2020-03-30 9:27 ` Neil Armstrong
2020-03-30 9:27 ` [PATCH 06/10] configs: libretech-ac: " Neil Armstrong
2020-03-30 9:27 ` Neil Armstrong
2020-03-30 9:27 ` [PATCH 07/10] configs: khadas-vim2: " Neil Armstrong
2020-03-30 9:27 ` Neil Armstrong
2020-03-30 9:27 ` [PATCH 08/10] configs: khadas-vim: " Neil Armstrong
2020-03-30 9:27 ` Neil Armstrong
2020-03-30 9:27 ` [PATCH 09/10] configs: libretech-s905d-pc: " Neil Armstrong
2020-03-30 9:27 ` Neil Armstrong
2020-03-30 9:27 ` [PATCH 10/10] configs: libretech-s912-pc: " Neil Armstrong
2020-03-30 9:27 ` Neil Armstrong
2020-04-17 9:43 ` [PATCH 00/10] meson: enable USB Gadget support fot GXL/GXM SoCs Neil Armstrong
2020-04-17 9:43 ` Neil Armstrong
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.