• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Synopsys DesignWare PCIe host controller driver
4  *
5  * Copyright (C) 2013 Samsung Electronics Co., Ltd.
6  *		https://www.samsung.com
7  *
8  * Author: Jingoo Han <jg1.han@samsung.com>
9  */
10 
11 #ifndef _PCIE_DESIGNWARE_H
12 #define _PCIE_DESIGNWARE_H
13 
14 #include <linux/bitfield.h>
15 #include <linux/dma-mapping.h>
16 #include <linux/irq.h>
17 #include <linux/msi.h>
18 #include <linux/pci.h>
19 
20 #include <linux/pci-epc.h>
21 #include <linux/pci-epf.h>
22 
23 /* Parameters for the waiting for link up routine */
24 #define LINK_WAIT_MAX_RETRIES		10
25 #define LINK_WAIT_USLEEP_MIN		90000
26 #define LINK_WAIT_USLEEP_MAX		100000
27 
28 /* Parameters for the waiting for iATU enabled routine */
29 #define LINK_WAIT_MAX_IATU_RETRIES	5
30 #define LINK_WAIT_IATU			9
31 
32 /* Synopsys-specific PCIe configuration registers */
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)
43 
44 #define PCIE_PORT_LINK_CONTROL		0x710
45 #define PORT_LINK_DLL_LINK_EN		BIT(5)
46 #define PORT_LINK_FAST_LINK_MODE	BIT(7)
47 #define PORT_LINK_MODE_MASK		GENMASK(21, 16)
48 #define PORT_LINK_MODE(n)		FIELD_PREP(PORT_LINK_MODE_MASK, n)
49 #define PORT_LINK_MODE_1_LANES		PORT_LINK_MODE(0x1)
50 #define PORT_LINK_MODE_2_LANES		PORT_LINK_MODE(0x3)
51 #define PORT_LINK_MODE_4_LANES		PORT_LINK_MODE(0x7)
52 #define PORT_LINK_MODE_8_LANES		PORT_LINK_MODE(0xf)
53 
54 #define PCIE_PORT_DEBUG0		0x728
55 #define PORT_LOGIC_LTSSM_STATE_MASK	0x1f
56 #define PORT_LOGIC_LTSSM_STATE_L0	0x11
57 #define PCIE_PORT_DEBUG1		0x72C
58 #define PCIE_PORT_DEBUG1_LINK_UP		BIT(4)
59 #define PCIE_PORT_DEBUG1_LINK_IN_TRAINING	BIT(29)
60 
61 #define PCIE_LINK_WIDTH_SPEED_CONTROL	0x80C
62 #define PORT_LOGIC_N_FTS_MASK		GENMASK(7, 0)
63 #define PORT_LOGIC_SPEED_CHANGE		BIT(17)
64 #define PORT_LOGIC_LINK_WIDTH_MASK	GENMASK(12, 8)
65 #define PORT_LOGIC_LINK_WIDTH(n)	FIELD_PREP(PORT_LOGIC_LINK_WIDTH_MASK, n)
66 #define PORT_LOGIC_LINK_WIDTH_1_LANES	PORT_LOGIC_LINK_WIDTH(0x1)
67 #define PORT_LOGIC_LINK_WIDTH_2_LANES	PORT_LOGIC_LINK_WIDTH(0x2)
68 #define PORT_LOGIC_LINK_WIDTH_4_LANES	PORT_LOGIC_LINK_WIDTH(0x4)
69 #define PORT_LOGIC_LINK_WIDTH_8_LANES	PORT_LOGIC_LINK_WIDTH(0x8)
70 
71 #define PCIE_MSI_ADDR_LO		0x820
72 #define PCIE_MSI_ADDR_HI		0x824
73 #define PCIE_MSI_INTR0_ENABLE		0x828
74 #define PCIE_MSI_INTR0_MASK		0x82C
75 #define PCIE_MSI_INTR0_STATUS		0x830
76 
77 #define PCIE_PORT_MULTI_LANE_CTRL	0x8C0
78 #define PORT_MLTI_UPCFG_SUPPORT		BIT(7)
79 
80 #define PCIE_ATU_VIEWPORT		0x900
81 #define PCIE_ATU_REGION_INBOUND		BIT(31)
82 #define PCIE_ATU_REGION_OUTBOUND	0
83 #define PCIE_ATU_CR1			0x904
84 #define PCIE_ATU_TYPE_MEM		0x0
85 #define PCIE_ATU_TYPE_IO		0x2
86 #define PCIE_ATU_TYPE_CFG0		0x4
87 #define PCIE_ATU_TYPE_CFG1		0x5
88 #define PCIE_ATU_FUNC_NUM(pf)           ((pf) << 20)
89 #define PCIE_ATU_CR2			0x908
90 #define PCIE_ATU_ENABLE			BIT(31)
91 #define PCIE_ATU_BAR_MODE_ENABLE	BIT(30)
92 #define PCIE_ATU_FUNC_NUM_MATCH_EN      BIT(19)
93 #define PCIE_ATU_LOWER_BASE		0x90C
94 #define PCIE_ATU_UPPER_BASE		0x910
95 #define PCIE_ATU_LIMIT			0x914
96 #define PCIE_ATU_LOWER_TARGET		0x918
97 #define PCIE_ATU_BUS(x)			FIELD_PREP(GENMASK(31, 24), x)
98 #define PCIE_ATU_DEV(x)			FIELD_PREP(GENMASK(23, 19), x)
99 #define PCIE_ATU_FUNC(x)		FIELD_PREP(GENMASK(18, 16), x)
100 #define PCIE_ATU_UPPER_TARGET		0x91C
101 
102 #define PCIE_MISC_CONTROL_1_OFF		0x8BC
103 #define PCIE_DBI_RO_WR_EN		BIT(0)
104 
105 #define PCIE_MSIX_DOORBELL		0x948
106 #define PCIE_MSIX_DOORBELL_PF_SHIFT	24
107 
108 #define PCIE_PL_CHK_REG_CONTROL_STATUS			0xB20
109 #define PCIE_PL_CHK_REG_CHK_REG_START			BIT(0)
110 #define PCIE_PL_CHK_REG_CHK_REG_CONTINUOUS		BIT(1)
111 #define PCIE_PL_CHK_REG_CHK_REG_COMPARISON_ERROR	BIT(16)
112 #define PCIE_PL_CHK_REG_CHK_REG_LOGIC_ERROR		BIT(17)
113 #define PCIE_PL_CHK_REG_CHK_REG_COMPLETE		BIT(18)
114 
115 #define PCIE_PL_CHK_REG_ERR_ADDR			0xB28
116 
117 /*
118  * iATU Unroll-specific register definitions
119  * From 4.80 core version the address translation will be made by unroll
120  */
121 #define PCIE_ATU_UNR_REGION_CTRL1	0x00
122 #define PCIE_ATU_UNR_REGION_CTRL2	0x04
123 #define PCIE_ATU_UNR_LOWER_BASE		0x08
124 #define PCIE_ATU_UNR_UPPER_BASE		0x0C
125 #define PCIE_ATU_UNR_LOWER_LIMIT	0x10
126 #define PCIE_ATU_UNR_LOWER_TARGET	0x14
127 #define PCIE_ATU_UNR_UPPER_TARGET	0x18
128 #define PCIE_ATU_UNR_UPPER_LIMIT	0x20
129 
130 /*
131  * The default address offset between dbi_base and atu_base. Root controller
132  * drivers are not required to initialize atu_base if the offset matches this
133  * default; the driver core automatically derives atu_base from dbi_base using
134  * this offset, if atu_base not set.
135  */
136 #define DEFAULT_DBI_ATU_OFFSET (0x3 << 20)
137 
138 /* Register address builder */
139 #define PCIE_GET_ATU_OUTB_UNR_REG_OFFSET(region) \
140 		((region) << 9)
141 
142 #define PCIE_GET_ATU_INB_UNR_REG_OFFSET(region) \
143 		(((region) << 9) | BIT(8))
144 
145 #define MAX_MSI_IRQS			256
146 #define MAX_MSI_IRQS_PER_CTRL		32
147 #define MAX_MSI_CTRLS			(MAX_MSI_IRQS / MAX_MSI_IRQS_PER_CTRL)
148 #define MSI_REG_CTRL_BLOCK_SIZE		12
149 #define MSI_DEF_NUM_VECTORS		32
150 
151 /* Maximum number of inbound/outbound iATUs */
152 #define MAX_IATU_IN			256
153 #define MAX_IATU_OUT			256
154 
155 struct pcie_port;
156 struct dw_pcie;
157 struct dw_pcie_ep;
158 
159 enum dw_pcie_region_type {
160 	DW_PCIE_REGION_UNKNOWN,
161 	DW_PCIE_REGION_INBOUND,
162 	DW_PCIE_REGION_OUTBOUND,
163 };
164 
165 enum dw_pcie_device_mode {
166 	DW_PCIE_UNKNOWN_TYPE,
167 	DW_PCIE_EP_TYPE,
168 	DW_PCIE_LEG_EP_TYPE,
169 	DW_PCIE_RC_TYPE,
170 };
171 
172 struct dw_pcie_host_ops {
173 	int (*host_init)(struct pcie_port *pp);
174 	void (*set_num_vectors)(struct pcie_port *pp);
175 	int (*msi_host_init)(struct pcie_port *pp);
176 };
177 
178 struct pcie_port {
179 	u64			cfg0_base;
180 	void __iomem		*va_cfg0_base;
181 	u32			cfg0_size;
182 	resource_size_t		io_base;
183 	phys_addr_t		io_bus_addr;
184 	u32			io_size;
185 	int			irq;
186 	const struct dw_pcie_host_ops *ops;
187 	int			msi_irq;
188 	struct irq_domain	*irq_domain;
189 	struct irq_domain	*msi_domain;
190 	u16			msi_msg;
191 	dma_addr_t		msi_data;
192 	struct irq_chip		*msi_irq_chip;
193 	u32			num_vectors;
194 	u32			irq_mask[MAX_MSI_CTRLS];
195 	struct pci_host_bridge  *bridge;
196 	raw_spinlock_t		lock;
197 	DECLARE_BITMAP(msi_irq_in_use, MAX_MSI_IRQS);
198 };
199 
200 enum dw_pcie_as_type {
201 	DW_PCIE_AS_UNKNOWN,
202 	DW_PCIE_AS_MEM,
203 	DW_PCIE_AS_IO,
204 };
205 
206 struct dw_pcie_ep_ops {
207 	void	(*ep_init)(struct dw_pcie_ep *ep);
208 	int	(*raise_irq)(struct dw_pcie_ep *ep, u8 func_no,
209 			     enum pci_epc_irq_type type, u16 interrupt_num);
210 	const struct pci_epc_features* (*get_features)(struct dw_pcie_ep *ep);
211 	/*
212 	 * Provide a method to implement the different func config space
213 	 * access for different platform, if different func have different
214 	 * offset, return the offset of func. if use write a register way
215 	 * return a 0, and implement code in callback function of platform
216 	 * driver.
217 	 */
218 	unsigned int (*func_conf_select)(struct dw_pcie_ep *ep, u8 func_no);
219 };
220 
221 struct dw_pcie_ep_func {
222 	struct list_head	list;
223 	u8			func_no;
224 	u8			msi_cap;	/* MSI capability offset */
225 	u8			msix_cap;	/* MSI-X capability offset */
226 };
227 
228 struct dw_pcie_ep {
229 	struct pci_epc		*epc;
230 	struct list_head	func_list;
231 	const struct dw_pcie_ep_ops *ops;
232 	phys_addr_t		phys_base;
233 	size_t			addr_size;
234 	size_t			page_size;
235 	u8			bar_to_atu[PCI_STD_NUM_BARS];
236 	phys_addr_t		*outbound_addr;
237 	unsigned long		*ib_window_map;
238 	unsigned long		*ob_window_map;
239 	u32			num_ib_windows;
240 	u32			num_ob_windows;
241 	void __iomem		*msi_mem;
242 	phys_addr_t		msi_mem_phys;
243 	struct pci_epf_bar	*epf_bar[PCI_STD_NUM_BARS];
244 };
245 
246 struct dw_pcie_ops {
247 	u64	(*cpu_addr_fixup)(struct dw_pcie *pcie, u64 cpu_addr);
248 	u32	(*read_dbi)(struct dw_pcie *pcie, void __iomem *base, u32 reg,
249 			    size_t size);
250 	void	(*write_dbi)(struct dw_pcie *pcie, void __iomem *base, u32 reg,
251 			     size_t size, u32 val);
252 	void    (*write_dbi2)(struct dw_pcie *pcie, void __iomem *base, u32 reg,
253 			      size_t size, u32 val);
254 	int	(*link_up)(struct dw_pcie *pcie);
255 	int	(*start_link)(struct dw_pcie *pcie);
256 	void	(*stop_link)(struct dw_pcie *pcie);
257 };
258 
259 #define DWC_IATU_UNROLL_EN	BIT(0)
260 #define DWC_IATU_IOCFG_SHARED	BIT(1)
261 struct dw_pcie {
262 	struct device		*dev;
263 	void __iomem		*dbi_base;
264 	void __iomem		*dbi_base2;
265 	/* Used when iatu_unroll_enabled is true */
266 	void __iomem		*atu_base;
267 	u32			num_viewport;
268 	u8			iatu_unroll_enabled;
269 	struct pcie_port	pp;
270 	struct dw_pcie_ep	ep;
271 	const struct dw_pcie_ops *ops;
272 	unsigned int		version;
273 	int			num_lanes;
274 	int			link_gen;
275 	u8			n_fts[2];
276 };
277 
278 #define to_dw_pcie_from_pp(port) container_of((port), struct dw_pcie, pp)
279 
280 #define to_dw_pcie_from_ep(endpoint)   \
281 		container_of((endpoint), struct dw_pcie, ep)
282 
283 u8 dw_pcie_find_capability(struct dw_pcie *pci, u8 cap);
284 u16 dw_pcie_find_ext_capability(struct dw_pcie *pci, u8 cap);
285 
286 int dw_pcie_read(void __iomem *addr, int size, u32 *val);
287 int dw_pcie_write(void __iomem *addr, int size, u32 val);
288 
289 u32 dw_pcie_read_dbi(struct dw_pcie *pci, u32 reg, size_t size);
290 void dw_pcie_write_dbi(struct dw_pcie *pci, u32 reg, size_t size, u32 val);
291 void dw_pcie_write_dbi2(struct dw_pcie *pci, u32 reg, size_t size, u32 val);
292 int dw_pcie_link_up(struct dw_pcie *pci);
293 void dw_pcie_upconfig_setup(struct dw_pcie *pci);
294 int dw_pcie_wait_for_link(struct dw_pcie *pci);
295 void dw_pcie_prog_outbound_atu(struct dw_pcie *pci, int index,
296 			       int type, u64 cpu_addr, u64 pci_addr,
297 			       u32 size);
298 void dw_pcie_prog_ep_outbound_atu(struct dw_pcie *pci, u8 func_no, int index,
299 				  int type, u64 cpu_addr, u64 pci_addr,
300 				  u32 size);
301 int dw_pcie_prog_inbound_atu(struct dw_pcie *pci, u8 func_no, int index,
302 			     int bar, u64 cpu_addr,
303 			     enum dw_pcie_as_type as_type);
304 void dw_pcie_disable_atu(struct dw_pcie *pci, int index,
305 			 enum dw_pcie_region_type type);
306 void dw_pcie_setup(struct dw_pcie *pci);
307 
dw_pcie_writel_dbi(struct dw_pcie * pci,u32 reg,u32 val)308 static inline void dw_pcie_writel_dbi(struct dw_pcie *pci, u32 reg, u32 val)
309 {
310 	dw_pcie_write_dbi(pci, reg, 0x4, val);
311 }
312 
dw_pcie_readl_dbi(struct dw_pcie * pci,u32 reg)313 static inline u32 dw_pcie_readl_dbi(struct dw_pcie *pci, u32 reg)
314 {
315 	return dw_pcie_read_dbi(pci, reg, 0x4);
316 }
317 
dw_pcie_writew_dbi(struct dw_pcie * pci,u32 reg,u16 val)318 static inline void dw_pcie_writew_dbi(struct dw_pcie *pci, u32 reg, u16 val)
319 {
320 	dw_pcie_write_dbi(pci, reg, 0x2, val);
321 }
322 
dw_pcie_readw_dbi(struct dw_pcie * pci,u32 reg)323 static inline u16 dw_pcie_readw_dbi(struct dw_pcie *pci, u32 reg)
324 {
325 	return dw_pcie_read_dbi(pci, reg, 0x2);
326 }
327 
dw_pcie_writeb_dbi(struct dw_pcie * pci,u32 reg,u8 val)328 static inline void dw_pcie_writeb_dbi(struct dw_pcie *pci, u32 reg, u8 val)
329 {
330 	dw_pcie_write_dbi(pci, reg, 0x1, val);
331 }
332 
dw_pcie_readb_dbi(struct dw_pcie * pci,u32 reg)333 static inline u8 dw_pcie_readb_dbi(struct dw_pcie *pci, u32 reg)
334 {
335 	return dw_pcie_read_dbi(pci, reg, 0x1);
336 }
337 
dw_pcie_writel_dbi2(struct dw_pcie * pci,u32 reg,u32 val)338 static inline void dw_pcie_writel_dbi2(struct dw_pcie *pci, u32 reg, u32 val)
339 {
340 	dw_pcie_write_dbi2(pci, reg, 0x4, val);
341 }
342 
dw_pcie_dbi_ro_wr_en(struct dw_pcie * pci)343 static inline void dw_pcie_dbi_ro_wr_en(struct dw_pcie *pci)
344 {
345 	u32 reg;
346 	u32 val;
347 
348 	reg = PCIE_MISC_CONTROL_1_OFF;
349 	val = dw_pcie_readl_dbi(pci, reg);
350 	val |= PCIE_DBI_RO_WR_EN;
351 	dw_pcie_writel_dbi(pci, reg, val);
352 }
353 
dw_pcie_dbi_ro_wr_dis(struct dw_pcie * pci)354 static inline void dw_pcie_dbi_ro_wr_dis(struct dw_pcie *pci)
355 {
356 	u32 reg;
357 	u32 val;
358 
359 	reg = PCIE_MISC_CONTROL_1_OFF;
360 	val = dw_pcie_readl_dbi(pci, reg);
361 	val &= ~PCIE_DBI_RO_WR_EN;
362 	dw_pcie_writel_dbi(pci, reg, val);
363 }
364 
365 #ifdef CONFIG_PCIE_DW_HOST
366 irqreturn_t dw_handle_msi_irq(struct pcie_port *pp);
367 void dw_pcie_msi_init(struct pcie_port *pp);
368 void dw_pcie_free_msi(struct pcie_port *pp);
369 void dw_pcie_setup_rc(struct pcie_port *pp);
370 int dw_pcie_host_init(struct pcie_port *pp);
371 void dw_pcie_host_deinit(struct pcie_port *pp);
372 int dw_pcie_allocate_domains(struct pcie_port *pp);
373 void __iomem *dw_pcie_own_conf_map_bus(struct pci_bus *bus, unsigned int devfn,
374 				       int where);
375 #else
dw_handle_msi_irq(struct pcie_port * pp)376 static inline irqreturn_t dw_handle_msi_irq(struct pcie_port *pp)
377 {
378 	return IRQ_NONE;
379 }
380 
dw_pcie_msi_init(struct pcie_port * pp)381 static inline void dw_pcie_msi_init(struct pcie_port *pp)
382 {
383 }
384 
dw_pcie_free_msi(struct pcie_port * pp)385 static inline void dw_pcie_free_msi(struct pcie_port *pp)
386 {
387 }
388 
dw_pcie_setup_rc(struct pcie_port * pp)389 static inline void dw_pcie_setup_rc(struct pcie_port *pp)
390 {
391 }
392 
dw_pcie_host_init(struct pcie_port * pp)393 static inline int dw_pcie_host_init(struct pcie_port *pp)
394 {
395 	return 0;
396 }
397 
dw_pcie_host_deinit(struct pcie_port * pp)398 static inline void dw_pcie_host_deinit(struct pcie_port *pp)
399 {
400 }
401 
dw_pcie_allocate_domains(struct pcie_port * pp)402 static inline int dw_pcie_allocate_domains(struct pcie_port *pp)
403 {
404 	return 0;
405 }
dw_pcie_own_conf_map_bus(struct pci_bus * bus,unsigned int devfn,int where)406 static inline void __iomem *dw_pcie_own_conf_map_bus(struct pci_bus *bus,
407 						     unsigned int devfn,
408 						     int where)
409 {
410 	return NULL;
411 }
412 #endif
413 
414 #ifdef CONFIG_PCIE_DW_EP
415 void dw_pcie_ep_linkup(struct dw_pcie_ep *ep);
416 int dw_pcie_ep_init(struct dw_pcie_ep *ep);
417 int dw_pcie_ep_init_complete(struct dw_pcie_ep *ep);
418 void dw_pcie_ep_init_notify(struct dw_pcie_ep *ep);
419 void dw_pcie_ep_exit(struct dw_pcie_ep *ep);
420 int dw_pcie_ep_raise_legacy_irq(struct dw_pcie_ep *ep, u8 func_no);
421 int dw_pcie_ep_raise_msi_irq(struct dw_pcie_ep *ep, u8 func_no,
422 			     u8 interrupt_num);
423 int dw_pcie_ep_raise_msix_irq(struct dw_pcie_ep *ep, u8 func_no,
424 			     u16 interrupt_num);
425 int dw_pcie_ep_raise_msix_irq_doorbell(struct dw_pcie_ep *ep, u8 func_no,
426 				       u16 interrupt_num);
427 void dw_pcie_ep_reset_bar(struct dw_pcie *pci, enum pci_barno bar);
428 struct dw_pcie_ep_func *
429 dw_pcie_ep_get_func_from_ep(struct dw_pcie_ep *ep, u8 func_no);
430 #else
dw_pcie_ep_linkup(struct dw_pcie_ep * ep)431 static inline void dw_pcie_ep_linkup(struct dw_pcie_ep *ep)
432 {
433 }
434 
dw_pcie_ep_init(struct dw_pcie_ep * ep)435 static inline int dw_pcie_ep_init(struct dw_pcie_ep *ep)
436 {
437 	return 0;
438 }
439 
dw_pcie_ep_init_complete(struct dw_pcie_ep * ep)440 static inline int dw_pcie_ep_init_complete(struct dw_pcie_ep *ep)
441 {
442 	return 0;
443 }
444 
dw_pcie_ep_init_notify(struct dw_pcie_ep * ep)445 static inline void dw_pcie_ep_init_notify(struct dw_pcie_ep *ep)
446 {
447 }
448 
dw_pcie_ep_exit(struct dw_pcie_ep * ep)449 static inline void dw_pcie_ep_exit(struct dw_pcie_ep *ep)
450 {
451 }
452 
dw_pcie_ep_raise_legacy_irq(struct dw_pcie_ep * ep,u8 func_no)453 static inline int dw_pcie_ep_raise_legacy_irq(struct dw_pcie_ep *ep, u8 func_no)
454 {
455 	return 0;
456 }
457 
dw_pcie_ep_raise_msi_irq(struct dw_pcie_ep * ep,u8 func_no,u8 interrupt_num)458 static inline int dw_pcie_ep_raise_msi_irq(struct dw_pcie_ep *ep, u8 func_no,
459 					   u8 interrupt_num)
460 {
461 	return 0;
462 }
463 
dw_pcie_ep_raise_msix_irq(struct dw_pcie_ep * ep,u8 func_no,u16 interrupt_num)464 static inline int dw_pcie_ep_raise_msix_irq(struct dw_pcie_ep *ep, u8 func_no,
465 					   u16 interrupt_num)
466 {
467 	return 0;
468 }
469 
dw_pcie_ep_raise_msix_irq_doorbell(struct dw_pcie_ep * ep,u8 func_no,u16 interrupt_num)470 static inline int dw_pcie_ep_raise_msix_irq_doorbell(struct dw_pcie_ep *ep,
471 						     u8 func_no,
472 						     u16 interrupt_num)
473 {
474 	return 0;
475 }
476 
dw_pcie_ep_reset_bar(struct dw_pcie * pci,enum pci_barno bar)477 static inline void dw_pcie_ep_reset_bar(struct dw_pcie *pci, enum pci_barno bar)
478 {
479 }
480 
481 static inline struct dw_pcie_ep_func *
dw_pcie_ep_get_func_from_ep(struct dw_pcie_ep * ep,u8 func_no)482 dw_pcie_ep_get_func_from_ep(struct dw_pcie_ep *ep, u8 func_no)
483 {
484 	return NULL;
485 }
486 #endif
487 #endif /* _PCIE_DESIGNWARE_H */
488