[U-Boot] [PATCH] usb: ehci: only shutdown opened controller

Marek Vasut marex at denx.de
Thu Jun 16 00:00:00 CEST 2016


On 06/15/2016 07:15 AM, Peng Fan wrote:
> If the usb controller is not running, no need to shutdown it,
> otherwise `usb stop` complains about:
> "EHCI failed to shut down host controller".
> 
> To i.MX7D SDB, there are two usb ports, one Host, one OTG.
> If we only plug one udisk to the Host port and then `usb start`,
> the OTG controller for OTG port does not run actually. Then,
> if `usb stop`, the OTG controller for OTG port will also be
> shutdown, but it is not running.
> 
> This patch adds a check to only shutdown the running controller.
> 
> Signed-off-by: Peng Fan <peng.fan at nxp.com>
> Cc: Marek Vasut <marex at denx.de>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Mateusz Kulikowski <mateusz.kulikowski at gmail.com>
> Cc: Hans de Goede <hdegoede at redhat.com>
> Cc: "Stefan Brüns" <stefan.bruens at rwth-aachen.de>
> Cc: Stephen Warren <swarren at nvidia.com>

Acked-by: Marek Vasut <marex at denx.de>

> ---
>  drivers/usb/host/ehci-hcd.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
> index fa5d584..13aa70d 100644
> --- a/drivers/usb/host/ehci-hcd.c
> +++ b/drivers/usb/host/ehci-hcd.c
> @@ -210,6 +210,9 @@ static int ehci_shutdown(struct ehci_ctrl *ctrl)
>  		return -EINVAL;
>  
>  	cmd = ehci_readl(&ctrl->hcor->or_usbcmd);
> +	/* If not run, directly return */
> +	if (!(cmd & CMD_RUN))
> +		return 0;
>  	cmd &= ~(CMD_PSE | CMD_ASE);
>  	ehci_writel(&ctrl->hcor->or_usbcmd, cmd);
>  	ret = handshake(&ctrl->hcor->or_usbsts, STS_ASS | STS_PSS, 0,
> 


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list