mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 08:01:08 +00:00
This commit is contained in:
commit
68c07fc5fd
3 changed files with 18 additions and 28 deletions
|
@ -421,7 +421,9 @@ static void usb_show_tree_graph(struct usb_device *dev, char *pre)
|
|||
* Ignore emulators and block child devices, we only want
|
||||
* real devices
|
||||
*/
|
||||
if ((device_get_uclass_id(child) != UCLASS_USB_EMUL) &&
|
||||
if (udev &&
|
||||
(device_get_uclass_id(child) != UCLASS_BOOTDEV) &&
|
||||
(device_get_uclass_id(child) != UCLASS_USB_EMUL) &&
|
||||
(device_get_uclass_id(child) != UCLASS_BLK)) {
|
||||
usb_show_tree_graph(udev, pre);
|
||||
pre[index] = 0;
|
||||
|
@ -604,10 +606,12 @@ static void usb_show_info(struct usb_device *udev)
|
|||
child;
|
||||
device_find_next_child(&child)) {
|
||||
if (device_active(child) &&
|
||||
(device_get_uclass_id(child) != UCLASS_BOOTDEV) &&
|
||||
(device_get_uclass_id(child) != UCLASS_USB_EMUL) &&
|
||||
(device_get_uclass_id(child) != UCLASS_BLK)) {
|
||||
udev = dev_get_parent_priv(child);
|
||||
usb_show_info(udev);
|
||||
if (udev)
|
||||
usb_show_info(udev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -315,9 +315,7 @@ static void dwc_otg_core_host_init(struct udevice *dev,
|
|||
|
||||
/* Turn on the vbus power. */
|
||||
if (readl(®s->gintsts) & DWC2_GINTSTS_CURMODE_HOST) {
|
||||
hprt0 = readl(®s->hprt0);
|
||||
hprt0 &= ~(DWC2_HPRT0_PRTENA | DWC2_HPRT0_PRTCONNDET);
|
||||
hprt0 &= ~(DWC2_HPRT0_PRTENCHNG | DWC2_HPRT0_PRTOVRCURRCHNG);
|
||||
hprt0 = readl(®s->hprt0) & ~DWC2_HPRT0_W1C_MASK;
|
||||
if (!(hprt0 & DWC2_HPRT0_PRTPWR)) {
|
||||
hprt0 |= DWC2_HPRT0_PRTPWR;
|
||||
writel(hprt0, ®s->hprt0);
|
||||
|
@ -748,7 +746,7 @@ static int dwc_otg_submit_rh_msg_out(struct dwc2_priv *priv,
|
|||
case (USB_REQ_CLEAR_FEATURE << 8) | USB_RECIP_OTHER | USB_TYPE_CLASS:
|
||||
switch (wValue) {
|
||||
case USB_PORT_FEAT_C_CONNECTION:
|
||||
setbits_le32(®s->hprt0, DWC2_HPRT0_PRTCONNDET);
|
||||
clrsetbits_le32(®s->hprt0, DWC2_HPRT0_W1C_MASK, DWC2_HPRT0_PRTCONNDET);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -759,21 +757,13 @@ static int dwc_otg_submit_rh_msg_out(struct dwc2_priv *priv,
|
|||
break;
|
||||
|
||||
case USB_PORT_FEAT_RESET:
|
||||
clrsetbits_le32(®s->hprt0, DWC2_HPRT0_PRTENA |
|
||||
DWC2_HPRT0_PRTCONNDET |
|
||||
DWC2_HPRT0_PRTENCHNG |
|
||||
DWC2_HPRT0_PRTOVRCURRCHNG,
|
||||
DWC2_HPRT0_PRTRST);
|
||||
clrsetbits_le32(®s->hprt0, DWC2_HPRT0_W1C_MASK, DWC2_HPRT0_PRTRST);
|
||||
mdelay(50);
|
||||
clrbits_le32(®s->hprt0, DWC2_HPRT0_PRTRST);
|
||||
clrbits_le32(®s->hprt0, DWC2_HPRT0_W1C_MASK | DWC2_HPRT0_PRTRST);
|
||||
break;
|
||||
|
||||
case USB_PORT_FEAT_POWER:
|
||||
clrsetbits_le32(®s->hprt0, DWC2_HPRT0_PRTENA |
|
||||
DWC2_HPRT0_PRTCONNDET |
|
||||
DWC2_HPRT0_PRTENCHNG |
|
||||
DWC2_HPRT0_PRTOVRCURRCHNG,
|
||||
DWC2_HPRT0_PRTRST);
|
||||
clrsetbits_le32(®s->hprt0, DWC2_HPRT0_W1C_MASK, DWC2_HPRT0_PRTRST);
|
||||
break;
|
||||
|
||||
case USB_PORT_FEAT_ENABLE:
|
||||
|
@ -1213,14 +1203,9 @@ static int dwc2_init_common(struct udevice *dev, struct dwc2_priv *priv)
|
|||
dwc_otg_core_host_init(dev, regs);
|
||||
}
|
||||
|
||||
clrsetbits_le32(®s->hprt0, DWC2_HPRT0_PRTENA |
|
||||
DWC2_HPRT0_PRTCONNDET | DWC2_HPRT0_PRTENCHNG |
|
||||
DWC2_HPRT0_PRTOVRCURRCHNG,
|
||||
DWC2_HPRT0_PRTRST);
|
||||
clrsetbits_le32(®s->hprt0, DWC2_HPRT0_W1C_MASK, DWC2_HPRT0_PRTRST);
|
||||
mdelay(50);
|
||||
clrbits_le32(®s->hprt0, DWC2_HPRT0_PRTENA | DWC2_HPRT0_PRTCONNDET |
|
||||
DWC2_HPRT0_PRTENCHNG | DWC2_HPRT0_PRTOVRCURRCHNG |
|
||||
DWC2_HPRT0_PRTRST);
|
||||
clrbits_le32(®s->hprt0, DWC2_HPRT0_W1C_MASK | DWC2_HPRT0_PRTRST);
|
||||
|
||||
for (i = 0; i < MAX_DEVICE; i++) {
|
||||
for (j = 0; j < MAX_ENDPOINT; j++) {
|
||||
|
@ -1246,10 +1231,7 @@ static int dwc2_init_common(struct udevice *dev, struct dwc2_priv *priv)
|
|||
static void dwc2_uninit_common(struct dwc2_core_regs *regs)
|
||||
{
|
||||
/* Put everything in reset. */
|
||||
clrsetbits_le32(®s->hprt0, DWC2_HPRT0_PRTENA |
|
||||
DWC2_HPRT0_PRTCONNDET | DWC2_HPRT0_PRTENCHNG |
|
||||
DWC2_HPRT0_PRTOVRCURRCHNG,
|
||||
DWC2_HPRT0_PRTRST);
|
||||
clrsetbits_le32(®s->hprt0, DWC2_HPRT0_W1C_MASK, DWC2_HPRT0_PRTRST);
|
||||
}
|
||||
|
||||
#if !CONFIG_IS_ENABLED(DM_USB)
|
||||
|
|
|
@ -543,6 +543,10 @@ struct dwc2_core_regs {
|
|||
#define DWC2_HPRT0_PRTSPD_LOW (2 << 17)
|
||||
#define DWC2_HPRT0_PRTSPD_MASK (0x3 << 17)
|
||||
#define DWC2_HPRT0_PRTSPD_OFFSET 17
|
||||
#define DWC2_HPRT0_W1C_MASK (DWC2_HPRT0_PRTCONNDET | \
|
||||
DWC2_HPRT0_PRTENA | \
|
||||
DWC2_HPRT0_PRTENCHNG | \
|
||||
DWC2_HPRT0_PRTOVRCURRCHNG)
|
||||
#define DWC2_HAINT_CH0 (1 << 0)
|
||||
#define DWC2_HAINT_CH0_OFFSET 0
|
||||
#define DWC2_HAINT_CH1 (1 << 1)
|
||||
|
|
Loading…
Reference in a new issue