static void sata_rcar_thaw(struct ata_port *ap)
  {
        struct sata_rcar_priv *priv = ap->host->private_data;
 +      void __iomem *base = priv->base;
  
        /* ack */
-       iowrite32(~SATA_RCAR_INT_MASK, base + SATAINTSTAT_REG);
 -      iowrite32(~(u32)SATA_RCAR_INT_MASK, priv->base + SATAINTSTAT_REG);
++      iowrite32(~(u32)SATA_RCAR_INT_MASK, base + SATAINTSTAT_REG);
  
        ata_sff_thaw(ap);
  
  static void sata_rcar_bmdma_start(struct ata_queued_cmd *qc)
  {
        struct ata_port *ap = qc->ap;
 -      u32 dmactl;
        struct sata_rcar_priv *priv = ap->host->private_data;
 +      void __iomem *base = priv->base;
 +      u32 dmactl;
  
        /* start host DMA transaction */
 -      dmactl = ioread32(priv->base + ATAPI_CONTROL1_REG);
 +      dmactl = ioread32(base + ATAPI_CONTROL1_REG);
+       dmactl &= ~ATAPI_CONTROL1_STOP;
        dmactl |= ATAPI_CONTROL1_START;
 -      iowrite32(dmactl, priv->base + ATAPI_CONTROL1_REG);
 +      iowrite32(dmactl, base + ATAPI_CONTROL1_REG);
  }
  
  static void sata_rcar_bmdma_stop(struct ata_queued_cmd *qc)
  
        spin_lock_irqsave(&host->lock, flags);
  
 -      sataintstat = ioread32(priv->base + SATAINTSTAT_REG);
 +      sataintstat = ioread32(base + SATAINTSTAT_REG);
+       sataintstat &= SATA_RCAR_INT_MASK;
        if (!sataintstat)
                goto done;
        /* ack */
-       iowrite32(sataintstat & ~SATA_RCAR_INT_MASK, base + SATAINTSTAT_REG);
 -      iowrite32(~sataintstat & 0x7ff, priv->base + SATAINTSTAT_REG);
++      iowrite32(~sataintstat & 0x7ff, base + SATAINTSTAT_REG);
  
        ap = host->ports[0];