Lines Matching refs:fn

19 static u8 cdns_pcie_get_fn_from_vfn(struct cdns_pcie *pcie, u8 fn, u8 vfn)
25 return fn;
27 first_vf_offset = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_SRIOV_VF_OFFSET);
28 stride = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_SRIOV_VF_STRIDE);
29 fn = fn + first_vf_offset + ((vfn - 1) * stride);
31 return fn;
34 static int cdns_pcie_ep_write_header(struct pci_epc *epc, u8 fn, u8 vfn,
47 cdns_pcie_ep_fn_writew(pcie, fn, reg, hdr->deviceid);
51 cdns_pcie_ep_fn_writew(pcie, fn, PCI_DEVICE_ID, hdr->deviceid);
52 cdns_pcie_ep_fn_writeb(pcie, fn, PCI_REVISION_ID, hdr->revid);
53 cdns_pcie_ep_fn_writeb(pcie, fn, PCI_CLASS_PROG, hdr->progif_code);
54 cdns_pcie_ep_fn_writew(pcie, fn, PCI_CLASS_DEVICE,
56 cdns_pcie_ep_fn_writeb(pcie, fn, PCI_CACHE_LINE_SIZE,
58 cdns_pcie_ep_fn_writew(pcie, fn, PCI_SUBSYSTEM_ID, hdr->subsys_id);
59 cdns_pcie_ep_fn_writeb(pcie, fn, PCI_INTERRUPT_PIN, hdr->interrupt_pin);
65 if (fn == 0) {
76 static int cdns_pcie_ep_set_bar(struct pci_epc *epc, u8 fn, u8 vfn,
80 struct cdns_pcie_epf *epf = &ep->epf[fn];
123 reg = CDNS_PCIE_LM_EP_VFUNC_BAR_CFG(bar, fn);
125 reg = CDNS_PCIE_LM_EP_FUNC_BAR_CFG(bar, fn);
137 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
138 cdns_pcie_writel(pcie, CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR0(fn, bar),
140 cdns_pcie_writel(pcie, CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR1(fn, bar),
150 static void cdns_pcie_ep_clear_bar(struct pci_epc *epc, u8 fn, u8 vfn,
154 struct cdns_pcie_epf *epf = &ep->epf[fn];
160 reg = CDNS_PCIE_LM_EP_VFUNC_BAR_CFG(bar, fn);
162 reg = CDNS_PCIE_LM_EP_FUNC_BAR_CFG(bar, fn);
174 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
175 cdns_pcie_writel(pcie, CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR0(fn, bar), 0);
176 cdns_pcie_writel(pcie, CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR1(fn, bar), 0);
183 static int cdns_pcie_ep_map_addr(struct pci_epc *epc, u8 fn, u8 vfn,
196 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
197 cdns_pcie_set_outbound_region(pcie, 0, fn, r, false, addr, pci_addr, size);
205 static void cdns_pcie_ep_unmap_addr(struct pci_epc *epc, u8 fn, u8 vfn,
225 static int cdns_pcie_ep_set_msi(struct pci_epc *epc, u8 fn, u8 vfn, u8 mmc)
232 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
238 flags = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_FLAGS);
242 cdns_pcie_ep_fn_writew(pcie, fn, cap + PCI_MSI_FLAGS, flags);
247 static int cdns_pcie_ep_get_msi(struct pci_epc *epc, u8 fn, u8 vfn)
254 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
257 flags = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_FLAGS);
289 static int cdns_pcie_ep_set_msix(struct pci_epc *epc, u8 fn, u8 vfn,
298 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
301 val = cdns_pcie_ep_fn_readw(pcie, fn, reg);
304 cdns_pcie_ep_fn_writew(pcie, fn, reg, val);
309 cdns_pcie_ep_fn_writel(pcie, fn, reg, val);
314 cdns_pcie_ep_fn_writel(pcie, fn, reg, val);
319 static void cdns_pcie_ep_assert_intx(struct cdns_pcie_ep *ep, u8 fn, u8 intx,
332 ep->irq_pci_fn != fn)) {
334 cdns_pcie_set_outbound_region_for_normal_msg(pcie, 0, fn, 0,
337 ep->irq_pci_fn = fn;
349 status = cdns_pcie_ep_fn_readw(pcie, fn, PCI_STATUS);
352 cdns_pcie_ep_fn_writew(pcie, fn, PCI_STATUS, status);
362 static int cdns_pcie_ep_send_legacy_irq(struct cdns_pcie_ep *ep, u8 fn, u8 vfn,
367 cmd = cdns_pcie_ep_fn_readw(&ep->pcie, fn, PCI_COMMAND);
371 cdns_pcie_ep_assert_intx(ep, fn, intx, true);
376 cdns_pcie_ep_assert_intx(ep, fn, intx, false);
380 static int cdns_pcie_ep_send_msi_irq(struct cdns_pcie_ep *ep, u8 fn, u8 vfn,
389 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
392 flags = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_FLAGS);
404 data = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_DATA_64);
408 pci_addr = cdns_pcie_ep_fn_readl(pcie, fn, cap + PCI_MSI_ADDRESS_HI);
410 pci_addr |= cdns_pcie_ep_fn_readl(pcie, fn, cap + PCI_MSI_ADDRESS_LO);
415 ep->irq_pci_fn != fn)) {
417 cdns_pcie_set_outbound_region(pcie, 0, fn, 0,
423 ep->irq_pci_fn = fn;
430 static int cdns_pcie_ep_map_msi_irq(struct pci_epc *epc, u8 fn, u8 vfn,
444 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
447 flags = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_FLAGS);
459 data = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSI_DATA_64);
463 pci_addr = cdns_pcie_ep_fn_readl(pcie, fn, cap + PCI_MSI_ADDRESS_HI);
465 pci_addr |= cdns_pcie_ep_fn_readl(pcie, fn, cap + PCI_MSI_ADDRESS_LO);
469 ret = cdns_pcie_ep_map_addr(epc, fn, vfn, addr,
483 static int cdns_pcie_ep_send_msix_irq(struct cdns_pcie_ep *ep, u8 fn, u8 vfn,
496 epf = &ep->epf[fn];
500 fn = cdns_pcie_get_fn_from_vfn(pcie, fn, vfn);
503 flags = cdns_pcie_ep_fn_readw(pcie, fn, cap + PCI_MSIX_FLAGS);
508 tbl_offset = cdns_pcie_ep_fn_readl(pcie, fn, reg);
518 ep->irq_pci_fn != fn) {
520 cdns_pcie_set_outbound_region(pcie, 0, fn, 0,
526 ep->irq_pci_fn = fn;
533 static int cdns_pcie_ep_raise_irq(struct pci_epc *epc, u8 fn, u8 vfn,
547 return cdns_pcie_ep_send_legacy_irq(ep, fn, vfn, 0);
550 return cdns_pcie_ep_send_msi_irq(ep, fn, vfn, interrupt_num);
553 return cdns_pcie_ep_send_msix_irq(ep, fn, vfn, interrupt_num);