Lines Matching refs:ap
226 static void sata_rcar_freeze(struct ata_port *ap) in sata_rcar_freeze() argument
228 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_freeze()
233 ata_sff_freeze(ap); in sata_rcar_freeze()
236 static void sata_rcar_thaw(struct ata_port *ap) in sata_rcar_thaw() argument
238 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_thaw()
244 ata_sff_thaw(ap); in sata_rcar_thaw()
269 static u8 sata_rcar_check_status(struct ata_port *ap) in sata_rcar_check_status() argument
271 return ioread32(ap->ioaddr.status_addr); in sata_rcar_check_status()
274 static u8 sata_rcar_check_altstatus(struct ata_port *ap) in sata_rcar_check_altstatus() argument
276 return ioread32(ap->ioaddr.altstatus_addr); in sata_rcar_check_altstatus()
279 static void sata_rcar_set_devctl(struct ata_port *ap, u8 ctl) in sata_rcar_set_devctl() argument
281 iowrite32(ctl, ap->ioaddr.ctl_addr); in sata_rcar_set_devctl()
284 static void sata_rcar_dev_select(struct ata_port *ap, unsigned int device) in sata_rcar_dev_select() argument
286 iowrite32(ATA_DEVICE_OBS, ap->ioaddr.device_addr); in sata_rcar_dev_select()
287 ata_sff_pause(ap); /* needed; also flushes, for mmio */ in sata_rcar_dev_select()
290 static unsigned int sata_rcar_ata_devchk(struct ata_port *ap, in sata_rcar_ata_devchk() argument
293 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_ata_devchk()
296 sata_rcar_dev_select(ap, device); in sata_rcar_ata_devchk()
319 struct ata_port *ap = link->ap; in sata_rcar_wait_after_reset() local
321 ata_msleep(ap, ATA_WAIT_AFTER_RESET); in sata_rcar_wait_after_reset()
326 static int sata_rcar_bus_softreset(struct ata_port *ap, unsigned long deadline) in sata_rcar_bus_softreset() argument
328 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_bus_softreset()
330 DPRINTK("ata%u: bus reset via SRST\n", ap->print_id); in sata_rcar_bus_softreset()
333 iowrite32(ap->ctl, ioaddr->ctl_addr); in sata_rcar_bus_softreset()
335 iowrite32(ap->ctl | ATA_SRST, ioaddr->ctl_addr); in sata_rcar_bus_softreset()
337 iowrite32(ap->ctl, ioaddr->ctl_addr); in sata_rcar_bus_softreset()
338 ap->last_ctl = ap->ctl; in sata_rcar_bus_softreset()
341 return sata_rcar_wait_after_reset(&ap->link, deadline); in sata_rcar_bus_softreset()
347 struct ata_port *ap = link->ap; in sata_rcar_softreset() local
353 if (sata_rcar_ata_devchk(ap, 0)) in sata_rcar_softreset()
358 rc = sata_rcar_bus_softreset(ap, deadline); in sata_rcar_softreset()
372 static void sata_rcar_tf_load(struct ata_port *ap, in sata_rcar_tf_load() argument
375 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_tf_load()
378 if (tf->ctl != ap->last_ctl) { in sata_rcar_tf_load()
380 ap->last_ctl = tf->ctl; in sata_rcar_tf_load()
381 ata_wait_idle(ap); in sata_rcar_tf_load()
417 ata_wait_idle(ap); in sata_rcar_tf_load()
420 static void sata_rcar_tf_read(struct ata_port *ap, struct ata_taskfile *tf) in sata_rcar_tf_read() argument
422 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_tf_read()
424 tf->command = sata_rcar_check_status(ap); in sata_rcar_tf_read()
440 ap->last_ctl = tf->ctl; in sata_rcar_tf_read()
444 static void sata_rcar_exec_command(struct ata_port *ap, in sata_rcar_exec_command() argument
447 DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command); in sata_rcar_exec_command()
449 iowrite32(tf->command, ap->ioaddr.command_addr); in sata_rcar_exec_command()
450 ata_sff_pause(ap); in sata_rcar_exec_command()
457 struct ata_port *ap = qc->dev->link->ap; in sata_rcar_data_xfer() local
458 void __iomem *data_addr = ap->ioaddr.data_addr; in sata_rcar_data_xfer()
494 struct ata_port *ap; in sata_rcar_drain_fifo() local
500 ap = qc->ap; in sata_rcar_drain_fifo()
502 for (count = 0; (ap->ops->sff_check_status(ap) & ATA_DRQ) && in sata_rcar_drain_fifo()
504 ioread32(ap->ioaddr.data_addr); in sata_rcar_drain_fifo()
508 ata_port_dbg(ap, "drained %d bytes to clear DRQ\n", count); in sata_rcar_drain_fifo()
517 *val = ioread32(link->ap->ioaddr.scr_addr + (sc_reg << 2)); in sata_rcar_scr_read()
527 iowrite32(val, link->ap->ioaddr.scr_addr + (sc_reg << 2)); in sata_rcar_scr_write()
533 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_fill_sg() local
534 struct ata_bmdma_prd *prd = ap->bmdma_prd; in sata_rcar_bmdma_fill_sg()
567 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_setup() local
569 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_setup()
575 iowrite32(ap->bmdma_prd_dma, base + ATAPI_DTB_ADR_REG); in sata_rcar_bmdma_setup()
589 ap->ops->sff_exec_command(ap, &qc->tf); in sata_rcar_bmdma_setup()
594 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_start() local
595 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_start()
608 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_stop() local
609 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_stop()
622 ata_sff_dma_pause(ap); in sata_rcar_bmdma_stop()
625 static u8 sata_rcar_bmdma_status(struct ata_port *ap) in sata_rcar_bmdma_status() argument
627 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_status()
679 static void sata_rcar_serr_interrupt(struct ata_port *ap) in sata_rcar_serr_interrupt() argument
681 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_serr_interrupt()
682 struct ata_eh_info *ehi = &ap->link.eh_info; in sata_rcar_serr_interrupt()
705 ata_port_freeze(ap); in sata_rcar_serr_interrupt()
707 ata_port_abort(ap); in sata_rcar_serr_interrupt()
710 static void sata_rcar_ata_interrupt(struct ata_port *ap) in sata_rcar_ata_interrupt() argument
715 qc = ata_qc_from_tag(ap, ap->link.active_tag); in sata_rcar_ata_interrupt()
717 handled |= ata_bmdma_port_intr(ap, qc); in sata_rcar_ata_interrupt()
721 sata_rcar_check_status(ap); in sata_rcar_ata_interrupt()
730 struct ata_port *ap; in sata_rcar_interrupt() local
743 ap = host->ports[0]; in sata_rcar_interrupt()
746 sata_rcar_ata_interrupt(ap); in sata_rcar_interrupt()
749 sata_rcar_serr_interrupt(ap); in sata_rcar_interrupt()
760 struct ata_port *ap = host->ports[0]; in sata_rcar_setup_port() local
761 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_setup_port()
765 ap->ops = &sata_rcar_port_ops; in sata_rcar_setup_port()
766 ap->pio_mask = ATA_PIO4; in sata_rcar_setup_port()
767 ap->udma_mask = ATA_UDMA6; in sata_rcar_setup_port()
768 ap->flags |= ATA_FLAG_SATA; in sata_rcar_setup_port()
771 ap->flags |= ATA_FLAG_NO_DIPM; in sata_rcar_setup_port()