
Hi,
On 01-05-15 06:11, Simon Glass wrote:
Hi Hans,
On 30 April 2015 at 08:35, Hans de Goede hdegoede@redhat.com wrote:
Use the controller_dev pointer in the ehci hcd code rather then going up the tree till we find the first UCLASS_USB device.
Signed-off-by: Hans de Goede hdegoede@redhat.com
drivers/usb/host/ehci-hcd.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index bd9861d..19f1e29 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -125,14 +125,7 @@ static struct descriptor { static struct ehci_ctrl *ehci_get_ctrl(struct usb_device *udev) { #ifdef CONFIG_DM_USB
struct udevice *dev;
/* Find the USB controller */
for (dev = udev->dev;
device_get_uclass_id(dev) != UCLASS_USB;
dev = dev->parent)
;
return dev_get_priv(dev);
#else return udev->controller; #endifreturn dev_get_priv(udev->controller_dev);
My intent was to remove udev->controller_dev, since I was hoping to remove all pointers other than those maintained by driver model. Does this patch actually fix a bug?
I initially wrote this because my plan was to set usb_device.dev to NULL during the initial probing in usb_scan_device, as setting it to parent at that point is somewhat bogus.
I dropped the setting of usb_device.dev to NULL later because I was afraid it may cause regressions for other hcd code. But I kept this as it seemed like a nice cleanup.
I still think this needs a bit of cleanup, if we keep doing the lookup this way, at least it should use usb_get_bus rather then looping itself.
I'll put a patch for that in v2 of this set replacing this one.
Regards,
Hans