Re: [PATCH v6 part2 2/8] usb: usb3 ports do not support FEAT_C_ENABLE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2014-03-14 at 12:12 -0400, Alan Stern wrote:
> On Thu, 13 Mar 2014, Dan Williams wrote:
> 
> > The port pm_runtime implementation unconditionally clears FEAT_C_ENABLE
> > after clearing PORT_POWER, but the bit is reserved on usb3 hub ports.
> > We expect khubd to be prevented from running because the port state is
> > not RPM_ACTIVE, so we need to clear any errors for usb2 ports.
> > 
> > Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>
> > ---
> >  drivers/usb/core/port.c |    3 ++-
> >  1 files changed, 2 insertions(+), 1 deletions(-)
> > 
> > diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c
> > index 96f7a29e2ac6..0ff5854c9581 100644
> > --- a/drivers/usb/core/port.c
> > +++ b/drivers/usb/core/port.c
> > @@ -136,7 +136,8 @@ static int usb_port_runtime_suspend(struct device *dev)
> >  	set_bit(port1, hub->busy_bits);
> >  	retval = usb_hub_set_port_power(hdev, hub, port1, false);
> >  	usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_CONNECTION);
> > -	usb_clear_port_feature(hdev, port1,	USB_PORT_FEAT_C_ENABLE);
> > +	if (!hub_is_superspeed(hdev))
> 
> Maybe use !port->is_superspeed instead.

Sure.

8<-----
Subject: usb: usb3 ports do not support FEAT_C_ENABLE

From: Dan Williams <dan.j.williams@xxxxxxxxx>

The port pm_runtime implementation unconditionally clears FEAT_C_ENABLE
after clearing PORT_POWER, but the bit is reserved on usb3 hub ports.
We expect khubd to be prevented from running because the port state is
not RPM_ACTIVE, so we need to clear any errors for usb2 ports.

Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>
---
 drivers/usb/core/port.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c
index 191d7c3c9791..4917473de203 100644
--- a/drivers/usb/core/port.c
+++ b/drivers/usb/core/port.c
@@ -136,7 +136,8 @@ static int usb_port_runtime_suspend(struct device *dev)
 	set_bit(port1, hub->busy_bits);
 	retval = usb_hub_set_port_power(hdev, hub, port1, false);
 	usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_CONNECTION);
-	usb_clear_port_feature(hdev, port1,	USB_PORT_FEAT_C_ENABLE);
+	if (!port_dev->is_superspeed)
+		usb_clear_port_feature(hdev, port1, USB_PORT_FEAT_C_ENABLE);
 	clear_bit(port1, hub->busy_bits);
 	usb_autopm_put_interface(intf);
 


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux