Lines Matching refs:ap

165 #define HSDEV_FROM_AP(ap)	((struct sata_dwc_device *)(ap)->host->private_data)  argument
166 #define HSDEVP_FROM_AP(ap) ((struct sata_dwc_device_port *)(ap)->private_data) argument
167 #define HSDEV_FROM_QC(qc) ((struct sata_dwc_device *)(qc)->ap->host->private_data)
185 static int sata_dwc_qc_complete(struct ata_port *ap, struct ata_queued_cmd *qc,
187 static void sata_dwc_dma_xfer_complete(struct ata_port *ap, u32 check_status);
188 static void sata_dwc_port_stop(struct ata_port *ap);
314 static void sata_dwc_tf_dump(struct ata_port *ap, struct ata_taskfile *tf) in sata_dwc_tf_dump() argument
316 dev_vdbg(ap->dev, in sata_dwc_tf_dump()
320 dev_vdbg(ap->dev, in sata_dwc_tf_dump()
323 dev_vdbg(ap->dev, in sata_dwc_tf_dump()
334 struct ata_port *ap; in dma_dwc_xfer_done() local
340 ap = host->ports[port]; in dma_dwc_xfer_done()
341 hsdevp = HSDEVP_FROM_AP(ap); in dma_dwc_xfer_done()
342 tag = ap->link.active_tag; in dma_dwc_xfer_done()
353 dev_err(ap->dev, "DMA not pending tag=0x%02x pending=%d\n", in dma_dwc_xfer_done()
358 sata_dwc_dma_xfer_complete(ap, 1); in dma_dwc_xfer_done()
365 struct ata_port *ap = qc->ap; in dma_dwc_xfer_setup() local
366 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in dma_dwc_xfer_setup()
367 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in dma_dwc_xfer_setup()
407 dev_err(link->ap->dev, "%s: Incorrect SCR offset 0x%02x\n", in sata_dwc_scr_read()
412 *val = sata_dwc_readl(link->ap->ioaddr.scr_addr + (scr * 4)); in sata_dwc_scr_read()
413 dev_dbg(link->ap->dev, "%s: id=%d reg=%d val=0x%08x\n", __func__, in sata_dwc_scr_read()
414 link->ap->print_id, scr, *val); in sata_dwc_scr_read()
421 dev_dbg(link->ap->dev, "%s: id=%d reg=%d val=0x%08x\n", __func__, in sata_dwc_scr_write()
422 link->ap->print_id, scr, val); in sata_dwc_scr_write()
424 dev_err(link->ap->dev, "%s: Incorrect SCR offset 0x%02x\n", in sata_dwc_scr_write()
428 sata_dwc_writel(link->ap->ioaddr.scr_addr + (scr * 4), val); in sata_dwc_scr_write()
433 static void clear_serror(struct ata_port *ap) in clear_serror() argument
436 sata_dwc_scr_read(&ap->link, SCR_ERROR, &val); in clear_serror()
437 sata_dwc_scr_write(&ap->link, SCR_ERROR, val); in clear_serror()
452 static void sata_dwc_error_intr(struct ata_port *ap, in sata_dwc_error_intr() argument
455 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_error_intr()
456 struct ata_eh_info *ehi = &ap->link.eh_info; in sata_dwc_error_intr()
464 sata_dwc_scr_read(&ap->link, SCR_ERROR, &serror); in sata_dwc_error_intr()
465 status = ap->ops->sff_check_status(ap); in sata_dwc_error_intr()
467 tag = ap->link.active_tag; in sata_dwc_error_intr()
469 dev_err(ap->dev, in sata_dwc_error_intr()
475 clear_serror(ap); in sata_dwc_error_intr()
487 qc = ata_qc_from_tag(ap, tag); in sata_dwc_error_intr()
493 ata_port_abort(ap); in sata_dwc_error_intr()
507 struct ata_port *ap; in sata_dwc_isr() local
521 ap = host->ports[port]; in sata_dwc_isr()
522 hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_isr()
524 dev_dbg(ap->dev, "%s intpr=0x%08x active_tag=%d\n", __func__, intpr, in sata_dwc_isr()
525 ap->link.active_tag); in sata_dwc_isr()
529 sata_dwc_error_intr(ap, hsdev, intpr); in sata_dwc_isr()
539 dev_dbg(ap->dev, "%s: NEWFP tag=%d\n", __func__, tag); in sata_dwc_isr()
541 dev_warn(ap->dev, "CMD tag=%d not pending?\n", tag); in sata_dwc_isr()
545 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
547 dev_err(ap->dev, "failed to get qc"); in sata_dwc_isr()
556 qc->ap->link.active_tag = tag; in sata_dwc_isr()
562 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); in sata_dwc_isr()
567 if (ap->link.active_tag == ATA_TAG_POISON) in sata_dwc_isr()
570 tag = ap->link.active_tag; in sata_dwc_isr()
571 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
575 dev_err(ap->dev, in sata_dwc_isr()
578 ap->ops->sff_check_status(ap); in sata_dwc_isr()
582 status = ap->ops->sff_check_status(ap); in sata_dwc_isr()
584 qc->ap->link.active_tag = tag; in sata_dwc_isr()
588 dev_dbg(ap->dev, "interrupt ATA_ERR (0x%x)\n", status); in sata_dwc_isr()
589 sata_dwc_qc_complete(ap, qc, 1); in sata_dwc_isr()
594 dev_dbg(ap->dev, "%s non-NCQ cmd interrupt, protocol: %s\n", in sata_dwc_isr()
607 dev_err(ap->dev, in sata_dwc_isr()
614 sata_dwc_dma_xfer_complete(ap, 1); in sata_dwc_isr()
616 ata_sff_hsm_move(ap, qc, status, 0); in sata_dwc_isr()
620 if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) in sata_dwc_isr()
636 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); in sata_dwc_isr()
640 dev_dbg(ap->dev, in sata_dwc_isr()
646 dev_warn(ap->dev, in sata_dwc_isr()
652 status = ap->ops->sff_check_status(ap); in sata_dwc_isr()
653 dev_dbg(ap->dev, "%s ATA status register=0x%x\n", __func__, status); in sata_dwc_isr()
665 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
667 dev_err(ap->dev, "failed to get qc"); in sata_dwc_isr()
673 qc->ap->link.active_tag = tag; in sata_dwc_isr()
678 dev_dbg(ap->dev, "%s ATA_ERR (0x%x)\n", __func__, in sata_dwc_isr()
680 sata_dwc_qc_complete(ap, qc, 1); in sata_dwc_isr()
686 dev_dbg(ap->dev, "%s NCQ command, protocol: %s\n", __func__, in sata_dwc_isr()
692 dev_warn(ap->dev, "%s: DMA not pending?\n", in sata_dwc_isr()
695 sata_dwc_dma_xfer_complete(ap, 1); in sata_dwc_isr()
697 if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) in sata_dwc_isr()
703 ap->stats.idle_irq++; in sata_dwc_isr()
704 dev_warn(ap->dev, "STILL BUSY IRQ ata%d: irq trap\n", in sata_dwc_isr()
705 ap->print_id); in sata_dwc_isr()
715 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive2); in sata_dwc_isr()
717 dev_dbg(ap->dev, in sata_dwc_isr()
752 static void sata_dwc_dma_xfer_complete(struct ata_port *ap, u32 check_status) in sata_dwc_dma_xfer_complete() argument
755 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_dma_xfer_complete()
756 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_dma_xfer_complete()
759 tag = ap->link.active_tag; in sata_dwc_dma_xfer_complete()
760 qc = ata_qc_from_tag(ap, tag); in sata_dwc_dma_xfer_complete()
762 dev_err(ap->dev, "failed to get qc"); in sata_dwc_dma_xfer_complete()
768 dev_info(ap->dev, in sata_dwc_dma_xfer_complete()
779 dev_err(ap->dev, in sata_dwc_dma_xfer_complete()
786 sata_dwc_qc_complete(ap, qc, check_status); in sata_dwc_dma_xfer_complete()
787 ap->link.active_tag = ATA_TAG_POISON; in sata_dwc_dma_xfer_complete()
789 sata_dwc_qc_complete(ap, qc, check_status); in sata_dwc_dma_xfer_complete()
793 static int sata_dwc_qc_complete(struct ata_port *ap, struct ata_queued_cmd *qc, in sata_dwc_qc_complete() argument
799 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_qc_complete()
800 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_complete()
802 dev_dbg(ap->dev, "%s checkstatus? %x\n", __func__, check_status); in sata_dwc_qc_complete()
805 dev_err(ap->dev, "TX DMA PENDING\n"); in sata_dwc_qc_complete()
807 dev_err(ap->dev, "RX DMA PENDING\n"); in sata_dwc_qc_complete()
808 dev_dbg(ap->dev, in sata_dwc_qc_complete()
810 qc->tf.command, status, ap->print_id, qc->tf.protocol); in sata_dwc_qc_complete()
887 static int sata_dwc_port_start(struct ata_port *ap) in sata_dwc_port_start() argument
895 hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_start()
897 dev_dbg(ap->dev, "%s: port_no=%d\n", __func__, ap->port_no); in sata_dwc_port_start()
899 hsdev->host = ap->host; in sata_dwc_port_start()
900 pdev = ap->host->dev; in sata_dwc_port_start()
902 dev_err(ap->dev, "%s: no ap->host->dev\n", __func__); in sata_dwc_port_start()
926 ap->bmdma_prd = NULL; /* set these so libata doesn't use them */ in sata_dwc_port_start()
927 ap->bmdma_prd_dma = 0; in sata_dwc_port_start()
929 if (ap->port_no == 0) { in sata_dwc_port_start()
930 dev_dbg(ap->dev, "%s: clearing TXCHEN, RXCHEN in DMAC\n", in sata_dwc_port_start()
935 dev_dbg(ap->dev, "%s: setting burst size in DBTSR\n", in sata_dwc_port_start()
943 clear_serror(ap); in sata_dwc_port_start()
944 ap->private_data = hsdevp; in sata_dwc_port_start()
945 dev_dbg(ap->dev, "%s: done\n", __func__); in sata_dwc_port_start()
951 dev_dbg(ap->dev, "%s: fail. ap->id = %d\n", __func__, ap->print_id); in sata_dwc_port_start()
955 static void sata_dwc_port_stop(struct ata_port *ap) in sata_dwc_port_stop() argument
957 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_port_stop()
958 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_stop()
960 dev_dbg(ap->dev, "%s: ap->id = %d\n", __func__, ap->print_id); in sata_dwc_port_stop()
967 ap->private_data = NULL; in sata_dwc_port_stop()
977 static void sata_dwc_exec_command_by_tag(struct ata_port *ap, in sata_dwc_exec_command_by_tag() argument
981 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_exec_command_by_tag()
983 dev_dbg(ap->dev, "%s cmd(0x%02x): %s tag=%d\n", __func__, tf->command, in sata_dwc_exec_command_by_tag()
994 clear_serror(ap); in sata_dwc_exec_command_by_tag()
995 ata_sff_exec_command(ap, tf); in sata_dwc_exec_command_by_tag()
1000 sata_dwc_exec_command_by_tag(qc->ap, &qc->tf, tag, in sata_dwc_bmdma_setup_by_tag()
1009 dev_dbg(qc->ap->dev, "%s: ap->link.sactive=0x%08x tag=%d\n", in sata_dwc_bmdma_setup()
1010 __func__, qc->ap->link.sactive, tag); in sata_dwc_bmdma_setup()
1022 struct ata_port *ap = qc->ap; in sata_dwc_bmdma_start_by_tag() local
1023 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_bmdma_start_by_tag()
1034 dev_err(ap->dev, in sata_dwc_bmdma_start_by_tag()
1040 dev_dbg(ap->dev, in sata_dwc_bmdma_start_by_tag()
1044 sata_dwc_tf_dump(ap, &qc->tf); in sata_dwc_bmdma_start_by_tag()
1047 sata_dwc_scr_read(&ap->link, SCR_ERROR, &reg); in sata_dwc_bmdma_start_by_tag()
1049 dev_err(ap->dev, "%s: ****** SError=0x%08x ******\n", in sata_dwc_bmdma_start_by_tag()
1071 dev_dbg(qc->ap->dev, "%s: ap->link.sactive=0x%08x tag=%d\n", in sata_dwc_bmdma_start()
1072 __func__, qc->ap->link.sactive, tag); in sata_dwc_bmdma_start()
1076 dev_dbg(qc->ap->dev, "%s\n", __func__); in sata_dwc_bmdma_start()
1084 struct ata_port *ap = qc->ap; in sata_dwc_qc_issue() local
1085 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_issue()
1088 if (qc->hw_tag > 0 || ap->link.sactive > 1) in sata_dwc_qc_issue()
1089 dev_info(ap->dev, in sata_dwc_qc_issue()
1091 __func__, ap->print_id, qc->tf.command, in sata_dwc_qc_issue()
1094 ap->link.active_tag, ap->link.sactive); in sata_dwc_qc_issue()
1109 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); in sata_dwc_qc_issue()
1111 sata_dwc_scr_write(&ap->link, SCR_ACTIVE, sactive); in sata_dwc_qc_issue()
1113 dev_dbg(qc->ap->dev, in sata_dwc_qc_issue()
1115 __func__, tag, qc->ap->link.sactive, sactive); in sata_dwc_qc_issue()
1117 ap->ops->sff_tf_load(ap, &qc->tf); in sata_dwc_qc_issue()
1118 sata_dwc_exec_command_by_tag(ap, &qc->tf, tag, in sata_dwc_qc_issue()
1126 static void sata_dwc_error_handler(struct ata_port *ap) in sata_dwc_error_handler() argument
1128 ata_sff_error_handler(ap); in sata_dwc_error_handler()
1134 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(link->ap); in sata_dwc_hardreset()
1153 static void sata_dwc_dev_select(struct ata_port *ap, unsigned int device) in sata_dwc_dev_select() argument