
8 Mar
2021
8 Mar
'21
9:50 a.m.
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.