Lines Matching refs:ap
169 #define HSDEV_FROM_AP(ap) ((struct sata_dwc_device *)(ap)->host->private_data) argument
170 #define HSDEVP_FROM_AP(ap) ((struct sata_dwc_device_port *)(ap)->private_data) argument
171 #define HSDEV_FROM_QC(qc) ((struct sata_dwc_device *)(qc)->ap->host->private_data)
189 static int sata_dwc_qc_complete(struct ata_port *ap, struct ata_queued_cmd *qc,
191 static void sata_dwc_dma_xfer_complete(struct ata_port *ap, u32 check_status);
192 static void sata_dwc_port_stop(struct ata_port *ap);
318 static void sata_dwc_tf_dump(struct ata_port *ap, struct ata_taskfile *tf) in sata_dwc_tf_dump() argument
320 dev_vdbg(ap->dev, in sata_dwc_tf_dump()
324 dev_vdbg(ap->dev, in sata_dwc_tf_dump()
327 dev_vdbg(ap->dev, in sata_dwc_tf_dump()
338 struct ata_port *ap; in dma_dwc_xfer_done() local
344 ap = host->ports[port]; in dma_dwc_xfer_done()
345 hsdevp = HSDEVP_FROM_AP(ap); in dma_dwc_xfer_done()
346 tag = ap->link.active_tag; in dma_dwc_xfer_done()
357 dev_err(ap->dev, "DMA not pending tag=0x%02x pending=%d\n", in dma_dwc_xfer_done()
362 sata_dwc_dma_xfer_complete(ap, 1); in dma_dwc_xfer_done()
369 struct ata_port *ap = qc->ap; in dma_dwc_xfer_setup() local
370 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in dma_dwc_xfer_setup()
371 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in dma_dwc_xfer_setup()
411 dev_err(link->ap->dev, "%s: Incorrect SCR offset 0x%02x\n", in sata_dwc_scr_read()
416 *val = sata_dwc_readl(link->ap->ioaddr.scr_addr + (scr * 4)); in sata_dwc_scr_read()
417 dev_dbg(link->ap->dev, "%s: id=%d reg=%d val=0x%08x\n", __func__, in sata_dwc_scr_read()
418 link->ap->print_id, scr, *val); in sata_dwc_scr_read()
425 dev_dbg(link->ap->dev, "%s: id=%d reg=%d val=0x%08x\n", __func__, in sata_dwc_scr_write()
426 link->ap->print_id, scr, val); in sata_dwc_scr_write()
428 dev_err(link->ap->dev, "%s: Incorrect SCR offset 0x%02x\n", in sata_dwc_scr_write()
432 sata_dwc_writel(link->ap->ioaddr.scr_addr + (scr * 4), val); in sata_dwc_scr_write()
437 static void clear_serror(struct ata_port *ap) in clear_serror() argument
440 sata_dwc_scr_read(&ap->link, SCR_ERROR, &val); in clear_serror()
441 sata_dwc_scr_write(&ap->link, SCR_ERROR, val); in clear_serror()
456 static void sata_dwc_error_intr(struct ata_port *ap, in sata_dwc_error_intr() argument
459 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_error_intr()
460 struct ata_eh_info *ehi = &ap->link.eh_info; in sata_dwc_error_intr()
468 sata_dwc_scr_read(&ap->link, SCR_ERROR, &serror); in sata_dwc_error_intr()
469 status = ap->ops->sff_check_status(ap); in sata_dwc_error_intr()
471 tag = ap->link.active_tag; in sata_dwc_error_intr()
473 dev_err(ap->dev, in sata_dwc_error_intr()
479 clear_serror(ap); in sata_dwc_error_intr()
491 qc = ata_qc_from_tag(ap, tag); in sata_dwc_error_intr()
497 ata_port_abort(ap); in sata_dwc_error_intr()
511 struct ata_port *ap; in sata_dwc_isr() local
525 ap = host->ports[port]; in sata_dwc_isr()
526 hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_isr()
528 dev_dbg(ap->dev, "%s intpr=0x%08x active_tag=%d\n", __func__, intpr, in sata_dwc_isr()
529 ap->link.active_tag); in sata_dwc_isr()
533 sata_dwc_error_intr(ap, hsdev, intpr); in sata_dwc_isr()
543 dev_dbg(ap->dev, "%s: NEWFP tag=%d\n", __func__, tag); in sata_dwc_isr()
545 dev_warn(ap->dev, "CMD tag=%d not pending?\n", tag); in sata_dwc_isr()
549 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
555 qc->ap->link.active_tag = tag; in sata_dwc_isr()
561 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); in sata_dwc_isr()
566 if (ap->link.active_tag == ATA_TAG_POISON) in sata_dwc_isr()
569 tag = ap->link.active_tag; in sata_dwc_isr()
570 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
574 dev_err(ap->dev, in sata_dwc_isr()
577 ap->ops->sff_check_status(ap); in sata_dwc_isr()
581 status = ap->ops->sff_check_status(ap); in sata_dwc_isr()
583 qc->ap->link.active_tag = tag; in sata_dwc_isr()
587 dev_dbg(ap->dev, "interrupt ATA_ERR (0x%x)\n", status); in sata_dwc_isr()
588 sata_dwc_qc_complete(ap, qc, 1); in sata_dwc_isr()
593 dev_dbg(ap->dev, "%s non-NCQ cmd interrupt, protocol: %s\n", in sata_dwc_isr()
606 dev_err(ap->dev, in sata_dwc_isr()
613 sata_dwc_dma_xfer_complete(ap, 1); in sata_dwc_isr()
615 ata_sff_hsm_move(ap, qc, status, 0); in sata_dwc_isr()
619 if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) in sata_dwc_isr()
635 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); in sata_dwc_isr()
639 dev_dbg(ap->dev, in sata_dwc_isr()
645 dev_warn(ap->dev, in sata_dwc_isr()
651 status = ap->ops->sff_check_status(ap); in sata_dwc_isr()
652 dev_dbg(ap->dev, "%s ATA status register=0x%x\n", __func__, status); in sata_dwc_isr()
664 qc = ata_qc_from_tag(ap, tag); in sata_dwc_isr()
667 qc->ap->link.active_tag = tag; in sata_dwc_isr()
672 dev_dbg(ap->dev, "%s ATA_ERR (0x%x)\n", __func__, in sata_dwc_isr()
674 sata_dwc_qc_complete(ap, qc, 1); in sata_dwc_isr()
680 dev_dbg(ap->dev, "%s NCQ command, protocol: %s\n", __func__, in sata_dwc_isr()
686 dev_warn(ap->dev, "%s: DMA not pending?\n", in sata_dwc_isr()
689 sata_dwc_dma_xfer_complete(ap, 1); in sata_dwc_isr()
691 if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) in sata_dwc_isr()
697 ap->stats.idle_irq++; in sata_dwc_isr()
698 dev_warn(ap->dev, "STILL BUSY IRQ ata%d: irq trap\n", in sata_dwc_isr()
699 ap->print_id); in sata_dwc_isr()
709 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive2); in sata_dwc_isr()
711 dev_dbg(ap->dev, in sata_dwc_isr()
746 static void sata_dwc_dma_xfer_complete(struct ata_port *ap, u32 check_status) in sata_dwc_dma_xfer_complete() argument
749 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_dma_xfer_complete()
750 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_dma_xfer_complete()
753 tag = ap->link.active_tag; in sata_dwc_dma_xfer_complete()
754 qc = ata_qc_from_tag(ap, tag); in sata_dwc_dma_xfer_complete()
756 dev_err(ap->dev, "failed to get qc"); in sata_dwc_dma_xfer_complete()
762 dev_info(ap->dev, in sata_dwc_dma_xfer_complete()
773 dev_err(ap->dev, in sata_dwc_dma_xfer_complete()
780 sata_dwc_qc_complete(ap, qc, check_status); in sata_dwc_dma_xfer_complete()
781 ap->link.active_tag = ATA_TAG_POISON; in sata_dwc_dma_xfer_complete()
783 sata_dwc_qc_complete(ap, qc, check_status); in sata_dwc_dma_xfer_complete()
787 static int sata_dwc_qc_complete(struct ata_port *ap, struct ata_queued_cmd *qc, in sata_dwc_qc_complete() argument
793 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_qc_complete()
794 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_complete()
796 dev_dbg(ap->dev, "%s checkstatus? %x\n", __func__, check_status); in sata_dwc_qc_complete()
799 dev_err(ap->dev, "TX DMA PENDING\n"); in sata_dwc_qc_complete()
801 dev_err(ap->dev, "RX DMA PENDING\n"); in sata_dwc_qc_complete()
802 dev_dbg(ap->dev, in sata_dwc_qc_complete()
804 qc->tf.command, status, ap->print_id, qc->tf.protocol); in sata_dwc_qc_complete()
881 static int sata_dwc_port_start(struct ata_port *ap) in sata_dwc_port_start() argument
889 hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_start()
891 dev_dbg(ap->dev, "%s: port_no=%d\n", __func__, ap->port_no); in sata_dwc_port_start()
893 hsdev->host = ap->host; in sata_dwc_port_start()
894 pdev = ap->host->dev; in sata_dwc_port_start()
896 dev_err(ap->dev, "%s: no ap->host->dev\n", __func__); in sata_dwc_port_start()
920 ap->bmdma_prd = NULL; /* set these so libata doesn't use them */ in sata_dwc_port_start()
921 ap->bmdma_prd_dma = 0; in sata_dwc_port_start()
923 if (ap->port_no == 0) { in sata_dwc_port_start()
924 dev_dbg(ap->dev, "%s: clearing TXCHEN, RXCHEN in DMAC\n", in sata_dwc_port_start()
929 dev_dbg(ap->dev, "%s: setting burst size in DBTSR\n", in sata_dwc_port_start()
937 clear_serror(ap); in sata_dwc_port_start()
938 ap->private_data = hsdevp; in sata_dwc_port_start()
939 dev_dbg(ap->dev, "%s: done\n", __func__); in sata_dwc_port_start()
945 dev_dbg(ap->dev, "%s: fail. ap->id = %d\n", __func__, ap->print_id); in sata_dwc_port_start()
949 static void sata_dwc_port_stop(struct ata_port *ap) in sata_dwc_port_stop() argument
951 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_port_stop()
952 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_stop()
954 dev_dbg(ap->dev, "%s: ap->id = %d\n", __func__, ap->print_id); in sata_dwc_port_stop()
961 ap->private_data = NULL; in sata_dwc_port_stop()
971 static void sata_dwc_exec_command_by_tag(struct ata_port *ap, in sata_dwc_exec_command_by_tag() argument
975 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_exec_command_by_tag()
977 dev_dbg(ap->dev, "%s cmd(0x%02x): %s tag=%d\n", __func__, tf->command, in sata_dwc_exec_command_by_tag()
988 clear_serror(ap); in sata_dwc_exec_command_by_tag()
989 ata_sff_exec_command(ap, tf); in sata_dwc_exec_command_by_tag()
994 sata_dwc_exec_command_by_tag(qc->ap, &qc->tf, tag, in sata_dwc_bmdma_setup_by_tag()
1003 dev_dbg(qc->ap->dev, "%s: ap->link.sactive=0x%08x tag=%d\n", in sata_dwc_bmdma_setup()
1004 __func__, qc->ap->link.sactive, tag); in sata_dwc_bmdma_setup()
1016 struct ata_port *ap = qc->ap; in sata_dwc_bmdma_start_by_tag() local
1017 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_bmdma_start_by_tag()
1028 dev_err(ap->dev, in sata_dwc_bmdma_start_by_tag()
1034 dev_dbg(ap->dev, in sata_dwc_bmdma_start_by_tag()
1038 sata_dwc_tf_dump(ap, &qc->tf); in sata_dwc_bmdma_start_by_tag()
1041 sata_dwc_scr_read(&ap->link, SCR_ERROR, ®); in sata_dwc_bmdma_start_by_tag()
1043 dev_err(ap->dev, "%s: ****** SError=0x%08x ******\n", in sata_dwc_bmdma_start_by_tag()
1065 dev_dbg(qc->ap->dev, "%s: ap->link.sactive=0x%08x tag=%d\n", in sata_dwc_bmdma_start()
1066 __func__, qc->ap->link.sactive, tag); in sata_dwc_bmdma_start()
1070 dev_dbg(qc->ap->dev, "%s\n", __func__); in sata_dwc_bmdma_start()
1078 struct ata_port *ap = qc->ap; in sata_dwc_qc_issue() local
1079 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_issue()
1082 if (qc->hw_tag > 0 || ap->link.sactive > 1) in sata_dwc_qc_issue()
1083 dev_info(ap->dev, in sata_dwc_qc_issue()
1085 __func__, ap->print_id, qc->tf.command, in sata_dwc_qc_issue()
1088 ap->link.active_tag, ap->link.sactive); in sata_dwc_qc_issue()
1103 sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); in sata_dwc_qc_issue()
1105 sata_dwc_scr_write(&ap->link, SCR_ACTIVE, sactive); in sata_dwc_qc_issue()
1107 dev_dbg(qc->ap->dev, in sata_dwc_qc_issue()
1109 __func__, tag, qc->ap->link.sactive, sactive); in sata_dwc_qc_issue()
1111 ap->ops->sff_tf_load(ap, &qc->tf); in sata_dwc_qc_issue()
1112 sata_dwc_exec_command_by_tag(ap, &qc->tf, tag, in sata_dwc_qc_issue()
1120 static void sata_dwc_error_handler(struct ata_port *ap) in sata_dwc_error_handler() argument
1122 ata_sff_error_handler(ap); in sata_dwc_error_handler()
1128 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(link->ap); in sata_dwc_hardreset()
1147 static void sata_dwc_dev_select(struct ata_port *ap, unsigned int device) in sata_dwc_dev_select() argument