diff options
Diffstat (limited to 'drivers/misc/cxl/pci.c')
-rw-r--r-- | drivers/misc/cxl/pci.c | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/drivers/misc/cxl/pci.c b/drivers/misc/cxl/pci.c index 3ba04f371380..b4ce9ea113a9 100644 --- a/drivers/misc/cxl/pci.c +++ b/drivers/misc/cxl/pci.c | |||
@@ -401,7 +401,8 @@ int cxl_calc_capp_routing(struct pci_dev *dev, u64 *chipid, | |||
401 | *capp_unit_id = get_capp_unit_id(np, *phb_index); | 401 | *capp_unit_id = get_capp_unit_id(np, *phb_index); |
402 | of_node_put(np); | 402 | of_node_put(np); |
403 | if (!*capp_unit_id) { | 403 | if (!*capp_unit_id) { |
404 | pr_err("cxl: invalid capp unit id\n"); | 404 | pr_err("cxl: invalid capp unit id (phb_index: %d)\n", |
405 | *phb_index); | ||
405 | return -ENODEV; | 406 | return -ENODEV; |
406 | } | 407 | } |
407 | 408 | ||
@@ -475,37 +476,37 @@ static int init_implementation_adapter_regs_psl9(struct cxl *adapter, | |||
475 | psl_fircntl |= 0x1ULL; /* ce_thresh */ | 476 | psl_fircntl |= 0x1ULL; /* ce_thresh */ |
476 | cxl_p1_write(adapter, CXL_PSL9_FIR_CNTL, psl_fircntl); | 477 | cxl_p1_write(adapter, CXL_PSL9_FIR_CNTL, psl_fircntl); |
477 | 478 | ||
478 | /* vccredits=0x1 pcklat=0x4 */ | 479 | /* Setup the PSL to transmit packets on the PCIe before the |
479 | cxl_p1_write(adapter, CXL_PSL9_DSNDCTL, 0x0000000000001810ULL); | 480 | * CAPP is enabled |
480 | |||
481 | /* | ||
482 | * For debugging with trace arrays. | ||
483 | * Configure RX trace 0 segmented mode. | ||
484 | * Configure CT trace 0 segmented mode. | ||
485 | * Configure LA0 trace 0 segmented mode. | ||
486 | * Configure LA1 trace 0 segmented mode. | ||
487 | */ | 481 | */ |
488 | cxl_p1_write(adapter, CXL_PSL9_TRACECFG, 0x8040800080000000ULL); | 482 | cxl_p1_write(adapter, CXL_PSL9_DSNDCTL, 0x0001001000002A10ULL); |
489 | cxl_p1_write(adapter, CXL_PSL9_TRACECFG, 0x8040800080000003ULL); | ||
490 | cxl_p1_write(adapter, CXL_PSL9_TRACECFG, 0x8040800080000005ULL); | ||
491 | cxl_p1_write(adapter, CXL_PSL9_TRACECFG, 0x8040800080000006ULL); | ||
492 | 483 | ||
493 | /* | 484 | /* |
494 | * A response to an ASB_Notify request is returned by the | 485 | * A response to an ASB_Notify request is returned by the |
495 | * system as an MMIO write to the address defined in | 486 | * system as an MMIO write to the address defined in |
496 | * the PSL_TNR_ADDR register | 487 | * the PSL_TNR_ADDR register. |
488 | * keep the Reset Value: 0x00020000E0000000 | ||
497 | */ | 489 | */ |
498 | /* PSL_TNR_ADDR */ | ||
499 | 490 | ||
500 | /* NORST */ | 491 | /* Enable XSL rty limit */ |
501 | cxl_p1_write(adapter, CXL_PSL9_DEBUG, 0x8000000000000000ULL); | 492 | cxl_p1_write(adapter, CXL_XSL9_DEF, 0x51F8000000000005ULL); |
493 | |||
494 | /* Change XSL_INV dummy read threshold */ | ||
495 | cxl_p1_write(adapter, CXL_XSL9_INV, 0x0000040007FFC200ULL); | ||
496 | |||
497 | if (phb_index == 3) { | ||
498 | /* disable machines 31-47 and 20-27 for DMA */ | ||
499 | cxl_p1_write(adapter, CXL_PSL9_APCDEDTYPE, 0x40000FF3FFFF0000ULL); | ||
500 | } | ||
502 | 501 | ||
503 | /* allocate the apc machines */ | 502 | /* Snoop machines */ |
504 | cxl_p1_write(adapter, CXL_PSL9_APCDEDTYPE, 0x40000003FFFF0000ULL); | 503 | cxl_p1_write(adapter, CXL_PSL9_APCDEDALLOC, 0x800F000200000000ULL); |
505 | 504 | ||
506 | /* Disable vc dd1 fix */ | 505 | if (cxl_is_power9_dd1()) { |
507 | if (cxl_is_power9_dd1()) | 506 | /* Disabling deadlock counter CAR */ |
508 | cxl_p1_write(adapter, CXL_PSL9_GP_CT, 0x0400000000000001ULL); | 507 | cxl_p1_write(adapter, CXL_PSL9_GP_CT, 0x0020000000000001ULL); |
508 | } else | ||
509 | cxl_p1_write(adapter, CXL_PSL9_DEBUG, 0x4000000000000000ULL); | ||
509 | 510 | ||
510 | return 0; | 511 | return 0; |
511 | } | 512 | } |