summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2026-04-06 12:16:57 -0600
committerTom Rini <[email protected]>2026-04-06 12:16:57 -0600
commit93f84ee022a8401421cdaab84fe7d106d83fdb4a (patch)
treefb15a4af876e8faf9893fd86c1c0e127265dbe9a /drivers/usb
parent88dc2788777babfd6322fa655df549a019aa1e69 (diff)
parente2138cf1e6088f12ffa874e87cc8f4b198378635 (diff)
Merge branch 'next'
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/common/common.c3
-rw-r--r--drivers/usb/gadget/Kconfig1
-rw-r--r--drivers/usb/gadget/ci_udc.c2
-rw-r--r--drivers/usb/isp1760/Kconfig6
-rw-r--r--drivers/usb/musb-new/ti-musb.c39
-rw-r--r--drivers/usb/phy/rockchip_usb2_phy.c3
-rw-r--r--drivers/usb/tcpm/tcpm.c2
7 files changed, 40 insertions, 16 deletions
diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c
index 13e9a61072a..22aa6525c96 100644
--- a/drivers/usb/common/common.c
+++ b/drivers/usb/common/common.c
@@ -7,14 +7,11 @@
*/
#include <dm.h>
-#include <asm/global_data.h>
#include <linux/printk.h>
#include <linux/usb/otg.h>
#include <linux/usb/ch9.h>
#include <linux/usb/phy.h>
-DECLARE_GLOBAL_DATA_PTR;
-
static const char *const usb_dr_modes[] = {
[USB_DR_MODE_UNKNOWN] = "",
[USB_DR_MODE_HOST] = "host",
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
index ebb306852a6..baa2eb61ea3 100644
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -89,6 +89,7 @@ config USB_GADGET_PRODUCT_NUM
default 0x350b if ROCKCHIP_RK3588
default 0x350c if ROCKCHIP_RK3528
default 0x350e if ROCKCHIP_RK3576
+ default 0x350f if ROCKCHIP_RK3506
default 0x4ee0 if ARCH_SNAPDRAGON
default 0x0
help
diff --git a/drivers/usb/gadget/ci_udc.c b/drivers/usb/gadget/ci_udc.c
index 046bb335ecb..4729570c525 100644
--- a/drivers/usb/gadget/ci_udc.c
+++ b/drivers/usb/gadget/ci_udc.c
@@ -990,7 +990,7 @@ int dm_usb_gadget_handle_interrupts(struct udevice *dev)
return value;
}
-void udc_disconnect(void)
+static void udc_disconnect(void)
{
struct ci_udc *udc = (struct ci_udc *)controller.ctrl->hcor;
/* disable pullup */
diff --git a/drivers/usb/isp1760/Kconfig b/drivers/usb/isp1760/Kconfig
index 993d71e74cd..d1c5a687d9e 100644
--- a/drivers/usb/isp1760/Kconfig
+++ b/drivers/usb/isp1760/Kconfig
@@ -1,11 +1,13 @@
# SPDX-License-Identifier: GPL-2.0
config USB_ISP1760
- tristate "NXP ISP 1760/1761/1763 support"
+ bool "NXP ISP 1760/1761/1763 support"
+ depends on DM && OF_CONTROL
select DM_USB
+ select REGMAP
select USB_HOST
help
- Say Y or M here if your system as an ISP1760/1761/1763 USB host
+ Say Y here if your system as an ISP1760/1761/1763 USB host
controller.
This USB controller is usually attached to a non-DMA-Master
diff --git a/drivers/usb/musb-new/ti-musb.c b/drivers/usb/musb-new/ti-musb.c
index bcd31adba52..cc6c3b94a65 100644
--- a/drivers/usb/musb-new/ti-musb.c
+++ b/drivers/usb/musb-new/ti-musb.c
@@ -83,17 +83,17 @@ static int ti_musb_of_to_plat(struct udevice *dev)
struct ti_musb_plat *plat = dev_get_plat(dev);
const void *fdt = gd->fdt_blob;
int node = dev_of_offset(dev);
- int phys;
- int ctrl_mod;
+ ofnode phys_node;
+ ofnode ctrl_mod_node;
int usb_index;
int ret;
struct musb_hdrc_config *musb_config;
plat->base = devfdt_get_addr_index_ptr(dev, 1);
- phys = fdtdec_lookup_phandle(fdt, node, "phys");
- ctrl_mod = fdtdec_lookup_phandle(fdt, phys, "ti,ctrl_mod");
- plat->ctrl_mod_base = (void *)fdtdec_get_addr(fdt, ctrl_mod, "reg");
+ phys_node = ofnode_get_by_phandle(dev_read_u32_default(dev, "phys", 0));
+ ctrl_mod_node = ofnode_get_by_phandle(ofnode_read_u32_default(phys_node, "ti,ctrl_mod", 0));
+ plat->ctrl_mod_base = (void *)ofnode_get_addr(ctrl_mod_node);
usb_index = ti_musb_get_usb_index(node);
switch (usb_index) {
case 1:
@@ -183,6 +183,21 @@ static int ti_musb_host_remove(struct udevice *dev)
}
#if CONFIG_IS_ENABLED(OF_CONTROL)
+static const struct udevice_id ti_musb_host_periph_ids[] = {
+ { .compatible = "ti,musb-am33xx" },
+ { }
+};
+
+static int ti_musb_host_bind(struct udevice *dev)
+{
+ enum usb_dr_mode dr_mode = usb_get_dr_mode(dev_ofnode(dev));
+
+ if (dr_mode != USB_DR_MODE_HOST && dr_mode != USB_DR_MODE_OTG)
+ return -ENODEV;
+
+ return 0;
+}
+
static int ti_musb_host_of_to_plat(struct udevice *dev)
{
struct ti_musb_plat *plat = dev_get_plat(dev);
@@ -206,6 +221,8 @@ U_BOOT_DRIVER(ti_musb_host) = {
.name = "ti-musb-host",
.id = UCLASS_USB,
#if CONFIG_IS_ENABLED(OF_CONTROL)
+ .of_match = ti_musb_host_periph_ids,
+ .bind = ti_musb_host_bind,
.of_to_plat = ti_musb_host_of_to_plat,
#endif
.probe = ti_musb_host_probe,
@@ -221,6 +238,16 @@ struct ti_musb_peripheral {
};
#if CONFIG_IS_ENABLED(OF_CONTROL)
+static int ti_musb_peripheral_bind(struct udevice *dev)
+{
+ enum usb_dr_mode dr_mode = usb_get_dr_mode(dev_ofnode(dev));
+
+ if (dr_mode != USB_DR_MODE_PERIPHERAL)
+ return -ENODEV;
+
+ return 0;
+}
+
static int ti_musb_peripheral_of_to_plat(struct udevice *dev)
{
struct ti_musb_plat *plat = dev_get_plat(dev);
@@ -283,6 +310,8 @@ U_BOOT_DRIVER(ti_musb_peripheral) = {
.name = "ti-musb-peripheral",
.id = UCLASS_USB_GADGET_GENERIC,
#if CONFIG_IS_ENABLED(OF_CONTROL)
+ .of_match = ti_musb_host_periph_ids,
+ .bind = ti_musb_peripheral_bind,
.of_to_plat = ti_musb_peripheral_of_to_plat,
#endif
.ops = &ti_musb_gadget_ops,
diff --git a/drivers/usb/phy/rockchip_usb2_phy.c b/drivers/usb/phy/rockchip_usb2_phy.c
index ce9a7b5b819..bdbd0d44813 100644
--- a/drivers/usb/phy/rockchip_usb2_phy.c
+++ b/drivers/usb/phy/rockchip_usb2_phy.c
@@ -5,15 +5,12 @@
#include <hang.h>
#include <log.h>
-#include <asm/global_data.h>
#include <asm/io.h>
#include <linux/bitops.h>
#include <linux/delay.h>
#include "../gadget/dwc2_udc_otg_priv.h"
-DECLARE_GLOBAL_DATA_PTR;
-
#define BIT_WRITEABLE_SHIFT 16
struct usb2phy_reg {
diff --git a/drivers/usb/tcpm/tcpm.c b/drivers/usb/tcpm/tcpm.c
index 0aee57cb2f4..3061b466d7c 100644
--- a/drivers/usb/tcpm/tcpm.c
+++ b/drivers/usb/tcpm/tcpm.c
@@ -19,8 +19,6 @@
#include <usb/tcpm.h>
#include "tcpm-internal.h"
-DECLARE_GLOBAL_DATA_PTR;
-
const char * const tcpm_states[] = {
FOREACH_TCPM_STATE(GENERATE_TCPM_STRING)
};