Hi,

On 01-05-15 06:11, Simon Glass wrote:
Hi Hans,

On 30 April 2015 at 08:35, Hans de Goede <hdego...@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 <hdego...@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);
+       return dev_get_priv(udev->controller_dev);
  #else
         return udev->controller;
  #endif

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
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to