[PATCH 1/3] usb: ehci: mxs: Fix the USB node pointer retrieval

From: Fabio Estevam festevam@denx.de
Use dev_ofnode() to retrieve the USB node pointer from the udevice structure.
This fixes the following build error:
drivers/usb/host/ehci-mxs.c:143:38: error: 'struct udevice' has no member named 'node_'
Signed-off-by: Fabio Estevam festevam@denx.de --- drivers/usb/host/ehci-mxs.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/host/ehci-mxs.c b/drivers/usb/host/ehci-mxs.c index 147b2fa145d6..092c79fd4bc5 100644 --- a/drivers/usb/host/ehci-mxs.c +++ b/drivers/usb/host/ehci-mxs.c @@ -136,11 +136,12 @@ static int ehci_usb_ofdata_to_platdata(struct udevice *dev) struct usb_plat *plat = dev_get_plat(dev); struct ehci_mxs_port *port = &priv->port; u32 phandle, phy_reg, clk_reg, clk_id; + ofnode np = dev_ofnode(dev); ofnode phy_node, clk_node; const char *mode; int ret;
- mode = ofnode_read_string(dev->node_, "dr_mode"); + mode = ofnode_read_string(np, "dr_mode"); if (mode) { if (strcmp(mode, "peripheral") == 0) plat->init_type = USB_INIT_DEVICE; @@ -151,12 +152,12 @@ static int ehci_usb_ofdata_to_platdata(struct udevice *dev) }
/* Read base address of the USB IP block */ - ret = ofnode_read_u32(dev->node_, "reg", &port->usb_regs); + ret = ofnode_read_u32(np, "reg", &port->usb_regs); if (ret) return ret;
/* Read base address of the USB PHY IP block */ - ret = ofnode_read_u32(dev->node_, "fsl,usbphy", &phandle); + ret = ofnode_read_u32(np, "fsl,usbphy", &phandle); if (ret) return ret;

From: Fabio Estevam festevam@denx.de
Since commit 4fcba5d556b4 ("regulator: implement basic reference counter") the return value of regulator_set_enable() may be EALREADY or EBUSY for fixed/GPIO regulators.
Swict to using the more relaxed regulator_set_enable_if_allowed() to continue if regulator already was enabled or disabled.
This fixes the following error when running the 'ums' command:
=> ums 0 mmc 0 UMS: LUN 0, dev mmc 0, hwpart 0, sector 0x0, count 0xece000 Error enabling VBUS supply g_dnl_register: failed!, error: -114 g_dnl_register failed
Signed-off-by: Fabio Estevam festevam@denx.de --- drivers/usb/host/ehci-mxs.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/host/ehci-mxs.c b/drivers/usb/host/ehci-mxs.c index 092c79fd4bc5..ddf7cc2d00a7 100644 --- a/drivers/usb/host/ehci-mxs.c +++ b/drivers/usb/host/ehci-mxs.c @@ -236,9 +236,9 @@ static int ehci_usb_probe(struct udevice *dev) debug("%s: No vbus supply\n", dev->name);
if (!ret && priv->vbus_supply) { - ret = regulator_set_enable(priv->vbus_supply, - (type == USB_INIT_DEVICE) ? - false : true); + ret = regulator_set_enable_if_allowed(priv->vbus_supply, + (type == USB_INIT_DEVICE) ? + false : true); if (ret) { puts("Error enabling VBUS supply\n"); return ret; @@ -265,7 +265,7 @@ static int ehci_usb_remove(struct udevice *dev)
#if CONFIG_IS_ENABLED(DM_REGULATOR) if (priv->vbus_supply) { - ret = regulator_set_enable(priv->vbus_supply, false); + ret = regulator_set_enable_if_allowed(priv->vbus_supply, false); if (ret) { puts("Error disabling VBUS supply\n"); return ret;

On 10/7/23 23:56, Fabio Estevam wrote:
From: Fabio Estevam festevam@denx.de
Since commit 4fcba5d556b4 ("regulator: implement basic reference counter") the return value of regulator_set_enable() may be EALREADY or EBUSY for fixed/GPIO regulators.
Swict to using the more relaxed regulator_set_enable_if_allowed() to continue if regulator already was enabled or disabled.
This fixes the following error when running the 'ums' command:
=> ums 0 mmc 0 UMS: LUN 0, dev mmc 0, hwpart 0, sector 0x0, count 0xece000 Error enabling VBUS supply g_dnl_register: failed!, error: -114 g_dnl_register failed
Signed-off-by: Fabio Estevam festevam@denx.de
Reviewed-by: Marek Vasut marex@denx.de

From: Fabio Estevam festevam@denx.de
Select the USB options to allow running "ums 0 mmc 0".
Signed-off-by: Fabio Estevam festevam@denx.de --- configs/mx28evk_defconfig | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
diff --git a/configs/mx28evk_defconfig b/configs/mx28evk_defconfig index df0cceaea719..15cc99684c05 100644 --- a/configs/mx28evk_defconfig +++ b/configs/mx28evk_defconfig @@ -32,6 +32,9 @@ CONFIG_CMD_DM=y CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_NAND_TRIMFFS=y +CONFIG_CMD_USB=y +CONFIG_CMD_USB_SDP=y +CONFIG_CMD_USB_MASS_STORAGE=y CONFIG_CMD_CACHE=y CONFIG_CMD_DATE=y CONFIG_CMD_EXT4=y @@ -65,3 +68,14 @@ CONFIG_RTC_MXS=y CONFIG_DM_SERIAL=y CONFIG_SPI=y CONFIG_USB=y +CONFIG_SPL_USB_HOST=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_MAX_CONTROLLER_COUNT=2 +CONFIG_USB_GADGET=y +CONFIG_SPL_USB_GADGET=y +CONFIG_USB_GADGET_MANUFACTURER="FSL" +CONFIG_USB_GADGET_VENDOR_NUM=0x0525 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 +CONFIG_CI_UDC=y +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_SPL_USB_SDP_SUPPORT=y

On 10/7/23 23:56, Fabio Estevam wrote:
From: Fabio Estevam festevam@denx.de
Select the USB options to allow running "ums 0 mmc 0".
Signed-off-by: Fabio Estevam festevam@denx.de
configs/mx28evk_defconfig | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
diff --git a/configs/mx28evk_defconfig b/configs/mx28evk_defconfig index df0cceaea719..15cc99684c05 100644 --- a/configs/mx28evk_defconfig +++ b/configs/mx28evk_defconfig @@ -32,6 +32,9 @@ CONFIG_CMD_DM=y CONFIG_CMD_GPIO=y CONFIG_CMD_MMC=y CONFIG_CMD_NAND_TRIMFFS=y +CONFIG_CMD_USB=y +CONFIG_CMD_USB_SDP=y
This seems to be doing more than just enabling UMS, right ? SDP is enabled too, but not mentioned in commit message.
+CONFIG_CMD_USB_MASS_STORAGE=y CONFIG_CMD_CACHE=y CONFIG_CMD_DATE=y CONFIG_CMD_EXT4=y @@ -65,3 +68,14 @@ CONFIG_RTC_MXS=y CONFIG_DM_SERIAL=y CONFIG_SPI=y CONFIG_USB=y +CONFIG_SPL_USB_HOST=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_MAX_CONTROLLER_COUNT=2 +CONFIG_USB_GADGET=y +CONFIG_SPL_USB_GADGET=y
This SPL USB gadget is not related to UMS either .
Please fix, either document the full amount of changes, or drop unrelated changes.
[...]

On 10/7/23 23:56, Fabio Estevam wrote:
From: Fabio Estevam festevam@denx.de
Use dev_ofnode() to retrieve the USB node pointer from the udevice structure.
This fixes the following build error:
drivers/usb/host/ehci-mxs.c:143:38: error: 'struct udevice' has no member named 'node_'
How come this was never trapped by CI ?
Reviewed-by: Marek Vasut marex@denx.de
participants (2)
-
Fabio Estevam
-
Marek Vasut