• Home
  • Raw
  • Download

Lines Matching refs:v3

315 	struct v3_pci *v3 = bus->sysdata;  in v3_map_bus()  local
367 writel(v3_addr_to_lb_base(v3->non_pre_mem) | in v3_map_bus()
369 v3->base + V3_LB_BASE0); in v3_map_bus()
375 writel(v3_addr_to_lb_base(v3->config_mem) | in v3_map_bus()
377 v3->base + V3_LB_BASE1); in v3_map_bus()
378 writew(mapaddress, v3->base + V3_LB_MAP1); in v3_map_bus()
380 return v3->config_base + address + offset; in v3_map_bus()
383 static void v3_unmap_bus(struct v3_pci *v3) in v3_unmap_bus() argument
388 writel(v3_addr_to_lb_base(v3->pre_mem) | in v3_unmap_bus()
391 v3->base + V3_LB_BASE1); in v3_unmap_bus()
392 writew(v3_addr_to_lb_map(v3->pre_bus_addr) | in v3_unmap_bus()
394 v3->base + V3_LB_MAP1); in v3_unmap_bus()
399 writel(v3_addr_to_lb_base(v3->non_pre_mem) | in v3_unmap_bus()
401 v3->base + V3_LB_BASE0); in v3_unmap_bus()
407 struct v3_pci *v3 = bus->sysdata; in v3_pci_read_config() local
414 v3_unmap_bus(v3); in v3_pci_read_config()
421 struct v3_pci *v3 = bus->sysdata; in v3_pci_write_config() local
428 v3_unmap_bus(v3); in v3_pci_write_config()
440 struct v3_pci *v3 = data; in v3_irq() local
441 struct device *dev = v3->dev; in v3_irq()
444 status = readw(v3->base + V3_PCI_STAT); in v3_irq()
453 writew(status, v3->base + V3_PCI_STAT); in v3_irq()
455 status = readb(v3->base + V3_LB_ISTAT); in v3_irq()
473 writeb(0, v3->base + V3_LB_ISTAT); in v3_irq()
474 if (v3->map) in v3_irq()
475 regmap_write(v3->map, INTEGRATOR_SC_PCI_OFFSET, in v3_irq()
482 static int v3_integrator_init(struct v3_pci *v3) in v3_integrator_init() argument
486 v3->map = in v3_integrator_init()
488 if (IS_ERR(v3->map)) { in v3_integrator_init()
489 dev_err(v3->dev, "no syscon\n"); in v3_integrator_init()
493 regmap_read(v3->map, INTEGRATOR_SC_PCI_OFFSET, &val); in v3_integrator_init()
495 regmap_write(v3->map, INTEGRATOR_SC_PCI_OFFSET, in v3_integrator_init()
504 writel(0x6200, v3->base + V3_LB_IO_BASE); in v3_integrator_init()
508 writeb(0xaa, v3->base + V3_MAIL_DATA); in v3_integrator_init()
509 writeb(0x55, v3->base + V3_MAIL_DATA + 4); in v3_integrator_init()
510 } while (readb(v3->base + V3_MAIL_DATA) != 0xaa && in v3_integrator_init()
511 readb(v3->base + V3_MAIL_DATA) != 0x55); in v3_integrator_init()
514 dev_info(v3->dev, "initialized PCI V3 Integrator/AP integration\n"); in v3_integrator_init()
519 static int v3_pci_setup_resource(struct v3_pci *v3, in v3_pci_setup_resource() argument
523 struct device *dev = v3->dev; in v3_pci_setup_resource()
534 v3->base + V3_LB_BASE2); in v3_pci_setup_resource()
536 v3->base + V3_LB_MAP2); in v3_pci_setup_resource()
542 v3->pre_mem = mem->start; in v3_pci_setup_resource()
543 v3->pre_bus_addr = mem->start - win->offset; in v3_pci_setup_resource()
545 mem, &v3->pre_bus_addr); in v3_pci_setup_resource()
550 if (v3->non_pre_mem && in v3_pci_setup_resource()
551 (mem->start != v3->non_pre_mem + SZ_256M)) { in v3_pci_setup_resource()
557 writel(v3_addr_to_lb_base(v3->pre_mem) | in v3_pci_setup_resource()
561 v3->base + V3_LB_BASE1); in v3_pci_setup_resource()
562 writew(v3_addr_to_lb_map(v3->pre_bus_addr) | in v3_pci_setup_resource()
564 v3->base + V3_LB_MAP1); in v3_pci_setup_resource()
567 v3->non_pre_mem = mem->start; in v3_pci_setup_resource()
568 v3->non_pre_bus_addr = mem->start - win->offset; in v3_pci_setup_resource()
570 mem, &v3->non_pre_bus_addr); in v3_pci_setup_resource()
577 writel(v3_addr_to_lb_base(v3->non_pre_mem) | in v3_pci_setup_resource()
580 v3->base + V3_LB_BASE0); in v3_pci_setup_resource()
581 writew(v3_addr_to_lb_map(v3->non_pre_bus_addr) | in v3_pci_setup_resource()
583 v3->base + V3_LB_MAP0); in v3_pci_setup_resource()
597 static int v3_get_dma_range_config(struct v3_pci *v3, in v3_get_dma_range_config() argument
601 struct device *dev = v3->dev; in v3_get_dma_range_config()
659 dev_err(v3->dev, "illegal dma memory chunk size\n"); in v3_get_dma_range_config()
675 static int v3_pci_parse_map_dma_ranges(struct v3_pci *v3, in v3_pci_parse_map_dma_ranges() argument
678 struct pci_host_bridge *bridge = pci_host_bridge_from_priv(v3); in v3_pci_parse_map_dma_ranges()
679 struct device *dev = v3->dev; in v3_pci_parse_map_dma_ranges()
687 ret = v3_get_dma_range_config(v3, entry, &pci_base, &pci_map); in v3_pci_parse_map_dma_ranges()
692 writel(pci_base, v3->base + V3_PCI_BASE0); in v3_pci_parse_map_dma_ranges()
693 writel(pci_map, v3->base + V3_PCI_MAP0); in v3_pci_parse_map_dma_ranges()
695 writel(pci_base, v3->base + V3_PCI_BASE1); in v3_pci_parse_map_dma_ranges()
696 writel(pci_map, v3->base + V3_PCI_MAP1); in v3_pci_parse_map_dma_ranges()
712 struct v3_pci *v3; in v3_pci_probe() local
719 host = devm_pci_alloc_host_bridge(dev, sizeof(*v3)); in v3_pci_probe()
724 v3 = pci_host_bridge_priv(host); in v3_pci_probe()
725 host->sysdata = v3; in v3_pci_probe()
726 v3->dev = dev; in v3_pci_probe()
741 v3->base = devm_ioremap_resource(dev, regs); in v3_pci_probe()
742 if (IS_ERR(v3->base)) in v3_pci_probe()
743 return PTR_ERR(v3->base); in v3_pci_probe()
749 if (readl(v3->base + V3_LB_IO_BASE) != (regs->start >> 16)) in v3_pci_probe()
751 readl(v3->base + V3_LB_IO_BASE), regs); in v3_pci_probe()
759 v3->config_mem = regs->start; in v3_pci_probe()
760 v3->config_base = devm_ioremap_resource(dev, regs); in v3_pci_probe()
761 if (IS_ERR(v3->config_base)) in v3_pci_probe()
762 return PTR_ERR(v3->config_base); in v3_pci_probe()
770 "PCIv3 error", v3); in v3_pci_probe()
781 if (readw(v3->base + V3_SYSTEM) & V3_SYSTEM_M_LOCK) in v3_pci_probe()
782 writew(V3_SYSTEM_UNLOCK, v3->base + V3_SYSTEM); in v3_pci_probe()
785 val = readw(v3->base + V3_PCI_CMD); in v3_pci_probe()
787 writew(val, v3->base + V3_PCI_CMD); in v3_pci_probe()
790 val = readw(v3->base + V3_SYSTEM); in v3_pci_probe()
792 writew(val, v3->base + V3_SYSTEM); in v3_pci_probe()
795 val = readw(v3->base + V3_PCI_CFG); in v3_pci_probe()
797 writew(val, v3->base + V3_PCI_CFG); in v3_pci_probe()
800 val = readw(v3->base + V3_LB_CFG); in v3_pci_probe()
805 writew(val, v3->base + V3_LB_CFG); in v3_pci_probe()
808 val = readw(v3->base + V3_PCI_CMD); in v3_pci_probe()
810 writew(val, v3->base + V3_PCI_CMD); in v3_pci_probe()
814 ret = v3_pci_setup_resource(v3, host, win); in v3_pci_probe()
820 ret = v3_pci_parse_map_dma_ranges(v3, np); in v3_pci_probe()
829 writel(0x00000000, v3->base + V3_PCI_IO_BASE); in v3_pci_probe()
837 writew(val, v3->base + V3_PCI_CFG); in v3_pci_probe()
848 v3->base + V3_FIFO_PRIORITY); in v3_pci_probe()
855 writeb(0, v3->base + V3_LB_ISTAT); in v3_pci_probe()
856 val = readw(v3->base + V3_LB_CFG); in v3_pci_probe()
858 writew(val, v3->base + V3_LB_CFG); in v3_pci_probe()
860 v3->base + V3_LB_IMASK); in v3_pci_probe()
864 ret = v3_integrator_init(v3); in v3_pci_probe()
870 val = readw(v3->base + V3_PCI_CMD); in v3_pci_probe()
872 writew(val, v3->base + V3_PCI_CMD); in v3_pci_probe()
875 writeb(0, v3->base + V3_LB_ISTAT); in v3_pci_probe()
878 v3->base + V3_LB_IMASK); in v3_pci_probe()
881 val = readw(v3->base + V3_SYSTEM); in v3_pci_probe()
883 writew(val, v3->base + V3_SYSTEM); in v3_pci_probe()
888 val = readw(v3->base + V3_SYSTEM); in v3_pci_probe()
890 writew(val, v3->base + V3_SYSTEM); in v3_pci_probe()