• Home
  • Raw
  • Download

Lines Matching refs:priv

224 	struct grpci2_priv *priv = dev->bus->sysdata;  in grpci2_map_irq()  local
231 return priv->irq_map[pin]; in grpci2_map_irq()
234 static int grpci2_cfg_r32(struct grpci2_priv *priv, unsigned int bus, in grpci2_cfg_r32() argument
253 REGSTORE(priv->regs->ctrl, (REGLOAD(priv->regs->ctrl) & ~(0xff << 16)) | in grpci2_cfg_r32()
258 REGSTORE(priv->regs->sts_cap, (STS_CFGERR | STS_CFGERRVALID)); in grpci2_cfg_r32()
260 pci_conf = (unsigned int *) (priv->pci_conf | in grpci2_cfg_r32()
267 while ((REGLOAD(priv->regs->sts_cap) & STS_CFGERRVALID) == 0) in grpci2_cfg_r32()
270 if (REGLOAD(priv->regs->sts_cap) & STS_CFGERR) { in grpci2_cfg_r32()
280 static int grpci2_cfg_r16(struct grpci2_priv *priv, unsigned int bus, in grpci2_cfg_r16() argument
288 ret = grpci2_cfg_r32(priv, bus, devfn, where & ~0x3, &v); in grpci2_cfg_r16()
293 static int grpci2_cfg_r8(struct grpci2_priv *priv, unsigned int bus, in grpci2_cfg_r8() argument
299 ret = grpci2_cfg_r32(priv, bus, devfn, where & ~0x3, &v); in grpci2_cfg_r8()
305 static int grpci2_cfg_w32(struct grpci2_priv *priv, unsigned int bus, in grpci2_cfg_w32() argument
323 REGSTORE(priv->regs->ctrl, (REGLOAD(priv->regs->ctrl) & ~(0xff << 16)) | in grpci2_cfg_w32()
328 REGSTORE(priv->regs->sts_cap, (STS_CFGERR | STS_CFGERRVALID)); in grpci2_cfg_w32()
330 pci_conf = (unsigned int *) (priv->pci_conf | in grpci2_cfg_w32()
337 while ((REGLOAD(priv->regs->sts_cap) & STS_CFGERRVALID) == 0) in grpci2_cfg_w32()
343 static int grpci2_cfg_w16(struct grpci2_priv *priv, unsigned int bus, in grpci2_cfg_w16() argument
351 ret = grpci2_cfg_r32(priv, bus, devfn, where&~3, &v); in grpci2_cfg_w16()
356 return grpci2_cfg_w32(priv, bus, devfn, where & ~0x3, v); in grpci2_cfg_w16()
359 static int grpci2_cfg_w8(struct grpci2_priv *priv, unsigned int bus, in grpci2_cfg_w8() argument
365 ret = grpci2_cfg_r32(priv, bus, devfn, where & ~0x3, &v); in grpci2_cfg_w8()
370 return grpci2_cfg_w32(priv, bus, devfn, where & ~0x3, v); in grpci2_cfg_w8()
379 struct grpci2_priv *priv = grpci2priv; in grpci2_read_config() local
390 ret = grpci2_cfg_r8(priv, busno, devfn, where, val); in grpci2_read_config()
393 ret = grpci2_cfg_r16(priv, busno, devfn, where, val); in grpci2_read_config()
396 ret = grpci2_cfg_r32(priv, busno, devfn, where, val); in grpci2_read_config()
418 struct grpci2_priv *priv = grpci2priv; in grpci2_write_config() local
434 return grpci2_cfg_w8(priv, busno, devfn, where, val); in grpci2_write_config()
436 return grpci2_cfg_w16(priv, busno, devfn, where, val); in grpci2_write_config()
438 return grpci2_cfg_w32(priv, busno, devfn, where, val); in grpci2_write_config()
456 struct grpci2_priv *priv = grpci2priv; in grpci2_mask_irq() local
463 REGSTORE(priv->regs->ctrl, REGLOAD(priv->regs->ctrl) & ~(1 << irqidx)); in grpci2_mask_irq()
471 struct grpci2_priv *priv = grpci2priv; in grpci2_unmask_irq() local
478 REGSTORE(priv->regs->ctrl, REGLOAD(priv->regs->ctrl) | (1 << irqidx)); in grpci2_unmask_irq()
504 struct grpci2_priv *priv = grpci2priv; in grpci2_pci_flow_irq() local
508 ctrl = REGLOAD(priv->regs->ctrl); in grpci2_pci_flow_irq()
509 sts_cap = REGLOAD(priv->regs->sts_cap); in grpci2_pci_flow_irq()
513 generic_handle_irq(priv->virq_err); in grpci2_pci_flow_irq()
523 generic_handle_irq(priv->irq_map[i]); in grpci2_pci_flow_irq()
533 if ((priv->irq_mode == 0) && (sts_cap & (STS_IDMA | STS_IDMAERR))) { in grpci2_pci_flow_irq()
534 generic_handle_irq(priv->virq_dma); in grpci2_pci_flow_irq()
565 static void grpci2_hw_init(struct grpci2_priv *priv) in grpci2_hw_init() argument
568 struct grpci2_regs __iomem *regs = priv->regs; in grpci2_hw_init()
570 struct grpci2_barcfg *barcfg = priv->tgtbars; in grpci2_hw_init()
573 if (priv->do_reset) { in grpci2_hw_init()
590 REGSTORE(regs->ahbmst_map[i], priv->pci_area); in grpci2_hw_init()
593 grpci2_cfg_r32(priv, TGT, 0, PCI_VENDOR_ID, &priv->pciid); in grpci2_hw_init()
596 grpci2_cfg_r8(priv, TGT, 0, PCI_CAPABILITY_LIST, &capptr); in grpci2_hw_init()
599 grpci2_cfg_r32(priv, TGT, 0, capptr+CAP9_IOMAP_OFS, &io_map); in grpci2_hw_init()
600 io_map = (io_map & ~0x1) | (priv->bt_enabled ? 1 : 0); in grpci2_hw_init()
601 grpci2_cfg_w32(priv, TGT, 0, capptr+CAP9_IOMAP_OFS, io_map); in grpci2_hw_init()
632 grpci2_cfg_w32(priv, TGT, 0, capptr+CAP9_BARSIZE_OFS+i*4, in grpci2_hw_init()
634 grpci2_cfg_w32(priv, TGT, 0, PCI_BASE_ADDRESS_0+i*4, pciadr); in grpci2_hw_init()
635 grpci2_cfg_w32(priv, TGT, 0, capptr+CAP9_BAR_OFS+i*4, ahbadr); in grpci2_hw_init()
641 grpci2_cfg_r32(priv, TGT, 0, PCI_COMMAND, &data); in grpci2_hw_init()
643 grpci2_cfg_w32(priv, TGT, 0, PCI_COMMAND, data); in grpci2_hw_init()
658 struct grpci2_priv *priv = arg; in grpci2_err_interrupt() local
659 struct grpci2_regs __iomem *regs = priv->regs; in grpci2_err_interrupt()
687 struct grpci2_priv *priv; in grpci2_of_probe() local
722 priv = grpci2priv = kzalloc(sizeof(struct grpci2_priv), GFP_KERNEL); in grpci2_of_probe()
727 priv->regs = regs; in grpci2_of_probe()
728 priv->irq = ofdev->archdata.irqs[0]; /* BASE IRQ */ in grpci2_of_probe()
729 priv->irq_mode = (capability & STS_IRQMODE) >> STS_IRQMODE_BIT; in grpci2_of_probe()
731 printk(KERN_INFO "GRPCI2: host found at %p, irq%d\n", regs, priv->irq); in grpci2_of_probe()
734 priv->bt_enabled = 1; in grpci2_of_probe()
739 memcpy(priv->tgtbars, tmp, 2*4*6); in grpci2_of_probe()
741 memset(priv->tgtbars, -1, 2*4*6); in grpci2_of_probe()
746 priv->do_reset = *tmp; in grpci2_of_probe()
748 priv->irq_mask = 0xf; in grpci2_of_probe()
753 priv->do_reset = *tmp; in grpci2_of_probe()
755 priv->do_reset = 0; in grpci2_of_probe()
758 priv->pci_area = ofdev->resource[1].start; in grpci2_of_probe()
759 priv->pci_area_end = ofdev->resource[1].end+1; in grpci2_of_probe()
760 priv->pci_io = ofdev->resource[2].start; in grpci2_of_probe()
761 priv->pci_conf = ofdev->resource[2].start + 0x10000; in grpci2_of_probe()
762 priv->pci_conf_end = priv->pci_conf + 0x10000; in grpci2_of_probe()
763 priv->pci_io_va = (unsigned long)ioremap(priv->pci_io, 0x10000); in grpci2_of_probe()
764 if (!priv->pci_io_va) { in grpci2_of_probe()
773 priv->pci_area, priv->pci_area_end-1, in grpci2_of_probe()
774 priv->pci_io, priv->pci_conf-1, in grpci2_of_probe()
775 priv->pci_conf, priv->pci_conf_end-1); in grpci2_of_probe()
782 memset(&priv->info.io_space, 0, sizeof(struct resource)); in grpci2_of_probe()
783 priv->info.io_space.name = "GRPCI2 PCI I/O Space"; in grpci2_of_probe()
784 priv->info.io_space.start = priv->pci_io_va + 0x1000; in grpci2_of_probe()
785 priv->info.io_space.end = priv->pci_io_va + 0x10000 - 1; in grpci2_of_probe()
786 priv->info.io_space.flags = IORESOURCE_IO; in grpci2_of_probe()
792 memset(&priv->info.mem_space, 0, sizeof(struct resource)); in grpci2_of_probe()
793 priv->info.mem_space.name = "GRPCI2 PCI MEM Space"; in grpci2_of_probe()
794 priv->info.mem_space.start = priv->pci_area; in grpci2_of_probe()
795 priv->info.mem_space.end = priv->pci_area_end - 1; in grpci2_of_probe()
796 priv->info.mem_space.flags = IORESOURCE_MEM; in grpci2_of_probe()
798 if (request_resource(&iomem_resource, &priv->info.mem_space) < 0) in grpci2_of_probe()
800 if (request_resource(&ioport_resource, &priv->info.io_space) < 0) in grpci2_of_probe()
804 priv->info.busn.name = "GRPCI2 busn"; in grpci2_of_probe()
805 priv->info.busn.start = 0; in grpci2_of_probe()
806 priv->info.busn.end = 255; in grpci2_of_probe()
808 grpci2_hw_init(priv); in grpci2_of_probe()
814 if (priv->irq_mode < 2) { in grpci2_of_probe()
816 leon_update_virq_handling(priv->irq, grpci2_pci_flow_irq, in grpci2_of_probe()
819 priv->irq_map[0] = grpci2_build_device_irq(1); in grpci2_of_probe()
820 priv->irq_map[1] = grpci2_build_device_irq(2); in grpci2_of_probe()
821 priv->irq_map[2] = grpci2_build_device_irq(3); in grpci2_of_probe()
822 priv->irq_map[3] = grpci2_build_device_irq(4); in grpci2_of_probe()
824 priv->virq_err = grpci2_build_device_irq(5); in grpci2_of_probe()
825 if (priv->irq_mode & 1) in grpci2_of_probe()
826 priv->virq_dma = ofdev->archdata.irqs[1]; in grpci2_of_probe()
828 priv->virq_dma = grpci2_build_device_irq(6); in grpci2_of_probe()
831 err = request_irq(priv->irq, grpci2_jump_interrupt, 0, in grpci2_of_probe()
832 "GRPCI2_JUMP", priv); in grpci2_of_probe()
842 priv->irq_map[i] = ofdev->archdata.irqs[i]; in grpci2_of_probe()
844 priv->virq_err = priv->irq_map[0]; in grpci2_of_probe()
845 if (priv->irq_mode & 1) in grpci2_of_probe()
846 priv->virq_dma = ofdev->archdata.irqs[4]; in grpci2_of_probe()
848 priv->virq_dma = priv->irq_map[0]; in grpci2_of_probe()
851 REGSTORE(regs->ctrl, REGLOAD(regs->ctrl)|(priv->irq_mask&0xf)); in grpci2_of_probe()
855 err = request_irq(priv->virq_err, grpci2_err_interrupt, IRQF_SHARED, in grpci2_of_probe()
856 "GRPCI2_ERR", priv); in grpci2_of_probe()
869 priv->info.ops = &grpci2_ops; in grpci2_of_probe()
870 priv->info.map_irq = grpci2_map_irq; in grpci2_of_probe()
871 leon_pci_init(ofdev, &priv->info); in grpci2_of_probe()
876 release_resource(&priv->info.io_space); in grpci2_of_probe()
878 release_resource(&priv->info.mem_space); in grpci2_of_probe()
881 iounmap((void __iomem *)priv->pci_io_va); in grpci2_of_probe()
883 kfree(priv); in grpci2_of_probe()