mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-30 10:11:45 +02:00
usb: Correct CLEAR_FEATURE code in ehci-hcd
This commit broke USB2 on link (Chromebook Pixel): 020bbcb usb: hub: Power-cycle on root-hub ports However the root cause seems to be a missing mask and missing 'break' in ehci-hcd.c. This patch fixes both. On link, 'usb start' with a USB keyboard and memory stick inserted now finds both. The keyboard works as expected. Also ext2ls shows a directory listing from the memory stick. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
5da2dc9789
commit
ed10e66aba
@ -809,21 +809,23 @@ ehci_submit_root(struct usb_device *dev, unsigned long pipe, void *buffer,
|
|||||||
break;
|
break;
|
||||||
case USB_REQ_CLEAR_FEATURE | ((USB_DIR_OUT | USB_RT_PORT) << 8):
|
case USB_REQ_CLEAR_FEATURE | ((USB_DIR_OUT | USB_RT_PORT) << 8):
|
||||||
reg = ehci_readl(status_reg);
|
reg = ehci_readl(status_reg);
|
||||||
|
reg &= ~EHCI_PS_CLEAR;
|
||||||
switch (le16_to_cpu(req->value)) {
|
switch (le16_to_cpu(req->value)) {
|
||||||
case USB_PORT_FEAT_ENABLE:
|
case USB_PORT_FEAT_ENABLE:
|
||||||
reg &= ~EHCI_PS_PE;
|
reg &= ~EHCI_PS_PE;
|
||||||
break;
|
break;
|
||||||
case USB_PORT_FEAT_C_ENABLE:
|
case USB_PORT_FEAT_C_ENABLE:
|
||||||
reg = (reg & ~EHCI_PS_CLEAR) | EHCI_PS_PE;
|
reg |= EHCI_PS_PE;
|
||||||
break;
|
break;
|
||||||
case USB_PORT_FEAT_POWER:
|
case USB_PORT_FEAT_POWER:
|
||||||
if (HCS_PPC(ehci_readl(&ctrl->hccr->cr_hcsparams)))
|
if (HCS_PPC(ehci_readl(&ctrl->hccr->cr_hcsparams)))
|
||||||
reg = reg & ~(EHCI_PS_CLEAR | EHCI_PS_PP);
|
reg &= ~EHCI_PS_PP;
|
||||||
|
break;
|
||||||
case USB_PORT_FEAT_C_CONNECTION:
|
case USB_PORT_FEAT_C_CONNECTION:
|
||||||
reg = (reg & ~EHCI_PS_CLEAR) | EHCI_PS_CSC;
|
reg |= EHCI_PS_CSC;
|
||||||
break;
|
break;
|
||||||
case USB_PORT_FEAT_OVER_CURRENT:
|
case USB_PORT_FEAT_OVER_CURRENT:
|
||||||
reg = (reg & ~EHCI_PS_CLEAR) | EHCI_PS_OCC;
|
reg |= EHCI_PS_OCC;
|
||||||
break;
|
break;
|
||||||
case USB_PORT_FEAT_C_RESET:
|
case USB_PORT_FEAT_C_RESET:
|
||||||
ctrl->portreset &= ~(1 << port);
|
ctrl->portreset &= ~(1 << port);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user