Lines Matching refs:ap

218 static void sata_rcar_freeze(struct ata_port *ap)  in sata_rcar_freeze()  argument
220 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_freeze()
225 ata_sff_freeze(ap); in sata_rcar_freeze()
228 static void sata_rcar_thaw(struct ata_port *ap) in sata_rcar_thaw() argument
230 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_thaw()
236 ata_sff_thaw(ap); in sata_rcar_thaw()
261 static u8 sata_rcar_check_status(struct ata_port *ap) in sata_rcar_check_status() argument
263 return ioread32(ap->ioaddr.status_addr); in sata_rcar_check_status()
266 static u8 sata_rcar_check_altstatus(struct ata_port *ap) in sata_rcar_check_altstatus() argument
268 return ioread32(ap->ioaddr.altstatus_addr); in sata_rcar_check_altstatus()
271 static void sata_rcar_set_devctl(struct ata_port *ap, u8 ctl) in sata_rcar_set_devctl() argument
273 iowrite32(ctl, ap->ioaddr.ctl_addr); in sata_rcar_set_devctl()
276 static void sata_rcar_dev_select(struct ata_port *ap, unsigned int device) in sata_rcar_dev_select() argument
278 iowrite32(ATA_DEVICE_OBS, ap->ioaddr.device_addr); in sata_rcar_dev_select()
279 ata_sff_pause(ap); /* needed; also flushes, for mmio */ in sata_rcar_dev_select()
282 static bool sata_rcar_ata_devchk(struct ata_port *ap, unsigned int device) in sata_rcar_ata_devchk() argument
284 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_ata_devchk()
287 sata_rcar_dev_select(ap, device); in sata_rcar_ata_devchk()
310 struct ata_port *ap = link->ap; in sata_rcar_wait_after_reset() local
312 ata_msleep(ap, ATA_WAIT_AFTER_RESET); in sata_rcar_wait_after_reset()
317 static int sata_rcar_bus_softreset(struct ata_port *ap, unsigned long deadline) in sata_rcar_bus_softreset() argument
319 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_bus_softreset()
322 iowrite32(ap->ctl, ioaddr->ctl_addr); in sata_rcar_bus_softreset()
324 iowrite32(ap->ctl | ATA_SRST, ioaddr->ctl_addr); in sata_rcar_bus_softreset()
326 iowrite32(ap->ctl, ioaddr->ctl_addr); in sata_rcar_bus_softreset()
327 ap->last_ctl = ap->ctl; in sata_rcar_bus_softreset()
330 return sata_rcar_wait_after_reset(&ap->link, deadline); in sata_rcar_bus_softreset()
336 struct ata_port *ap = link->ap; in sata_rcar_softreset() local
342 if (sata_rcar_ata_devchk(ap, 0)) in sata_rcar_softreset()
346 rc = sata_rcar_bus_softreset(ap, deadline); in sata_rcar_softreset()
359 static void sata_rcar_tf_load(struct ata_port *ap, in sata_rcar_tf_load() argument
362 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_tf_load()
365 if (tf->ctl != ap->last_ctl) { in sata_rcar_tf_load()
367 ap->last_ctl = tf->ctl; in sata_rcar_tf_load()
368 ata_wait_idle(ap); in sata_rcar_tf_load()
390 ata_wait_idle(ap); in sata_rcar_tf_load()
393 static void sata_rcar_tf_read(struct ata_port *ap, struct ata_taskfile *tf) in sata_rcar_tf_read() argument
395 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_tf_read()
397 tf->status = sata_rcar_check_status(ap); in sata_rcar_tf_read()
413 ap->last_ctl = tf->ctl; in sata_rcar_tf_read()
417 static void sata_rcar_exec_command(struct ata_port *ap, in sata_rcar_exec_command() argument
420 iowrite32(tf->command, ap->ioaddr.command_addr); in sata_rcar_exec_command()
421 ata_sff_pause(ap); in sata_rcar_exec_command()
428 struct ata_port *ap = qc->dev->link->ap; in sata_rcar_data_xfer() local
429 void __iomem *data_addr = ap->ioaddr.data_addr; in sata_rcar_data_xfer()
465 struct ata_port *ap; in sata_rcar_drain_fifo() local
471 ap = qc->ap; in sata_rcar_drain_fifo()
473 for (count = 0; (ap->ops->sff_check_status(ap) & ATA_DRQ) && in sata_rcar_drain_fifo()
475 ioread32(ap->ioaddr.data_addr); in sata_rcar_drain_fifo()
478 ata_port_dbg(ap, "drained %d bytes to clear DRQ\n", count); in sata_rcar_drain_fifo()
487 *val = ioread32(link->ap->ioaddr.scr_addr + (sc_reg << 2)); in sata_rcar_scr_read()
497 iowrite32(val, link->ap->ioaddr.scr_addr + (sc_reg << 2)); in sata_rcar_scr_write()
503 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_fill_sg() local
504 struct ata_bmdma_prd *prd = ap->bmdma_prd; in sata_rcar_bmdma_fill_sg()
538 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_setup() local
540 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_setup()
546 iowrite32(ap->bmdma_prd_dma, base + ATAPI_DTB_ADR_REG); in sata_rcar_bmdma_setup()
560 ap->ops->sff_exec_command(ap, &qc->tf); in sata_rcar_bmdma_setup()
565 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_start() local
566 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_start()
579 struct ata_port *ap = qc->ap; in sata_rcar_bmdma_stop() local
580 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_stop()
593 ata_sff_dma_pause(ap); in sata_rcar_bmdma_stop()
596 static u8 sata_rcar_bmdma_status(struct ata_port *ap) in sata_rcar_bmdma_status() argument
598 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_bmdma_status()
650 static void sata_rcar_serr_interrupt(struct ata_port *ap) in sata_rcar_serr_interrupt() argument
652 struct sata_rcar_priv *priv = ap->host->private_data; in sata_rcar_serr_interrupt()
653 struct ata_eh_info *ehi = &ap->link.eh_info; in sata_rcar_serr_interrupt()
661 ata_port_dbg(ap, "SError @host_intr: 0x%x\n", serror); in sata_rcar_serr_interrupt()
676 ata_port_freeze(ap); in sata_rcar_serr_interrupt()
678 ata_port_abort(ap); in sata_rcar_serr_interrupt()
681 static void sata_rcar_ata_interrupt(struct ata_port *ap) in sata_rcar_ata_interrupt() argument
686 qc = ata_qc_from_tag(ap, ap->link.active_tag); in sata_rcar_ata_interrupt()
688 handled |= ata_bmdma_port_intr(ap, qc); in sata_rcar_ata_interrupt()
692 sata_rcar_check_status(ap); in sata_rcar_ata_interrupt()
701 struct ata_port *ap; in sata_rcar_interrupt() local
714 ap = host->ports[0]; in sata_rcar_interrupt()
717 sata_rcar_ata_interrupt(ap); in sata_rcar_interrupt()
720 sata_rcar_serr_interrupt(ap); in sata_rcar_interrupt()
731 struct ata_port *ap = host->ports[0]; in sata_rcar_setup_port() local
732 struct ata_ioports *ioaddr = &ap->ioaddr; in sata_rcar_setup_port()
736 ap->ops = &sata_rcar_port_ops; in sata_rcar_setup_port()
737 ap->pio_mask = ATA_PIO4; in sata_rcar_setup_port()
738 ap->udma_mask = ATA_UDMA6; in sata_rcar_setup_port()
739 ap->flags |= ATA_FLAG_SATA; in sata_rcar_setup_port()
742 ap->flags |= ATA_FLAG_NO_DIPM; in sata_rcar_setup_port()