Lines Matching refs:dino_dev
300 struct dino_device *dino_dev = irq_data_get_irq_chip_data(d); in dino_mask_irq() local
301 int local_irq = gsc_find_local_irq(d->irq, dino_dev->global_irq, DINO_LOCAL_IRQS); in dino_mask_irq()
303 DBG(KERN_WARNING "%s(0x%p, %d)\n", __func__, dino_dev, d->irq); in dino_mask_irq()
306 dino_dev->imr &= ~(DINO_MASK_IRQ(local_irq)); in dino_mask_irq()
307 __raw_writel(dino_dev->imr, dino_dev->hba.base_addr+DINO_IMR); in dino_mask_irq()
312 struct dino_device *dino_dev = irq_data_get_irq_chip_data(d); in dino_unmask_irq() local
313 int local_irq = gsc_find_local_irq(d->irq, dino_dev->global_irq, DINO_LOCAL_IRQS); in dino_unmask_irq()
316 DBG(KERN_WARNING "%s(0x%p, %d)\n", __func__, dino_dev, d->irq); in dino_unmask_irq()
324 __raw_readl(dino_dev->hba.base_addr+DINO_IPR); in dino_unmask_irq()
327 dino_dev->imr |= DINO_MASK_IRQ(local_irq); /* used in dino_isr() */ in dino_unmask_irq()
328 __raw_writel( dino_dev->imr, dino_dev->hba.base_addr+DINO_IMR); in dino_unmask_irq()
339 tmp = __raw_readl(dino_dev->hba.base_addr+DINO_ILR); in dino_unmask_irq()
343 gsc_writel(dino_dev->txn_data, dino_dev->txn_addr); in dino_unmask_irq()
362 struct dino_device *dino_dev = intr_dev; in dino_isr() local
368 dino_dev->dino_irr0 = in dino_isr()
370 mask = __raw_readl(dino_dev->hba.base_addr+DINO_IRR0) & DINO_IRR_MASK; in dino_isr()
378 int irq = dino_dev->global_irq[local_irq]; in dino_isr()
392 mask = __raw_readl(dino_dev->hba.base_addr+DINO_ILR) & dino_dev->imr; in dino_isr()
397 dino_dev->hba.base_addr, mask); in dino_isr()
461 struct dino_device *dino_dev = DINO_DEV(parisc_walk_tree(bus->bridge)); in dino_card_setup() local
466 res = &dino_dev->hba.lmmio_space; in dino_card_setup()
474 res->name = dino_dev->hba.lmmio_space.name; in dino_card_setup()
477 if (ccio_allocate_resource(dino_dev->hba.dev, res, _8MB, in dino_card_setup()
492 bus->resource[0] = &(dino_dev->hba.io_space); in dino_card_setup()
551 struct dino_device *dino_dev = DINO_DEV(parisc_walk_tree(bus->bridge)); in dino_fixup_bus() local
558 if (is_card_dino(&dino_dev->hba.dev->id)) { in dino_fixup_bus()
559 dino_card_setup(bus, dino_dev->hba.base_addr); in dino_fixup_bus()
595 if (is_card_dino(&dino_dev->hba.dev->id)) in dino_fixup_bus()
630 dino_assign_irq(dino_dev, irq_pin, &dev->irq); in dino_fixup_bus()
637 dino_assign_irq(dino_dev, dev->irq, &dev->irq); in dino_fixup_bus()
653 dino_card_init(struct dino_device *dino_dev) in dino_card_init() argument
658 status = __raw_readl(dino_dev->hba.base_addr+DINO_IO_STATUS); in dino_card_init()
661 dino_dev->hba.base_addr+DINO_IO_COMMAND); in dino_card_init()
665 __raw_writel(0x00000000, dino_dev->hba.base_addr+DINO_GMASK); in dino_card_init()
666 __raw_writel(0x00000001, dino_dev->hba.base_addr+DINO_IO_FBB_EN); in dino_card_init()
667 __raw_writel(0x00000000, dino_dev->hba.base_addr+DINO_ICR); in dino_card_init()
677 __raw_writel( brdg_feat, dino_dev->hba.base_addr+DINO_BRDG_FEAT); in dino_card_init()
684 __raw_writel(0x00000000, dino_dev->hba.base_addr+DINO_IO_ADDR_EN); in dino_card_init()
686 __raw_writel(0x00000000, dino_dev->hba.base_addr+DINO_DAMODE); in dino_card_init()
687 __raw_writel(0x00222222, dino_dev->hba.base_addr+DINO_PCIROR); in dino_card_init()
688 __raw_writel(0x00222222, dino_dev->hba.base_addr+DINO_PCIWOR); in dino_card_init()
690 __raw_writel(0x00000040, dino_dev->hba.base_addr+DINO_MLTIM); in dino_card_init()
691 __raw_writel(0x00000080, dino_dev->hba.base_addr+DINO_IO_CONTROL); in dino_card_init()
692 __raw_writel(0x0000008c, dino_dev->hba.base_addr+DINO_TLTIM); in dino_card_init()
695 __raw_writel(0x0000007e, dino_dev->hba.base_addr+DINO_PAMR); in dino_card_init()
696 __raw_writel(0x0000007f, dino_dev->hba.base_addr+DINO_PAPR); in dino_card_init()
697 __raw_writel(0x00000000, dino_dev->hba.base_addr+DINO_PAMR); in dino_card_init()
704 __raw_writel(0x0000004f, dino_dev->hba.base_addr+DINO_PCICMD); in dino_card_init()
715 dino_bridge_init(struct dino_device *dino_dev, const char *name) in dino_bridge_init() argument
725 io_addr = __raw_readl(dino_dev->hba.base_addr + DINO_IO_ADDR_EN); in dino_bridge_init()
731 res = &dino_dev->hba.lmmio_space; in dino_bridge_init()
764 res = &dino_dev->hba.lmmio_space; in dino_bridge_init()
770 result = ccio_request_resource(dino_dev->hba.dev, &res[i]); in dino_bridge_init()
781 struct dino_device *dino_dev, const char *name) in dino_common_init() argument
788 pcibios_register_hba(&dino_dev->hba); in dino_common_init()
801 dino_dev->txn_addr = gsc_irq.txn_addr; in dino_common_init()
802 dino_dev->txn_data = gsc_irq.txn_data; in dino_common_init()
814 status = request_irq(dev->irq, dino_isr, 0, name, dino_dev); in dino_common_init()
825 gsc_fixup_irqs(dev, dino_dev, dino_choose_irq); in dino_common_init()
832 __raw_writel(eim, dino_dev->hba.base_addr+DINO_IAR0); in dino_common_init()
838 __raw_readl(dino_dev->hba.base_addr+DINO_IRR0); in dino_common_init()
841 res = &dino_dev->hba.io_space; in dino_common_init()
847 res->start = HBA_PORT_BASE(dino_dev->hba.hba_num); in dino_common_init()
854 dino_dev->hba.base_addr); in dino_common_init()
887 struct dino_device *dino_dev; // Dino specific control struct in dino_probe() local
946 dino_dev = kzalloc(sizeof(struct dino_device), GFP_KERNEL); in dino_probe()
947 if (!dino_dev) { in dino_probe()
952 dino_dev->hba.dev = dev; in dino_probe()
953 dino_dev->hba.base_addr = ioremap_nocache(hpa, 4096); in dino_probe()
954 dino_dev->hba.lmmio_space_offset = 0; /* CPU addrs == bus addrs */ in dino_probe()
955 spin_lock_init(&dino_dev->dinosaur_pen); in dino_probe()
956 dino_dev->hba.iommu = ccio_get_iommu(dev); in dino_probe()
959 dino_card_init(dino_dev); in dino_probe()
961 dino_bridge_init(dino_dev, name); in dino_probe()
964 if (dino_common_init(dev, dino_dev, name)) in dino_probe()
967 dev->dev.platform_data = dino_dev; in dino_probe()
969 pci_add_resource_offset(&resources, &dino_dev->hba.io_space, in dino_probe()
970 HBA_PORT_BASE(dino_dev->hba.hba_num)); in dino_probe()
971 if (dino_dev->hba.lmmio_space.flags) in dino_probe()
972 pci_add_resource_offset(&resources, &dino_dev->hba.lmmio_space, in dino_probe()
973 dino_dev->hba.lmmio_space_offset); in dino_probe()
974 if (dino_dev->hba.elmmio_space.flags) in dino_probe()
975 pci_add_resource_offset(&resources, &dino_dev->hba.elmmio_space, in dino_probe()
976 dino_dev->hba.lmmio_space_offset); in dino_probe()
977 if (dino_dev->hba.gmmio_space.flags) in dino_probe()
978 pci_add_resource(&resources, &dino_dev->hba.gmmio_space); in dino_probe()
980 dino_dev->hba.bus_num.start = dino_current_bus; in dino_probe()
981 dino_dev->hba.bus_num.end = 255; in dino_probe()
982 dino_dev->hba.bus_num.flags = IORESOURCE_BUS; in dino_probe()
983 pci_add_resource(&resources, &dino_dev->hba.bus_num); in dino_probe()
988 dino_dev->hba.hba_bus = bus = pci_create_root_bus(&dev->dev, in dino_probe()