Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

PCI: dwc: Add dw_pcie_ep_{read,write}_dbi[2] helpers

The current code calculated some dbi[2] registers' offset by calling
dw_pcie_ep_get_dbi[2]_offset() in each function. To improve the code
readability, add dw_pcie_ep_{read,write}_dbi[2} and some data-width
related helpers.

Link: https://lore.kernel.org/linux-pci/20231220053829.1921187-5-yoshihiro.shimoda.uh@renesas.com
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>

authored by

Yoshihiro Shimoda and committed by
Krzysztof Wilczyński
70fa02ca 641f79be

+153 -124
+60 -124
drivers/pci/controller/dwc/pcie-designware-ep.c
··· 43 43 return NULL; 44 44 } 45 45 46 - static unsigned int dw_pcie_ep_get_dbi_offset(struct dw_pcie_ep *ep, u8 func_no) 47 - { 48 - unsigned int dbi_offset = 0; 49 - 50 - if (ep->ops->get_dbi_offset) 51 - dbi_offset = ep->ops->get_dbi_offset(ep, func_no); 52 - 53 - return dbi_offset; 54 - } 55 - 56 - static unsigned int dw_pcie_ep_get_dbi2_offset(struct dw_pcie_ep *ep, u8 func_no) 57 - { 58 - unsigned int dbi2_offset = 0; 59 - 60 - if (ep->ops->get_dbi2_offset) 61 - dbi2_offset = ep->ops->get_dbi2_offset(ep, func_no); 62 - else if (ep->ops->get_dbi_offset) /* for backward compatibility */ 63 - dbi2_offset = ep->ops->get_dbi_offset(ep, func_no); 64 - 65 - return dbi2_offset; 66 - } 67 - 68 46 static void __dw_pcie_ep_reset_bar(struct dw_pcie *pci, u8 func_no, 69 47 enum pci_barno bar, int flags) 70 48 { 71 - unsigned int dbi_offset, dbi2_offset; 72 49 struct dw_pcie_ep *ep = &pci->ep; 73 - u32 reg, reg_dbi2; 50 + u32 reg; 74 51 75 - dbi_offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 76 - dbi2_offset = dw_pcie_ep_get_dbi2_offset(ep, func_no); 77 - 78 - reg = dbi_offset + PCI_BASE_ADDRESS_0 + (4 * bar); 79 - reg_dbi2 = dbi2_offset + PCI_BASE_ADDRESS_0 + (4 * bar); 52 + reg = PCI_BASE_ADDRESS_0 + (4 * bar); 80 53 dw_pcie_dbi_ro_wr_en(pci); 81 - dw_pcie_writel_dbi2(pci, reg_dbi2, 0x0); 82 - dw_pcie_writel_dbi(pci, reg, 0x0); 54 + dw_pcie_ep_writel_dbi2(ep, func_no, reg, 0x0); 55 + dw_pcie_ep_writel_dbi(ep, func_no, reg, 0x0); 83 56 if (flags & PCI_BASE_ADDRESS_MEM_TYPE_64) { 84 - dw_pcie_writel_dbi2(pci, reg_dbi2 + 4, 0x0); 85 - dw_pcie_writel_dbi(pci, reg + 4, 0x0); 57 + dw_pcie_ep_writel_dbi2(ep, func_no, reg + 4, 0x0); 58 + dw_pcie_ep_writel_dbi(ep, func_no, reg + 4, 0x0); 86 59 } 87 60 dw_pcie_dbi_ro_wr_dis(pci); 88 61 } ··· 72 99 EXPORT_SYMBOL_GPL(dw_pcie_ep_reset_bar); 73 100 74 101 static u8 __dw_pcie_ep_find_next_cap(struct dw_pcie_ep *ep, u8 func_no, 75 - u8 cap_ptr, u8 cap) 102 + u8 cap_ptr, u8 cap) 76 103 { 77 - struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 78 - unsigned int dbi_offset = 0; 79 104 u8 cap_id, next_cap_ptr; 80 105 u16 reg; 81 106 82 107 if (!cap_ptr) 83 108 return 0; 84 109 85 - dbi_offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 86 - 87 - reg = dw_pcie_readw_dbi(pci, dbi_offset + cap_ptr); 110 + reg = dw_pcie_ep_readw_dbi(ep, func_no, cap_ptr); 88 111 cap_id = (reg & 0x00ff); 89 112 90 113 if (cap_id > PCI_CAP_ID_MAX) ··· 95 126 96 127 static u8 dw_pcie_ep_find_capability(struct dw_pcie_ep *ep, u8 func_no, u8 cap) 97 128 { 98 - struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 99 - unsigned int dbi_offset = 0; 100 129 u8 next_cap_ptr; 101 130 u16 reg; 102 131 103 - dbi_offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 104 - 105 - reg = dw_pcie_readw_dbi(pci, dbi_offset + PCI_CAPABILITY_LIST); 132 + reg = dw_pcie_ep_readw_dbi(ep, func_no, PCI_CAPABILITY_LIST); 106 133 next_cap_ptr = (reg & 0x00ff); 107 134 108 135 return __dw_pcie_ep_find_next_cap(ep, func_no, next_cap_ptr, cap); ··· 109 144 { 110 145 struct dw_pcie_ep *ep = epc_get_drvdata(epc); 111 146 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 112 - unsigned int dbi_offset = 0; 113 - 114 - dbi_offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 115 147 116 148 dw_pcie_dbi_ro_wr_en(pci); 117 - dw_pcie_writew_dbi(pci, dbi_offset + PCI_VENDOR_ID, hdr->vendorid); 118 - dw_pcie_writew_dbi(pci, dbi_offset + PCI_DEVICE_ID, hdr->deviceid); 119 - dw_pcie_writeb_dbi(pci, dbi_offset + PCI_REVISION_ID, hdr->revid); 120 - dw_pcie_writeb_dbi(pci, dbi_offset + PCI_CLASS_PROG, hdr->progif_code); 121 - dw_pcie_writew_dbi(pci, dbi_offset + PCI_CLASS_DEVICE, 122 - hdr->subclass_code | hdr->baseclass_code << 8); 123 - dw_pcie_writeb_dbi(pci, dbi_offset + PCI_CACHE_LINE_SIZE, 124 - hdr->cache_line_size); 125 - dw_pcie_writew_dbi(pci, dbi_offset + PCI_SUBSYSTEM_VENDOR_ID, 126 - hdr->subsys_vendor_id); 127 - dw_pcie_writew_dbi(pci, dbi_offset + PCI_SUBSYSTEM_ID, hdr->subsys_id); 128 - dw_pcie_writeb_dbi(pci, dbi_offset + PCI_INTERRUPT_PIN, 129 - hdr->interrupt_pin); 149 + dw_pcie_ep_writew_dbi(ep, func_no, PCI_VENDOR_ID, hdr->vendorid); 150 + dw_pcie_ep_writew_dbi(ep, func_no, PCI_DEVICE_ID, hdr->deviceid); 151 + dw_pcie_ep_writeb_dbi(ep, func_no, PCI_REVISION_ID, hdr->revid); 152 + dw_pcie_ep_writeb_dbi(ep, func_no, PCI_CLASS_PROG, hdr->progif_code); 153 + dw_pcie_ep_writew_dbi(ep, func_no, PCI_CLASS_DEVICE, 154 + hdr->subclass_code | hdr->baseclass_code << 8); 155 + dw_pcie_ep_writeb_dbi(ep, func_no, PCI_CACHE_LINE_SIZE, 156 + hdr->cache_line_size); 157 + dw_pcie_ep_writew_dbi(ep, func_no, PCI_SUBSYSTEM_VENDOR_ID, 158 + hdr->subsys_vendor_id); 159 + dw_pcie_ep_writew_dbi(ep, func_no, PCI_SUBSYSTEM_ID, hdr->subsys_id); 160 + dw_pcie_ep_writeb_dbi(ep, func_no, PCI_INTERRUPT_PIN, 161 + hdr->interrupt_pin); 130 162 dw_pcie_dbi_ro_wr_dis(pci); 131 163 132 164 return 0; ··· 205 243 { 206 244 struct dw_pcie_ep *ep = epc_get_drvdata(epc); 207 245 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 208 - unsigned int dbi_offset, dbi2_offset; 209 246 enum pci_barno bar = epf_bar->barno; 210 247 size_t size = epf_bar->size; 211 248 int flags = epf_bar->flags; 212 - u32 reg, reg_dbi2; 213 249 int ret, type; 250 + u32 reg; 214 251 215 - dbi_offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 216 - dbi2_offset = dw_pcie_ep_get_dbi2_offset(ep, func_no); 217 - 218 - reg = PCI_BASE_ADDRESS_0 + (4 * bar) + dbi_offset; 219 - reg_dbi2 = PCI_BASE_ADDRESS_0 + (4 * bar) + dbi2_offset; 252 + reg = PCI_BASE_ADDRESS_0 + (4 * bar); 220 253 221 254 if (!(flags & PCI_BASE_ADDRESS_SPACE)) 222 255 type = PCIE_ATU_TYPE_MEM; ··· 227 270 228 271 dw_pcie_dbi_ro_wr_en(pci); 229 272 230 - dw_pcie_writel_dbi2(pci, reg_dbi2, lower_32_bits(size - 1)); 231 - dw_pcie_writel_dbi(pci, reg, flags); 273 + dw_pcie_ep_writel_dbi2(ep, func_no, reg, lower_32_bits(size - 1)); 274 + dw_pcie_ep_writel_dbi(ep, func_no, reg, flags); 232 275 233 276 if (flags & PCI_BASE_ADDRESS_MEM_TYPE_64) { 234 - dw_pcie_writel_dbi2(pci, reg_dbi2 + 4, upper_32_bits(size - 1)); 235 - dw_pcie_writel_dbi(pci, reg + 4, 0); 277 + dw_pcie_ep_writel_dbi2(ep, func_no, reg + 4, upper_32_bits(size - 1)); 278 + dw_pcie_ep_writel_dbi(ep, func_no, reg + 4, 0); 236 279 } 237 280 238 281 ep->epf_bar[bar] = epf_bar; ··· 292 335 static int dw_pcie_ep_get_msi(struct pci_epc *epc, u8 func_no, u8 vfunc_no) 293 336 { 294 337 struct dw_pcie_ep *ep = epc_get_drvdata(epc); 295 - struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 296 - u32 val, reg; 297 - unsigned int dbi_offset = 0; 298 338 struct dw_pcie_ep_func *ep_func; 339 + u32 val, reg; 299 340 300 341 ep_func = dw_pcie_ep_get_func_from_ep(ep, func_no); 301 342 if (!ep_func || !ep_func->msi_cap) 302 343 return -EINVAL; 303 344 304 - dbi_offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 305 - 306 - reg = ep_func->msi_cap + dbi_offset + PCI_MSI_FLAGS; 307 - val = dw_pcie_readw_dbi(pci, reg); 345 + reg = ep_func->msi_cap + PCI_MSI_FLAGS; 346 + val = dw_pcie_ep_readw_dbi(ep, func_no, reg); 308 347 if (!(val & PCI_MSI_FLAGS_ENABLE)) 309 348 return -EINVAL; 310 349 ··· 314 361 { 315 362 struct dw_pcie_ep *ep = epc_get_drvdata(epc); 316 363 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 317 - u32 val, reg; 318 - unsigned int dbi_offset = 0; 319 364 struct dw_pcie_ep_func *ep_func; 365 + u32 val, reg; 320 366 321 367 ep_func = dw_pcie_ep_get_func_from_ep(ep, func_no); 322 368 if (!ep_func || !ep_func->msi_cap) 323 369 return -EINVAL; 324 370 325 - dbi_offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 326 - 327 - reg = ep_func->msi_cap + dbi_offset + PCI_MSI_FLAGS; 328 - val = dw_pcie_readw_dbi(pci, reg); 371 + reg = ep_func->msi_cap + PCI_MSI_FLAGS; 372 + val = dw_pcie_ep_readw_dbi(ep, func_no, reg); 329 373 val &= ~PCI_MSI_FLAGS_QMASK; 330 374 val |= FIELD_PREP(PCI_MSI_FLAGS_QMASK, interrupts); 331 375 dw_pcie_dbi_ro_wr_en(pci); 332 - dw_pcie_writew_dbi(pci, reg, val); 376 + dw_pcie_ep_writew_dbi(ep, func_no, reg, val); 333 377 dw_pcie_dbi_ro_wr_dis(pci); 334 378 335 379 return 0; ··· 335 385 static int dw_pcie_ep_get_msix(struct pci_epc *epc, u8 func_no, u8 vfunc_no) 336 386 { 337 387 struct dw_pcie_ep *ep = epc_get_drvdata(epc); 338 - struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 339 - u32 val, reg; 340 - unsigned int dbi_offset = 0; 341 388 struct dw_pcie_ep_func *ep_func; 389 + u32 val, reg; 342 390 343 391 ep_func = dw_pcie_ep_get_func_from_ep(ep, func_no); 344 392 if (!ep_func || !ep_func->msix_cap) 345 393 return -EINVAL; 346 394 347 - dbi_offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 348 - 349 - reg = ep_func->msix_cap + dbi_offset + PCI_MSIX_FLAGS; 350 - val = dw_pcie_readw_dbi(pci, reg); 395 + reg = ep_func->msix_cap + PCI_MSIX_FLAGS; 396 + val = dw_pcie_ep_readw_dbi(ep, func_no, reg); 351 397 if (!(val & PCI_MSIX_FLAGS_ENABLE)) 352 398 return -EINVAL; 353 399 ··· 357 411 { 358 412 struct dw_pcie_ep *ep = epc_get_drvdata(epc); 359 413 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 360 - u32 val, reg; 361 - unsigned int dbi_offset = 0; 362 414 struct dw_pcie_ep_func *ep_func; 415 + u32 val, reg; 363 416 364 417 ep_func = dw_pcie_ep_get_func_from_ep(ep, func_no); 365 418 if (!ep_func || !ep_func->msix_cap) ··· 366 421 367 422 dw_pcie_dbi_ro_wr_en(pci); 368 423 369 - dbi_offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 370 - 371 - reg = ep_func->msix_cap + dbi_offset + PCI_MSIX_FLAGS; 372 - val = dw_pcie_readw_dbi(pci, reg); 424 + reg = ep_func->msix_cap + PCI_MSIX_FLAGS; 425 + val = dw_pcie_ep_readw_dbi(ep, func_no, reg); 373 426 val &= ~PCI_MSIX_FLAGS_QSIZE; 374 427 val |= interrupts; 375 428 dw_pcie_writew_dbi(pci, reg, val); 376 429 377 - reg = ep_func->msix_cap + dbi_offset + PCI_MSIX_TABLE; 430 + reg = ep_func->msix_cap + PCI_MSIX_TABLE; 378 431 val = offset | bir; 379 - dw_pcie_writel_dbi(pci, reg, val); 432 + dw_pcie_ep_writel_dbi(ep, func_no, reg, val); 380 433 381 - reg = ep_func->msix_cap + dbi_offset + PCI_MSIX_PBA; 434 + reg = ep_func->msix_cap + PCI_MSIX_PBA; 382 435 val = (offset + (interrupts * PCI_MSIX_ENTRY_SIZE)) | bir; 383 - dw_pcie_writel_dbi(pci, reg, val); 436 + dw_pcie_ep_writel_dbi(ep, func_no, reg, val); 384 437 385 438 dw_pcie_dbi_ro_wr_dis(pci); 386 439 ··· 453 510 int dw_pcie_ep_raise_msi_irq(struct dw_pcie_ep *ep, u8 func_no, 454 511 u8 interrupt_num) 455 512 { 456 - struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 513 + u32 msg_addr_lower, msg_addr_upper, reg; 457 514 struct dw_pcie_ep_func *ep_func; 458 515 struct pci_epc *epc = ep->epc; 459 516 unsigned int aligned_offset; 460 - unsigned int dbi_offset = 0; 461 517 u16 msg_ctrl, msg_data; 462 - u32 msg_addr_lower, msg_addr_upper, reg; 463 - u64 msg_addr; 464 518 bool has_upper; 519 + u64 msg_addr; 465 520 int ret; 466 521 467 522 ep_func = dw_pcie_ep_get_func_from_ep(ep, func_no); 468 523 if (!ep_func || !ep_func->msi_cap) 469 524 return -EINVAL; 470 525 471 - dbi_offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 472 - 473 526 /* Raise MSI per the PCI Local Bus Specification Revision 3.0, 6.8.1. */ 474 - reg = ep_func->msi_cap + dbi_offset + PCI_MSI_FLAGS; 475 - msg_ctrl = dw_pcie_readw_dbi(pci, reg); 527 + reg = ep_func->msi_cap + PCI_MSI_FLAGS; 528 + msg_ctrl = dw_pcie_ep_readw_dbi(ep, func_no, reg); 476 529 has_upper = !!(msg_ctrl & PCI_MSI_FLAGS_64BIT); 477 - reg = ep_func->msi_cap + dbi_offset + PCI_MSI_ADDRESS_LO; 478 - msg_addr_lower = dw_pcie_readl_dbi(pci, reg); 530 + reg = ep_func->msi_cap + PCI_MSI_ADDRESS_LO; 531 + msg_addr_lower = dw_pcie_ep_readl_dbi(ep, func_no, reg); 479 532 if (has_upper) { 480 - reg = ep_func->msi_cap + dbi_offset + PCI_MSI_ADDRESS_HI; 481 - msg_addr_upper = dw_pcie_readl_dbi(pci, reg); 482 - reg = ep_func->msi_cap + dbi_offset + PCI_MSI_DATA_64; 483 - msg_data = dw_pcie_readw_dbi(pci, reg); 533 + reg = ep_func->msi_cap + PCI_MSI_ADDRESS_HI; 534 + msg_addr_upper = dw_pcie_ep_readl_dbi(ep, func_no, reg); 535 + reg = ep_func->msi_cap + PCI_MSI_DATA_64; 536 + msg_data = dw_pcie_ep_readw_dbi(ep, func_no, reg); 484 537 } else { 485 538 msg_addr_upper = 0; 486 - reg = ep_func->msi_cap + dbi_offset + PCI_MSI_DATA_32; 487 - msg_data = dw_pcie_readw_dbi(pci, reg); 539 + reg = ep_func->msi_cap + PCI_MSI_DATA_32; 540 + msg_data = dw_pcie_ep_readw_dbi(ep, func_no, reg); 488 541 } 489 542 aligned_offset = msg_addr_lower & (epc->mem->window.page_size - 1); 490 543 msg_addr = ((u64)msg_addr_upper) << 32 | ··· 521 582 u16 interrupt_num) 522 583 { 523 584 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 524 - struct dw_pcie_ep_func *ep_func; 525 585 struct pci_epf_msix_tbl *msix_tbl; 586 + struct dw_pcie_ep_func *ep_func; 526 587 struct pci_epc *epc = ep->epc; 527 - unsigned int dbi_offset = 0; 528 588 u32 reg, msg_data, vec_ctrl; 529 589 unsigned int aligned_offset; 530 590 u32 tbl_offset; ··· 535 597 if (!ep_func || !ep_func->msix_cap) 536 598 return -EINVAL; 537 599 538 - dbi_offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 539 - 540 - reg = ep_func->msix_cap + dbi_offset + PCI_MSIX_TABLE; 541 - tbl_offset = dw_pcie_readl_dbi(pci, reg); 600 + reg = ep_func->msix_cap + PCI_MSIX_TABLE; 601 + tbl_offset = dw_pcie_ep_readl_dbi(ep, func_no, reg); 542 602 bir = FIELD_GET(PCI_MSIX_TABLE_BIR, tbl_offset); 543 603 tbl_offset &= PCI_MSIX_TABLE_OFFSET; 544 604
+93
drivers/pci/controller/dwc/pcie-designware.h
··· 486 486 dw_pcie_write_dbi2(pci, reg, 0x4, val); 487 487 } 488 488 489 + static inline unsigned int dw_pcie_ep_get_dbi_offset(struct dw_pcie_ep *ep, 490 + u8 func_no) 491 + { 492 + unsigned int dbi_offset = 0; 493 + 494 + if (ep->ops->get_dbi_offset) 495 + dbi_offset = ep->ops->get_dbi_offset(ep, func_no); 496 + 497 + return dbi_offset; 498 + } 499 + 500 + static inline u32 dw_pcie_ep_read_dbi(struct dw_pcie_ep *ep, u8 func_no, 501 + u32 reg, size_t size) 502 + { 503 + unsigned int offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 504 + struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 505 + 506 + return dw_pcie_read_dbi(pci, offset + reg, size); 507 + } 508 + 509 + static inline void dw_pcie_ep_write_dbi(struct dw_pcie_ep *ep, u8 func_no, 510 + u32 reg, size_t size, u32 val) 511 + { 512 + unsigned int offset = dw_pcie_ep_get_dbi_offset(ep, func_no); 513 + struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 514 + 515 + dw_pcie_write_dbi(pci, offset + reg, size, val); 516 + } 517 + 518 + static inline void dw_pcie_ep_writel_dbi(struct dw_pcie_ep *ep, u8 func_no, 519 + u32 reg, u32 val) 520 + { 521 + dw_pcie_ep_write_dbi(ep, func_no, reg, 0x4, val); 522 + } 523 + 524 + static inline u32 dw_pcie_ep_readl_dbi(struct dw_pcie_ep *ep, u8 func_no, 525 + u32 reg) 526 + { 527 + return dw_pcie_ep_read_dbi(ep, func_no, reg, 0x4); 528 + } 529 + 530 + static inline void dw_pcie_ep_writew_dbi(struct dw_pcie_ep *ep, u8 func_no, 531 + u32 reg, u16 val) 532 + { 533 + dw_pcie_ep_write_dbi(ep, func_no, reg, 0x2, val); 534 + } 535 + 536 + static inline u16 dw_pcie_ep_readw_dbi(struct dw_pcie_ep *ep, u8 func_no, 537 + u32 reg) 538 + { 539 + return dw_pcie_ep_read_dbi(ep, func_no, reg, 0x2); 540 + } 541 + 542 + static inline void dw_pcie_ep_writeb_dbi(struct dw_pcie_ep *ep, u8 func_no, 543 + u32 reg, u8 val) 544 + { 545 + dw_pcie_ep_write_dbi(ep, func_no, reg, 0x1, val); 546 + } 547 + 548 + static inline u8 dw_pcie_ep_readb_dbi(struct dw_pcie_ep *ep, u8 func_no, 549 + u32 reg) 550 + { 551 + return dw_pcie_ep_read_dbi(ep, func_no, reg, 0x1); 552 + } 553 + 554 + static inline unsigned int dw_pcie_ep_get_dbi2_offset(struct dw_pcie_ep *ep, 555 + u8 func_no) 556 + { 557 + unsigned int dbi2_offset = 0; 558 + 559 + if (ep->ops->get_dbi2_offset) 560 + dbi2_offset = ep->ops->get_dbi2_offset(ep, func_no); 561 + else if (ep->ops->get_dbi_offset) /* for backward compatibility */ 562 + dbi2_offset = ep->ops->get_dbi_offset(ep, func_no); 563 + 564 + return dbi2_offset; 565 + } 566 + 567 + static inline void dw_pcie_ep_write_dbi2(struct dw_pcie_ep *ep, u8 func_no, 568 + u32 reg, size_t size, u32 val) 569 + { 570 + unsigned int offset = dw_pcie_ep_get_dbi2_offset(ep, func_no); 571 + struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 572 + 573 + dw_pcie_write_dbi2(pci, offset + reg, size, val); 574 + } 575 + 576 + static inline void dw_pcie_ep_writel_dbi2(struct dw_pcie_ep *ep, u8 func_no, 577 + u32 reg, u32 val) 578 + { 579 + dw_pcie_ep_write_dbi2(ep, func_no, reg, 0x4, val); 580 + } 581 + 489 582 static inline void dw_pcie_dbi_ro_wr_en(struct dw_pcie *pci) 490 583 { 491 584 u32 reg;