Lines Matching full:pci
13 #include <linux/pci-epc.h>
14 #include <linux/pci-epf.h>
55 static void __dw_pcie_ep_reset_bar(struct dw_pcie *pci, u8 func_no, in __dw_pcie_ep_reset_bar() argument
60 struct dw_pcie_ep *ep = &pci->ep; in __dw_pcie_ep_reset_bar()
65 dw_pcie_dbi_ro_wr_en(pci); in __dw_pcie_ep_reset_bar()
66 dw_pcie_writel_dbi2(pci, reg, 0x0); in __dw_pcie_ep_reset_bar()
67 dw_pcie_writel_dbi(pci, reg, 0x0); in __dw_pcie_ep_reset_bar()
69 dw_pcie_writel_dbi2(pci, reg + 4, 0x0); in __dw_pcie_ep_reset_bar()
70 dw_pcie_writel_dbi(pci, reg + 4, 0x0); in __dw_pcie_ep_reset_bar()
72 dw_pcie_dbi_ro_wr_dis(pci); in __dw_pcie_ep_reset_bar()
75 void dw_pcie_ep_reset_bar(struct dw_pcie *pci, enum pci_barno bar) in dw_pcie_ep_reset_bar() argument
79 funcs = pci->ep.epc->max_functions; in dw_pcie_ep_reset_bar()
82 __dw_pcie_ep_reset_bar(pci, func_no, bar, 0); in dw_pcie_ep_reset_bar()
89 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in __dw_pcie_ep_find_next_cap() local
99 reg = dw_pcie_readw_dbi(pci, func_offset + cap_ptr); in __dw_pcie_ep_find_next_cap()
114 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_find_capability() local
121 reg = dw_pcie_readw_dbi(pci, func_offset + PCI_CAPABILITY_LIST); in dw_pcie_ep_find_capability()
131 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_write_header() local
136 dw_pcie_dbi_ro_wr_en(pci); in dw_pcie_ep_write_header()
137 dw_pcie_writew_dbi(pci, func_offset + PCI_VENDOR_ID, hdr->vendorid); in dw_pcie_ep_write_header()
138 dw_pcie_writew_dbi(pci, func_offset + PCI_DEVICE_ID, hdr->deviceid); in dw_pcie_ep_write_header()
139 dw_pcie_writeb_dbi(pci, func_offset + PCI_REVISION_ID, hdr->revid); in dw_pcie_ep_write_header()
140 dw_pcie_writeb_dbi(pci, func_offset + PCI_CLASS_PROG, hdr->progif_code); in dw_pcie_ep_write_header()
141 dw_pcie_writew_dbi(pci, func_offset + PCI_CLASS_DEVICE, in dw_pcie_ep_write_header()
143 dw_pcie_writeb_dbi(pci, func_offset + PCI_CACHE_LINE_SIZE, in dw_pcie_ep_write_header()
145 dw_pcie_writew_dbi(pci, func_offset + PCI_SUBSYSTEM_VENDOR_ID, in dw_pcie_ep_write_header()
147 dw_pcie_writew_dbi(pci, func_offset + PCI_SUBSYSTEM_ID, hdr->subsys_id); in dw_pcie_ep_write_header()
148 dw_pcie_writeb_dbi(pci, func_offset + PCI_INTERRUPT_PIN, in dw_pcie_ep_write_header()
150 dw_pcie_dbi_ro_wr_dis(pci); in dw_pcie_ep_write_header()
160 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_inbound_atu() local
163 free_win = find_first_zero_bit(ep->ib_window_map, pci->num_ib_windows); in dw_pcie_ep_inbound_atu()
167 if (free_win >= pci->num_ib_windows) { in dw_pcie_ep_inbound_atu()
168 dev_err(pci->dev, "No free inbound window\n"); in dw_pcie_ep_inbound_atu()
172 ret = dw_pcie_prog_ep_inbound_atu(pci, func_no, free_win, type, in dw_pcie_ep_inbound_atu()
175 dev_err(pci->dev, "Failed to program IB window\n"); in dw_pcie_ep_inbound_atu()
189 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_outbound_atu() local
193 free_win = find_first_zero_bit(ep->ob_window_map, pci->num_ob_windows); in dw_pcie_ep_outbound_atu()
194 if (free_win >= pci->num_ob_windows) { in dw_pcie_ep_outbound_atu()
195 dev_err(pci->dev, "No free outbound window\n"); in dw_pcie_ep_outbound_atu()
199 ret = dw_pcie_prog_ep_outbound_atu(pci, func_no, free_win, PCIE_ATU_TYPE_MEM, in dw_pcie_ep_outbound_atu()
214 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_clear_bar() local
218 __dw_pcie_ep_reset_bar(pci, func_no, bar, epf_bar->flags); in dw_pcie_ep_clear_bar()
220 dw_pcie_disable_atu(pci, PCIE_ATU_REGION_DIR_IB, atu_index); in dw_pcie_ep_clear_bar()
230 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_set_bar() local
254 dw_pcie_dbi_ro_wr_en(pci); in dw_pcie_ep_set_bar()
256 dw_pcie_writel_dbi2(pci, reg, lower_32_bits(size - 1)); in dw_pcie_ep_set_bar()
257 dw_pcie_writel_dbi(pci, reg, flags); in dw_pcie_ep_set_bar()
260 dw_pcie_writel_dbi2(pci, reg + 4, upper_32_bits(size - 1)); in dw_pcie_ep_set_bar()
261 dw_pcie_writel_dbi(pci, reg + 4, 0); in dw_pcie_ep_set_bar()
265 dw_pcie_dbi_ro_wr_dis(pci); in dw_pcie_ep_set_bar()
274 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_find_index() local
276 for (index = 0; index < pci->num_ob_windows; index++) { in dw_pcie_find_index()
292 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_unmap_addr() local
298 dw_pcie_disable_atu(pci, PCIE_ATU_REGION_DIR_OB, atu_index); in dw_pcie_ep_unmap_addr()
307 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_map_addr() local
311 dev_err(pci->dev, "Failed to enable address\n"); in dw_pcie_ep_map_addr()
321 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_get_msi() local
333 val = dw_pcie_readw_dbi(pci, reg); in dw_pcie_ep_get_msi()
346 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_set_msi() local
358 val = dw_pcie_readw_dbi(pci, reg); in dw_pcie_ep_set_msi()
361 dw_pcie_dbi_ro_wr_en(pci); in dw_pcie_ep_set_msi()
362 dw_pcie_writew_dbi(pci, reg, val); in dw_pcie_ep_set_msi()
363 dw_pcie_dbi_ro_wr_dis(pci); in dw_pcie_ep_set_msi()
371 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_get_msix() local
383 val = dw_pcie_readw_dbi(pci, reg); in dw_pcie_ep_get_msix()
396 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_set_msix() local
405 dw_pcie_dbi_ro_wr_en(pci); in dw_pcie_ep_set_msix()
410 val = dw_pcie_readw_dbi(pci, reg); in dw_pcie_ep_set_msix()
413 dw_pcie_writew_dbi(pci, reg, val); in dw_pcie_ep_set_msix()
417 dw_pcie_writel_dbi(pci, reg, val); in dw_pcie_ep_set_msix()
421 dw_pcie_writel_dbi(pci, reg, val); in dw_pcie_ep_set_msix()
423 dw_pcie_dbi_ro_wr_dis(pci); in dw_pcie_ep_set_msix()
442 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_stop() local
444 dw_pcie_stop_link(pci); in dw_pcie_ep_stop()
450 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_start() local
452 return dw_pcie_start_link(pci); in dw_pcie_ep_start()
484 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_raise_legacy_irq() local
485 struct device *dev = pci->dev; in dw_pcie_ep_raise_legacy_irq()
496 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_raise_msi_irq() local
513 /* Raise MSI per the PCI Local Bus Specification Revision 3.0, 6.8.1. */ in dw_pcie_ep_raise_msi_irq()
515 msg_ctrl = dw_pcie_readw_dbi(pci, reg); in dw_pcie_ep_raise_msi_irq()
518 msg_addr_lower = dw_pcie_readl_dbi(pci, reg); in dw_pcie_ep_raise_msi_irq()
521 msg_addr_upper = dw_pcie_readl_dbi(pci, reg); in dw_pcie_ep_raise_msi_irq()
523 msg_data = dw_pcie_readw_dbi(pci, reg); in dw_pcie_ep_raise_msi_irq()
527 msg_data = dw_pcie_readw_dbi(pci, reg); in dw_pcie_ep_raise_msi_irq()
548 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_raise_msix_irq_doorbell() local
559 dw_pcie_writel_dbi(pci, PCIE_MSIX_DOORBELL, msg_data); in dw_pcie_ep_raise_msix_irq_doorbell()
567 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_raise_msix_irq() local
586 tbl_offset = dw_pcie_readl_dbi(pci, reg); in dw_pcie_ep_raise_msix_irq()
596 dev_dbg(pci->dev, "MSI-X entry ctrl set\n"); in dw_pcie_ep_raise_msix_irq()
615 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_exit() local
618 dw_pcie_edma_remove(pci); in dw_pcie_ep_exit()
626 static unsigned int dw_pcie_ep_find_ext_capability(struct dw_pcie *pci, int cap) in dw_pcie_ep_find_ext_capability() argument
632 header = dw_pcie_readl_dbi(pci, pos); in dw_pcie_ep_find_ext_capability()
646 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_init_complete() local
653 hdr_type = dw_pcie_readb_dbi(pci, PCI_HEADER_TYPE) & in dw_pcie_ep_init_complete()
656 dev_err(pci->dev, in dw_pcie_ep_init_complete()
662 offset = dw_pcie_ep_find_ext_capability(pci, PCI_EXT_CAP_ID_REBAR); in dw_pcie_ep_init_complete()
663 ptm_cap_base = dw_pcie_ep_find_ext_capability(pci, PCI_EXT_CAP_ID_PTM); in dw_pcie_ep_init_complete()
665 dw_pcie_dbi_ro_wr_en(pci); in dw_pcie_ep_init_complete()
668 reg = dw_pcie_readl_dbi(pci, offset + PCI_REBAR_CTRL); in dw_pcie_ep_init_complete()
673 dw_pcie_writel_dbi(pci, offset + PCI_REBAR_CAP, 0x0); in dw_pcie_ep_init_complete()
681 dw_pcie_dbi_ro_wr_en(pci); in dw_pcie_ep_init_complete()
682 reg = dw_pcie_readl_dbi(pci, ptm_cap_base + PCI_PTM_CAP); in dw_pcie_ep_init_complete()
684 dw_pcie_writel_dbi(pci, ptm_cap_base + PCI_PTM_CAP, reg); in dw_pcie_ep_init_complete()
686 reg = dw_pcie_readl_dbi(pci, ptm_cap_base + PCI_PTM_CAP); in dw_pcie_ep_init_complete()
688 dw_pcie_writel_dbi(pci, ptm_cap_base + PCI_PTM_CAP, reg); in dw_pcie_ep_init_complete()
689 dw_pcie_dbi_ro_wr_dis(pci); in dw_pcie_ep_init_complete()
692 dw_pcie_setup(pci); in dw_pcie_ep_init_complete()
693 dw_pcie_dbi_ro_wr_dis(pci); in dw_pcie_ep_init_complete()
706 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); in dw_pcie_ep_init() local
707 struct device *dev = pci->dev; in dw_pcie_ep_init()
715 ret = dw_pcie_get_resources(pci); in dw_pcie_ep_init()
726 dw_pcie_version_detect(pci); in dw_pcie_ep_init()
728 dw_pcie_iatu_detect(pci); in dw_pcie_ep_init()
730 ep->ib_window_map = devm_bitmap_zalloc(dev, pci->num_ib_windows, in dw_pcie_ep_init()
735 ep->ob_window_map = devm_bitmap_zalloc(dev, pci->num_ob_windows, in dw_pcie_ep_init()
740 addr = devm_kcalloc(dev, pci->num_ob_windows, sizeof(phys_addr_t), in dw_pcie_ep_init()
791 ret = dw_pcie_edma_detect(pci); in dw_pcie_ep_init()
808 dw_pcie_edma_remove(pci); in dw_pcie_ep_init()