16
16
#define CDNS_PCIE_EP_IRQ_PCI_ADDR_NONE 0x1
17
17
#define CDNS_PCIE_EP_IRQ_PCI_ADDR_LEGACY 0x3
18
18
19
- static int cdns_pcie_ep_write_header (struct pci_epc * epc , u8 fn ,
19
+ static int cdns_pcie_ep_write_header (struct pci_epc * epc , u8 fn , u8 vfn ,
20
20
struct pci_epf_header * hdr )
21
21
{
22
22
struct cdns_pcie_ep * ep = epc_get_drvdata (epc );
@@ -47,7 +47,7 @@ static int cdns_pcie_ep_write_header(struct pci_epc *epc, u8 fn,
47
47
return 0 ;
48
48
}
49
49
50
- static int cdns_pcie_ep_set_bar (struct pci_epc * epc , u8 fn ,
50
+ static int cdns_pcie_ep_set_bar (struct pci_epc * epc , u8 fn , u8 vfn ,
51
51
struct pci_epf_bar * epf_bar )
52
52
{
53
53
struct cdns_pcie_ep * ep = epc_get_drvdata (epc );
@@ -117,7 +117,7 @@ static int cdns_pcie_ep_set_bar(struct pci_epc *epc, u8 fn,
117
117
return 0 ;
118
118
}
119
119
120
- static void cdns_pcie_ep_clear_bar (struct pci_epc * epc , u8 fn ,
120
+ static void cdns_pcie_ep_clear_bar (struct pci_epc * epc , u8 fn , u8 vfn ,
121
121
struct pci_epf_bar * epf_bar )
122
122
{
123
123
struct cdns_pcie_ep * ep = epc_get_drvdata (epc );
@@ -147,8 +147,8 @@ static void cdns_pcie_ep_clear_bar(struct pci_epc *epc, u8 fn,
147
147
epf -> epf_bar [bar ] = NULL ;
148
148
}
149
149
150
- static int cdns_pcie_ep_map_addr (struct pci_epc * epc , u8 fn , phys_addr_t addr ,
151
- u64 pci_addr , size_t size )
150
+ static int cdns_pcie_ep_map_addr (struct pci_epc * epc , u8 fn , u8 vfn ,
151
+ phys_addr_t addr , u64 pci_addr , size_t size )
152
152
{
153
153
struct cdns_pcie_ep * ep = epc_get_drvdata (epc );
154
154
struct cdns_pcie * pcie = & ep -> pcie ;
@@ -169,7 +169,7 @@ static int cdns_pcie_ep_map_addr(struct pci_epc *epc, u8 fn, phys_addr_t addr,
169
169
return 0 ;
170
170
}
171
171
172
- static void cdns_pcie_ep_unmap_addr (struct pci_epc * epc , u8 fn ,
172
+ static void cdns_pcie_ep_unmap_addr (struct pci_epc * epc , u8 fn , u8 vfn ,
173
173
phys_addr_t addr )
174
174
{
175
175
struct cdns_pcie_ep * ep = epc_get_drvdata (epc );
@@ -189,7 +189,7 @@ static void cdns_pcie_ep_unmap_addr(struct pci_epc *epc, u8 fn,
189
189
clear_bit (r , & ep -> ob_region_map );
190
190
}
191
191
192
- static int cdns_pcie_ep_set_msi (struct pci_epc * epc , u8 fn , u8 mmc )
192
+ static int cdns_pcie_ep_set_msi (struct pci_epc * epc , u8 fn , u8 vfn , u8 mmc )
193
193
{
194
194
struct cdns_pcie_ep * ep = epc_get_drvdata (epc );
195
195
struct cdns_pcie * pcie = & ep -> pcie ;
@@ -209,7 +209,7 @@ static int cdns_pcie_ep_set_msi(struct pci_epc *epc, u8 fn, u8 mmc)
209
209
return 0 ;
210
210
}
211
211
212
- static int cdns_pcie_ep_get_msi (struct pci_epc * epc , u8 fn )
212
+ static int cdns_pcie_ep_get_msi (struct pci_epc * epc , u8 fn , u8 vfn )
213
213
{
214
214
struct cdns_pcie_ep * ep = epc_get_drvdata (epc );
215
215
struct cdns_pcie * pcie = & ep -> pcie ;
@@ -230,7 +230,7 @@ static int cdns_pcie_ep_get_msi(struct pci_epc *epc, u8 fn)
230
230
return mme ;
231
231
}
232
232
233
- static int cdns_pcie_ep_get_msix (struct pci_epc * epc , u8 func_no )
233
+ static int cdns_pcie_ep_get_msix (struct pci_epc * epc , u8 func_no , u8 vfunc_no )
234
234
{
235
235
struct cdns_pcie_ep * ep = epc_get_drvdata (epc );
236
236
struct cdns_pcie * pcie = & ep -> pcie ;
@@ -247,8 +247,9 @@ static int cdns_pcie_ep_get_msix(struct pci_epc *epc, u8 func_no)
247
247
return val ;
248
248
}
249
249
250
- static int cdns_pcie_ep_set_msix (struct pci_epc * epc , u8 fn , u16 interrupts ,
251
- enum pci_barno bir , u32 offset )
250
+ static int cdns_pcie_ep_set_msix (struct pci_epc * epc , u8 fn , u8 vfn ,
251
+ u16 interrupts , enum pci_barno bir ,
252
+ u32 offset )
252
253
{
253
254
struct cdns_pcie_ep * ep = epc_get_drvdata (epc );
254
255
struct cdns_pcie * pcie = & ep -> pcie ;
@@ -317,7 +318,8 @@ static void cdns_pcie_ep_assert_intx(struct cdns_pcie_ep *ep, u8 fn,
317
318
writel (0 , ep -> irq_cpu_addr + offset );
318
319
}
319
320
320
- static int cdns_pcie_ep_send_legacy_irq (struct cdns_pcie_ep * ep , u8 fn , u8 intx )
321
+ static int cdns_pcie_ep_send_legacy_irq (struct cdns_pcie_ep * ep , u8 fn , u8 vfn ,
322
+ u8 intx )
321
323
{
322
324
u16 cmd ;
323
325
@@ -334,7 +336,7 @@ static int cdns_pcie_ep_send_legacy_irq(struct cdns_pcie_ep *ep, u8 fn, u8 intx)
334
336
return 0 ;
335
337
}
336
338
337
- static int cdns_pcie_ep_send_msi_irq (struct cdns_pcie_ep * ep , u8 fn ,
339
+ static int cdns_pcie_ep_send_msi_irq (struct cdns_pcie_ep * ep , u8 fn , u8 vfn ,
338
340
u8 interrupt_num )
339
341
{
340
342
struct cdns_pcie * pcie = & ep -> pcie ;
@@ -382,7 +384,7 @@ static int cdns_pcie_ep_send_msi_irq(struct cdns_pcie_ep *ep, u8 fn,
382
384
return 0 ;
383
385
}
384
386
385
- static int cdns_pcie_ep_map_msi_irq (struct pci_epc * epc , u8 fn ,
387
+ static int cdns_pcie_ep_map_msi_irq (struct pci_epc * epc , u8 fn , u8 vfn ,
386
388
phys_addr_t addr , u8 interrupt_num ,
387
389
u32 entry_size , u32 * msi_data ,
388
390
u32 * msi_addr_offset )
@@ -419,7 +421,7 @@ static int cdns_pcie_ep_map_msi_irq(struct pci_epc *epc, u8 fn,
419
421
pci_addr &= GENMASK_ULL (63 , 2 );
420
422
421
423
for (i = 0 ; i < interrupt_num ; i ++ ) {
422
- ret = cdns_pcie_ep_map_addr (epc , fn , addr ,
424
+ ret = cdns_pcie_ep_map_addr (epc , fn , vfn , addr ,
423
425
pci_addr & ~pci_addr_mask ,
424
426
entry_size );
425
427
if (ret )
@@ -433,7 +435,7 @@ static int cdns_pcie_ep_map_msi_irq(struct pci_epc *epc, u8 fn,
433
435
return 0 ;
434
436
}
435
437
436
- static int cdns_pcie_ep_send_msix_irq (struct cdns_pcie_ep * ep , u8 fn ,
438
+ static int cdns_pcie_ep_send_msix_irq (struct cdns_pcie_ep * ep , u8 fn , u8 vfn ,
437
439
u16 interrupt_num )
438
440
{
439
441
u32 cap = CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET ;
@@ -478,21 +480,21 @@ static int cdns_pcie_ep_send_msix_irq(struct cdns_pcie_ep *ep, u8 fn,
478
480
return 0 ;
479
481
}
480
482
481
- static int cdns_pcie_ep_raise_irq (struct pci_epc * epc , u8 fn ,
483
+ static int cdns_pcie_ep_raise_irq (struct pci_epc * epc , u8 fn , u8 vfn ,
482
484
enum pci_epc_irq_type type ,
483
485
u16 interrupt_num )
484
486
{
485
487
struct cdns_pcie_ep * ep = epc_get_drvdata (epc );
486
488
487
489
switch (type ) {
488
490
case PCI_EPC_IRQ_LEGACY :
489
- return cdns_pcie_ep_send_legacy_irq (ep , fn , 0 );
491
+ return cdns_pcie_ep_send_legacy_irq (ep , fn , vfn , 0 );
490
492
491
493
case PCI_EPC_IRQ_MSI :
492
- return cdns_pcie_ep_send_msi_irq (ep , fn , interrupt_num );
494
+ return cdns_pcie_ep_send_msi_irq (ep , fn , vfn , interrupt_num );
493
495
494
496
case PCI_EPC_IRQ_MSIX :
495
- return cdns_pcie_ep_send_msix_irq (ep , fn , interrupt_num );
497
+ return cdns_pcie_ep_send_msix_irq (ep , fn , vfn , interrupt_num );
496
498
497
499
default :
498
500
break ;
@@ -531,7 +533,7 @@ static const struct pci_epc_features cdns_pcie_epc_features = {
531
533
};
532
534
533
535
static const struct pci_epc_features *
534
- cdns_pcie_ep_get_features (struct pci_epc * epc , u8 func_no )
536
+ cdns_pcie_ep_get_features (struct pci_epc * epc , u8 func_no , u8 vfunc_no )
535
537
{
536
538
return & cdns_pcie_epc_features ;
537
539
}
0 commit comments