Lines Matching refs:ap
222 static void sata_rcar_freeze(struct ata_port *ap) in sata_rcar_freeze() argument
224 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_freeze()
229 ata_sff_freeze(ap); in sata_rcar_freeze()
232 static void sata_rcar_thaw(struct ata_port *ap) in sata_rcar_thaw() argument
234 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_thaw()
240 ata_sff_thaw(ap); in sata_rcar_thaw()
265 static u8 sata_rcar_check_status(struct ata_port *ap) in sata_rcar_check_status() argument
267 return ioread32(ap->ioaddr.status_addr); in sata_rcar_check_status()
270 static u8 sata_rcar_check_altstatus(struct ata_port *ap) in sata_rcar_check_altstatus() argument
272 return ioread32(ap->ioaddr.altstatus_addr); in sata_rcar_check_altstatus()
275 static void sata_rcar_set_devctl(struct ata_port *ap, u8 ctl) in sata_rcar_set_devctl() argument
277 iowrite32(ctl, ap->ioaddr.ctl_addr); in sata_rcar_set_devctl()
280 static void sata_rcar_dev_select(struct ata_port *ap, unsigned int device) in sata_rcar_dev_select() argument
282 iowrite32(ATA_DEVICE_OBS, ap->ioaddr.device_addr); in sata_rcar_dev_select()
283 ata_sff_pause(ap); /* needed; also flushes, for mmio */ in sata_rcar_dev_select()
286 static unsigned int sata_rcar_ata_devchk(struct ata_port *ap, in sata_rcar_ata_devchk() argument
289 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_ata_devchk()
292 sata_rcar_dev_select(ap, device); in sata_rcar_ata_devchk()
315 struct ata_port *ap = link->ap; in sata_rcar_wait_after_reset() local
317 ata_msleep(ap, ATA_WAIT_AFTER_RESET); in sata_rcar_wait_after_reset()
322 static int sata_rcar_bus_softreset(struct ata_port *ap, unsigned long deadline) in sata_rcar_bus_softreset() argument
324 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_bus_softreset()
326 DPRINTK("ata%u: bus reset via SRST\n", ap->print_id); in sata_rcar_bus_softreset()
329 iowrite32(ap->ctl, ioaddr->ctl_addr); in sata_rcar_bus_softreset()
331 iowrite32(ap->ctl | ATA_SRST, ioaddr->ctl_addr); in sata_rcar_bus_softreset()
333 iowrite32(ap->ctl, ioaddr->ctl_addr); in sata_rcar_bus_softreset()
334 ap->last_ctl = ap->ctl; in sata_rcar_bus_softreset()
337 return sata_rcar_wait_after_reset(&ap->link, deadline); in sata_rcar_bus_softreset()
343 struct ata_port *ap = link->ap; in sata_rcar_softreset() local
349 if (sata_rcar_ata_devchk(ap, 0)) in sata_rcar_softreset()
354 rc = sata_rcar_bus_softreset(ap, deadline); in sata_rcar_softreset()
368 static void sata_rcar_tf_load(struct ata_port *ap, in sata_rcar_tf_load() argument
371 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_tf_load()
374 if (tf->ctl != ap->last_ctl) { in sata_rcar_tf_load()
376 ap->last_ctl = tf->ctl; in sata_rcar_tf_load()
377 ata_wait_idle(ap); in sata_rcar_tf_load()
413 ata_wait_idle(ap); in sata_rcar_tf_load()
416 static void sata_rcar_tf_read(struct ata_port *ap, struct ata_taskfile *tf) in sata_rcar_tf_read() argument
418 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_tf_read()
420 tf->command = sata_rcar_check_status(ap); in sata_rcar_tf_read()
436 ap->last_ctl = tf->ctl; in sata_rcar_tf_read()
440 static void sata_rcar_exec_command(struct ata_port *ap, in sata_rcar_exec_command() argument
443 DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command); in sata_rcar_exec_command()
445 iowrite32(tf->command, ap->ioaddr.command_addr); in sata_rcar_exec_command()
446 ata_sff_pause(ap); in sata_rcar_exec_command()
453 struct ata_port *ap = qc->dev->link->ap; in sata_rcar_data_xfer() local
454 void __iomem *data_addr = ap->ioaddr.data_addr; in sata_rcar_data_xfer()
490 struct ata_port *ap; in sata_rcar_drain_fifo() local
496 ap = qc->ap; in sata_rcar_drain_fifo()
498 for (count = 0; (ap->ops->sff_check_status(ap) & ATA_DRQ) && in sata_rcar_drain_fifo()
500 ioread32(ap->ioaddr.data_addr); in sata_rcar_drain_fifo()
504 ata_port_dbg(ap, "drained %d bytes to clear DRQ\n", count); in sata_rcar_drain_fifo()
513 *val = ioread32(link->ap->ioaddr.scr_addr + (sc_reg << 2)); in sata_rcar_scr_read()
523 iowrite32(val, link->ap->ioaddr.scr_addr + (sc_reg << 2)); in sata_rcar_scr_write()
529 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_fill_sg() local
530 struct ata_bmdma_prd *prd = ap->bmdma_prd; in sata_rcar_bmdma_fill_sg()
565 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_setup() local
567 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_setup()
573 iowrite32(ap->bmdma_prd_dma, base + ATAPI_DTB_ADR_REG); in sata_rcar_bmdma_setup()
587 ap->ops->sff_exec_command(ap, &qc->tf); in sata_rcar_bmdma_setup()
592 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_start() local
593 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_start()
606 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_stop() local
607 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_stop()
620 ata_sff_dma_pause(ap); in sata_rcar_bmdma_stop()
623 static u8 sata_rcar_bmdma_status(struct ata_port *ap) in sata_rcar_bmdma_status() argument
625 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_status()
677 static void sata_rcar_serr_interrupt(struct ata_port *ap) in sata_rcar_serr_interrupt() argument
679 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_serr_interrupt()
680 struct ata_eh_info *ehi = &ap->link.eh_info; in sata_rcar_serr_interrupt()
703 ata_port_freeze(ap); in sata_rcar_serr_interrupt()
705 ata_port_abort(ap); in sata_rcar_serr_interrupt()
708 static void sata_rcar_ata_interrupt(struct ata_port *ap) in sata_rcar_ata_interrupt() argument
713 qc = ata_qc_from_tag(ap, ap->link.active_tag); in sata_rcar_ata_interrupt()
715 handled |= ata_bmdma_port_intr(ap, qc); in sata_rcar_ata_interrupt()
719 sata_rcar_check_status(ap); in sata_rcar_ata_interrupt()
728 struct ata_port *ap; in sata_rcar_interrupt() local
741 ap = host->ports[0]; in sata_rcar_interrupt()
744 sata_rcar_ata_interrupt(ap); in sata_rcar_interrupt()
747 sata_rcar_serr_interrupt(ap); in sata_rcar_interrupt()
758 struct ata_port *ap = host->ports[0]; in sata_rcar_setup_port() local
759 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_setup_port()
763 ap->ops = &sata_rcar_port_ops; in sata_rcar_setup_port()
764 ap->pio_mask = ATA_PIO4; in sata_rcar_setup_port()
765 ap->udma_mask = ATA_UDMA6; in sata_rcar_setup_port()
766 ap->flags |= ATA_FLAG_SATA; in sata_rcar_setup_port()
769 ap->flags |= ATA_FLAG_NO_DIPM; in sata_rcar_setup_port()