|
@@ -210,9 +210,6 @@ static int ehci_shutdown(struct ehci_ctrl *ctrl)
|
|
|
uint32_t cmd, reg;
|
|
|
int max_ports = HCS_N_PORTS(ehci_readl(&ctrl->hccr->cr_hcsparams));
|
|
|
|
|
|
- if (!ctrl || !ctrl->hcor)
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
cmd = ehci_readl(&ctrl->hcor->or_usbcmd);
|
|
|
/* If not run, directly return */
|
|
|
if (!(cmd & CMD_RUN))
|
|
@@ -1112,6 +1109,8 @@ int usb_lowlevel_init(int index, enum usb_init_type init, void **controller)
|
|
|
rc = ehci_hcd_init(index, init, &ctrl->hccr, &ctrl->hcor);
|
|
|
if (rc)
|
|
|
return rc;
|
|
|
+ if (!ctrl->hccr || !ctrl->hcor)
|
|
|
+ return -1;
|
|
|
if (init == USB_INIT_DEVICE)
|
|
|
goto done;
|
|
|
|
|
@@ -1613,11 +1612,14 @@ int ehci_register(struct udevice *dev, struct ehci_hccr *hccr,
|
|
|
{
|
|
|
struct usb_bus_priv *priv = dev_get_uclass_priv(dev);
|
|
|
struct ehci_ctrl *ctrl = dev_get_priv(dev);
|
|
|
- int ret;
|
|
|
+ int ret = -1;
|
|
|
|
|
|
debug("%s: dev='%s', ctrl=%p, hccr=%p, hcor=%p, init=%d\n", __func__,
|
|
|
dev->name, ctrl, hccr, hcor, init);
|
|
|
|
|
|
+ if (!ctrl || !hccr || !hcor)
|
|
|
+ goto err;
|
|
|
+
|
|
|
priv->desc_before_addr = true;
|
|
|
|
|
|
ehci_setup_ops(ctrl, ops);
|