Lines Matching refs:pmif
413 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_apply_timings() local
416 writel(pmif->timings[1], PMAC_IDE_REG(IDE_TIMING_CONFIG)); in pmac_ide_apply_timings()
418 writel(pmif->timings[0], PMAC_IDE_REG(IDE_TIMING_CONFIG)); in pmac_ide_apply_timings()
430 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_kauai_apply_timings() local
433 writel(pmif->timings[1], PMAC_IDE_REG(IDE_KAUAI_PIO_CONFIG)); in pmac_ide_kauai_apply_timings()
434 writel(pmif->timings[3], PMAC_IDE_REG(IDE_KAUAI_ULTRA_CONFIG)); in pmac_ide_kauai_apply_timings()
436 writel(pmif->timings[0], PMAC_IDE_REG(IDE_KAUAI_PIO_CONFIG)); in pmac_ide_kauai_apply_timings()
437 writel(pmif->timings[2], PMAC_IDE_REG(IDE_KAUAI_ULTRA_CONFIG)); in pmac_ide_kauai_apply_timings()
449 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_do_update_timings() local
451 if (pmif->kind == controller_sh_ata6 || in pmac_ide_do_update_timings()
452 pmif->kind == controller_un_ata6 || in pmac_ide_do_update_timings()
453 pmif->kind == controller_k2_ata6) in pmac_ide_do_update_timings()
494 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_set_pio_mode() local
503 timings = &pmif->timings[drive->dn & 1]; in pmac_ide_set_pio_mode()
508 switch (pmif->kind) { in pmac_ide_set_pio_mode()
775 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_set_dma_mode() local
781 timings = &pmif->timings[unit]; in pmac_ide_set_dma_mode()
782 timings2 = &pmif->timings[unit+2]; in pmac_ide_set_dma_mode()
789 if (pmif->kind == controller_kl_ata4) in pmac_ide_set_dma_mode()
791 else if (pmif->kind == controller_un_ata6 in pmac_ide_set_dma_mode()
792 || pmif->kind == controller_k2_ata6) in pmac_ide_set_dma_mode()
794 else if (pmif->kind == controller_sh_ata6) in pmac_ide_set_dma_mode()
799 set_timings_mdma(drive, pmif->kind, &tl[0], &tl[1], speed); in pmac_ide_set_dma_mode()
816 sanitize_timings(pmac_ide_hwif_t *pmif) in sanitize_timings() argument
820 switch(pmif->kind) { in sanitize_timings()
842 pmif->timings[0] = pmif->timings[1] = value; in sanitize_timings()
843 pmif->timings[2] = pmif->timings[3] = value2; in sanitize_timings()
846 static int on_media_bay(pmac_ide_hwif_t *pmif) in on_media_bay() argument
848 return pmif->mdev && pmif->mdev->media_bay != NULL; in on_media_bay()
854 static int pmac_ide_do_suspend(pmac_ide_hwif_t *pmif) in pmac_ide_do_suspend() argument
857 pmif->timings[0] = 0; in pmac_ide_do_suspend()
858 pmif->timings[1] = 0; in pmac_ide_do_suspend()
860 disable_irq(pmif->irq); in pmac_ide_do_suspend()
863 if (on_media_bay(pmif)) in pmac_ide_do_suspend()
867 if (pmif->kauai_fcr) { in pmac_ide_do_suspend()
868 u32 fcr = readl(pmif->kauai_fcr); in pmac_ide_do_suspend()
870 writel(fcr, pmif->kauai_fcr); in pmac_ide_do_suspend()
874 ppc_md.feature_call(PMAC_FTR_IDE_ENABLE, pmif->node, pmif->aapl_bus_id, in pmac_ide_do_suspend()
883 static int pmac_ide_do_resume(pmac_ide_hwif_t *pmif) in pmac_ide_do_resume() argument
886 if (!on_media_bay(pmif)) { in pmac_ide_do_resume()
887 ppc_md.feature_call(PMAC_FTR_IDE_RESET, pmif->node, pmif->aapl_bus_id, 1); in pmac_ide_do_resume()
888 ppc_md.feature_call(PMAC_FTR_IDE_ENABLE, pmif->node, pmif->aapl_bus_id, 1); in pmac_ide_do_resume()
890 ppc_md.feature_call(PMAC_FTR_IDE_RESET, pmif->node, pmif->aapl_bus_id, 0); in pmac_ide_do_resume()
893 if (pmif->kauai_fcr) { in pmac_ide_do_resume()
894 u32 fcr = readl(pmif->kauai_fcr); in pmac_ide_do_resume()
896 writel(fcr, pmif->kauai_fcr); in pmac_ide_do_resume()
903 sanitize_timings(pmif); in pmac_ide_do_resume()
905 enable_irq(pmif->irq); in pmac_ide_do_resume()
912 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_cable_detect() local
913 struct device_node *np = pmif->node; in pmac_ide_cable_detect()
944 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_init_dev() local
946 if (on_media_bay(pmif)) { in pmac_ide_init_dev()
947 if (check_media_bay(pmif->mdev->media_bay) == MB_CD) { in pmac_ide_init_dev()
1017 static int pmac_ide_setup_device(pmac_ide_hwif_t *pmif, struct ide_hw *hw) in pmac_ide_setup_device() argument
1019 struct device_node *np = pmif->node; in pmac_ide_setup_device()
1027 pmif->broken_dma = pmif->broken_dma_warn = 0; in pmac_ide_setup_device()
1029 pmif->kind = controller_sh_ata6; in pmac_ide_setup_device()
1034 pmif->kind = controller_un_ata6; in pmac_ide_setup_device()
1039 pmif->kind = controller_k2_ata6; in pmac_ide_setup_device()
1045 pmif->kind = controller_kl_ata4; in pmac_ide_setup_device()
1049 pmif->kind = controller_kl_ata3; in pmac_ide_setup_device()
1051 pmif->kind = controller_heathrow; in pmac_ide_setup_device()
1053 pmif->kind = controller_ohare; in pmac_ide_setup_device()
1054 pmif->broken_dma = 1; in pmac_ide_setup_device()
1058 pmif->aapl_bus_id = bidp ? *bidp : 0; in pmac_ide_setup_device()
1061 if (pmif->kauai_fcr) in pmac_ide_setup_device()
1064 KAUAI_FCR_UATA_ENABLE, pmif->kauai_fcr); in pmac_ide_setup_device()
1067 sanitize_timings(pmif); in pmac_ide_setup_device()
1070 if (pmif->mdev) in pmac_ide_setup_device()
1071 lock_media_bay(pmif->mdev->media_bay); in pmac_ide_setup_device()
1078 hwif = pmif->hwif = host->ports[0]; in pmac_ide_setup_device()
1080 if (on_media_bay(pmif)) { in pmac_ide_setup_device()
1083 pmif->aapl_bus_id = 1; in pmac_ide_setup_device()
1084 } else if (pmif->kind == controller_ohare) { in pmac_ide_setup_device()
1092 ppc_md.feature_call(PMAC_FTR_IDE_RESET, np, pmif->aapl_bus_id, 1); in pmac_ide_setup_device()
1093 ppc_md.feature_call(PMAC_FTR_IDE_ENABLE, np, pmif->aapl_bus_id, 1); in pmac_ide_setup_device()
1095 ppc_md.feature_call(PMAC_FTR_IDE_RESET, np, pmif->aapl_bus_id, 0); in pmac_ide_setup_device()
1100 "bus ID %d%s, irq %d\n", model_name[pmif->kind], in pmac_ide_setup_device()
1101 pmif->mdev ? "macio" : "PCI", pmif->aapl_bus_id, in pmac_ide_setup_device()
1102 on_media_bay(pmif) ? " (mediabay)" : "", hw->irq); in pmac_ide_setup_device()
1106 pmif->hwif = NULL; in pmac_ide_setup_device()
1108 if (pmif->mdev) in pmac_ide_setup_device()
1109 unlock_media_bay(pmif->mdev->media_bay); in pmac_ide_setup_device()
1135 pmac_ide_hwif_t *pmif; in pmac_ide_macio_attach() local
1139 pmif = kzalloc(sizeof(*pmif), GFP_KERNEL); in pmac_ide_macio_attach()
1140 if (pmif == NULL) in pmac_ide_macio_attach()
1173 pmif->mdev = mdev; in pmac_ide_macio_attach()
1174 pmif->node = mdev->ofdev.dev.of_node; in pmac_ide_macio_attach()
1175 pmif->regbase = regbase; in pmac_ide_macio_attach()
1176 pmif->irq = irq; in pmac_ide_macio_attach()
1177 pmif->kauai_fcr = NULL; in pmac_ide_macio_attach()
1185 pmif->dma_regs = ioremap(macio_resource_start(mdev, 1), 0x1000); in pmac_ide_macio_attach()
1187 pmif->dma_regs = NULL; in pmac_ide_macio_attach()
1189 dev_set_drvdata(&mdev->ofdev.dev, pmif); in pmac_ide_macio_attach()
1192 pmac_ide_init_ports(&hw, pmif->regbase); in pmac_ide_macio_attach()
1197 rc = pmac_ide_setup_device(pmif, &hw); in pmac_ide_macio_attach()
1202 if (pmif->dma_regs) { in pmac_ide_macio_attach()
1203 iounmap(pmif->dma_regs); in pmac_ide_macio_attach()
1207 kfree(pmif); in pmac_ide_macio_attach()
1213 kfree(pmif); in pmac_ide_macio_attach()
1220 pmac_ide_hwif_t *pmif = dev_get_drvdata(&mdev->ofdev.dev); in pmac_ide_macio_suspend() local
1225 rc = pmac_ide_do_suspend(pmif); in pmac_ide_macio_suspend()
1236 pmac_ide_hwif_t *pmif = dev_get_drvdata(&mdev->ofdev.dev); in pmac_ide_macio_resume() local
1240 rc = pmac_ide_do_resume(pmif); in pmac_ide_macio_resume()
1255 pmac_ide_hwif_t *pmif; in pmac_ide_pci_attach() local
1267 pmif = kzalloc(sizeof(*pmif), GFP_KERNEL); in pmac_ide_pci_attach()
1268 if (pmif == NULL) in pmac_ide_pci_attach()
1286 pmif->mdev = NULL; in pmac_ide_pci_attach()
1287 pmif->node = np; in pmac_ide_pci_attach()
1293 pmif->regbase = (unsigned long) base + 0x2000; in pmac_ide_pci_attach()
1294 pmif->dma_regs = base + 0x1000; in pmac_ide_pci_attach()
1295 pmif->kauai_fcr = base; in pmac_ide_pci_attach()
1296 pmif->irq = pdev->irq; in pmac_ide_pci_attach()
1298 pci_set_drvdata(pdev, pmif); in pmac_ide_pci_attach()
1301 pmac_ide_init_ports(&hw, pmif->regbase); in pmac_ide_pci_attach()
1305 rc = pmac_ide_setup_device(pmif, &hw); in pmac_ide_pci_attach()
1310 kfree(pmif); in pmac_ide_pci_attach()
1316 kfree(pmif); in pmac_ide_pci_attach()
1323 pmac_ide_hwif_t *pmif = pci_get_drvdata(pdev); in pmac_ide_pci_suspend() local
1328 rc = pmac_ide_do_suspend(pmif); in pmac_ide_pci_suspend()
1339 pmac_ide_hwif_t *pmif = pci_get_drvdata(pdev); in pmac_ide_pci_resume() local
1343 rc = pmac_ide_do_resume(pmif); in pmac_ide_pci_resume()
1354 pmac_ide_hwif_t *pmif = dev_get_drvdata(&mdev->ofdev.dev); in pmac_ide_macio_mb_event() local
1358 if (!pmif->hwif->present) in pmac_ide_macio_mb_event()
1359 ide_port_scan(pmif->hwif); in pmac_ide_macio_mb_event()
1362 if (pmif->hwif->present) in pmac_ide_macio_mb_event()
1363 ide_port_unregister_devices(pmif->hwif); in pmac_ide_macio_mb_event()
1456 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_build_dmatable() local
1458 volatile struct dbdma_regs __iomem *dma = pmif->dma_regs; in pmac_ide_build_dmatable()
1464 table = (struct dbdma_cmd *) pmif->dma_table_cpu; in pmac_ide_build_dmatable()
1480 if (pmif->broken_dma && cur_addr & (L1_CACHE_BYTES - 1)) { in pmac_ide_build_dmatable()
1481 if (pmif->broken_dma_warn == 0) { in pmac_ide_build_dmatable()
1484 pmif->broken_dma_warn = 1; in pmac_ide_build_dmatable()
1533 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_dma_setup() local
1534 u8 unit = drive->dn & 1, ata4 = (pmif->kind == controller_kl_ata4); in pmac_ide_dma_setup()
1541 if (ata4 && (pmif->timings[unit] & TR_66_UDMA_EN)) { in pmac_ide_dma_setup()
1542 writel(pmif->timings[unit] + (write ? 0 : 0x00800000UL), in pmac_ide_dma_setup()
1558 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_dma_start() local
1561 dma = pmif->dma_regs; in pmac_ide_dma_start()
1575 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_dma_end() local
1576 volatile struct dbdma_regs __iomem *dma = pmif->dma_regs; in pmac_ide_dma_end()
1599 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_dma_test_irq() local
1600 volatile struct dbdma_regs __iomem *dma = pmif->dma_regs; in pmac_ide_dma_test_irq()
1653 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_dma_lost_irq() local
1654 volatile struct dbdma_regs __iomem *dma = pmif->dma_regs; in pmac_ide_dma_lost_irq()
1675 pmac_ide_hwif_t *pmif = dev_get_drvdata(hwif->gendev.parent); in pmac_ide_init_dma() local
1681 if (dev == NULL || pmif->dma_regs == 0) in pmac_ide_init_dma()
1688 pmif->dma_table_cpu = dma_alloc_coherent(&dev->dev, in pmac_ide_init_dma()
1691 if (pmif->dma_table_cpu == NULL) { in pmac_ide_init_dma()