IRING
i810_writel(IRING, mmio, par->cur_tail);
tmp = i810_readl(IRING + 12, mmio);
i810_writel(IRING + 12, mmio, tmp);
i810_writel(IRING, mmio, 0);
i810_writel(IRING + 4, mmio, 0);
tmp2 = i810_readl(IRING + 8, mmio) & ~RBUFFER_START_MASK;
i810_writel(IRING + 8, mmio, tmp2 | tmp1);
tmp1 = i810_readl(IRING + 12, mmio);
i810_writel(IRING + 12, mmio, tmp1 | tmp2);
head = i810_readl(IRING + 4, mmio) & RBUFFER_HEAD_MASK;