Lines Matching refs:ap

140 static int pdc_common_port_start(struct ata_port *ap);
141 static int pdc_sata_port_start(struct ata_port *ap);
143 static void pdc_tf_load_mmio(struct ata_port *ap, const struct ata_taskfile *tf);
144 static void pdc_exec_command_mmio(struct ata_port *ap, const struct ata_taskfile *tf);
147 static void pdc_irq_clear(struct ata_port *ap);
149 static void pdc_freeze(struct ata_port *ap);
150 static void pdc_sata_freeze(struct ata_port *ap);
151 static void pdc_thaw(struct ata_port *ap);
152 static void pdc_sata_thaw(struct ata_port *ap);
157 static void pdc_error_handler(struct ata_port *ap);
159 static int pdc_pata_cable_detect(struct ata_port *ap);
314 static int pdc_common_port_start(struct ata_port *ap) in pdc_common_port_start() argument
316 struct device *dev = ap->host->dev; in pdc_common_port_start()
321 rc = ata_bmdma_port_start(ap); in pdc_common_port_start()
333 ap->private_data = pp; in pdc_common_port_start()
338 static int pdc_sata_port_start(struct ata_port *ap) in pdc_sata_port_start() argument
342 rc = pdc_common_port_start(ap); in pdc_sata_port_start()
347 if (ap->flags & PDC_FLAG_GEN_II) { in pdc_sata_port_start()
348 void __iomem *sata_mmio = ap->ioaddr.scr_addr; in pdc_sata_port_start()
359 static void pdc_fpdma_clear_interrupt_flag(struct ata_port *ap) in pdc_fpdma_clear_interrupt_flag() argument
361 void __iomem *sata_mmio = ap->ioaddr.scr_addr; in pdc_fpdma_clear_interrupt_flag()
374 static void pdc_fpdma_reset(struct ata_port *ap) in pdc_fpdma_reset() argument
376 void __iomem *sata_mmio = ap->ioaddr.scr_addr; in pdc_fpdma_reset()
389 pdc_fpdma_clear_interrupt_flag(ap); in pdc_fpdma_reset()
392 static void pdc_not_at_command_packet_phase(struct ata_port *ap) in pdc_not_at_command_packet_phase() argument
394 void __iomem *sata_mmio = ap->ioaddr.scr_addr; in pdc_not_at_command_packet_phase()
408 static void pdc_clear_internal_debug_record_error_register(struct ata_port *ap) in pdc_clear_internal_debug_record_error_register() argument
410 void __iomem *sata_mmio = ap->ioaddr.scr_addr; in pdc_clear_internal_debug_record_error_register()
416 static void pdc_reset_port(struct ata_port *ap) in pdc_reset_port() argument
418 void __iomem *ata_ctlstat_mmio = ap->ioaddr.cmd_addr + PDC_CTLSTAT; in pdc_reset_port()
422 if (ap->flags & PDC_FLAG_GEN_II) in pdc_reset_port()
423 pdc_not_at_command_packet_phase(ap); in pdc_reset_port()
444 if (sata_scr_valid(&ap->link) && (ap->flags & PDC_FLAG_GEN_II)) { in pdc_reset_port()
445 pdc_fpdma_reset(ap); in pdc_reset_port()
446 pdc_clear_internal_debug_record_error_register(ap); in pdc_reset_port()
450 static int pdc_pata_cable_detect(struct ata_port *ap) in pdc_pata_cable_detect() argument
453 void __iomem *ata_mmio = ap->ioaddr.cmd_addr; in pdc_pata_cable_detect()
466 *val = readl(link->ap->ioaddr.scr_addr + (sc_reg * 4)); in pdc_sata_scr_read()
475 writel(val, link->ap->ioaddr.scr_addr + (sc_reg * 4)); in pdc_sata_scr_write()
481 struct ata_port *ap = qc->ap; in pdc_atapi_pkt() local
482 dma_addr_t sg_table = ap->bmdma_prd_dma; in pdc_atapi_pkt()
485 struct pdc_port_priv *pp = ap->private_data; in pdc_atapi_pkt()
511 if (sata_scr_valid(&ap->link)) in pdc_atapi_pkt()
569 struct ata_port *ap = qc->ap; in pdc_fill_sg() local
570 struct ata_bmdma_prd *prd = ap->bmdma_prd; in pdc_fill_sg()
632 struct pdc_port_priv *pp = qc->ap->private_data; in pdc_qc_prep()
642 i = pdc_pkt_header(&qc->tf, qc->ap->bmdma_prd_dma, in pdc_qc_prep()
679 static unsigned int pdc_sata_nr_ports(const struct ata_port *ap) in pdc_sata_nr_ports() argument
681 return (ap->flags & PDC_FLAG_4_PORTS) ? 4 : 2; in pdc_sata_nr_ports()
684 static unsigned int pdc_sata_ata_port_to_ata_no(const struct ata_port *ap) in pdc_sata_ata_port_to_ata_no() argument
686 const struct ata_host *host = ap->host; in pdc_sata_ata_port_to_ata_no()
687 unsigned int nr_ports = pdc_sata_nr_ports(ap); in pdc_sata_ata_port_to_ata_no()
690 for (i = 0; i < nr_ports && host->ports[i] != ap; ++i) in pdc_sata_ata_port_to_ata_no()
693 return pdc_port_no_to_ata_no(i, pdc_is_sataii_tx4(ap->flags)); in pdc_sata_ata_port_to_ata_no()
696 static void pdc_freeze(struct ata_port *ap) in pdc_freeze() argument
698 void __iomem *ata_mmio = ap->ioaddr.cmd_addr; in pdc_freeze()
708 static void pdc_sata_freeze(struct ata_port *ap) in pdc_sata_freeze() argument
710 struct ata_host *host = ap->host; in pdc_sata_freeze()
713 unsigned int ata_no = pdc_sata_ata_port_to_ata_no(ap); in pdc_sata_freeze()
728 pdc_freeze(ap); in pdc_sata_freeze()
731 static void pdc_thaw(struct ata_port *ap) in pdc_thaw() argument
733 void __iomem *ata_mmio = ap->ioaddr.cmd_addr; in pdc_thaw()
746 static void pdc_sata_thaw(struct ata_port *ap) in pdc_sata_thaw() argument
748 struct ata_host *host = ap->host; in pdc_sata_thaw()
751 unsigned int ata_no = pdc_sata_ata_port_to_ata_no(ap); in pdc_sata_thaw()
754 pdc_thaw(ap); in pdc_sata_thaw()
769 pdc_reset_port(link->ap); in pdc_pata_softreset()
773 static unsigned int pdc_ata_port_to_ata_no(const struct ata_port *ap) in pdc_ata_port_to_ata_no() argument
775 void __iomem *ata_mmio = ap->ioaddr.cmd_addr; in pdc_ata_port_to_ata_no()
776 void __iomem *host_mmio = ap->host->iomap[PDC_MMIO_BAR]; in pdc_ata_port_to_ata_no()
782 static void pdc_hard_reset_port(struct ata_port *ap) in pdc_hard_reset_port() argument
784 void __iomem *host_mmio = ap->host->iomap[PDC_MMIO_BAR]; in pdc_hard_reset_port()
786 unsigned int ata_no = pdc_ata_port_to_ata_no(ap); in pdc_hard_reset_port()
787 struct pdc_host_priv *hpriv = ap->host->private_data; in pdc_hard_reset_port()
807 if (link->ap->flags & PDC_FLAG_GEN_II) in pdc_sata_hardreset()
808 pdc_not_at_command_packet_phase(link->ap); in pdc_sata_hardreset()
810 pdc_hard_reset_port(link->ap); in pdc_sata_hardreset()
811 pdc_reset_port(link->ap); in pdc_sata_hardreset()
820 static void pdc_error_handler(struct ata_port *ap) in pdc_error_handler() argument
822 if (!(ap->pflags & ATA_PFLAG_FROZEN)) in pdc_error_handler()
823 pdc_reset_port(ap); in pdc_error_handler()
825 ata_sff_error_handler(ap); in pdc_error_handler()
830 struct ata_port *ap = qc->ap; in pdc_post_internal_cmd() local
834 pdc_reset_port(ap); in pdc_post_internal_cmd()
837 static void pdc_error_intr(struct ata_port *ap, struct ata_queued_cmd *qc, in pdc_error_intr() argument
840 struct ata_eh_info *ehi = &ap->link.eh_info; in pdc_error_intr()
857 if (sata_scr_valid(&ap->link)) { in pdc_error_intr()
860 pdc_sata_scr_read(&ap->link, SCR_ERROR, &serror); in pdc_error_intr()
866 pdc_reset_port(ap); in pdc_error_intr()
868 ata_port_abort(ap); in pdc_error_intr()
871 static unsigned int pdc_host_intr(struct ata_port *ap, in pdc_host_intr() argument
875 void __iomem *ata_mmio = ap->ioaddr.cmd_addr; in pdc_host_intr()
879 if (ap->flags & PDC_FLAG_GEN_II) in pdc_host_intr()
885 pdc_error_intr(ap, qc, port_status, err_mask); in pdc_host_intr()
894 qc->err_mask |= ac_err_mask(ata_wait_idle(ap)); in pdc_host_intr()
899 ap->stats.idle_irq++; in pdc_host_intr()
906 static void pdc_irq_clear(struct ata_port *ap) in pdc_irq_clear() argument
908 void __iomem *ata_mmio = ap->ioaddr.cmd_addr; in pdc_irq_clear()
916 struct ata_port *ap; in pdc_interrupt() local
966 ap = host->ports[i]; in pdc_interrupt()
972 struct ata_eh_info *ehi = &ap->link.eh_info; in pdc_interrupt()
976 ata_port_freeze(ap); in pdc_interrupt()
986 qc = ata_qc_from_tag(ap, ap->link.active_tag); in pdc_interrupt()
988 handled += pdc_host_intr(ap, qc); in pdc_interrupt()
1001 struct ata_port *ap = qc->ap; in pdc_packet_start() local
1002 struct pdc_port_priv *pp = ap->private_data; in pdc_packet_start()
1003 void __iomem *host_mmio = ap->host->iomap[PDC_MMIO_BAR]; in pdc_packet_start()
1004 void __iomem *ata_mmio = ap->ioaddr.cmd_addr; in pdc_packet_start()
1005 unsigned int port_no = ap->port_no; in pdc_packet_start()
1008 VPRINTK("ENTER, ap %p\n", ap); in pdc_packet_start()
1040 static void pdc_tf_load_mmio(struct ata_port *ap, const struct ata_taskfile *tf) in pdc_tf_load_mmio() argument
1043 ata_sff_tf_load(ap, tf); in pdc_tf_load_mmio()
1046 static void pdc_exec_command_mmio(struct ata_port *ap, in pdc_exec_command_mmio() argument
1050 ata_sff_exec_command(ap, tf); in pdc_exec_command_mmio()
1089 static void pdc_ata_setup_port(struct ata_port *ap, in pdc_ata_setup_port() argument
1092 ap->ioaddr.cmd_addr = base; in pdc_ata_setup_port()
1093 ap->ioaddr.data_addr = base; in pdc_ata_setup_port()
1094 ap->ioaddr.feature_addr = in pdc_ata_setup_port()
1095 ap->ioaddr.error_addr = base + 0x4; in pdc_ata_setup_port()
1096 ap->ioaddr.nsect_addr = base + 0x8; in pdc_ata_setup_port()
1097 ap->ioaddr.lbal_addr = base + 0xc; in pdc_ata_setup_port()
1098 ap->ioaddr.lbam_addr = base + 0x10; in pdc_ata_setup_port()
1099 ap->ioaddr.lbah_addr = base + 0x14; in pdc_ata_setup_port()
1100 ap->ioaddr.device_addr = base + 0x18; in pdc_ata_setup_port()
1101 ap->ioaddr.command_addr = in pdc_ata_setup_port()
1102 ap->ioaddr.status_addr = base + 0x1c; in pdc_ata_setup_port()
1103 ap->ioaddr.altstatus_addr = in pdc_ata_setup_port()
1104 ap->ioaddr.ctl_addr = base + 0x38; in pdc_ata_setup_port()
1105 ap->ioaddr.scr_addr = scr_addr; in pdc_ata_setup_port()
1215 struct ata_port *ap = host->ports[i]; in pdc_ata_init_one() local
1220 pdc_ata_setup_port(ap, host_mmio + ata_offset, host_mmio + scr_offset); in pdc_ata_init_one()
1222 ata_port_pbar_desc(ap, PDC_MMIO_BAR, -1, "mmio"); in pdc_ata_init_one()
1223 ata_port_pbar_desc(ap, PDC_MMIO_BAR, ata_offset, "ata"); in pdc_ata_init_one()