.. | .. |
---|
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 | |
---|