From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Warren Date: Tue, 15 Mar 2016 09:42:13 -0600 Subject: [U-Boot] [PATCH v3 4/4] usb: Change power-on / scanning timeout handling In-Reply-To: <56E7DA0C.2000202@denx.de> References: <1457950693-564-1-git-send-email-sr@denx.de> <1457950693-564-5-git-send-email-sr@denx.de> <56E6F555.5020807@wwwdotorg.org> <56E7DA0C.2000202@denx.de> Message-ID: <56E82D55.5090109@wwwdotorg.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 03/15/2016 03:46 AM, Stefan Roese wrote: > Hi Stephan, > > On 14.03.2016 18:31, Stephen Warren wrote: >> On 03/14/2016 04:18 AM, Stefan Roese wrote: >>> This patch changes the USB port scanning procedure and timeout >>> handling in the following ways: >>> +static int usb_device_list_scan(void) >> ... >>> + static int running; >>> + int ret = 0; >>> + >>> + /* Only run this loop once for each controller */ >>> + if (running) >>> + return 0; >>> + >>> + running = 1; >> ... >>> +out: >>> + /* >>> + * This USB controller has has finished scanning all its connected >>> + * USB devices. Set "running" back to 0, so that other USB >>> controllers >>> + * will scan their devices too. >>> + */ >>> + running = 0; >> >> Doesn't this function only get called a single time from >> usb_hub_configure()? If so, I don't think the "running" variable is >> required. > > Its called recursively, if hubs are stacked. So its called e.g. > 5 times in this setup: > > => usb tree > USB device tree: > 1 Hub (480 Mb/s, 0mA) > | u-boot EHCI Host Controller > | > +-2 Hub (480 Mb/s, 0mA) > | > +-3 Hub (480 Mb/s, 100mA) >... Ah right. Mentioning recursion in the variable name or comment would be useful.