Lines Matching full:ap
75 * @ap: port where the device is
84 u8 ata_sff_check_status(struct ata_port *ap) in ata_sff_check_status() argument
86 return ioread8(ap->ioaddr.status_addr); in ata_sff_check_status()
92 * @ap: port where the device is
103 static u8 ata_sff_altstatus(struct ata_port *ap) in ata_sff_altstatus() argument
105 if (ap->ops->sff_check_altstatus) in ata_sff_altstatus()
106 return ap->ops->sff_check_altstatus(ap); in ata_sff_altstatus()
108 return ioread8(ap->ioaddr.altstatus_addr); in ata_sff_altstatus()
113 * @ap: port where the device is
123 static u8 ata_sff_irq_status(struct ata_port *ap) in ata_sff_irq_status() argument
127 if (ap->ops->sff_check_altstatus || ap->ioaddr.altstatus_addr) { in ata_sff_irq_status()
128 status = ata_sff_altstatus(ap); in ata_sff_irq_status()
134 status = ap->ops->sff_check_status(ap); in ata_sff_irq_status()
140 * @ap: Port to wait for.
150 static void ata_sff_sync(struct ata_port *ap) in ata_sff_sync() argument
152 if (ap->ops->sff_check_altstatus) in ata_sff_sync()
153 ap->ops->sff_check_altstatus(ap); in ata_sff_sync()
154 else if (ap->ioaddr.altstatus_addr) in ata_sff_sync()
155 ioread8(ap->ioaddr.altstatus_addr); in ata_sff_sync()
160 * @ap: Port to pause for.
170 void ata_sff_pause(struct ata_port *ap) in ata_sff_pause() argument
172 ata_sff_sync(ap); in ata_sff_pause()
179 * @ap: Port to pause for.
185 void ata_sff_dma_pause(struct ata_port *ap) in ata_sff_dma_pause() argument
187 if (ap->ops->sff_check_altstatus || ap->ioaddr.altstatus_addr) { in ata_sff_dma_pause()
190 ata_sff_altstatus(ap); in ata_sff_dma_pause()
202 * @ap: port containing status register to be polled
215 int ata_sff_busy_sleep(struct ata_port *ap, in ata_sff_busy_sleep() argument
221 status = ata_sff_busy_wait(ap, ATA_BUSY, 300); in ata_sff_busy_sleep()
226 ata_msleep(ap, 50); in ata_sff_busy_sleep()
227 status = ata_sff_busy_wait(ap, ATA_BUSY, 3); in ata_sff_busy_sleep()
231 ata_port_warn(ap, in ata_sff_busy_sleep()
238 ata_msleep(ap, 50); in ata_sff_busy_sleep()
239 status = ap->ops->sff_check_status(ap); in ata_sff_busy_sleep()
246 ata_port_err(ap, in ata_sff_busy_sleep()
258 u8 status = link->ap->ops->sff_check_status(link->ap); in ata_sff_check_ready()
285 * @ap: port where the device is
296 static void ata_sff_set_devctl(struct ata_port *ap, u8 ctl) in ata_sff_set_devctl() argument
298 if (ap->ops->sff_set_devctl) in ata_sff_set_devctl()
299 ap->ops->sff_set_devctl(ap, ctl); in ata_sff_set_devctl()
301 iowrite8(ctl, ap->ioaddr.ctl_addr); in ata_sff_set_devctl()
306 * @ap: ATA channel to manipulate
318 void ata_sff_dev_select(struct ata_port *ap, unsigned int device) in ata_sff_dev_select() argument
327 iowrite8(tmp, ap->ioaddr.device_addr); in ata_sff_dev_select()
328 ata_sff_pause(ap); /* needed; also flushes, for mmio */ in ata_sff_dev_select()
334 * @ap: ATA channel to manipulate
350 static void ata_dev_select(struct ata_port *ap, unsigned int device, in ata_dev_select() argument
353 if (ata_msg_probe(ap)) in ata_dev_select()
354 ata_port_info(ap, "ata_dev_select: ENTER, device %u, wait %u\n", in ata_dev_select()
358 ata_wait_idle(ap); in ata_dev_select()
360 ap->ops->sff_dev_select(ap, device); in ata_dev_select()
363 if (can_sleep && ap->link.device[device].class == ATA_DEV_ATAPI) in ata_dev_select()
364 ata_msleep(ap, 150); in ata_dev_select()
365 ata_wait_idle(ap); in ata_dev_select()
371 * @ap: Port on which interrupts are enabled.
382 void ata_sff_irq_on(struct ata_port *ap) in ata_sff_irq_on() argument
384 struct ata_ioports *ioaddr = &ap->ioaddr; in ata_sff_irq_on()
386 if (ap->ops->sff_irq_on) { in ata_sff_irq_on()
387 ap->ops->sff_irq_on(ap); in ata_sff_irq_on()
391 ap->ctl &= ~ATA_NIEN; in ata_sff_irq_on()
392 ap->last_ctl = ap->ctl; in ata_sff_irq_on()
394 if (ap->ops->sff_set_devctl || ioaddr->ctl_addr) in ata_sff_irq_on()
395 ata_sff_set_devctl(ap, ap->ctl); in ata_sff_irq_on()
396 ata_wait_idle(ap); in ata_sff_irq_on()
398 if (ap->ops->sff_irq_clear) in ata_sff_irq_on()
399 ap->ops->sff_irq_clear(ap); in ata_sff_irq_on()
405 * @ap: Port to which output is sent
413 void ata_sff_tf_load(struct ata_port *ap, const struct ata_taskfile *tf) in ata_sff_tf_load() argument
415 struct ata_ioports *ioaddr = &ap->ioaddr; in ata_sff_tf_load()
418 if (tf->ctl != ap->last_ctl) { in ata_sff_tf_load()
421 ap->last_ctl = tf->ctl; in ata_sff_tf_load()
422 ata_wait_idle(ap); in ata_sff_tf_load()
459 ata_wait_idle(ap); in ata_sff_tf_load()
465 * @ap: Port from which input is read
476 void ata_sff_tf_read(struct ata_port *ap, struct ata_taskfile *tf) in ata_sff_tf_read() argument
478 struct ata_ioports *ioaddr = &ap->ioaddr; in ata_sff_tf_read()
480 tf->command = ata_sff_check_status(ap); in ata_sff_tf_read()
497 ap->last_ctl = tf->ctl; in ata_sff_tf_read()
506 * @ap: port to which command is being issued
515 void ata_sff_exec_command(struct ata_port *ap, const struct ata_taskfile *tf) in ata_sff_exec_command() argument
517 DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command); in ata_sff_exec_command()
519 iowrite8(tf->command, ap->ioaddr.command_addr); in ata_sff_exec_command()
520 ata_sff_pause(ap); in ata_sff_exec_command()
526 * @ap: port to which command is being issued
536 static inline void ata_tf_to_host(struct ata_port *ap, in ata_tf_to_host() argument
539 ap->ops->sff_tf_load(ap, tf); in ata_tf_to_host()
540 ap->ops->sff_exec_command(ap, tf); in ata_tf_to_host()
561 struct ata_port *ap = qc->dev->link->ap; in ata_sff_data_xfer() local
562 void __iomem *data_addr = ap->ioaddr.data_addr; in ata_sff_data_xfer()
617 struct ata_port *ap = dev->link->ap; in ata_sff_data_xfer32() local
618 void __iomem *data_addr = ap->ioaddr.data_addr; in ata_sff_data_xfer32()
622 if (!(ap->pflags & ATA_PFLAG_PIO32)) in ata_sff_data_xfer32()
672 struct ata_port *ap = qc->ap; in ata_pio_sector() local
682 ap->hsm_task_state = HSM_ST_LAST; in ata_pio_sector()
695 ap->ops->sff_data_xfer(qc, buf + offset, qc->sect_size, do_write); in ata_pio_sector()
707 ap->hsm_task_state = HSM_ST_LAST; in ata_pio_sector()
737 ata_sff_sync(qc->ap); /* flush */ in ata_pio_sectors()
742 * @ap: Port to which ATAPI device is attached.
751 static void atapi_send_cdb(struct ata_port *ap, struct ata_queued_cmd *qc) in atapi_send_cdb() argument
757 ap->ops->sff_data_xfer(qc, qc->cdb, qc->dev->cdb_len, 1); in atapi_send_cdb()
758 ata_sff_sync(ap); in atapi_send_cdb()
763 ap->hsm_task_state = HSM_ST; in atapi_send_cdb()
766 ap->hsm_task_state = HSM_ST_LAST; in atapi_send_cdb()
770 ap->hsm_task_state = HSM_ST_LAST; in atapi_send_cdb()
772 ap->ops->bmdma_start(qc); in atapi_send_cdb()
794 struct ata_port *ap = qc->ap; in __atapi_pio_bytes() local
828 consumed = ap->ops->sff_data_xfer(qc, buf + offset, count, rw); in __atapi_pio_bytes()
862 struct ata_port *ap = qc->ap; in atapi_pio_bytes() local
874 ap->ops->sff_tf_read(ap, &qc->result_tf); in atapi_pio_bytes()
892 VPRINTK("ata%u: xfering %d bytes\n", ap->print_id, bytes); in atapi_pio_bytes()
896 ata_sff_sync(ap); /* flush */ in atapi_pio_bytes()
905 ap->hsm_task_state = HSM_ST_ERR; in atapi_pio_bytes()
910 * @ap: the target ata_port
916 static inline int ata_hsm_ok_in_wq(struct ata_port *ap, in ata_hsm_ok_in_wq() argument
922 if (ap->hsm_task_state == HSM_ST_FIRST) { in ata_hsm_ok_in_wq()
948 struct ata_port *ap = qc->ap; in ata_hsm_qc_complete() local
950 if (ap->ops->error_handler) { in ata_hsm_qc_complete()
955 qc = ata_qc_from_tag(ap, qc->tag); in ata_hsm_qc_complete()
958 ata_sff_irq_on(ap); in ata_hsm_qc_complete()
961 ata_port_freeze(ap); in ata_hsm_qc_complete()
967 ata_port_freeze(ap); in ata_hsm_qc_complete()
971 ata_sff_irq_on(ap); in ata_hsm_qc_complete()
980 * @ap: the target ata_port
988 int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc, in ata_sff_hsm_move() argument
995 lockdep_assert_held(ap->lock); in ata_sff_hsm_move()
1003 WARN_ON_ONCE(in_wq != ata_hsm_ok_in_wq(ap, qc)); in ata_sff_hsm_move()
1007 ap->print_id, qc->tf.protocol, ap->hsm_task_state, status); in ata_sff_hsm_move()
1009 switch (ap->hsm_task_state) { in ata_sff_hsm_move()
1032 ap->hsm_task_state = HSM_ST_ERR; in ata_sff_hsm_move()
1053 ap->hsm_task_state = HSM_ST_ERR; in ata_sff_hsm_move()
1067 ap->hsm_task_state = HSM_ST; in ata_sff_hsm_move()
1071 atapi_send_cdb(ap, qc); in ata_sff_hsm_move()
1086 ap->hsm_task_state = HSM_ST_LAST; in ata_sff_hsm_move()
1101 ap->hsm_task_state = HSM_ST_ERR; in ata_sff_hsm_move()
1107 if (unlikely(ap->hsm_task_state == HSM_ST_ERR)) in ata_sff_hsm_move()
1139 ap->hsm_task_state = HSM_ST_ERR; in ata_sff_hsm_move()
1159 status = ata_wait_idle(ap); in ata_sff_hsm_move()
1183 ap->hsm_task_state = HSM_ST_ERR; in ata_sff_hsm_move()
1189 if (ap->hsm_task_state == HSM_ST_LAST && in ata_sff_hsm_move()
1192 status = ata_wait_idle(ap); in ata_sff_hsm_move()
1203 ap->hsm_task_state = HSM_ST_ERR; in ata_sff_hsm_move()
1209 ap->print_id, qc->dev->devno, status); in ata_sff_hsm_move()
1213 ap->hsm_task_state = HSM_ST_IDLE; in ata_sff_hsm_move()
1222 ap->hsm_task_state = HSM_ST_IDLE; in ata_sff_hsm_move()
1232 ap->print_id, ap->hsm_task_state); in ata_sff_hsm_move()
1253 struct ata_port *ap = link->ap; in ata_sff_queue_pio_task() local
1255 WARN_ON((ap->sff_pio_task_link != NULL) && in ata_sff_queue_pio_task()
1256 (ap->sff_pio_task_link != link)); in ata_sff_queue_pio_task()
1257 ap->sff_pio_task_link = link; in ata_sff_queue_pio_task()
1260 ata_sff_queue_delayed_work(&ap->sff_pio_task, msecs_to_jiffies(delay)); in ata_sff_queue_pio_task()
1264 void ata_sff_flush_pio_task(struct ata_port *ap) in ata_sff_flush_pio_task() argument
1268 cancel_delayed_work_sync(&ap->sff_pio_task); in ata_sff_flush_pio_task()
1278 spin_lock_irq(ap->lock); in ata_sff_flush_pio_task()
1279 ap->hsm_task_state = HSM_ST_IDLE; in ata_sff_flush_pio_task()
1280 spin_unlock_irq(ap->lock); in ata_sff_flush_pio_task()
1282 ap->sff_pio_task_link = NULL; in ata_sff_flush_pio_task()
1284 if (ata_msg_ctl(ap)) in ata_sff_flush_pio_task()
1285 ata_port_dbg(ap, "%s: EXIT\n", __func__); in ata_sff_flush_pio_task()
1290 struct ata_port *ap = in ata_sff_pio_task() local
1292 struct ata_link *link = ap->sff_pio_task_link; in ata_sff_pio_task()
1297 spin_lock_irq(ap->lock); in ata_sff_pio_task()
1299 BUG_ON(ap->sff_pio_task_link == NULL); in ata_sff_pio_task()
1301 qc = ata_qc_from_tag(ap, link->active_tag); in ata_sff_pio_task()
1303 ap->sff_pio_task_link = NULL; in ata_sff_pio_task()
1308 WARN_ON_ONCE(ap->hsm_task_state == HSM_ST_IDLE); in ata_sff_pio_task()
1317 status = ata_sff_busy_wait(ap, ATA_BUSY, 5); in ata_sff_pio_task()
1319 spin_unlock_irq(ap->lock); in ata_sff_pio_task()
1320 ata_msleep(ap, 2); in ata_sff_pio_task()
1321 spin_lock_irq(ap->lock); in ata_sff_pio_task()
1323 status = ata_sff_busy_wait(ap, ATA_BUSY, 10); in ata_sff_pio_task()
1334 ap->sff_pio_task_link = NULL; in ata_sff_pio_task()
1336 poll_next = ata_sff_hsm_move(ap, qc, status, 1); in ata_sff_pio_task()
1344 spin_unlock_irq(ap->lock); in ata_sff_pio_task()
1362 struct ata_port *ap = qc->ap; in ata_sff_qc_issue() local
1368 if (ap->flags & ATA_FLAG_PIO_POLLING) in ata_sff_qc_issue()
1372 ata_dev_select(ap, qc->dev->devno, 1, 0); in ata_sff_qc_issue()
1380 ata_tf_to_host(ap, &qc->tf); in ata_sff_qc_issue()
1381 ap->hsm_task_state = HSM_ST_LAST; in ata_sff_qc_issue()
1392 ata_tf_to_host(ap, &qc->tf); in ata_sff_qc_issue()
1396 ap->hsm_task_state = HSM_ST_FIRST; in ata_sff_qc_issue()
1404 ap->hsm_task_state = HSM_ST; in ata_sff_qc_issue()
1422 ata_tf_to_host(ap, &qc->tf); in ata_sff_qc_issue()
1424 ap->hsm_task_state = HSM_ST_FIRST; in ata_sff_qc_issue()
1455 qc->ap->ops->sff_tf_read(qc->ap, &qc->result_tf); in ata_sff_qc_fill_rtf()
1460 static unsigned int ata_sff_idle_irq(struct ata_port *ap) in ata_sff_idle_irq() argument
1462 ap->stats.idle_irq++; in ata_sff_idle_irq()
1465 if ((ap->stats.idle_irq % 1000) == 0) { in ata_sff_idle_irq()
1466 ap->ops->sff_check_status(ap); in ata_sff_idle_irq()
1467 if (ap->ops->sff_irq_clear) in ata_sff_idle_irq()
1468 ap->ops->sff_irq_clear(ap); in ata_sff_idle_irq()
1469 ata_port_warn(ap, "irq trap\n"); in ata_sff_idle_irq()
1476 static unsigned int __ata_sff_port_intr(struct ata_port *ap, in __ata_sff_port_intr() argument
1483 ap->print_id, qc->tf.protocol, ap->hsm_task_state); in __ata_sff_port_intr()
1486 switch (ap->hsm_task_state) { in __ata_sff_port_intr()
1497 return ata_sff_idle_irq(ap); in __ata_sff_port_intr()
1500 return ata_sff_idle_irq(ap); in __ata_sff_port_intr()
1506 status = ata_sff_irq_status(ap); in __ata_sff_port_intr()
1511 ap->hsm_task_state = HSM_ST_ERR; in __ata_sff_port_intr()
1513 return ata_sff_idle_irq(ap); in __ata_sff_port_intr()
1517 if (ap->ops->sff_irq_clear) in __ata_sff_port_intr()
1518 ap->ops->sff_irq_clear(ap); in __ata_sff_port_intr()
1520 ata_sff_hsm_move(ap, qc, status, 0); in __ata_sff_port_intr()
1527 * @ap: Port on which interrupt arrived (possibly...)
1538 unsigned int ata_sff_port_intr(struct ata_port *ap, struct ata_queued_cmd *qc) in ata_sff_port_intr() argument
1540 return __ata_sff_port_intr(ap, qc, false); in ata_sff_port_intr()
1559 struct ata_port *ap = host->ports[i]; in __ata_sff_interrupt() local
1562 qc = ata_qc_from_tag(ap, ap->link.active_tag); in __ata_sff_interrupt()
1565 handled |= port_intr(ap, qc); in __ata_sff_interrupt()
1581 struct ata_port *ap = host->ports[i]; in __ata_sff_interrupt() local
1586 if (!ap->ops->sff_irq_check || in __ata_sff_interrupt()
1587 !ap->ops->sff_irq_check(ap)) in __ata_sff_interrupt()
1591 ap->ops->sff_check_status(ap); in __ata_sff_interrupt()
1592 if (ap->ops->sff_irq_clear) in __ata_sff_interrupt()
1593 ap->ops->sff_irq_clear(ap); in __ata_sff_interrupt()
1596 if (!(ap->ops->sff_check_status(ap) & ATA_BUSY)) in __ata_sff_interrupt()
1638 * @ap: port that appears to have timed out
1649 void ata_sff_lost_interrupt(struct ata_port *ap) in ata_sff_lost_interrupt() argument
1655 qc = ata_qc_from_tag(ap, ap->link.active_tag); in ata_sff_lost_interrupt()
1661 status = ata_sff_altstatus(ap); in ata_sff_lost_interrupt()
1667 ata_port_warn(ap, "lost interrupt (Status 0x%x)\n", in ata_sff_lost_interrupt()
1671 ata_sff_port_intr(ap, qc); in ata_sff_lost_interrupt()
1677 * @ap: port to freeze
1684 void ata_sff_freeze(struct ata_port *ap) in ata_sff_freeze() argument
1686 ap->ctl |= ATA_NIEN; in ata_sff_freeze()
1687 ap->last_ctl = ap->ctl; in ata_sff_freeze()
1689 if (ap->ops->sff_set_devctl || ap->ioaddr.ctl_addr) in ata_sff_freeze()
1690 ata_sff_set_devctl(ap, ap->ctl); in ata_sff_freeze()
1696 ap->ops->sff_check_status(ap); in ata_sff_freeze()
1698 if (ap->ops->sff_irq_clear) in ata_sff_freeze()
1699 ap->ops->sff_irq_clear(ap); in ata_sff_freeze()
1705 * @ap: port to thaw
1712 void ata_sff_thaw(struct ata_port *ap) in ata_sff_thaw() argument
1715 ap->ops->sff_check_status(ap); in ata_sff_thaw()
1716 if (ap->ops->sff_irq_clear) in ata_sff_thaw()
1717 ap->ops->sff_irq_clear(ap); in ata_sff_thaw()
1718 ata_sff_irq_on(ap); in ata_sff_thaw()
1767 * @ap: ATA channel to examine
1782 static unsigned int ata_devchk(struct ata_port *ap, unsigned int device) in ata_devchk() argument
1784 struct ata_ioports *ioaddr = &ap->ioaddr; in ata_devchk()
1787 ap->ops->sff_dev_select(ap, device); in ata_devchk()
1831 struct ata_port *ap = dev->link->ap; in ata_sff_dev_classify() local
1836 ap->ops->sff_dev_select(ap, dev->devno); in ata_sff_dev_classify()
1840 ap->ops->sff_tf_read(ap, &tf); in ata_sff_dev_classify()
1871 (ap->ops->sff_check_status(ap) == 0)) in ata_sff_dev_classify()
1898 struct ata_port *ap = link->ap; in ata_sff_wait_after_reset() local
1899 struct ata_ioports *ioaddr = &ap->ioaddr; in ata_sff_wait_after_reset()
1904 ata_msleep(ap, ATA_WAIT_AFTER_RESET); in ata_sff_wait_after_reset()
1920 ap->ops->sff_dev_select(ap, 1); in ata_sff_wait_after_reset()
1933 ata_msleep(ap, 50); /* give drive a breather */ in ata_sff_wait_after_reset()
1945 ap->ops->sff_dev_select(ap, 0); in ata_sff_wait_after_reset()
1947 ap->ops->sff_dev_select(ap, 1); in ata_sff_wait_after_reset()
1949 ap->ops->sff_dev_select(ap, 0); in ata_sff_wait_after_reset()
1955 static int ata_bus_softreset(struct ata_port *ap, unsigned int devmask, in ata_bus_softreset() argument
1958 struct ata_ioports *ioaddr = &ap->ioaddr; in ata_bus_softreset()
1960 DPRINTK("ata%u: bus reset via SRST\n", ap->print_id); in ata_bus_softreset()
1962 if (ap->ioaddr.ctl_addr) { in ata_bus_softreset()
1964 iowrite8(ap->ctl, ioaddr->ctl_addr); in ata_bus_softreset()
1966 iowrite8(ap->ctl | ATA_SRST, ioaddr->ctl_addr); in ata_bus_softreset()
1968 iowrite8(ap->ctl, ioaddr->ctl_addr); in ata_bus_softreset()
1969 ap->last_ctl = ap->ctl; in ata_bus_softreset()
1973 return ata_sff_wait_after_reset(&ap->link, devmask, deadline); in ata_bus_softreset()
1993 struct ata_port *ap = link->ap; in ata_sff_softreset() local
1994 unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS; in ata_sff_softreset()
2002 if (ata_devchk(ap, 0)) in ata_sff_softreset()
2004 if (slave_possible && ata_devchk(ap, 1)) in ata_sff_softreset()
2008 ap->ops->sff_dev_select(ap, 0); in ata_sff_softreset()
2012 rc = ata_bus_softreset(ap, devmask, deadline); in ata_sff_softreset()
2078 struct ata_port *ap = link->ap; in ata_sff_postreset() local
2084 ap->ops->sff_dev_select(ap, 1); in ata_sff_postreset()
2086 ap->ops->sff_dev_select(ap, 0); in ata_sff_postreset()
2095 if (ap->ops->sff_set_devctl || ap->ioaddr.ctl_addr) { in ata_sff_postreset()
2096 ata_sff_set_devctl(ap, ap->ctl); in ata_sff_postreset()
2097 ap->last_ctl = ap->ctl; in ata_sff_postreset()
2115 struct ata_port *ap; in ata_sff_drain_fifo() local
2121 ap = qc->ap; in ata_sff_drain_fifo()
2123 for (count = 0; (ap->ops->sff_check_status(ap) & ATA_DRQ) in ata_sff_drain_fifo()
2125 ioread16(ap->ioaddr.data_addr); in ata_sff_drain_fifo()
2129 ata_port_dbg(ap, "drained %d bytes to clear DRQ\n", count); in ata_sff_drain_fifo()
2136 * @ap: port to handle error for
2146 void ata_sff_error_handler(struct ata_port *ap) in ata_sff_error_handler() argument
2148 ata_reset_fn_t softreset = ap->ops->softreset; in ata_sff_error_handler()
2149 ata_reset_fn_t hardreset = ap->ops->hardreset; in ata_sff_error_handler()
2153 qc = __ata_qc_from_tag(ap, ap->link.active_tag); in ata_sff_error_handler()
2157 spin_lock_irqsave(ap->lock, flags); in ata_sff_error_handler()
2166 if (ap->ops->sff_drain_fifo) in ata_sff_error_handler()
2167 ap->ops->sff_drain_fifo(qc); in ata_sff_error_handler()
2169 spin_unlock_irqrestore(ap->lock, flags); in ata_sff_error_handler()
2173 hardreset == sata_sff_hardreset) && !sata_scr_valid(&ap->link)) in ata_sff_error_handler()
2176 ata_do_eh(ap, ap->ops->prereset, softreset, hardreset, in ata_sff_error_handler()
2177 ap->ops->postreset); in ata_sff_error_handler()
2251 struct ata_port *ap = host->ports[i]; in ata_pci_sff_init_host() local
2255 if (ata_port_is_dummy(ap)) in ata_pci_sff_init_host()
2263 ap->ops = &ata_dummy_port_ops; in ata_pci_sff_init_host()
2275 ap->ops = &ata_dummy_port_ops; in ata_pci_sff_init_host()
2280 ap->ioaddr.cmd_addr = iomap[base]; in ata_pci_sff_init_host()
2281 ap->ioaddr.altstatus_addr = in ata_pci_sff_init_host()
2282 ap->ioaddr.ctl_addr = (void __iomem *) in ata_pci_sff_init_host()
2284 ata_sff_std_ports(&ap->ioaddr); in ata_pci_sff_init_host()
2286 ata_port_desc(ap, "cmd 0x%llx ctl 0x%llx", in ata_pci_sff_init_host()
2593 struct ata_port *ap = qc->ap; in ata_bmdma_fill_sg() local
2594 struct ata_bmdma_prd *prd = ap->bmdma_prd; in ata_bmdma_fill_sg()
2644 struct ata_port *ap = qc->ap; in ata_bmdma_fill_sg_dumb() local
2645 struct ata_bmdma_prd *prd = ap->bmdma_prd; in ata_bmdma_fill_sg_dumb()
2745 struct ata_port *ap = qc->ap; in ata_bmdma_qc_issue() local
2753 ata_dev_select(ap, qc->dev->devno, 1, 0); in ata_bmdma_qc_issue()
2760 ap->ops->sff_tf_load(ap, &qc->tf); /* load tf registers */ in ata_bmdma_qc_issue()
2761 ap->ops->bmdma_setup(qc); /* set up bmdma */ in ata_bmdma_qc_issue()
2762 ap->ops->bmdma_start(qc); /* initiate bmdma */ in ata_bmdma_qc_issue()
2763 ap->hsm_task_state = HSM_ST_LAST; in ata_bmdma_qc_issue()
2769 ap->ops->sff_tf_load(ap, &qc->tf); /* load tf registers */ in ata_bmdma_qc_issue()
2770 ap->ops->bmdma_setup(qc); /* set up bmdma */ in ata_bmdma_qc_issue()
2771 ap->hsm_task_state = HSM_ST_FIRST; in ata_bmdma_qc_issue()
2789 * @ap: Port on which interrupt arrived (possibly...)
2800 unsigned int ata_bmdma_port_intr(struct ata_port *ap, struct ata_queued_cmd *qc) in ata_bmdma_port_intr() argument
2802 struct ata_eh_info *ehi = &ap->link.eh_info; in ata_bmdma_port_intr()
2807 if (ap->hsm_task_state == HSM_ST_LAST && ata_is_dma(qc->tf.protocol)) { in ata_bmdma_port_intr()
2809 host_stat = ap->ops->bmdma_status(ap); in ata_bmdma_port_intr()
2810 VPRINTK("ata%u: host_stat 0x%X\n", ap->print_id, host_stat); in ata_bmdma_port_intr()
2814 return ata_sff_idle_irq(ap); in ata_bmdma_port_intr()
2817 ap->ops->bmdma_stop(qc); in ata_bmdma_port_intr()
2823 ap->hsm_task_state = HSM_ST_ERR; in ata_bmdma_port_intr()
2827 handled = __ata_sff_port_intr(ap, qc, bmdma_stopped); in ata_bmdma_port_intr()
2858 * @ap: port to handle error for
2868 void ata_bmdma_error_handler(struct ata_port *ap) in ata_bmdma_error_handler() argument
2874 qc = __ata_qc_from_tag(ap, ap->link.active_tag); in ata_bmdma_error_handler()
2879 spin_lock_irqsave(ap->lock, flags); in ata_bmdma_error_handler()
2884 host_stat = ap->ops->bmdma_status(ap); in ata_bmdma_error_handler()
2896 ap->ops->bmdma_stop(qc); in ata_bmdma_error_handler()
2900 ap->ops->sff_check_status(ap); in ata_bmdma_error_handler()
2901 if (ap->ops->sff_irq_clear) in ata_bmdma_error_handler()
2902 ap->ops->sff_irq_clear(ap); in ata_bmdma_error_handler()
2906 spin_unlock_irqrestore(ap->lock, flags); in ata_bmdma_error_handler()
2909 ata_eh_thaw_port(ap); in ata_bmdma_error_handler()
2911 ata_sff_error_handler(ap); in ata_bmdma_error_handler()
2924 struct ata_port *ap = qc->ap; in ata_bmdma_post_internal_cmd() local
2928 spin_lock_irqsave(ap->lock, flags); in ata_bmdma_post_internal_cmd()
2929 ap->ops->bmdma_stop(qc); in ata_bmdma_post_internal_cmd()
2930 spin_unlock_irqrestore(ap->lock, flags); in ata_bmdma_post_internal_cmd()
2937 * @ap: Port associated with this ATA transaction.
2946 void ata_bmdma_irq_clear(struct ata_port *ap) in ata_bmdma_irq_clear() argument
2948 void __iomem *mmio = ap->ioaddr.bmdma_addr; in ata_bmdma_irq_clear()
2966 struct ata_port *ap = qc->ap; in ata_bmdma_setup() local
2972 iowrite32(ap->bmdma_prd_dma, ap->ioaddr.bmdma_addr + ATA_DMA_TABLE_OFS); in ata_bmdma_setup()
2975 dmactl = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD); in ata_bmdma_setup()
2979 iowrite8(dmactl, ap->ioaddr.bmdma_addr + ATA_DMA_CMD); in ata_bmdma_setup()
2982 ap->ops->sff_exec_command(ap, &qc->tf); in ata_bmdma_setup()
2995 struct ata_port *ap = qc->ap; in ata_bmdma_start() local
2999 dmactl = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD); in ata_bmdma_start()
3000 iowrite8(dmactl | ATA_DMA_START, ap->ioaddr.bmdma_addr + ATA_DMA_CMD); in ata_bmdma_start()
3032 struct ata_port *ap = qc->ap; in ata_bmdma_stop() local
3033 void __iomem *mmio = ap->ioaddr.bmdma_addr; in ata_bmdma_stop()
3040 ata_sff_dma_pause(ap); in ata_bmdma_stop()
3046 * @ap: Port associated with this ATA transaction.
3055 u8 ata_bmdma_status(struct ata_port *ap) in ata_bmdma_status() argument
3057 return ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_STATUS); in ata_bmdma_status()
3064 * @ap: Port to initialize
3074 int ata_bmdma_port_start(struct ata_port *ap) in ata_bmdma_port_start() argument
3076 if (ap->mwdma_mask || ap->udma_mask) { in ata_bmdma_port_start()
3077 ap->bmdma_prd = in ata_bmdma_port_start()
3078 dmam_alloc_coherent(ap->host->dev, ATA_PRD_TBL_SZ, in ata_bmdma_port_start()
3079 &ap->bmdma_prd_dma, GFP_KERNEL); in ata_bmdma_port_start()
3080 if (!ap->bmdma_prd) in ata_bmdma_port_start()
3090 * @ap: Port to initialize
3102 int ata_bmdma_port_start32(struct ata_port *ap) in ata_bmdma_port_start32() argument
3104 ap->pflags |= ATA_PFLAG_PIO32 | ATA_PFLAG_PIO32CHANGE; in ata_bmdma_port_start32()
3105 return ata_bmdma_port_start(ap); in ata_bmdma_port_start32()
3195 struct ata_port *ap = host->ports[i]; in ata_pci_bmdma_init() local
3198 if (ata_port_is_dummy(ap)) in ata_pci_bmdma_init()
3201 ap->ioaddr.bmdma_addr = bmdma; in ata_pci_bmdma_init()
3202 if ((!(ap->flags & ATA_FLAG_IGN_SIMPLEX)) && in ata_pci_bmdma_init()
3206 ata_port_desc(ap, "bmdma 0x%llx", in ata_pci_bmdma_init()
3273 * @ap: Port to initialize
3281 void ata_sff_port_init(struct ata_port *ap) in ata_sff_port_init() argument
3283 INIT_DELAYED_WORK(&ap->sff_pio_task, ata_sff_pio_task); in ata_sff_port_init()
3284 ap->ctl = ATA_DEVCTL_OBS; in ata_sff_port_init()
3285 ap->last_ctl = 0xFF; in ata_sff_port_init()