Lines Matching refs:fn

20 static u8 cdns_pcie_get_fn_from_vfn(struct cdns_pcie *pcie, u8 fn, u8 vfn)
26 return fn;
28 first_vf_offset = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_SRIOV_VF_OFFSET);
29 stride = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_SRIOV_VF_STRIDE);
30 fn = fn + first_vf_offset + ((vfn - 1) * stride);
32 return fn;
35 static int cdns_pcie_ep_write_header(struct pci_epc *epc, u8 fn, u8 vfn,
48 cdns_pcie_ep_fn_writew(pcie, fn, reg, hdr->deviceid);
52 cdns_pcie_ep_fn_writew(pcie, fn, PCI_DEVICE_ID, hdr->deviceid);
53 cdns_pcie_ep_fn_writeb(pcie, fn, PCI_REVISION_ID, hdr->revid);
54 cdns_pcie_ep_fn_writeb(pcie, fn, PCI_CLASS_PROG, hdr->progif_code);
55 cdns_pcie_ep_fn_writew(pcie, fn, PCI_CLASS_DEVICE,
57 cdns_pcie_ep_fn_writeb(pcie, fn, PCI_CACHE_LINE_SIZE,
59 cdns_pcie_ep_fn_writew(pcie, fn, PCI_SUBSYSTEM_ID, hdr->subsys_id);
60 cdns_pcie_ep_fn_writeb(pcie, fn, PCI_INTERRUPT_PIN, hdr->interrupt_pin);
66 if (fn == 0) {
77 static int cdns_pcie_ep_set_bar(struct pci_epc *epc, u8 fn, u8 vfn,
81 struct cdns_pcie_epf *epf = &ep->epf[fn];
121 reg = CDNS_PCIE_LM_EP_VFUNC_BAR_CFG(bar, fn);
123 reg = CDNS_PCIE_LM_EP_FUNC_BAR_CFG(bar, fn);
135 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
136 cdns_pcie_writel(pcie, CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR0(fn, bar),
138 cdns_pcie_writel(pcie, CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR1(fn, bar),
148 static void cdns_pcie_ep_clear_bar(struct pci_epc *epc, u8 fn, u8 vfn,
152 struct cdns_pcie_epf *epf = &ep->epf[fn];
158 reg = CDNS_PCIE_LM_EP_VFUNC_BAR_CFG(bar, fn);
160 reg = CDNS_PCIE_LM_EP_FUNC_BAR_CFG(bar, fn);
172 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
173 cdns_pcie_writel(pcie, CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR0(fn, bar), 0);
174 cdns_pcie_writel(pcie, CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR1(fn, bar), 0);
181 static int cdns_pcie_ep_map_addr(struct pci_epc *epc, u8 fn, u8 vfn,
194 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
195 cdns_pcie_set_outbound_region(pcie, 0, fn, r, false, addr, pci_addr, size);
203 static void cdns_pcie_ep_unmap_addr(struct pci_epc *epc, u8 fn, u8 vfn,
223 static int cdns_pcie_ep_set_msi(struct pci_epc *epc, u8 fn, u8 vfn, u8 mmc)
230 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
236 flags = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_FLAGS);
240 cdns_pcie_ep_fn_writew(pcie, fn, cap + PCI_MSI_FLAGS, flags);
245 static int cdns_pcie_ep_get_msi(struct pci_epc *epc, u8 fn, u8 vfn)
252 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
255 flags = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_FLAGS);
287 static int cdns_pcie_ep_set_msix(struct pci_epc *epc, u8 fn, u8 vfn,
296 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
299 val = cdns_pcie_ep_fn_readw(pcie, fn, reg);
302 cdns_pcie_ep_fn_writew(pcie, fn, reg, val);
307 cdns_pcie_ep_fn_writel(pcie, fn, reg, val);
312 cdns_pcie_ep_fn_writel(pcie, fn, reg, val);
317 static void cdns_pcie_ep_assert_intx(struct cdns_pcie_ep *ep, u8 fn, u8 intx,
330 ep->irq_pci_fn != fn)) {
332 cdns_pcie_set_outbound_region_for_normal_msg(pcie, 0, fn, 0,
335 ep->irq_pci_fn = fn;
347 status = cdns_pcie_ep_fn_readw(pcie, fn, PCI_STATUS);
350 cdns_pcie_ep_fn_writew(pcie, fn, PCI_STATUS, status);
360 static int cdns_pcie_ep_send_intx_irq(struct cdns_pcie_ep *ep, u8 fn, u8 vfn,
365 cmd = cdns_pcie_ep_fn_readw(&ep->pcie, fn, PCI_COMMAND);
369 cdns_pcie_ep_assert_intx(ep, fn, intx, true);
374 cdns_pcie_ep_assert_intx(ep, fn, intx, false);
378 static int cdns_pcie_ep_send_msi_irq(struct cdns_pcie_ep *ep, u8 fn, u8 vfn,
387 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
390 flags = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_FLAGS);
402 data = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_DATA_64);
406 pci_addr = cdns_pcie_ep_fn_readl(pcie, fn, cap + PCI_MSI_ADDRESS_HI);
408 pci_addr |= cdns_pcie_ep_fn_readl(pcie, fn, cap + PCI_MSI_ADDRESS_LO);
413 ep->irq_pci_fn != fn)) {
415 cdns_pcie_set_outbound_region(pcie, 0, fn, 0,
421 ep->irq_pci_fn = fn;
428 static int cdns_pcie_ep_map_msi_irq(struct pci_epc *epc, u8 fn, u8 vfn,
442 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
445 flags = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_FLAGS);
457 data = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_DATA_64);
461 pci_addr = cdns_pcie_ep_fn_readl(pcie, fn, cap + PCI_MSI_ADDRESS_HI);
463 pci_addr |= cdns_pcie_ep_fn_readl(pcie, fn, cap + PCI_MSI_ADDRESS_LO);
467 ret = cdns_pcie_ep_map_addr(epc, fn, vfn, addr,
481 static int cdns_pcie_ep_send_msix_irq(struct cdns_pcie_ep *ep, u8 fn, u8 vfn,
494 epf = &ep->epf[fn];
498 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
501 flags = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSIX_FLAGS);
506 tbl_offset = cdns_pcie_ep_fn_readl(pcie, fn, reg);
516 ep->irq_pci_fn != fn) {
518 cdns_pcie_set_outbound_region(pcie, 0, fn, 0,
524 ep->irq_pci_fn = fn;
531 static int cdns_pcie_ep_raise_irq(struct pci_epc *epc, u8 fn, u8 vfn,
544 return cdns_pcie_ep_send_intx_irq(ep, fn, vfn, 0);
547 return cdns_pcie_ep_send_msi_irq(ep, fn, vfn, interrupt_num);
550 return cdns_pcie_ep_send_msix_irq(ep, fn, vfn, interrupt_num);