> 
> Simply reading this patch shows that it contains at least two errors.
Thanks for review.

> 
> > @@ -4187,6 +4190,10 @@ static void hub_port_connect_change(struct
> usb_hub *hub, int port1,
> >             }
> >     }
> >
> > +   if (hcd->phy && !hdev->parent &&
> > +           !(portstatus & USB_PORT_STAT_CONNECTION))
> > +                   usb_phy_notify_disconnect(hcd->phy, udev->speed);
> 
> What happens if udev is NULL (see the test in the next statement)?
> 

I will add the condition of (udev), the thing I want to do is: 
when the device is disconnected, the pcd interrupt will occur, and
the code will be there, I need to tell the phy driver, the disconnection
occurs, and the speed of the disconnected usb device.

> > +
> >     /* Disconnect any existing devices under this port */
> >     if (udev)
> >             usb_disconnect(&hub->ports[port1 - 1]->child);
> > @@ -4212,13 +4219,6 @@ static void hub_port_connect_change(struct
> usb_hub *hub, int port1,
> >             }
> >     }
> >
> > -   if (hcd->phy && !hdev->parent) {
> > -           if (portstatus & USB_PORT_STAT_CONNECTION)
> > -                   usb_phy_notify_connect(hcd->phy, port1);
> > -           else
> > -                   usb_phy_notify_disconnect(hcd->phy, port1);
> 
> Is the second argument supposed to be a port number, like here, or a
> speed value, like above?  Clearly something is wrong, either in the old
> code or in the new code.
> 
The first patch at this patchset changes the API of usb_phy_notify_disconnect:

-       /* notify phy connect status change */
-       int     (*notify_connect)(struct usb_phy *x, int port);
-       int     (*notify_disconnect)(struct usb_phy *x, int port);
+       /*
+        * Notify phy that
+        * - The controller's connect status change.
+        * - The controller's suspend/resume occurs, and the device
+        * is on the port.
+        */
+       int     (*notify_connect)(struct usb_phy *x,
+                       enum usb_device_speed speed);
+       int     (*notify_disconnect)(struct usb_phy *x,
+                       enum usb_device_speed speed);

> Alan Stern
> 


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

Reply via email to