hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/pci/controller/dwc/pcie-designware.h
....@@ -3,7 +3,7 @@
33 * Synopsys DesignWare PCIe host controller driver
44 *
55 * Copyright (C) 2013 Samsung Electronics Co., Ltd.
6
- * http://www.samsung.com
6
+ * https://www.samsung.com
77 *
88 * Author: Jingoo Han <jg1.han@samsung.com>
99 */
....@@ -30,24 +30,44 @@
3030 #define LINK_WAIT_IATU 9
3131
3232 /* Synopsys-specific PCIe configuration registers */
33
-#define PCIE_PORT_LINK_CONTROL 0x710
34
-#define PORT_LINK_MODE_MASK (0x3f << 16)
35
-#define PORT_LINK_MODE_1_LANES (0x1 << 16)
36
-#define PORT_LINK_MODE_2_LANES (0x3 << 16)
37
-#define PORT_LINK_MODE_4_LANES (0x7 << 16)
38
-#define PORT_LINK_MODE_8_LANES (0xf << 16)
39
-#define PORT_LINK_LPBK_ENABLE (0x1 << 2)
33
+#define PCIE_PORT_AFR 0x70C
34
+#define PORT_AFR_N_FTS_MASK GENMASK(15, 8)
35
+#define PORT_AFR_N_FTS(n) FIELD_PREP(PORT_AFR_N_FTS_MASK, n)
36
+#define PORT_AFR_CC_N_FTS_MASK GENMASK(23, 16)
37
+#define PORT_AFR_CC_N_FTS(n) FIELD_PREP(PORT_AFR_CC_N_FTS_MASK, n)
38
+#define PORT_AFR_ENTER_ASPM BIT(30)
39
+#define PORT_AFR_L0S_ENTRANCE_LAT_SHIFT 24
40
+#define PORT_AFR_L0S_ENTRANCE_LAT_MASK GENMASK(26, 24)
41
+#define PORT_AFR_L1_ENTRANCE_LAT_SHIFT 27
42
+#define PORT_AFR_L1_ENTRANCE_LAT_MASK GENMASK(29, 27)
4043
41
-#define PCIE_TIMER_CTRL_MAX_FUNC_NUM 0x718
42
-#define FAST_LINK_SCALING_FACTOR 0x9fffffff
44
+#define PCIE_PORT_LINK_CONTROL 0x710
45
+#define PORT_LINK_LPBK_ENABLE BIT(2)
46
+#define PORT_LINK_DLL_LINK_EN BIT(5)
47
+#define PORT_LINK_FAST_LINK_MODE BIT(7)
48
+#define PORT_LINK_MODE_MASK GENMASK(21, 16)
49
+#define PORT_LINK_MODE(n) FIELD_PREP(PORT_LINK_MODE_MASK, n)
50
+#define PORT_LINK_MODE_1_LANES PORT_LINK_MODE(0x1)
51
+#define PORT_LINK_MODE_2_LANES PORT_LINK_MODE(0x3)
52
+#define PORT_LINK_MODE_4_LANES PORT_LINK_MODE(0x7)
53
+#define PORT_LINK_MODE_8_LANES PORT_LINK_MODE(0xf)
54
+
55
+#define PCIE_PORT_DEBUG0 0x728
56
+#define PORT_LOGIC_LTSSM_STATE_MASK 0x1f
57
+#define PORT_LOGIC_LTSSM_STATE_L0 0x11
58
+#define PCIE_PORT_DEBUG1 0x72C
59
+#define PCIE_PORT_DEBUG1_LINK_UP BIT(4)
60
+#define PCIE_PORT_DEBUG1_LINK_IN_TRAINING BIT(29)
4361
4462 #define PCIE_LINK_WIDTH_SPEED_CONTROL 0x80C
45
-#define PORT_LOGIC_SPEED_CHANGE (0x1 << 17)
46
-#define PORT_LOGIC_LINK_WIDTH_MASK (0x1f << 8)
47
-#define PORT_LOGIC_LINK_WIDTH_1_LANES (0x1 << 8)
48
-#define PORT_LOGIC_LINK_WIDTH_2_LANES (0x2 << 8)
49
-#define PORT_LOGIC_LINK_WIDTH_4_LANES (0x4 << 8)
50
-#define PORT_LOGIC_LINK_WIDTH_8_LANES (0x8 << 8)
63
+#define PORT_LOGIC_N_FTS_MASK GENMASK(7, 0)
64
+#define PORT_LOGIC_SPEED_CHANGE BIT(17)
65
+#define PORT_LOGIC_LINK_WIDTH_MASK GENMASK(12, 8)
66
+#define PORT_LOGIC_LINK_WIDTH(n) FIELD_PREP(PORT_LOGIC_LINK_WIDTH_MASK, n)
67
+#define PORT_LOGIC_LINK_WIDTH_1_LANES PORT_LOGIC_LINK_WIDTH(0x1)
68
+#define PORT_LOGIC_LINK_WIDTH_2_LANES PORT_LOGIC_LINK_WIDTH(0x2)
69
+#define PORT_LOGIC_LINK_WIDTH_4_LANES PORT_LOGIC_LINK_WIDTH(0x4)
70
+#define PORT_LOGIC_LINK_WIDTH_8_LANES PORT_LOGIC_LINK_WIDTH(0x8)
5171
5272 #define PCIE_MSI_ADDR_LO 0x820
5373 #define PCIE_MSI_ADDR_HI 0x824
....@@ -55,28 +75,45 @@
5575 #define PCIE_MSI_INTR0_MASK 0x82C
5676 #define PCIE_MSI_INTR0_STATUS 0x830
5777
78
+#define PCIE_PORT_MULTI_LANE_CTRL 0x8C0
79
+#define PORT_MLTI_UPCFG_SUPPORT BIT(7)
80
+
5881 #define PCIE_ATU_VIEWPORT 0x900
5982 #define PCIE_ATU_REGION_INBOUND BIT(31)
6083 #define PCIE_ATU_REGION_OUTBOUND 0
6184 #define PCIE_ATU_CR1 0x904
62
-#define PCIE_ATU_TYPE_MEM (0x0 << 0)
63
-#define PCIE_ATU_TYPE_IO (0x2 << 0)
64
-#define PCIE_ATU_TYPE_CFG0 (0x4 << 0)
65
-#define PCIE_ATU_TYPE_CFG1 (0x5 << 0)
85
+#define PCIE_ATU_TYPE_MEM 0x0
86
+#define PCIE_ATU_TYPE_IO 0x2
87
+#define PCIE_ATU_TYPE_CFG0 0x4
88
+#define PCIE_ATU_TYPE_CFG1 0x5
89
+#define PCIE_ATU_FUNC_NUM(pf) ((pf) << 20)
6690 #define PCIE_ATU_CR2 0x908
67
-#define PCIE_ATU_ENABLE (0x1 << 31)
68
-#define PCIE_ATU_BAR_MODE_ENABLE (0x1 << 30)
91
+#define PCIE_ATU_ENABLE BIT(31)
92
+#define PCIE_ATU_BAR_MODE_ENABLE BIT(30)
93
+#define PCIE_ATU_FUNC_NUM_MATCH_EN BIT(19)
6994 #define PCIE_ATU_LOWER_BASE 0x90C
7095 #define PCIE_ATU_UPPER_BASE 0x910
7196 #define PCIE_ATU_LIMIT 0x914
7297 #define PCIE_ATU_LOWER_TARGET 0x918
73
-#define PCIE_ATU_BUS(x) (((x) & 0xff) << 24)
74
-#define PCIE_ATU_DEV(x) (((x) & 0x1f) << 19)
75
-#define PCIE_ATU_FUNC(x) (((x) & 0x7) << 16)
98
+#define PCIE_ATU_BUS(x) FIELD_PREP(GENMASK(31, 24), x)
99
+#define PCIE_ATU_DEV(x) FIELD_PREP(GENMASK(23, 19), x)
100
+#define PCIE_ATU_FUNC(x) FIELD_PREP(GENMASK(18, 16), x)
76101 #define PCIE_ATU_UPPER_TARGET 0x91C
77102
78103 #define PCIE_MISC_CONTROL_1_OFF 0x8BC
79
-#define PCIE_DBI_RO_WR_EN (0x1 << 0)
104
+#define PCIE_DBI_RO_WR_EN BIT(0)
105
+
106
+#define PCIE_MSIX_DOORBELL 0x948
107
+#define PCIE_MSIX_DOORBELL_PF_SHIFT 24
108
+
109
+#define PCIE_PL_CHK_REG_CONTROL_STATUS 0xB20
110
+#define PCIE_PL_CHK_REG_CHK_REG_START BIT(0)
111
+#define PCIE_PL_CHK_REG_CHK_REG_CONTINUOUS BIT(1)
112
+#define PCIE_PL_CHK_REG_CHK_REG_COMPARISON_ERROR BIT(16)
113
+#define PCIE_PL_CHK_REG_CHK_REG_LOGIC_ERROR BIT(17)
114
+#define PCIE_PL_CHK_REG_CHK_REG_COMPLETE BIT(18)
115
+
116
+#define PCIE_PL_CHK_REG_ERR_ADDR 0xB28
80117
81118 /*
82119 * iATU Unroll-specific register definitions
....@@ -86,16 +123,25 @@
86123 #define PCIE_ATU_UNR_REGION_CTRL2 0x04
87124 #define PCIE_ATU_UNR_LOWER_BASE 0x08
88125 #define PCIE_ATU_UNR_UPPER_BASE 0x0C
89
-#define PCIE_ATU_UNR_LIMIT 0x10
126
+#define PCIE_ATU_UNR_LOWER_LIMIT 0x10
90127 #define PCIE_ATU_UNR_LOWER_TARGET 0x14
91128 #define PCIE_ATU_UNR_UPPER_TARGET 0x18
129
+#define PCIE_ATU_UNR_UPPER_LIMIT 0x20
130
+
131
+/*
132
+ * The default address offset between dbi_base and atu_base. Root controller
133
+ * drivers are not required to initialize atu_base if the offset matches this
134
+ * default; the driver core automatically derives atu_base from dbi_base using
135
+ * this offset, if atu_base not set.
136
+ */
137
+#define DEFAULT_DBI_ATU_OFFSET (0x3 << 20)
92138
93139 /* Register address builder */
94
-#define PCIE_GET_ATU_OUTB_UNR_REG_OFFSET(region) \
95
- ((0x3 << 20) | ((region) << 9))
140
+#define PCIE_GET_ATU_OUTB_UNR_REG_OFFSET(region) \
141
+ ((region) << 9)
96142
97
-#define PCIE_GET_ATU_INB_UNR_REG_OFFSET(region) \
98
- ((0x3 << 20) | ((region) << 9) | (0x1 << 8))
143
+#define PCIE_GET_ATU_INB_UNR_REG_OFFSET(region) \
144
+ (((region) << 9) | BIT(8))
99145
100146 #define MAX_MSI_IRQS 256
101147 #define MAX_MSI_IRQS_PER_CTRL 32
....@@ -125,53 +171,30 @@
125171 };
126172
127173 struct dw_pcie_host_ops {
128
- int (*rd_own_conf)(struct pcie_port *pp, int where, int size, u32 *val);
129
- int (*wr_own_conf)(struct pcie_port *pp, int where, int size, u32 val);
130
- int (*rd_other_conf)(struct pcie_port *pp, struct pci_bus *bus,
131
- unsigned int devfn, int where, int size, u32 *val);
132
- int (*wr_other_conf)(struct pcie_port *pp, struct pci_bus *bus,
133
- unsigned int devfn, int where, int size, u32 val);
134174 int (*host_init)(struct pcie_port *pp);
135
- void (*msi_set_irq)(struct pcie_port *pp, int irq);
136
- void (*msi_clear_irq)(struct pcie_port *pp, int irq);
137
- phys_addr_t (*get_msi_addr)(struct pcie_port *pp);
138
- u32 (*get_msi_data)(struct pcie_port *pp, int pos);
139
- void (*scan_bus)(struct pcie_port *pp);
140175 void (*set_num_vectors)(struct pcie_port *pp);
141176 int (*msi_host_init)(struct pcie_port *pp);
142
- void (*msi_irq_ack)(int irq, struct pcie_port *pp);
143177 };
144178
145179 struct pcie_port {
146
- u8 root_bus_nr;
147180 u64 cfg0_base;
148181 void __iomem *va_cfg0_base;
149182 u32 cfg0_size;
150
- u64 cfg1_base;
151
- void __iomem *va_cfg1_base;
152
- u32 cfg1_size;
153183 resource_size_t io_base;
154184 phys_addr_t io_bus_addr;
155185 u32 io_size;
156
- u64 mem_base;
157
- phys_addr_t mem_bus_addr;
158
- u32 mem_size;
159
- struct resource *cfg;
160
- struct resource *io;
161
- struct resource *mem;
162
- struct resource *busn;
163186 int irq;
164187 const struct dw_pcie_host_ops *ops;
165188 int msi_irq;
166189 struct irq_domain *irq_domain;
167190 struct irq_domain *msi_domain;
191
+ u16 msi_msg;
168192 dma_addr_t msi_data;
169
- struct page *msi_page;
193
+ struct irq_chip *msi_irq_chip;
170194 u32 num_vectors;
171
- u32 irq_status[MAX_MSI_CTRLS];
195
+ u32 irq_mask[MAX_MSI_CTRLS];
196
+ struct pci_host_bridge *bridge;
172197 raw_spinlock_t lock;
173
- int msi_ext;
174
- struct pci_host_bridge *bridge;
175198 DECLARE_BITMAP(msi_irq_in_use, MAX_MSI_IRQS);
176199 };
177200
....@@ -185,15 +208,32 @@
185208 void (*ep_init)(struct dw_pcie_ep *ep);
186209 int (*raise_irq)(struct dw_pcie_ep *ep, u8 func_no,
187210 enum pci_epc_irq_type type, u16 interrupt_num);
211
+ const struct pci_epc_features* (*get_features)(struct dw_pcie_ep *ep);
212
+ /*
213
+ * Provide a method to implement the different func config space
214
+ * access for different platform, if different func have different
215
+ * offset, return the offset of func. if use write a register way
216
+ * return a 0, and implement code in callback function of platform
217
+ * driver.
218
+ */
219
+ unsigned int (*func_conf_select)(struct dw_pcie_ep *ep, u8 func_no);
220
+};
221
+
222
+struct dw_pcie_ep_func {
223
+ struct list_head list;
224
+ u8 func_no;
225
+ u8 msi_cap; /* MSI capability offset */
226
+ u8 msix_cap; /* MSI-X capability offset */
188227 };
189228
190229 struct dw_pcie_ep {
191230 struct pci_epc *epc;
192
- struct dw_pcie_ep_ops *ops;
231
+ struct list_head func_list;
232
+ const struct dw_pcie_ep_ops *ops;
193233 phys_addr_t phys_base;
194234 size_t addr_size;
195235 size_t page_size;
196
- u8 bar_to_atu[6];
236
+ u8 bar_to_atu[PCI_STD_NUM_BARS];
197237 phys_addr_t *outbound_addr;
198238 unsigned long *ib_window_map;
199239 unsigned long *ob_window_map;
....@@ -201,8 +241,7 @@
201241 u32 num_ob_windows;
202242 void __iomem *msi_mem;
203243 phys_addr_t msi_mem_phys;
204
- u8 msi_cap; /* MSI capability offset */
205
- u8 msix_cap; /* MSI-X capability offset */
244
+ struct pci_epf_bar *epf_bar[PCI_STD_NUM_BARS];
206245 };
207246
208247 struct dw_pcie_ops {
....@@ -211,23 +250,30 @@
211250 size_t size);
212251 void (*write_dbi)(struct dw_pcie *pcie, void __iomem *base, u32 reg,
213252 size_t size, u32 val);
253
+ void (*write_dbi2)(struct dw_pcie *pcie, void __iomem *base, u32 reg,
254
+ size_t size, u32 val);
214255 int (*link_up)(struct dw_pcie *pcie);
215256 int (*start_link)(struct dw_pcie *pcie);
216257 void (*stop_link)(struct dw_pcie *pcie);
217258 };
218259
260
+#define DWC_IATU_UNROLL_EN BIT(0)
261
+#define DWC_IATU_IOCFG_SHARED BIT(1)
219262 struct dw_pcie {
220263 struct device *dev;
221264 void __iomem *dbi_base;
222265 void __iomem *dbi_base2;
266
+ /* Used when iatu_unroll_enabled is true */
267
+ void __iomem *atu_base;
223268 u32 num_viewport;
269
+ u8 iatu_unroll_enabled;
224270 struct pcie_port pp;
225271 struct dw_pcie_ep ep;
226272 const struct dw_pcie_ops *ops;
273
+ unsigned int version;
274
+ int num_lanes;
227275 int link_gen;
228276 u8 n_fts[2];
229
- bool iatu_unroll_enabled: 1;
230
- bool io_cfg_atu_shared: 1;
231277 };
232278
233279 #define to_dw_pcie_from_pp(port) container_of((port), struct dw_pcie, pp)
....@@ -236,62 +282,63 @@
236282 container_of((endpoint), struct dw_pcie, ep)
237283
238284 u8 dw_pcie_find_capability(struct dw_pcie *pci, u8 cap);
285
+u16 dw_pcie_find_ext_capability(struct dw_pcie *pci, u8 cap);
286
+
239287 int dw_pcie_read(void __iomem *addr, int size, u32 *val);
240288 int dw_pcie_write(void __iomem *addr, int size, u32 val);
241289
242
-u32 __dw_pcie_read_dbi(struct dw_pcie *pci, void __iomem *base, u32 reg,
243
- size_t size);
244
-void __dw_pcie_write_dbi(struct dw_pcie *pci, void __iomem *base, u32 reg,
245
- size_t size, u32 val);
290
+u32 dw_pcie_read_dbi(struct dw_pcie *pci, u32 reg, size_t size);
291
+void dw_pcie_write_dbi(struct dw_pcie *pci, u32 reg, size_t size, u32 val);
292
+void dw_pcie_write_dbi2(struct dw_pcie *pci, u32 reg, size_t size, u32 val);
246293 int dw_pcie_link_up(struct dw_pcie *pci);
294
+void dw_pcie_upconfig_setup(struct dw_pcie *pci);
247295 int dw_pcie_wait_for_link(struct dw_pcie *pci);
248296 void dw_pcie_prog_outbound_atu(struct dw_pcie *pci, int index,
249297 int type, u64 cpu_addr, u64 pci_addr,
250298 u32 size);
251
-int dw_pcie_prog_inbound_atu(struct dw_pcie *pci, int index, int bar,
252
- u64 cpu_addr, enum dw_pcie_as_type as_type);
299
+void dw_pcie_prog_ep_outbound_atu(struct dw_pcie *pci, u8 func_no, int index,
300
+ int type, u64 cpu_addr, u64 pci_addr,
301
+ u32 size);
302
+int dw_pcie_prog_inbound_atu(struct dw_pcie *pci, u8 func_no, int index,
303
+ int bar, u64 cpu_addr,
304
+ enum dw_pcie_as_type as_type);
253305 void dw_pcie_disable_atu(struct dw_pcie *pci, int index,
254306 enum dw_pcie_region_type type);
255307 void dw_pcie_setup(struct dw_pcie *pci);
256308
257309 static inline void dw_pcie_writel_dbi(struct dw_pcie *pci, u32 reg, u32 val)
258310 {
259
- __dw_pcie_write_dbi(pci, pci->dbi_base, reg, 0x4, val);
311
+ dw_pcie_write_dbi(pci, reg, 0x4, val);
260312 }
261313
262314 static inline u32 dw_pcie_readl_dbi(struct dw_pcie *pci, u32 reg)
263315 {
264
- return __dw_pcie_read_dbi(pci, pci->dbi_base, reg, 0x4);
316
+ return dw_pcie_read_dbi(pci, reg, 0x4);
265317 }
266318
267319 static inline void dw_pcie_writew_dbi(struct dw_pcie *pci, u32 reg, u16 val)
268320 {
269
- __dw_pcie_write_dbi(pci, pci->dbi_base, reg, 0x2, val);
321
+ dw_pcie_write_dbi(pci, reg, 0x2, val);
270322 }
271323
272324 static inline u16 dw_pcie_readw_dbi(struct dw_pcie *pci, u32 reg)
273325 {
274
- return __dw_pcie_read_dbi(pci, pci->dbi_base, reg, 0x2);
326
+ return dw_pcie_read_dbi(pci, reg, 0x2);
275327 }
276328
277329 static inline void dw_pcie_writeb_dbi(struct dw_pcie *pci, u32 reg, u8 val)
278330 {
279
- __dw_pcie_write_dbi(pci, pci->dbi_base, reg, 0x1, val);
331
+ dw_pcie_write_dbi(pci, reg, 0x1, val);
280332 }
281333
282334 static inline u8 dw_pcie_readb_dbi(struct dw_pcie *pci, u32 reg)
283335 {
284
- return __dw_pcie_read_dbi(pci, pci->dbi_base, reg, 0x1);
336
+ return dw_pcie_read_dbi(pci, reg, 0x1);
285337 }
286338
287339 static inline void dw_pcie_writel_dbi2(struct dw_pcie *pci, u32 reg, u32 val)
288340 {
289
- __dw_pcie_write_dbi(pci, pci->dbi_base2, reg, 0x4, val);
290
-}
291
-
292
-static inline u32 dw_pcie_readl_dbi2(struct dw_pcie *pci, u32 reg)
293
-{
294
- return __dw_pcie_read_dbi(pci, pci->dbi_base2, reg, 0x4);
341
+ dw_pcie_write_dbi2(pci, reg, 0x4, val);
295342 }
296343
297344 static inline void dw_pcie_dbi_ro_wr_en(struct dw_pcie *pci)
....@@ -322,7 +369,10 @@
322369 void dw_pcie_free_msi(struct pcie_port *pp);
323370 void dw_pcie_setup_rc(struct pcie_port *pp);
324371 int dw_pcie_host_init(struct pcie_port *pp);
372
+void dw_pcie_host_deinit(struct pcie_port *pp);
325373 int dw_pcie_allocate_domains(struct pcie_port *pp);
374
+void __iomem *dw_pcie_own_conf_map_bus(struct pci_bus *bus, unsigned int devfn,
375
+ int where);
326376 #else
327377 static inline irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
328378 {
....@@ -346,22 +396,38 @@
346396 return 0;
347397 }
348398
399
+static inline void dw_pcie_host_deinit(struct pcie_port *pp)
400
+{
401
+}
402
+
349403 static inline int dw_pcie_allocate_domains(struct pcie_port *pp)
350404 {
351405 return 0;
406
+}
407
+static inline void __iomem *dw_pcie_own_conf_map_bus(struct pci_bus *bus,
408
+ unsigned int devfn,
409
+ int where)
410
+{
411
+ return NULL;
352412 }
353413 #endif
354414
355415 #ifdef CONFIG_PCIE_DW_EP
356416 void dw_pcie_ep_linkup(struct dw_pcie_ep *ep);
357417 int dw_pcie_ep_init(struct dw_pcie_ep *ep);
418
+int dw_pcie_ep_init_complete(struct dw_pcie_ep *ep);
419
+void dw_pcie_ep_init_notify(struct dw_pcie_ep *ep);
358420 void dw_pcie_ep_exit(struct dw_pcie_ep *ep);
359421 int dw_pcie_ep_raise_legacy_irq(struct dw_pcie_ep *ep, u8 func_no);
360422 int dw_pcie_ep_raise_msi_irq(struct dw_pcie_ep *ep, u8 func_no,
361423 u8 interrupt_num);
362424 int dw_pcie_ep_raise_msix_irq(struct dw_pcie_ep *ep, u8 func_no,
363425 u16 interrupt_num);
426
+int dw_pcie_ep_raise_msix_irq_doorbell(struct dw_pcie_ep *ep, u8 func_no,
427
+ u16 interrupt_num);
364428 void dw_pcie_ep_reset_bar(struct dw_pcie *pci, enum pci_barno bar);
429
+struct dw_pcie_ep_func *
430
+dw_pcie_ep_get_func_from_ep(struct dw_pcie_ep *ep, u8 func_no);
365431 #else
366432 static inline void dw_pcie_ep_linkup(struct dw_pcie_ep *ep)
367433 {
....@@ -370,6 +436,15 @@
370436 static inline int dw_pcie_ep_init(struct dw_pcie_ep *ep)
371437 {
372438 return 0;
439
+}
440
+
441
+static inline int dw_pcie_ep_init_complete(struct dw_pcie_ep *ep)
442
+{
443
+ return 0;
444
+}
445
+
446
+static inline void dw_pcie_ep_init_notify(struct dw_pcie_ep *ep)
447
+{
373448 }
374449
375450 static inline void dw_pcie_ep_exit(struct dw_pcie_ep *ep)
....@@ -393,8 +468,21 @@
393468 return 0;
394469 }
395470
471
+static inline int dw_pcie_ep_raise_msix_irq_doorbell(struct dw_pcie_ep *ep,
472
+ u8 func_no,
473
+ u16 interrupt_num)
474
+{
475
+ return 0;
476
+}
477
+
396478 static inline void dw_pcie_ep_reset_bar(struct dw_pcie *pci, enum pci_barno bar)
397479 {
398480 }
481
+
482
+static inline struct dw_pcie_ep_func *
483
+dw_pcie_ep_get_func_from_ep(struct dw_pcie_ep *ep, u8 func_no)
484
+{
485
+ return NULL;
486
+}
399487 #endif
400488 #endif /* _PCIE_DESIGNWARE_H */