| .. | .. |
|---|
| 13 | 13 | #include <linux/kernel.h> |
|---|
| 14 | 14 | #include <linux/init.h> |
|---|
| 15 | 15 | #include <linux/of_device.h> |
|---|
| 16 | | -#include <linux/of_gpio.h> |
|---|
| 17 | 16 | #include <linux/pci.h> |
|---|
| 18 | 17 | #include <linux/platform_device.h> |
|---|
| 19 | 18 | #include <linux/resource.h> |
|---|
| 20 | | -#include <linux/signal.h> |
|---|
| 21 | 19 | #include <linux/types.h> |
|---|
| 22 | 20 | #include <linux/regmap.h> |
|---|
| 23 | 21 | |
|---|
| .. | .. |
|---|
| 41 | 39 | |
|---|
| 42 | 40 | dw_pcie_setup_rc(pp); |
|---|
| 43 | 41 | dw_pcie_wait_for_link(pci); |
|---|
| 44 | | - |
|---|
| 45 | | - if (IS_ENABLED(CONFIG_PCI_MSI)) |
|---|
| 46 | | - dw_pcie_msi_init(pp); |
|---|
| 42 | + dw_pcie_msi_init(pp); |
|---|
| 47 | 43 | |
|---|
| 48 | 44 | return 0; |
|---|
| 49 | 45 | } |
|---|
| .. | .. |
|---|
| 70 | 66 | static void dw_plat_pcie_ep_init(struct dw_pcie_ep *ep) |
|---|
| 71 | 67 | { |
|---|
| 72 | 68 | struct dw_pcie *pci = to_dw_pcie_from_ep(ep); |
|---|
| 73 | | - struct pci_epc *epc = ep->epc; |
|---|
| 74 | 69 | enum pci_barno bar; |
|---|
| 75 | 70 | |
|---|
| 76 | | - for (bar = BAR_0; bar <= BAR_5; bar++) |
|---|
| 71 | + for (bar = 0; bar < PCI_STD_NUM_BARS; bar++) |
|---|
| 77 | 72 | dw_pcie_ep_reset_bar(pci, bar); |
|---|
| 78 | | - |
|---|
| 79 | | - epc->features |= EPC_FEATURE_NO_LINKUP_NOTIFIER; |
|---|
| 80 | | - epc->features |= EPC_FEATURE_MSIX_AVAILABLE; |
|---|
| 81 | 73 | } |
|---|
| 82 | 74 | |
|---|
| 83 | 75 | static int dw_plat_pcie_ep_raise_irq(struct dw_pcie_ep *ep, u8 func_no, |
|---|
| .. | .. |
|---|
| 100 | 92 | return 0; |
|---|
| 101 | 93 | } |
|---|
| 102 | 94 | |
|---|
| 103 | | -static struct dw_pcie_ep_ops pcie_ep_ops = { |
|---|
| 95 | +static const struct pci_epc_features dw_plat_pcie_epc_features = { |
|---|
| 96 | + .linkup_notifier = false, |
|---|
| 97 | + .msi_capable = true, |
|---|
| 98 | + .msix_capable = true, |
|---|
| 99 | +}; |
|---|
| 100 | + |
|---|
| 101 | +static const struct pci_epc_features* |
|---|
| 102 | +dw_plat_pcie_get_features(struct dw_pcie_ep *ep) |
|---|
| 103 | +{ |
|---|
| 104 | + return &dw_plat_pcie_epc_features; |
|---|
| 105 | +} |
|---|
| 106 | + |
|---|
| 107 | +static const struct dw_pcie_ep_ops pcie_ep_ops = { |
|---|
| 104 | 108 | .ep_init = dw_plat_pcie_ep_init, |
|---|
| 105 | 109 | .raise_irq = dw_plat_pcie_ep_raise_irq, |
|---|
| 110 | + .get_features = dw_plat_pcie_get_features, |
|---|
| 106 | 111 | }; |
|---|
| 107 | 112 | |
|---|
| 108 | 113 | static int dw_plat_add_pcie_port(struct dw_plat_pcie *dw_plat_pcie, |
|---|
| .. | .. |
|---|
| 146 | 151 | ep = &pci->ep; |
|---|
| 147 | 152 | ep->ops = &pcie_ep_ops; |
|---|
| 148 | 153 | |
|---|
| 149 | | - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dbi2"); |
|---|
| 150 | | - pci->dbi_base2 = devm_ioremap_resource(dev, res); |
|---|
| 154 | + pci->dbi_base2 = devm_platform_ioremap_resource_byname(pdev, "dbi2"); |
|---|
| 151 | 155 | if (IS_ERR(pci->dbi_base2)) |
|---|
| 152 | 156 | return PTR_ERR(pci->dbi_base2); |
|---|
| 153 | 157 | |
|---|