From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Date: Fri, 01 May 2015 10:03:51 +0200 Subject: [U-Boot] [PATCH 2/8] dm: usb: Use controller_dev in dm ehci code In-Reply-To: References: <1430404524-31413-1-git-send-email-hdegoede@redhat.com> <1430404524-31413-3-git-send-email-hdegoede@redhat.com> Message-ID: <55433367.9060003@redhat.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, On 01-05-15 06:11, Simon Glass wrote: > Hi Hans, > > On 30 April 2015 at 08:35, Hans de Goede 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 >> --- >> 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