AMD_BIT
#define AMD_UNMASK_BIT(bit_stub_name) (~AMD_BIT(bit_stub_name))
#define AMD_CLEAR_BIT(bit_stub_name) (~AMD_BIT(bit_stub_name))
writel(AMD_BIT(UDC_DEVCFG_SOFTRESET), &dev->regs->cfg);
while (td && !(td->status & AMD_BIT(UDC_DMA_IN_STS_L))) {
tmp |= AMD_BIT(UDC_DEVCTL_RDE);
tmp |= AMD_BIT(UDC_DEVCTL_CSR_DONE);
tmp |= AMD_BIT(UDC_EPCTL_CNAK);
tmp |= AMD_BIT(UDC_EPCTL_CNAK);
tmp |= AMD_BIT(UDC_EPCTL_S);
tmp |= AMD_BIT(UDC_EPCTL_CNAK);
tmp |= AMD_BIT(UDC_DEVCTL_RES);
tmp |= AMD_BIT(UDC_DEVCFG_CSR_PRG);
tmp |= AMD_BIT(UDC_DEVCFG_SP);
tmp |= AMD_BIT(UDC_DEVCFG_RWKP);
reg |= AMD_BIT(UDC_EPCTL_SNAK);
writel(AMD_BIT(UDC_DEVCFG_SOFTRESET), &dev->regs->cfg);
tmp |= AMD_BIT(UDC_DEVCTL_RDE);
& AMD_BIT(UDC_DEVSTS_RXFIFO_EMPTY)) {
if (!(tmp & AMD_BIT(UDC_EPCTL_S))) {
tmp |= AMD_BIT(UDC_EPCTL_CNAK);
tmp |= AMD_BIT(UDC_EPCTL_F);
AMD_BIT(UDC_DMA_OUT_STS_L);
tmp |= AMD_BIT(UDC_DEVCTL_MODE)
| AMD_BIT(UDC_DEVCTL_RDE)
| AMD_BIT(UDC_DEVCTL_TDE);
tmp |= AMD_BIT(UDC_DEVCTL_BF);
tmp |= AMD_BIT(UDC_DEVCTL_DU);
tmp |= AMD_BIT(UDC_EPCTL_CNAK);
tmp |= AMD_BIT(UDC_EPCTL_CNAK);
tmp |= AMD_BIT(UDC_DEVCTL_SD);
reg |= AMD_BIT(UDC_EPCTL_CNAK);
reg |= AMD_BIT(UDC_EPCTL_CNAK);
if (tmp & AMD_BIT(UDC_EPSTS_BNA)) {
writel(tmp | AMD_BIT(UDC_EPSTS_BNA), &ep->regs->sts);
if (tmp & AMD_BIT(UDC_EPSTS_HE)) {
writel(tmp | AMD_BIT(UDC_EPSTS_HE), &ep->regs->sts);
tmp = AMD_BIT(UDC_DEVINT_SVC) |
AMD_BIT(UDC_DEVINT_ENUM) |
AMD_BIT(UDC_DEVINT_US) |
AMD_BIT(UDC_DEVINT_UR) |
if (readl(&dev->regs->sts) & AMD_BIT(UDC_DEVSTS_RXFIFO_EMPTY))
AMD_BIT(UDC_DEVINT_ES) |
AMD_BIT(UDC_DEVINT_SI) |
AMD_BIT(UDC_DEVINT_SOF)|
if (epsts & AMD_BIT(UDC_EPSTS_BNA)) {
AMD_BIT(UDC_DEVINT_SC);
if (epsts & AMD_BIT(UDC_EPSTS_HE)) {
writel(epsts | AMD_BIT(UDC_EPSTS_HE), &ep->regs->sts);
if (epsts & AMD_BIT(UDC_EPSTS_TDC)) {
tmp |= AMD_BIT(ep->num);
if ((epsts & AMD_BIT(UDC_EPSTS_IN))
&& !(epsts & AMD_BIT(UDC_EPSTS_TDC))) {
tmp |= AMD_BIT(UDC_EPCTL_P);
tmp |= AMD_BIT(ep->num);
writel(AMD_BIT(UDC_EPINT_OUT_EP0), &dev->regs->ep_irqsts);
if (tmp & AMD_BIT(UDC_EPSTS_BNA)) {
writel(AMD_BIT(UDC_EPSTS_BNA),
tmp |= AMD_BIT(UDC_EPCTL_SNAK);
tmp |= AMD_BIT(UDC_EPCTL_CNAK);
tmp |= AMD_BIT(UDC_EPCTL_S);
tmp |= AMD_BIT(UDC_EPCTL_CNAK);
if (readl(&dev->regs->sts) & AMD_BIT(UDC_DEVSTS_RXFIFO_EMPTY))
writel(AMD_BIT(UDC_EPINT_IN_EP0), &dev->regs->ep_irqsts);
if (tmp & AMD_BIT(UDC_EPSTS_TDC)) {
writel(AMD_BIT(UDC_EPSTS_TDC),
} else if (tmp & AMD_BIT(UDC_EPSTS_IN)) {
writel(AMD_BIT(UDC_EPSTS_IN),
tmp |= AMD_BIT(UDC_EPCTL_S);
tmp |= AMD_BIT(UDC_EPCTL_P);
writel(AMD_BIT(UDC_EPSTS_IN),
if (dev_irq & AMD_BIT(UDC_DEVINT_SC)) {
if (dev_irq & AMD_BIT(UDC_DEVINT_SI)) {
if (dev_irq & AMD_BIT(UDC_DEVINT_UR)) {
if (!(tmp & AMD_BIT(UDC_DEVSTS_RXFIFO_EMPTY))
writel(tmp | AMD_BIT(UDC_DEVCFG_DMARST), &dev->regs->cfg);
if (dev_irq & AMD_BIT(UDC_DEVINT_US)) {
if (dev_irq & AMD_BIT(UDC_DEVINT_ENUM)) {
if (dev_irq & AMD_BIT(UDC_DEVINT_SVC)) {
if (!(tmp & AMD_BIT(UDC_DEVSTS_SESSVLD))) {
tmp |= AMD_BIT(UDC_DEVINT_US);
if (reg & AMD_BIT(UDC_EPINT_OUT_EP0))
if (reg & AMD_BIT(UDC_EPINT_IN_EP0))
if (readl(&ep->regs->ctl) & AMD_BIT(UDC_EPCTL_NAK)) {
reg |= AMD_BIT(UDC_DEVCTL_SD);
tmp |= AMD_BIT(UDC_EPCTL_F);
tmp |= AMD_BIT(UDC_EPCTL_CNAK);
tmp |= AMD_BIT(UDC_EPCTL_SNAK);
tmp |= AMD_BIT(ep->num);
tmp |= AMD_BIT(UDC_EPSTS_IN);
tmp |= AMD_BIT(UDC_EPCTL_F);
req->td_data->status |= AMD_BIT(UDC_DMA_IN_STS_L);
td->status |= AMD_BIT(UDC_DMA_IN_STS_L);
req->td_data->status |= AMD_BIT(UDC_DMA_IN_STS_L);
tmp |= AMD_BIT(UDC_EPCTL_CNAK);
while (td && !(td->status & AMD_BIT(UDC_DMA_IN_STS_L)))
reg |= AMD_BIT(UDC_DEVCTL_SRX_FLUSH);
reg &= ~(AMD_BIT(UDC_DEVCTL_SRX_FLUSH));