Lines Matching +full:udma +full:- +full:p
1 // SPDX-License-Identifier: GPL-2.0-only
54 controller_kl_ata3, /* KeyLargo ATA-3 */
55 controller_kl_ata4, /* KeyLargo ATA-4 */
56 controller_un_ata6, /* UniNorth2 ATA-6 */
57 controller_k2_ata6, /* K2 ATA-6 */
58 controller_sh_ata6, /* Shasta ATA-6 */
64 "KeyLargo ATA-3", /* KeyLargo ATA-3 (MDMA only) */
65 "KeyLargo ATA-4", /* KeyLargo ATA-4 (UDMA/66) */
66 "UniNorth ATA-6", /* UniNorth2 ATA-6 (UDMA/100) */
67 "K2 ATA-6", /* K2 ATA-6 (UDMA/100) */
68 "Shasta ATA-6", /* Shasta ATA-6 (UDMA/133) */
72 * Extra registers, both 32-bit little-endian
87 #define SYSCLK_TICKS(t) (((t) + IDE_SYSCLK_NS - 1) / IDE_SYSCLK_NS)
88 #define SYSCLK_TICKS_66(t) (((t) + IDE_SYSCLK_66_NS - 1) / IDE_SYSCLK_66_NS)
106 * for PIO & MWDMA and one for UDMA, and a similar DBDMA channel.
111 * though I use pre-calculated tables for UDMA as usual...
135 * - Write data setup, which appears to match the cycle time. They
137 * - Ready to pause time (from spec)
138 * - Address setup. That one is weird. I don't see where exactly
139 * it fits in UDMA cycles, I got it's name from an obscure piece
216 * the BSY bit (typically some combo drives slave on the UDMA
221 * from MacOS...) --BenH.
274 { -1, 0, 0 }
286 { -1, 0, 0 }
298 { -1, 0, 0 }
315 { -1, 0, 0 }
333 { -1, 0, 0 }
352 { -1, 0, 0 }
361 for (i = 0; priv->timings[i].mode > 0; i++) { in pata_macio_find_timing()
362 if (priv->timings[i].mode == mode) in pata_macio_find_timing()
363 return &priv->timings[i]; in pata_macio_find_timing()
371 struct pata_macio_priv *priv = ap->private_data; in pata_macio_apply_timings()
372 void __iomem *rbase = ap->ioaddr.cmd_addr; in pata_macio_apply_timings()
374 if (priv->kind == controller_sh_ata6 || in pata_macio_apply_timings()
375 priv->kind == controller_un_ata6 || in pata_macio_apply_timings()
376 priv->kind == controller_k2_ata6) { in pata_macio_apply_timings()
377 writel(priv->treg[device][0], rbase + IDE_KAUAI_PIO_CONFIG); in pata_macio_apply_timings()
378 writel(priv->treg[device][1], rbase + IDE_KAUAI_ULTRA_CONFIG); in pata_macio_apply_timings()
380 writel(priv->treg[device][0], rbase + IDE_TIMING_CONFIG); in pata_macio_apply_timings()
394 struct pata_macio_priv *priv = ap->private_data; in pata_macio_set_timings()
397 dev_dbg(priv->dev, "Set timings: DEV=%d,PIO=0x%x (%s),DMA=0x%x (%s)\n", in pata_macio_set_timings()
398 adev->devno, in pata_macio_set_timings()
399 adev->pio_mode, in pata_macio_set_timings()
400 ata_mode_string(ata_xfer_mode2mask(adev->pio_mode)), in pata_macio_set_timings()
401 adev->dma_mode, in pata_macio_set_timings()
402 ata_mode_string(ata_xfer_mode2mask(adev->dma_mode))); in pata_macio_set_timings()
405 priv->treg[adev->devno][0] = priv->treg[adev->devno][1] = 0; in pata_macio_set_timings()
408 t = pata_macio_find_timing(priv, adev->pio_mode); in pata_macio_set_timings()
410 dev_warn(priv->dev, "Invalid PIO timing requested: 0x%x\n", in pata_macio_set_timings()
411 adev->pio_mode); in pata_macio_set_timings()
417 priv->treg[adev->devno][0] |= t->reg1; in pata_macio_set_timings()
420 t = pata_macio_find_timing(priv, adev->dma_mode); in pata_macio_set_timings()
421 if (t == NULL || (t->reg1 == 0 && t->reg2 == 0)) { in pata_macio_set_timings()
422 dev_dbg(priv->dev, "DMA timing not set yet, using MW_DMA_0\n"); in pata_macio_set_timings()
428 priv->treg[adev->devno][0] |= t->reg1; in pata_macio_set_timings()
429 priv->treg[adev->devno][1] |= t->reg2; in pata_macio_set_timings()
431 dev_dbg(priv->dev, " -> %08x %08x\n", in pata_macio_set_timings()
432 priv->treg[adev->devno][0], in pata_macio_set_timings()
433 priv->treg[adev->devno][1]); in pata_macio_set_timings()
436 pata_macio_apply_timings(ap, adev->devno); in pata_macio_set_timings()
447 switch(priv->kind) { in pata_macio_default_timings()
469 priv->treg[0][0] = priv->treg[1][0] = value; in pata_macio_default_timings()
470 priv->treg[0][1] = priv->treg[1][1] = value2; in pata_macio_default_timings()
475 struct pata_macio_priv *priv = ap->private_data; in pata_macio_cable_detect()
477 /* Get cable type from device-tree */ in pata_macio_cable_detect()
478 if (priv->kind == controller_kl_ata4 || in pata_macio_cable_detect()
479 priv->kind == controller_un_ata6 || in pata_macio_cable_detect()
480 priv->kind == controller_k2_ata6 || in pata_macio_cable_detect()
481 priv->kind == controller_sh_ata6) { in pata_macio_cable_detect()
482 const char* cable = of_get_property(priv->node, "cable-type", in pata_macio_cable_detect()
489 if (cable && !strncmp(cable, "80-", 3)) { in pata_macio_cable_detect()
501 /* G5's seem to have incorrect cable type in device-tree. in pata_macio_cable_detect()
505 if (of_device_is_compatible(priv->node, "K2-UATA") || in pata_macio_cable_detect()
506 of_device_is_compatible(priv->node, "shasta-ata")) in pata_macio_cable_detect()
515 unsigned int write = (qc->tf.flags & ATA_TFLAG_WRITE); in pata_macio_qc_prep()
516 struct ata_port *ap = qc->ap; in pata_macio_qc_prep()
517 struct pata_macio_priv *priv = ap->private_data; in pata_macio_qc_prep()
522 dev_dbgdma(priv->dev, "%s: qc %p flags %lx, write %d dev %d\n", in pata_macio_qc_prep()
523 __func__, qc, qc->flags, write, qc->dev->devno); in pata_macio_qc_prep()
525 if (!(qc->flags & ATA_QCFLAG_DMAMAP)) in pata_macio_qc_prep()
528 table = (struct dbdma_cmd *) priv->dma_table_cpu; in pata_macio_qc_prep()
531 for_each_sg(qc->sg, sg, qc->n_elem, si) { in pata_macio_qc_prep()
535 * Note h/w doesn't support 64-bit, so we unconditionally in pata_macio_qc_prep()
546 table->command = cpu_to_le16(write ? OUTPUT_MORE: INPUT_MORE); in pata_macio_qc_prep()
547 table->req_count = cpu_to_le16(len); in pata_macio_qc_prep()
548 table->phy_addr = cpu_to_le32(addr); in pata_macio_qc_prep()
549 table->cmd_dep = 0; in pata_macio_qc_prep()
550 table->xfer_status = 0; in pata_macio_qc_prep()
551 table->res_count = 0; in pata_macio_qc_prep()
553 sg_len -= len; in pata_macio_qc_prep()
562 table--; in pata_macio_qc_prep()
563 table->command = cpu_to_le16(write ? OUTPUT_LAST: INPUT_LAST); in pata_macio_qc_prep()
568 table->command = cpu_to_le16(DBDMA_STOP); in pata_macio_qc_prep()
570 dev_dbgdma(priv->dev, "%s: %d DMA list entries\n", __func__, pi); in pata_macio_qc_prep()
578 struct dbdma_regs __iomem *dma_regs = ap->ioaddr.bmdma_addr; in pata_macio_freeze()
584 writel((RUN|PAUSE|FLUSH|WAKE|DEAD) << 16, &dma_regs->control); in pata_macio_freeze()
585 while (--timeout && (readl(&dma_regs->status) & RUN)) in pata_macio_freeze()
595 struct ata_port *ap = qc->ap; in pata_macio_bmdma_setup()
596 struct pata_macio_priv *priv = ap->private_data; in pata_macio_bmdma_setup()
597 struct dbdma_regs __iomem *dma_regs = ap->ioaddr.bmdma_addr; in pata_macio_bmdma_setup()
598 int dev = qc->dev->devno; in pata_macio_bmdma_setup()
600 dev_dbgdma(priv->dev, "%s: qc %p\n", __func__, qc); in pata_macio_bmdma_setup()
603 writel(priv->dma_table_dma, &dma_regs->cmdptr); in pata_macio_bmdma_setup()
606 * UDMA reads in pata_macio_bmdma_setup()
608 if (priv->kind == controller_kl_ata4 && in pata_macio_bmdma_setup()
609 (priv->treg[dev][0] & TR_66_UDMA_EN)) { in pata_macio_bmdma_setup()
610 void __iomem *rbase = ap->ioaddr.cmd_addr; in pata_macio_bmdma_setup()
611 u32 reg = priv->treg[dev][0]; in pata_macio_bmdma_setup()
613 if (!(qc->tf.flags & ATA_TFLAG_WRITE)) in pata_macio_bmdma_setup()
619 ap->ops->sff_exec_command(ap, &qc->tf); in pata_macio_bmdma_setup()
624 struct ata_port *ap = qc->ap; in pata_macio_bmdma_start()
625 struct pata_macio_priv *priv = ap->private_data; in pata_macio_bmdma_start()
626 struct dbdma_regs __iomem *dma_regs = ap->ioaddr.bmdma_addr; in pata_macio_bmdma_start()
628 dev_dbgdma(priv->dev, "%s: qc %p\n", __func__, qc); in pata_macio_bmdma_start()
630 writel((RUN << 16) | RUN, &dma_regs->control); in pata_macio_bmdma_start()
632 (void)readl(&dma_regs->control); in pata_macio_bmdma_start()
637 struct ata_port *ap = qc->ap; in pata_macio_bmdma_stop()
638 struct pata_macio_priv *priv = ap->private_data; in pata_macio_bmdma_stop()
639 struct dbdma_regs __iomem *dma_regs = ap->ioaddr.bmdma_addr; in pata_macio_bmdma_stop()
642 dev_dbgdma(priv->dev, "%s: qc %p\n", __func__, qc); in pata_macio_bmdma_stop()
645 writel (((RUN|WAKE|DEAD) << 16), &dma_regs->control); in pata_macio_bmdma_stop()
646 while (--timeout && (readl(&dma_regs->status) & RUN)) in pata_macio_bmdma_stop()
652 struct pata_macio_priv *priv = ap->private_data; in pata_macio_bmdma_status()
653 struct dbdma_regs __iomem *dma_regs = ap->ioaddr.bmdma_addr; in pata_macio_bmdma_status()
657 dstat = readl(&dma_regs->status); in pata_macio_bmdma_status()
659 dev_dbgdma(priv->dev, "%s: dstat=%x\n", __func__, dstat); in pata_macio_bmdma_status()
663 * - The dbdma won't stop if the command was started in pata_macio_bmdma_status()
666 * a multi-block transfer. in pata_macio_bmdma_status()
668 * - The dbdma fifo hasn't yet finished flushing to in pata_macio_bmdma_status()
684 dev_dbgdma(priv->dev, "%s: DMA still active, flushing...\n", __func__); in pata_macio_bmdma_status()
693 writel((FLUSH << 16) | FLUSH, &dma_regs->control); in pata_macio_bmdma_status()
696 dstat = readl(&dma_regs->status); in pata_macio_bmdma_status()
700 dev_warn(priv->dev, "timeout flushing DMA\n"); in pata_macio_bmdma_status()
711 struct pata_macio_priv *priv = ap->private_data; in pata_macio_port_start()
713 if (ap->ioaddr.bmdma_addr == NULL) in pata_macio_port_start()
721 priv->dma_table_cpu = in pata_macio_port_start()
722 dmam_alloc_coherent(priv->dev, in pata_macio_port_start()
724 &priv->dma_table_dma, GFP_KERNEL); in pata_macio_port_start()
725 if (priv->dma_table_cpu == NULL) { in pata_macio_port_start()
726 dev_err(priv->dev, "Unable to allocate DMA command list\n"); in pata_macio_port_start()
727 ap->ioaddr.bmdma_addr = NULL; in pata_macio_port_start()
728 ap->mwdma_mask = 0; in pata_macio_port_start()
729 ap->udma_mask = 0; in pata_macio_port_start()
736 struct pata_macio_priv *priv = ap->private_data; in pata_macio_irq_clear()
740 dev_dbgdma(priv->dev, "%s\n", __func__); in pata_macio_irq_clear()
745 dev_dbg(priv->dev, "Enabling & resetting... \n"); in pata_macio_reset_hw()
747 if (priv->mediabay) in pata_macio_reset_hw()
750 if (priv->kind == controller_ohare && !resume) { in pata_macio_reset_hw()
755 ppc_md.feature_call(PMAC_FTR_IDE_ENABLE, priv->node, 0, 1); in pata_macio_reset_hw()
761 priv->node, priv->aapl_bus_id, 1); in pata_macio_reset_hw()
763 priv->node, priv->aapl_bus_id, 1); in pata_macio_reset_hw()
768 priv->node, priv->aapl_bus_id, 0); in pata_macio_reset_hw()
774 if (priv->pdev && resume) { in pata_macio_reset_hw()
777 pci_restore_state(priv->pdev); in pata_macio_reset_hw()
778 rc = pcim_enable_device(priv->pdev); in pata_macio_reset_hw()
780 dev_err(&priv->pdev->dev, in pata_macio_reset_hw()
784 pci_set_master(priv->pdev); in pata_macio_reset_hw()
790 if (priv->kauai_fcr) in pata_macio_reset_hw()
793 KAUAI_FCR_UATA_ENABLE, priv->kauai_fcr); in pata_macio_reset_hw()
801 struct ata_port *ap = ata_shost_to_port(sdev->host); in pata_macio_slave_config()
802 struct pata_macio_priv *priv = ap->private_data; in pata_macio_slave_config()
813 dev = &ap->link.device[sdev->id]; in pata_macio_slave_config()
816 if (priv->kind == controller_ohare) { in pata_macio_slave_config()
817 blk_queue_update_dma_alignment(sdev->request_queue, 31); in pata_macio_slave_config()
818 blk_queue_update_dma_pad(sdev->request_queue, 31); in pata_macio_slave_config()
826 if (dev->class != ATA_DEV_ATAPI) in pata_macio_slave_config()
830 if (priv->kind == controller_sh_ata6 || priv->kind == controller_k2_ata6) { in pata_macio_slave_config()
832 blk_queue_update_dma_alignment(sdev->request_queue, 15); in pata_macio_slave_config()
833 blk_queue_update_dma_pad(sdev->request_queue, 15); in pata_macio_slave_config()
838 * to do the same Apple does and pray they did not get it wrong :-) in pata_macio_slave_config()
840 BUG_ON(!priv->pdev); in pata_macio_slave_config()
841 pci_write_config_byte(priv->pdev, PCI_CACHE_LINE_SIZE, 0x08); in pata_macio_slave_config()
842 pci_read_config_word(priv->pdev, PCI_COMMAND, &cmd); in pata_macio_slave_config()
843 pci_write_config_word(priv->pdev, PCI_COMMAND, in pata_macio_slave_config()
859 rc = ata_host_suspend(priv->host, mesg); in pata_macio_do_suspend()
868 disable_irq(priv->irq); in pata_macio_do_suspend()
871 if (priv->mediabay) in pata_macio_do_suspend()
875 if (priv->kauai_fcr) { in pata_macio_do_suspend()
876 u32 fcr = readl(priv->kauai_fcr); in pata_macio_do_suspend()
878 writel(fcr, priv->kauai_fcr); in pata_macio_do_suspend()
886 if (priv->pdev) { in pata_macio_do_suspend()
887 pci_save_state(priv->pdev); in pata_macio_do_suspend()
888 pci_disable_device(priv->pdev); in pata_macio_do_suspend()
892 ppc_md.feature_call(PMAC_FTR_IDE_ENABLE, priv->node, in pata_macio_do_suspend()
893 priv->aapl_bus_id, 0); in pata_macio_do_suspend()
900 /* Reset and re-enable the HW */ in pata_macio_do_resume()
904 pata_macio_apply_timings(priv->host->ports[0], 0); in pata_macio_do_resume()
907 enable_irq(priv->irq); in pata_macio_do_resume()
910 ata_host_resume(priv->host); in pata_macio_do_resume()
950 if (of_device_is_compatible(priv->node, "shasta-ata")) { in pata_macio_invariants()
951 priv->kind = controller_sh_ata6; in pata_macio_invariants()
952 priv->timings = pata_macio_shasta_timings; in pata_macio_invariants()
953 } else if (of_device_is_compatible(priv->node, "kauai-ata")) { in pata_macio_invariants()
954 priv->kind = controller_un_ata6; in pata_macio_invariants()
955 priv->timings = pata_macio_kauai_timings; in pata_macio_invariants()
956 } else if (of_device_is_compatible(priv->node, "K2-UATA")) { in pata_macio_invariants()
957 priv->kind = controller_k2_ata6; in pata_macio_invariants()
958 priv->timings = pata_macio_kauai_timings; in pata_macio_invariants()
959 } else if (of_device_is_compatible(priv->node, "keylargo-ata")) { in pata_macio_invariants()
960 if (of_node_name_eq(priv->node, "ata-4")) { in pata_macio_invariants()
961 priv->kind = controller_kl_ata4; in pata_macio_invariants()
962 priv->timings = pata_macio_kl66_timings; in pata_macio_invariants()
964 priv->kind = controller_kl_ata3; in pata_macio_invariants()
965 priv->timings = pata_macio_kl33_timings; in pata_macio_invariants()
967 } else if (of_device_is_compatible(priv->node, "heathrow-ata")) { in pata_macio_invariants()
968 priv->kind = controller_heathrow; in pata_macio_invariants()
969 priv->timings = pata_macio_heathrow_timings; in pata_macio_invariants()
971 priv->kind = controller_ohare; in pata_macio_invariants()
972 priv->timings = pata_macio_ohare_timings; in pata_macio_invariants()
975 /* XXX FIXME --- setup priv->mediabay here */ in pata_macio_invariants()
978 bidp = of_get_property(priv->node, "AAPL,bus-id", NULL); in pata_macio_invariants()
979 priv->aapl_bus_id = bidp ? *bidp : 0; in pata_macio_invariants()
981 /* Fixup missing Apple bus ID in case of media-bay */ in pata_macio_invariants()
982 if (priv->mediabay && !bidp) in pata_macio_invariants()
983 priv->aapl_bus_id = 1; in pata_macio_invariants()
990 ioaddr->cmd_addr = base; in pata_macio_setup_ios()
993 ioaddr->data_addr = base + (ATA_REG_DATA << 4); in pata_macio_setup_ios()
994 ioaddr->error_addr = base + (ATA_REG_ERR << 4); in pata_macio_setup_ios()
995 ioaddr->feature_addr = base + (ATA_REG_FEATURE << 4); in pata_macio_setup_ios()
996 ioaddr->nsect_addr = base + (ATA_REG_NSECT << 4); in pata_macio_setup_ios()
997 ioaddr->lbal_addr = base + (ATA_REG_LBAL << 4); in pata_macio_setup_ios()
998 ioaddr->lbam_addr = base + (ATA_REG_LBAM << 4); in pata_macio_setup_ios()
999 ioaddr->lbah_addr = base + (ATA_REG_LBAH << 4); in pata_macio_setup_ios()
1000 ioaddr->device_addr = base + (ATA_REG_DEVICE << 4); in pata_macio_setup_ios()
1001 ioaddr->status_addr = base + (ATA_REG_STATUS << 4); in pata_macio_setup_ios()
1002 ioaddr->command_addr = base + (ATA_REG_CMD << 4); in pata_macio_setup_ios()
1003 ioaddr->altstatus_addr = base + 0x160; in pata_macio_setup_ios()
1004 ioaddr->ctl_addr = base + 0x160; in pata_macio_setup_ios()
1005 ioaddr->bmdma_addr = dma; in pata_macio_setup_ios()
1013 pinfo->pio_mask = 0; in pmac_macio_calc_timing_masks()
1014 pinfo->mwdma_mask = 0; in pmac_macio_calc_timing_masks()
1015 pinfo->udma_mask = 0; in pmac_macio_calc_timing_masks()
1017 while (priv->timings[i].mode > 0) { in pmac_macio_calc_timing_masks()
1018 unsigned int mask = 1U << (priv->timings[i].mode & 0x0f); in pmac_macio_calc_timing_masks()
1019 switch(priv->timings[i].mode & 0xf0) { in pmac_macio_calc_timing_masks()
1021 pinfo->pio_mask |= (mask >> 8); in pmac_macio_calc_timing_masks()
1024 pinfo->mwdma_mask |= mask; in pmac_macio_calc_timing_masks()
1026 case 0x40: /* UDMA */ in pmac_macio_calc_timing_masks()
1027 pinfo->udma_mask |= mask; in pmac_macio_calc_timing_masks()
1032 dev_dbg(priv->dev, "Supported masks: PIO=%lx, MWDMA=%lx, UDMA=%lx\n", in pmac_macio_calc_timing_masks()
1033 pinfo->pio_mask, pinfo->mwdma_mask, pinfo->udma_mask); in pmac_macio_calc_timing_masks()
1047 * device-tree in pata_macio_common_init()
1061 priv->host = ata_host_alloc_pinfo(priv->dev, ppi, 1); in pata_macio_common_init()
1062 if (priv->host == NULL) { in pata_macio_common_init()
1063 dev_err(priv->dev, "Failed to allocate ATA port structure\n"); in pata_macio_common_init()
1064 return -ENOMEM; in pata_macio_common_init()
1068 priv->host->private_data = priv; in pata_macio_common_init()
1071 priv->tfregs = devm_ioremap(priv->dev, tfregs, 0x100); in pata_macio_common_init()
1072 if (priv->tfregs == NULL) { in pata_macio_common_init()
1073 dev_err(priv->dev, "Failed to map ATA ports\n"); in pata_macio_common_init()
1074 return -ENOMEM; in pata_macio_common_init()
1076 priv->host->iomap = &priv->tfregs; in pata_macio_common_init()
1080 dma_regs = devm_ioremap(priv->dev, dmaregs, in pata_macio_common_init()
1083 dev_warn(priv->dev, "Failed to map ATA DMA registers\n"); in pata_macio_common_init()
1088 priv->kauai_fcr = devm_ioremap(priv->dev, fcregs, 4); in pata_macio_common_init()
1089 if (priv->kauai_fcr == NULL) { in pata_macio_common_init()
1090 dev_err(priv->dev, "Failed to map ATA FCR register\n"); in pata_macio_common_init()
1091 return -ENOMEM; in pata_macio_common_init()
1096 pata_macio_setup_ios(&priv->host->ports[0]->ioaddr, in pata_macio_common_init()
1097 priv->tfregs, dma_regs); in pata_macio_common_init()
1098 priv->host->ports[0]->private_data = priv; in pata_macio_common_init()
1100 /* hard-reset the controller */ in pata_macio_common_init()
1102 pata_macio_apply_timings(priv->host->ports[0], 0); in pata_macio_common_init()
1105 if (priv->pdev && dma_regs) in pata_macio_common_init()
1106 pci_set_master(priv->pdev); in pata_macio_common_init()
1108 dev_info(priv->dev, "Activating pata-macio chipset %s, Apple bus ID %d\n", in pata_macio_common_init()
1109 macio_ata_names[priv->kind], priv->aapl_bus_id); in pata_macio_common_init()
1112 priv->irq = irq; in pata_macio_common_init()
1113 return ata_host_activate(priv->host, irq, ata_bmdma_interrupt, 0, in pata_macio_common_init()
1125 /* Check for broken device-trees */ in pata_macio_attach()
1127 dev_err(&mdev->ofdev.dev, in pata_macio_attach()
1129 return -ENXIO; in pata_macio_attach()
1136 priv = devm_kzalloc(&mdev->ofdev.dev, in pata_macio_attach()
1139 return -ENOMEM; in pata_macio_attach()
1141 priv->node = of_node_get(mdev->ofdev.dev.of_node); in pata_macio_attach()
1142 priv->mdev = mdev; in pata_macio_attach()
1143 priv->dev = &mdev->ofdev.dev; in pata_macio_attach()
1146 if (macio_request_resource(mdev, 0, "pata-macio")) { in pata_macio_attach()
1147 dev_err(&mdev->ofdev.dev, in pata_macio_attach()
1149 return -EBUSY; in pata_macio_attach()
1155 if (macio_request_resource(mdev, 1, "pata-macio-dma")) in pata_macio_attach()
1156 dev_err(&mdev->ofdev.dev, in pata_macio_attach()
1164 * device-trees. in pata_macio_attach()
1166 * This is a bit bogus, it should be fixed in the device-tree itself, in pata_macio_attach()
1172 dev_warn(&mdev->ofdev.dev, in pata_macio_attach()
1179 lock_media_bay(priv->mdev->media_bay); in pata_macio_attach()
1187 unlock_media_bay(priv->mdev->media_bay); in pata_macio_attach()
1195 struct pata_macio_priv *priv = host->private_data; in pata_macio_detach()
1197 lock_media_bay(priv->mdev->media_bay); in pata_macio_detach()
1202 priv->host->private_data = NULL; in pata_macio_detach()
1206 unlock_media_bay(priv->mdev->media_bay); in pata_macio_detach()
1216 return pata_macio_do_suspend(host->private_data, mesg); in pata_macio_suspend()
1223 return pata_macio_do_resume(host->private_data); in pata_macio_resume()
1236 if (!host || !host->private_data) in pata_macio_mb_event()
1238 ap = host->ports[0]; in pata_macio_mb_event()
1239 spin_lock_irqsave(ap->lock, flags); in pata_macio_mb_event()
1240 ehi = &ap->link.eh_info; in pata_macio_mb_event()
1247 ata_for_each_dev(dev, &ap->link, ALL) in pata_macio_mb_event()
1248 dev->flags |= ATA_DFLAG_DETACH; in pata_macio_mb_event()
1251 spin_unlock_irqrestore(ap->lock, flags); in pata_macio_mb_event()
1267 dev_err(&pdev->dev, in pata_macio_pci_attach()
1269 return -ENODEV; in pata_macio_pci_attach()
1274 dev_err(&pdev->dev, in pata_macio_pci_attach()
1276 return -ENXIO; in pata_macio_pci_attach()
1280 priv = devm_kzalloc(&pdev->dev, in pata_macio_pci_attach()
1283 return -ENOMEM; in pata_macio_pci_attach()
1285 priv->node = of_node_get(np); in pata_macio_pci_attach()
1286 priv->pdev = pdev; in pata_macio_pci_attach()
1287 priv->dev = &pdev->dev; in pata_macio_pci_attach()
1290 if (pci_request_regions(pdev, "pata-macio")) { in pata_macio_pci_attach()
1291 dev_err(&pdev->dev, in pata_macio_pci_attach()
1293 return -EBUSY; in pata_macio_pci_attach()
1302 pdev->irq)) in pata_macio_pci_attach()
1303 return -ENXIO; in pata_macio_pci_attach()
1320 return pata_macio_do_suspend(host->private_data, mesg); in pata_macio_pci_suspend()
1327 return pata_macio_do_resume(host->private_data); in pata_macio_pci_resume()
1352 .name = "pata-macio",
1377 .name = "pata-pci-macio",
1397 return -ENODEV; in pata_macio_init()