Lines Matching refs:priv

355 					    struct pata_macio_priv *priv,  in pata_macio_find_timing()  argument
360 for (i = 0; priv->timings[i].mode > 0; i++) { in pata_macio_find_timing()
361 if (priv->timings[i].mode == mode) in pata_macio_find_timing()
362 return &priv->timings[i]; in pata_macio_find_timing()
370 struct pata_macio_priv *priv = ap->private_data; in pata_macio_apply_timings() local
373 if (priv->kind == controller_sh_ata6 || in pata_macio_apply_timings()
374 priv->kind == controller_un_ata6 || in pata_macio_apply_timings()
375 priv->kind == controller_k2_ata6) { in pata_macio_apply_timings()
376 writel(priv->treg[device][0], rbase + IDE_KAUAI_PIO_CONFIG); in pata_macio_apply_timings()
377 writel(priv->treg[device][1], rbase + IDE_KAUAI_ULTRA_CONFIG); in pata_macio_apply_timings()
379 writel(priv->treg[device][0], rbase + IDE_TIMING_CONFIG); in pata_macio_apply_timings()
393 struct pata_macio_priv *priv = ap->private_data; in pata_macio_set_timings() local
396 dev_dbg(priv->dev, "Set timings: DEV=%d,PIO=0x%x (%s),DMA=0x%x (%s)\n", in pata_macio_set_timings()
404 priv->treg[adev->devno][0] = priv->treg[adev->devno][1] = 0; in pata_macio_set_timings()
407 t = pata_macio_find_timing(priv, adev->pio_mode); in pata_macio_set_timings()
409 dev_warn(priv->dev, "Invalid PIO timing requested: 0x%x\n", in pata_macio_set_timings()
411 t = pata_macio_find_timing(priv, XFER_PIO_0); in pata_macio_set_timings()
416 priv->treg[adev->devno][0] |= t->reg1; in pata_macio_set_timings()
419 t = pata_macio_find_timing(priv, adev->dma_mode); in pata_macio_set_timings()
421 dev_dbg(priv->dev, "DMA timing not set yet, using MW_DMA_0\n"); in pata_macio_set_timings()
422 t = pata_macio_find_timing(priv, XFER_MW_DMA_0); in pata_macio_set_timings()
427 priv->treg[adev->devno][0] |= t->reg1; in pata_macio_set_timings()
428 priv->treg[adev->devno][1] |= t->reg2; in pata_macio_set_timings()
430 dev_dbg(priv->dev, " -> %08x %08x\n", in pata_macio_set_timings()
431 priv->treg[adev->devno][0], in pata_macio_set_timings()
432 priv->treg[adev->devno][1]); in pata_macio_set_timings()
442 static void pata_macio_default_timings(struct pata_macio_priv *priv) in pata_macio_default_timings() argument
446 switch(priv->kind) { in pata_macio_default_timings()
468 priv->treg[0][0] = priv->treg[1][0] = value; in pata_macio_default_timings()
469 priv->treg[0][1] = priv->treg[1][1] = value2; in pata_macio_default_timings()
474 struct pata_macio_priv *priv = ap->private_data; in pata_macio_cable_detect() local
477 if (priv->kind == controller_kl_ata4 || in pata_macio_cable_detect()
478 priv->kind == controller_un_ata6 || in pata_macio_cable_detect()
479 priv->kind == controller_k2_ata6 || in pata_macio_cable_detect()
480 priv->kind == controller_sh_ata6) { in pata_macio_cable_detect()
481 const char* cable = of_get_property(priv->node, "cable-type", in pata_macio_cable_detect()
502 if (of_device_is_compatible(priv->node, "K2-UATA") || in pata_macio_cable_detect()
503 of_device_is_compatible(priv->node, "shasta-ata")) in pata_macio_cable_detect()
514 struct pata_macio_priv *priv = ap->private_data; in pata_macio_qc_prep() local
519 dev_dbgdma(priv->dev, "%s: qc %p flags %lx, write %d dev %d\n", in pata_macio_qc_prep()
525 table = (struct dbdma_cmd *) priv->dma_table_cpu; in pata_macio_qc_prep()
567 dev_dbgdma(priv->dev, "%s: %d DMA list entries\n", __func__, pi); in pata_macio_qc_prep()
591 struct pata_macio_priv *priv = ap->private_data; in pata_macio_bmdma_setup() local
595 dev_dbgdma(priv->dev, "%s: qc %p\n", __func__, qc); in pata_macio_bmdma_setup()
598 writel(priv->dma_table_dma, &dma_regs->cmdptr); in pata_macio_bmdma_setup()
603 if (priv->kind == controller_kl_ata4 && in pata_macio_bmdma_setup()
604 (priv->treg[dev][0] & TR_66_UDMA_EN)) { in pata_macio_bmdma_setup()
606 u32 reg = priv->treg[dev][0]; in pata_macio_bmdma_setup()
620 struct pata_macio_priv *priv = ap->private_data; in pata_macio_bmdma_start() local
623 dev_dbgdma(priv->dev, "%s: qc %p\n", __func__, qc); in pata_macio_bmdma_start()
633 struct pata_macio_priv *priv = ap->private_data; in pata_macio_bmdma_stop() local
637 dev_dbgdma(priv->dev, "%s: qc %p\n", __func__, qc); in pata_macio_bmdma_stop()
647 struct pata_macio_priv *priv = ap->private_data; in pata_macio_bmdma_status() local
654 dev_dbgdma(priv->dev, "%s: dstat=%x\n", __func__, dstat); in pata_macio_bmdma_status()
679 dev_dbgdma(priv->dev, "%s: DMA still active, flushing...\n", __func__); in pata_macio_bmdma_status()
695 dev_warn(priv->dev, "timeout flushing DMA\n"); in pata_macio_bmdma_status()
706 struct pata_macio_priv *priv = ap->private_data; in pata_macio_port_start() local
716 priv->dma_table_cpu = in pata_macio_port_start()
717 dmam_alloc_coherent(priv->dev, in pata_macio_port_start()
719 &priv->dma_table_dma, GFP_KERNEL); in pata_macio_port_start()
720 if (priv->dma_table_cpu == NULL) { in pata_macio_port_start()
721 dev_err(priv->dev, "Unable to allocate DMA command list\n"); in pata_macio_port_start()
731 struct pata_macio_priv *priv = ap->private_data; in pata_macio_irq_clear() local
735 dev_dbgdma(priv->dev, "%s\n", __func__); in pata_macio_irq_clear()
738 static void pata_macio_reset_hw(struct pata_macio_priv *priv, int resume) in pata_macio_reset_hw() argument
740 dev_dbg(priv->dev, "Enabling & resetting... \n"); in pata_macio_reset_hw()
742 if (priv->mediabay) in pata_macio_reset_hw()
745 if (priv->kind == controller_ohare && !resume) { in pata_macio_reset_hw()
750 ppc_md.feature_call(PMAC_FTR_IDE_ENABLE, priv->node, 0, 1); in pata_macio_reset_hw()
756 priv->node, priv->aapl_bus_id, 1); in pata_macio_reset_hw()
758 priv->node, priv->aapl_bus_id, 1); in pata_macio_reset_hw()
763 priv->node, priv->aapl_bus_id, 0); in pata_macio_reset_hw()
769 if (priv->pdev && resume) { in pata_macio_reset_hw()
772 pci_restore_state(priv->pdev); in pata_macio_reset_hw()
773 rc = pcim_enable_device(priv->pdev); in pata_macio_reset_hw()
775 dev_err(&priv->pdev->dev, in pata_macio_reset_hw()
779 pci_set_master(priv->pdev); in pata_macio_reset_hw()
785 if (priv->kauai_fcr) in pata_macio_reset_hw()
788 KAUAI_FCR_UATA_ENABLE, priv->kauai_fcr); in pata_macio_reset_hw()
797 struct pata_macio_priv *priv = ap->private_data; in pata_macio_slave_config() local
811 if (priv->kind == controller_ohare) { in pata_macio_slave_config()
825 if (priv->kind == controller_sh_ata6 || priv->kind == controller_k2_ata6) { in pata_macio_slave_config()
835 BUG_ON(!priv->pdev); in pata_macio_slave_config()
836 pci_write_config_byte(priv->pdev, PCI_CACHE_LINE_SIZE, 0x08); in pata_macio_slave_config()
837 pci_read_config_word(priv->pdev, PCI_COMMAND, &cmd); in pata_macio_slave_config()
838 pci_write_config_word(priv->pdev, PCI_COMMAND, in pata_macio_slave_config()
849 static int pata_macio_do_suspend(struct pata_macio_priv *priv, pm_message_t mesg) in pata_macio_do_suspend() argument
854 rc = ata_host_suspend(priv->host, mesg); in pata_macio_do_suspend()
859 pata_macio_default_timings(priv); in pata_macio_do_suspend()
863 disable_irq(priv->irq); in pata_macio_do_suspend()
866 if (priv->mediabay) in pata_macio_do_suspend()
870 if (priv->kauai_fcr) { in pata_macio_do_suspend()
871 u32 fcr = readl(priv->kauai_fcr); in pata_macio_do_suspend()
873 writel(fcr, priv->kauai_fcr); in pata_macio_do_suspend()
881 if (priv->pdev) { in pata_macio_do_suspend()
882 pci_save_state(priv->pdev); in pata_macio_do_suspend()
883 pci_disable_device(priv->pdev); in pata_macio_do_suspend()
887 ppc_md.feature_call(PMAC_FTR_IDE_ENABLE, priv->node, in pata_macio_do_suspend()
888 priv->aapl_bus_id, 0); in pata_macio_do_suspend()
893 static int pata_macio_do_resume(struct pata_macio_priv *priv) in pata_macio_do_resume() argument
896 pata_macio_reset_hw(priv, 1); in pata_macio_do_resume()
899 pata_macio_apply_timings(priv->host->ports[0], 0); in pata_macio_do_resume()
902 enable_irq(priv->irq); in pata_macio_do_resume()
905 ata_host_resume(priv->host); in pata_macio_do_resume()
936 static void pata_macio_invariants(struct pata_macio_priv *priv) in pata_macio_invariants() argument
941 if (of_device_is_compatible(priv->node, "shasta-ata")) { in pata_macio_invariants()
942 priv->kind = controller_sh_ata6; in pata_macio_invariants()
943 priv->timings = pata_macio_shasta_timings; in pata_macio_invariants()
944 } else if (of_device_is_compatible(priv->node, "kauai-ata")) { in pata_macio_invariants()
945 priv->kind = controller_un_ata6; in pata_macio_invariants()
946 priv->timings = pata_macio_kauai_timings; in pata_macio_invariants()
947 } else if (of_device_is_compatible(priv->node, "K2-UATA")) { in pata_macio_invariants()
948 priv->kind = controller_k2_ata6; in pata_macio_invariants()
949 priv->timings = pata_macio_kauai_timings; in pata_macio_invariants()
950 } else if (of_device_is_compatible(priv->node, "keylargo-ata")) { in pata_macio_invariants()
951 if (strcmp(priv->node->name, "ata-4") == 0) { in pata_macio_invariants()
952 priv->kind = controller_kl_ata4; in pata_macio_invariants()
953 priv->timings = pata_macio_kl66_timings; in pata_macio_invariants()
955 priv->kind = controller_kl_ata3; in pata_macio_invariants()
956 priv->timings = pata_macio_kl33_timings; in pata_macio_invariants()
958 } else if (of_device_is_compatible(priv->node, "heathrow-ata")) { in pata_macio_invariants()
959 priv->kind = controller_heathrow; in pata_macio_invariants()
960 priv->timings = pata_macio_heathrow_timings; in pata_macio_invariants()
962 priv->kind = controller_ohare; in pata_macio_invariants()
963 priv->timings = pata_macio_ohare_timings; in pata_macio_invariants()
969 bidp = of_get_property(priv->node, "AAPL,bus-id", NULL); in pata_macio_invariants()
970 priv->aapl_bus_id = bidp ? *bidp : 0; in pata_macio_invariants()
973 if (priv->mediabay && bidp == 0) in pata_macio_invariants()
974 priv->aapl_bus_id = 1; in pata_macio_invariants()
999 static void pmac_macio_calc_timing_masks(struct pata_macio_priv *priv, in pmac_macio_calc_timing_masks() argument
1008 while (priv->timings[i].mode > 0) { in pmac_macio_calc_timing_masks()
1009 unsigned int mask = 1U << (priv->timings[i].mode & 0x0f); in pmac_macio_calc_timing_masks()
1010 switch(priv->timings[i].mode & 0xf0) { in pmac_macio_calc_timing_masks()
1023 dev_dbg(priv->dev, "Supported masks: PIO=%lx, MWDMA=%lx, UDMA=%lx\n", in pmac_macio_calc_timing_masks()
1027 static int pata_macio_common_init(struct pata_macio_priv *priv, in pata_macio_common_init() argument
1040 pata_macio_invariants(priv); in pata_macio_common_init()
1043 pata_macio_default_timings(priv); in pata_macio_common_init()
1048 dma_set_max_seg_size(priv->dev, MAX_DBDMA_SEG); in pata_macio_common_init()
1052 pmac_macio_calc_timing_masks(priv, &pinfo); in pata_macio_common_init()
1055 pinfo.private_data = priv; in pata_macio_common_init()
1057 priv->host = ata_host_alloc_pinfo(priv->dev, ppi, 1); in pata_macio_common_init()
1058 if (priv->host == NULL) { in pata_macio_common_init()
1059 dev_err(priv->dev, "Failed to allocate ATA port structure\n"); in pata_macio_common_init()
1064 priv->host->private_data = priv; in pata_macio_common_init()
1067 priv->tfregs = devm_ioremap(priv->dev, tfregs, 0x100); in pata_macio_common_init()
1068 if (priv->tfregs == NULL) { in pata_macio_common_init()
1069 dev_err(priv->dev, "Failed to map ATA ports\n"); in pata_macio_common_init()
1072 priv->host->iomap = &priv->tfregs; in pata_macio_common_init()
1076 dma_regs = devm_ioremap(priv->dev, dmaregs, in pata_macio_common_init()
1079 dev_warn(priv->dev, "Failed to map ATA DMA registers\n"); in pata_macio_common_init()
1084 priv->kauai_fcr = devm_ioremap(priv->dev, fcregs, 4); in pata_macio_common_init()
1085 if (priv->kauai_fcr == NULL) { in pata_macio_common_init()
1086 dev_err(priv->dev, "Failed to map ATA FCR register\n"); in pata_macio_common_init()
1092 pata_macio_setup_ios(&priv->host->ports[0]->ioaddr, in pata_macio_common_init()
1093 priv->tfregs, dma_regs); in pata_macio_common_init()
1094 priv->host->ports[0]->private_data = priv; in pata_macio_common_init()
1097 pata_macio_reset_hw(priv, 0); in pata_macio_common_init()
1098 pata_macio_apply_timings(priv->host->ports[0], 0); in pata_macio_common_init()
1101 if (priv->pdev && dma_regs) in pata_macio_common_init()
1102 pci_set_master(priv->pdev); in pata_macio_common_init()
1104 dev_info(priv->dev, "Activating pata-macio chipset %s, Apple bus ID %d\n", in pata_macio_common_init()
1105 macio_ata_names[priv->kind], priv->aapl_bus_id); in pata_macio_common_init()
1108 priv->irq = irq; in pata_macio_common_init()
1109 return ata_host_activate(priv->host, irq, ata_bmdma_interrupt, 0, in pata_macio_common_init()
1116 struct pata_macio_priv *priv; in pata_macio_attach() local
1132 priv = devm_kzalloc(&mdev->ofdev.dev, in pata_macio_attach()
1134 if (priv == NULL) { in pata_macio_attach()
1139 priv->node = of_node_get(mdev->ofdev.dev.of_node); in pata_macio_attach()
1140 priv->mdev = mdev; in pata_macio_attach()
1141 priv->dev = &mdev->ofdev.dev; in pata_macio_attach()
1177 lock_media_bay(priv->mdev->media_bay); in pata_macio_attach()
1180 rc = pata_macio_common_init(priv, in pata_macio_attach()
1185 unlock_media_bay(priv->mdev->media_bay); in pata_macio_attach()
1193 struct pata_macio_priv *priv = host->private_data; in pata_macio_detach() local
1195 lock_media_bay(priv->mdev->media_bay); in pata_macio_detach()
1200 priv->host->private_data = NULL; in pata_macio_detach()
1204 unlock_media_bay(priv->mdev->media_bay); in pata_macio_detach()
1258 struct pata_macio_priv *priv; in pata_macio_pci_attach() local
1278 priv = devm_kzalloc(&pdev->dev, in pata_macio_pci_attach()
1280 if (priv == NULL) { 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()
1298 if (pata_macio_common_init(priv, in pata_macio_pci_attach()