Lines Matching +full:pci +full:- +full:ep
1 /* SPDX-License-Identifier: GPL-2.0 */
17 #include <linux/dma-mapping.h>
22 #include <linux/pci.h>
25 #include <linux/pci-epc.h>
26 #include <linux/pci-epf.h>
28 /* DWC PCIe IP-core versions (native support since v4.70a) */
38 ((_pci)->version _op DW_PCIE_VER_ ## _ver)
58 test_bit(DW_PCIE_CAP_ ## _cap, &(_pci)->caps)
61 set_bit(DW_PCIE_CAP_ ## _cap, &(_pci)->caps)
72 /* Synopsys-specific PCIe configuration registers */
131 * iATU inbound and outbound windows CSRs. Before the IP-core v4.80a each
133 * viewport selector. The iATU/eDMA CSRs space was re-designed in DWC PCIe
173 * eDMA CSRs. DW PCIe IP-core v4.70a and older had the eDMA registers accessible
194 * iATU Unroll-specific register definitions
207 * RAS-DES register definitions
332 void (*ep_init)(struct dw_pcie_ep *ep);
333 int (*raise_irq)(struct dw_pcie_ep *ep, u8 func_no,
335 const struct pci_epc_features* (*get_features)(struct dw_pcie_ep *ep);
343 unsigned int (*func_conf_select)(struct dw_pcie_ep *ep, u8 func_no);
350 u8 msix_cap; /* MSI-X capability offset */
394 struct dw_pcie_ep ep; member
414 container_of((endpoint), struct dw_pcie, ep)
416 int dw_pcie_get_resources(struct dw_pcie *pci);
418 void dw_pcie_version_detect(struct dw_pcie *pci);
420 u8 dw_pcie_find_capability(struct dw_pcie *pci, u8 cap);
421 u16 dw_pcie_find_ext_capability(struct dw_pcie *pci, u8 cap);
426 u32 dw_pcie_read_dbi(struct dw_pcie *pci, u32 reg, size_t size);
427 void dw_pcie_write_dbi(struct dw_pcie *pci, u32 reg, size_t size, u32 val);
428 void dw_pcie_write_dbi2(struct dw_pcie *pci, u32 reg, size_t size, u32 val);
429 int dw_pcie_link_up(struct dw_pcie *pci);
430 void dw_pcie_upconfig_setup(struct dw_pcie *pci);
431 int dw_pcie_wait_for_link(struct dw_pcie *pci);
432 int dw_pcie_prog_outbound_atu(struct dw_pcie *pci, int index, int type,
434 int dw_pcie_prog_ep_outbound_atu(struct dw_pcie *pci, u8 func_no, int index,
436 int dw_pcie_prog_inbound_atu(struct dw_pcie *pci, int index, int type,
438 int dw_pcie_prog_ep_inbound_atu(struct dw_pcie *pci, u8 func_no, int index,
440 void dw_pcie_disable_atu(struct dw_pcie *pci, u32 dir, int index);
441 void dw_pcie_setup(struct dw_pcie *pci);
442 void dw_pcie_iatu_detect(struct dw_pcie *pci);
443 int dw_pcie_edma_detect(struct dw_pcie *pci);
444 void dw_pcie_edma_remove(struct dw_pcie *pci);
446 int dw_pcie_suspend_noirq(struct dw_pcie *pci);
447 int dw_pcie_resume_noirq(struct dw_pcie *pci);
449 static inline void dw_pcie_writel_dbi(struct dw_pcie *pci, u32 reg, u32 val) in dw_pcie_writel_dbi() argument
451 dw_pcie_write_dbi(pci, reg, 0x4, val); in dw_pcie_writel_dbi()
454 static inline u32 dw_pcie_readl_dbi(struct dw_pcie *pci, u32 reg) in dw_pcie_readl_dbi() argument
456 return dw_pcie_read_dbi(pci, reg, 0x4); in dw_pcie_readl_dbi()
459 static inline void dw_pcie_writew_dbi(struct dw_pcie *pci, u32 reg, u16 val) in dw_pcie_writew_dbi() argument
461 dw_pcie_write_dbi(pci, reg, 0x2, val); in dw_pcie_writew_dbi()
464 static inline u16 dw_pcie_readw_dbi(struct dw_pcie *pci, u32 reg) in dw_pcie_readw_dbi() argument
466 return dw_pcie_read_dbi(pci, reg, 0x2); in dw_pcie_readw_dbi()
469 static inline void dw_pcie_writeb_dbi(struct dw_pcie *pci, u32 reg, u8 val) in dw_pcie_writeb_dbi() argument
471 dw_pcie_write_dbi(pci, reg, 0x1, val); in dw_pcie_writeb_dbi()
474 static inline u8 dw_pcie_readb_dbi(struct dw_pcie *pci, u32 reg) in dw_pcie_readb_dbi() argument
476 return dw_pcie_read_dbi(pci, reg, 0x1); in dw_pcie_readb_dbi()
479 static inline void dw_pcie_writel_dbi2(struct dw_pcie *pci, u32 reg, u32 val) in dw_pcie_writel_dbi2() argument
481 dw_pcie_write_dbi2(pci, reg, 0x4, val); in dw_pcie_writel_dbi2()
484 static inline void dw_pcie_dbi_ro_wr_en(struct dw_pcie *pci) in dw_pcie_dbi_ro_wr_en() argument
490 val = dw_pcie_readl_dbi(pci, reg); in dw_pcie_dbi_ro_wr_en()
492 dw_pcie_writel_dbi(pci, reg, val); in dw_pcie_dbi_ro_wr_en()
495 static inline void dw_pcie_dbi_ro_wr_dis(struct dw_pcie *pci) in dw_pcie_dbi_ro_wr_dis() argument
501 val = dw_pcie_readl_dbi(pci, reg); in dw_pcie_dbi_ro_wr_dis()
503 dw_pcie_writel_dbi(pci, reg, val); in dw_pcie_dbi_ro_wr_dis()
506 static inline int dw_pcie_start_link(struct dw_pcie *pci) in dw_pcie_start_link() argument
508 if (pci->ops && pci->ops->start_link) in dw_pcie_start_link()
509 return pci->ops->start_link(pci); in dw_pcie_start_link()
514 static inline void dw_pcie_stop_link(struct dw_pcie *pci) in dw_pcie_stop_link() argument
516 if (pci->ops && pci->ops->stop_link) in dw_pcie_stop_link()
517 pci->ops->stop_link(pci); in dw_pcie_stop_link()
520 static inline enum dw_pcie_ltssm dw_pcie_get_ltssm(struct dw_pcie *pci) in dw_pcie_get_ltssm() argument
524 if (pci->ops && pci->ops->get_ltssm) in dw_pcie_get_ltssm()
525 return pci->ops->get_ltssm(pci); in dw_pcie_get_ltssm()
527 val = dw_pcie_readl_dbi(pci, PCIE_PORT_DEBUG0); in dw_pcie_get_ltssm()
573 void dw_pcie_ep_linkup(struct dw_pcie_ep *ep);
574 int dw_pcie_ep_init(struct dw_pcie_ep *ep);
575 int dw_pcie_ep_init_complete(struct dw_pcie_ep *ep);
576 void dw_pcie_ep_init_notify(struct dw_pcie_ep *ep);
577 void dw_pcie_ep_exit(struct dw_pcie_ep *ep);
578 int dw_pcie_ep_raise_legacy_irq(struct dw_pcie_ep *ep, u8 func_no);
579 int dw_pcie_ep_raise_msi_irq(struct dw_pcie_ep *ep, u8 func_no,
581 int dw_pcie_ep_raise_msix_irq(struct dw_pcie_ep *ep, u8 func_no,
583 int dw_pcie_ep_raise_msix_irq_doorbell(struct dw_pcie_ep *ep, u8 func_no,
585 void dw_pcie_ep_reset_bar(struct dw_pcie *pci, enum pci_barno bar);
587 dw_pcie_ep_get_func_from_ep(struct dw_pcie_ep *ep, u8 func_no);
589 static inline void dw_pcie_ep_linkup(struct dw_pcie_ep *ep) in dw_pcie_ep_linkup() argument
593 static inline int dw_pcie_ep_init(struct dw_pcie_ep *ep) in dw_pcie_ep_init() argument
598 static inline int dw_pcie_ep_init_complete(struct dw_pcie_ep *ep) in dw_pcie_ep_init_complete() argument
603 static inline void dw_pcie_ep_init_notify(struct dw_pcie_ep *ep) in dw_pcie_ep_init_notify() argument
607 static inline void dw_pcie_ep_exit(struct dw_pcie_ep *ep) in dw_pcie_ep_exit() argument
611 static inline int dw_pcie_ep_raise_legacy_irq(struct dw_pcie_ep *ep, u8 func_no) in dw_pcie_ep_raise_legacy_irq() argument
616 static inline int dw_pcie_ep_raise_msi_irq(struct dw_pcie_ep *ep, u8 func_no, in dw_pcie_ep_raise_msi_irq() argument
622 static inline int dw_pcie_ep_raise_msix_irq(struct dw_pcie_ep *ep, u8 func_no, in dw_pcie_ep_raise_msix_irq() argument
628 static inline int dw_pcie_ep_raise_msix_irq_doorbell(struct dw_pcie_ep *ep, in dw_pcie_ep_raise_msix_irq_doorbell() argument
635 static inline void dw_pcie_ep_reset_bar(struct dw_pcie *pci, enum pci_barno bar) in dw_pcie_ep_reset_bar() argument
640 dw_pcie_ep_get_func_from_ep(struct dw_pcie_ep *ep, u8 func_no) in dw_pcie_ep_get_func_from_ep() argument