On 3/8/21 4:35 AM, Ye Li wrote:
[...]
+static int ehci_iaa_cycle(struct ehci_ctrl *ctrl)
+{
+       u32 cmd, status;
+       int ret;
+
+       /* Enable Interrupt on Async Advance Doorbell. */
+       cmd = ehci_readl(&ctrl->hcor->or_usbcmd);
+       cmd |= CMD_IAAD;
+       ehci_writel(&ctrl->hcor->or_usbcmd, cmd);
+
+       ret = handshake((uint32_t *)&ctrl->hcor->or_usbsts, STS_IAA, STS_IAA,

Is the (uint32_t *) cast really needed ?

+                       10 * 1000); /* 10ms timeout */
+       if (ret < 0)
+               printf("EHCI fail timeout STS_IAA set\n");

Shouldn't there be some abort ^ if ret < 0 ?
Also, add the return value into the printf, it is useful for debugging.

+       status = ehci_readl(&ctrl->hcor->or_usbsts);
+       if ((status & STS_IAA))

Drop the double parenthesis here, one set of () is enough.

+               ehci_writel(&ctrl->hcor->or_usbsts, STS_IAA);
+
+       return ret;
+}

Is this a bugfix for this release or is this for next release ?
We're in rc3 already, so I would suggest to be careful.

Reply via email to