Lines Matching refs:port
387 static struct mc_pcie *port;
389 static void mc_pcie_enable_msi(struct mc_pcie *port, void __iomem *ecam)
391 struct mc_msi *msi = &port->msi;
414 struct mc_pcie *port = irq_desc_get_handler_data(desc);
416 struct device *dev = port->dev;
417 struct mc_msi *msi = &port->msi;
419 port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
443 struct mc_pcie *port = irq_data_get_irq_chip_data(data);
445 port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
453 struct mc_pcie *port = irq_data_get_irq_chip_data(data);
454 phys_addr_t addr = port->msi.vector_phy;
460 dev_dbg(port->dev, "msi#%x address_hi %#x address_lo %#x\n",
480 struct mc_pcie *port = domain->host_data;
481 struct mc_msi *msi = &port->msi;
505 struct mc_pcie *port = irq_data_get_irq_chip_data(d);
506 struct mc_msi *msi = &port->msi;
513 dev_err(port->dev, "trying to free unused MSI%lu\n", d->hwirq);
536 static int mc_allocate_msi_domains(struct mc_pcie *port)
538 struct device *dev = port->dev;
540 struct mc_msi *msi = &port->msi;
542 mutex_init(&port->msi.lock);
545 &msi_domain_ops, port);
564 struct mc_pcie *port = irq_desc_get_handler_data(desc);
566 struct device *dev = port->dev;
568 port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
580 ret = generic_handle_domain_irq(port->intx_domain, bit);
592 struct mc_pcie *port = irq_data_get_irq_chip_data(data);
594 port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
602 struct mc_pcie *port = irq_data_get_irq_chip_data(data);
604 port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
609 raw_spin_lock_irqsave(&port->lock, flags);
613 raw_spin_unlock_irqrestore(&port->lock, flags);
618 struct mc_pcie *port = irq_data_get_irq_chip_data(data);
620 port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
625 raw_spin_lock_irqsave(&port->lock, flags);
629 raw_spin_unlock_irqrestore(&port->lock, flags);
657 static u32 pcie_events(struct mc_pcie *port)
659 void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
670 static u32 sec_errors(struct mc_pcie *port)
672 void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
683 static u32 ded_errors(struct mc_pcie *port)
685 void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
696 static u32 local_events(struct mc_pcie *port)
698 void __iomem *bridge_base_addr = port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
709 static u32 get_events(struct mc_pcie *port)
713 events |= pcie_events(port);
714 events |= sec_errors(port);
715 events |= ded_errors(port);
716 events |= local_events(port);
723 struct mc_pcie *port = dev_id;
724 struct device *dev = port->dev;
727 data = irq_domain_get_irq_data(port->event_domain, irq);
739 struct mc_pcie *port = irq_desc_get_handler_data(desc);
746 events = get_events(port);
749 generic_handle_domain_irq(port->event_domain, bit);
756 struct mc_pcie *port = irq_data_get_irq_chip_data(data);
761 addr = port->axi_base_addr + event_descs[event].base +
771 struct mc_pcie *port = irq_data_get_irq_chip_data(data);
777 addr = port->axi_base_addr + event_descs[event].base +
788 raw_spin_lock(&port->lock);
796 raw_spin_unlock(&port->lock);
801 struct mc_pcie *port = irq_data_get_irq_chip_data(data);
807 addr = port->axi_base_addr + event_descs[event].base +
820 raw_spin_lock(&port->lock);
827 raw_spin_unlock(&port->lock);
895 static int mc_pcie_init_irq_domains(struct mc_pcie *port)
897 struct device *dev = port->dev;
908 port->event_domain = irq_domain_add_linear(pcie_intc_node, NUM_EVENTS,
909 &event_domain_ops, port);
910 if (!port->event_domain) {
916 irq_domain_update_bus_token(port->event_domain, DOMAIN_BUS_NEXUS);
918 port->intx_domain = irq_domain_add_linear(pcie_intc_node, PCI_NUM_INTX,
919 &intx_domain_ops, port);
920 if (!port->intx_domain) {
926 irq_domain_update_bus_token(port->intx_domain, DOMAIN_BUS_WIRED);
929 raw_spin_lock_init(&port->lock);
931 return mc_allocate_msi_domains(port);
973 struct mc_pcie *port)
976 port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
995 static inline void mc_clear_secs(struct mc_pcie *port)
997 void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
1004 static inline void mc_clear_deds(struct mc_pcie *port)
1006 void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
1013 static void mc_disable_interrupts(struct mc_pcie *port)
1015 void __iomem *bridge_base_addr = port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
1016 void __iomem *ctrl_base_addr = port->axi_base_addr + MC_PCIE_CTRL_ADDR;
1029 mc_clear_secs(port);
1034 mc_clear_deds(port);
1055 static int mc_init_interrupts(struct platform_device *pdev, struct mc_pcie *port)
1062 ret = mc_pcie_init_irq_domains(port);
1073 event_irq = irq_create_mapping(port->event_domain, i);
1080 0, event_cause[i].sym, port);
1087 intx_irq = irq_create_mapping(port->event_domain,
1095 irq_set_chained_handler_and_data(intx_irq, mc_handle_intx, port);
1097 msi_irq = irq_create_mapping(port->event_domain,
1103 irq_set_chained_handler_and_data(msi_irq, mc_handle_msi, port);
1106 irq_set_chained_handler_and_data(irq, mc_handle_event, port);
1116 port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
1125 mc_pcie_enable_msi(port, cfg->win);
1128 ret = mc_pcie_setup_windows(pdev, port);
1133 ret = mc_init_interrupts(pdev, port);
1147 port = devm_kzalloc(dev, sizeof(*port), GFP_KERNEL);
1148 if (!port)
1151 port->dev = dev;
1153 port->axi_base_addr = devm_platform_ioremap_resource(pdev, 1);
1154 if (IS_ERR(port->axi_base_addr))
1155 return PTR_ERR(port->axi_base_addr);
1157 mc_disable_interrupts(port);
1159 bridge_base_addr = port->axi_base_addr + MC_PCIE_BRIDGE_ADDR;
1171 port->msi.num_vectors = 1 << val;
1174 port->msi.vector_phy = readl_relaxed(bridge_base_addr + IMSI_ADDR);