Lines Matching full: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()
551 qc->ap->link.active_tag = tag; in sata_dwc_isr()
557 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); in sata_dwc_isr()
562 if (ap->link.active_tag == ATA_TAG_POISON) in sata_dwc_isr()
565 tag = ap->link.active_tag; in sata_dwc_isr()
566 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
570 dev_err(ap->dev, in sata_dwc_isr()
573 ap->ops->sff_check_status(ap); in sata_dwc_isr()
577 status = ap->ops->sff_check_status(ap); in sata_dwc_isr()
579 qc->ap->link.active_tag = tag; in sata_dwc_isr()
583 dev_dbg(ap->dev, "interrupt ATA_ERR (0x%x)\n", status); in sata_dwc_isr()
584 sata_dwc_qc_complete(ap, qc, 1); in sata_dwc_isr()
589 dev_dbg(ap->dev, "%s non-NCQ cmd interrupt, protocol: %s\n", in sata_dwc_isr()
602 dev_err(ap->dev, in sata_dwc_isr()
609 sata_dwc_dma_xfer_complete(ap, 1); in sata_dwc_isr()
611 ata_sff_hsm_move(ap, qc, status, 0); in sata_dwc_isr()
615 if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) in sata_dwc_isr()
631 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); in sata_dwc_isr()
635 dev_dbg(ap->dev, in sata_dwc_isr()
641 dev_warn(ap->dev, in sata_dwc_isr()
647 status = ap->ops->sff_check_status(ap); in sata_dwc_isr()
648 dev_dbg(ap->dev, "%s ATA status register=0x%x\n", __func__, status); in sata_dwc_isr()
660 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
663 qc->ap->link.active_tag = tag; in sata_dwc_isr()
668 dev_dbg(ap->dev, "%s ATA_ERR (0x%x)\n", __func__, in sata_dwc_isr()
670 sata_dwc_qc_complete(ap, qc, 1); in sata_dwc_isr()
676 dev_dbg(ap->dev, "%s NCQ command, protocol: %s\n", __func__, in sata_dwc_isr()
682 dev_warn(ap->dev, "%s: DMA not pending?\n", in sata_dwc_isr()
685 sata_dwc_dma_xfer_complete(ap, 1); in sata_dwc_isr()
687 if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) in sata_dwc_isr()
693 ap->stats.idle_irq++; in sata_dwc_isr()
694 dev_warn(ap->dev, "STILL BUSY IRQ ata%d: irq trap\n", in sata_dwc_isr()
695 ap->print_id); in sata_dwc_isr()
705 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive2); in sata_dwc_isr()
707 dev_dbg(ap->dev, in sata_dwc_isr()
742 static void sata_dwc_dma_xfer_complete(struct ata_port *ap, u32 check_status) in sata_dwc_dma_xfer_complete() argument
745 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_dma_xfer_complete()
746 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_dma_xfer_complete()
749 tag = ap->link.active_tag; in sata_dwc_dma_xfer_complete()
750 qc = ata_qc_from_tag(ap, tag); in sata_dwc_dma_xfer_complete()
752 dev_err(ap->dev, "failed to get qc"); in sata_dwc_dma_xfer_complete()
758 dev_info(ap->dev, in sata_dwc_dma_xfer_complete()
769 dev_err(ap->dev, in sata_dwc_dma_xfer_complete()
776 sata_dwc_qc_complete(ap, qc, check_status); in sata_dwc_dma_xfer_complete()
777 ap->link.active_tag = ATA_TAG_POISON; in sata_dwc_dma_xfer_complete()
779 sata_dwc_qc_complete(ap, qc, check_status); in sata_dwc_dma_xfer_complete()
783 static int sata_dwc_qc_complete(struct ata_port *ap, struct ata_queued_cmd *qc, in sata_dwc_qc_complete() argument
789 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_qc_complete()
790 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_complete()
792 dev_dbg(ap->dev, "%s checkstatus? %x\n", __func__, check_status); in sata_dwc_qc_complete()
795 dev_err(ap->dev, "TX DMA PENDING\n"); in sata_dwc_qc_complete()
797 dev_err(ap->dev, "RX DMA PENDING\n"); in sata_dwc_qc_complete()
798 dev_dbg(ap->dev, in sata_dwc_qc_complete()
800 qc->tf.command, status, ap->print_id, qc->tf.protocol); in sata_dwc_qc_complete()
877 static int sata_dwc_port_start(struct ata_port *ap) in sata_dwc_port_start() argument
885 hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_start()
887 dev_dbg(ap->dev, "%s: port_no=%d\n", __func__, ap->port_no); in sata_dwc_port_start()
889 hsdev->host = ap->host; in sata_dwc_port_start()
890 pdev = ap->host->dev; in sata_dwc_port_start()
892 dev_err(ap->dev, "%s: no ap->host->dev\n", __func__); in sata_dwc_port_start()
916 ap->bmdma_prd = NULL; /* set these so libata doesn't use them */ in sata_dwc_port_start()
917 ap->bmdma_prd_dma = 0; in sata_dwc_port_start()
919 if (ap->port_no == 0) { in sata_dwc_port_start()
920 dev_dbg(ap->dev, "%s: clearing TXCHEN, RXCHEN in DMAC\n", in sata_dwc_port_start()
925 dev_dbg(ap->dev, "%s: setting burst size in DBTSR\n", in sata_dwc_port_start()
933 clear_serror(ap); in sata_dwc_port_start()
934 ap->private_data = hsdevp; in sata_dwc_port_start()
935 dev_dbg(ap->dev, "%s: done\n", __func__); in sata_dwc_port_start()
941 dev_dbg(ap->dev, "%s: fail. ap->id = %d\n", __func__, ap->print_id); in sata_dwc_port_start()
945 static void sata_dwc_port_stop(struct ata_port *ap) in sata_dwc_port_stop() argument
947 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_port_stop()
948 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_stop()
950 dev_dbg(ap->dev, "%s: ap->id = %d\n", __func__, ap->print_id); in sata_dwc_port_stop()
957 ap->private_data = NULL; in sata_dwc_port_stop()
962 * arguments : ata_port *ap, ata_taskfile *tf, u8 tag, u32 cmd_issued
967 static void sata_dwc_exec_command_by_tag(struct ata_port *ap, in sata_dwc_exec_command_by_tag() argument
971 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_exec_command_by_tag()
973 dev_dbg(ap->dev, "%s cmd(0x%02x): %s tag=%d\n", __func__, tf->command, in sata_dwc_exec_command_by_tag()
984 clear_serror(ap); in sata_dwc_exec_command_by_tag()
985 ata_sff_exec_command(ap, tf); in sata_dwc_exec_command_by_tag()
990 sata_dwc_exec_command_by_tag(qc->ap, &qc->tf, tag, in sata_dwc_bmdma_setup_by_tag()
999 dev_dbg(qc->ap->dev, "%s: ap->link.sactive=0x%08x tag=%d\n", in sata_dwc_bmdma_setup()
1000 __func__, qc->ap->link.sactive, tag); in sata_dwc_bmdma_setup()
1012 struct ata_port *ap = qc->ap; in sata_dwc_bmdma_start_by_tag() local
1013 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_bmdma_start_by_tag()
1024 dev_err(ap->dev, in sata_dwc_bmdma_start_by_tag()
1030 dev_dbg(ap->dev, in sata_dwc_bmdma_start_by_tag()
1034 sata_dwc_tf_dump(ap, &qc->tf); in sata_dwc_bmdma_start_by_tag()
1037 sata_dwc_scr_read(&ap->link, SCR_ERROR, ®); in sata_dwc_bmdma_start_by_tag()
1039 dev_err(ap->dev, "%s: ****** SError=0x%08x ******\n", in sata_dwc_bmdma_start_by_tag()
1061 dev_dbg(qc->ap->dev, "%s: ap->link.sactive=0x%08x tag=%d\n", in sata_dwc_bmdma_start()
1062 __func__, qc->ap->link.sactive, tag); in sata_dwc_bmdma_start()
1066 dev_dbg(qc->ap->dev, "%s\n", __func__); in sata_dwc_bmdma_start()
1074 struct ata_port *ap = qc->ap; in sata_dwc_qc_issue() local
1075 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_issue()
1078 if (qc->hw_tag > 0 || ap->link.sactive > 1) in sata_dwc_qc_issue()
1079 dev_info(ap->dev, in sata_dwc_qc_issue()
1080 "%s ap id=%d cmd(0x%02x)=%s qc tag=%d prot=%s ap active_tag=0x%08x ap sactive=0x%08x\n", in sata_dwc_qc_issue()
1081 __func__, ap->print_id, qc->tf.command, in sata_dwc_qc_issue()
1084 ap->link.active_tag, ap->link.sactive); in sata_dwc_qc_issue()
1099 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); in sata_dwc_qc_issue()
1101 sata_dwc_scr_write(&ap->link, SCR_ACTIVE, sactive); in sata_dwc_qc_issue()
1103 dev_dbg(qc->ap->dev, in sata_dwc_qc_issue()
1104 "%s: tag=%d ap->link.sactive = 0x%08x sactive=0x%08x\n", in sata_dwc_qc_issue()
1105 __func__, tag, qc->ap->link.sactive, sactive); in sata_dwc_qc_issue()
1107 ap->ops->sff_tf_load(ap, &qc->tf); in sata_dwc_qc_issue()
1108 sata_dwc_exec_command_by_tag(ap, &qc->tf, tag, in sata_dwc_qc_issue()
1116 static void sata_dwc_error_handler(struct ata_port *ap) in sata_dwc_error_handler() argument
1118 ata_sff_error_handler(ap); in sata_dwc_error_handler()
1124 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(link->ap); in sata_dwc_hardreset()
1143 static void sata_dwc_dev_select(struct ata_port *ap, unsigned int device) in sata_dwc_dev_select() argument