CC: [email protected] BCC: [email protected] CC: [email protected] TO: Jimmy Kizito <[email protected]> CC: Alex Deucher <[email protected]> CC: Jun Lei <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 4b35035bcf80ddb47c0112c4fbd84a63a2836a18 commit: 847a9038c2d025b32cd7ddcc2ccfa0e82a8ded53 drm/amd/display: Implement DPIA equalisation phase date: 9 months ago :::::: branch date: 2 days ago :::::: commit date: 9 months ago config: parisc-randconfig-m031-20220619 (https://download.01.org/0day-ci/archive/20220619/[email protected]/config) compiler: hppa-linux-gcc (GCC) 11.3.0 If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> New smatch warnings: drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_link_dpia.c:587 dpia_training_eq_non_transparent() error: uninitialized symbol 'wait_time_microsec'. Old smatch warnings: drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_link_dpia.c:158 convert_trng_ptn_to_trng_stg() error: uninitialized symbol 'ts'. drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_link_dpia.c:803 dc_link_dpia_perform_link_training() warn: always true condition '(repeater_id >= 0) => (0-255 >= 0)' drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_link_dpia.c:803 dc_link_dpia_perform_link_training() warn: always true condition '(repeater_id >= 0) => (0-255 >= 0)' vim +/wait_time_microsec +587 drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_link_dpia.c 847a9038c2d025b Jimmy Kizito 2021-04-19 497 847a9038c2d025b Jimmy Kizito 2021-04-19 498 /* Execute equalization phase of link training for specified hop in display 847a9038c2d025b Jimmy Kizito 2021-04-19 499 * path in non-transparent mode: 847a9038c2d025b Jimmy Kizito 2021-04-19 500 * - driver issues both DPCD and SET_CONFIG transactions. 847a9038c2d025b Jimmy Kizito 2021-04-19 501 * - TPSx is transmitted for any hops downstream of DPOA. 847a9038c2d025b Jimmy Kizito 2021-04-19 502 * - Drive (VS/PE) only transmitted for the hop immediately downstream of DPOA. 847a9038c2d025b Jimmy Kizito 2021-04-19 503 * - EQ for the first hop (DPTX-to-DPIA) is assumed to be successful. 847a9038c2d025b Jimmy Kizito 2021-04-19 504 * - DPRX EQ only reported successful when both DPRX and DPIA requirements 847a9038c2d025b Jimmy Kizito 2021-04-19 505 * (clk sync packets sent) fulfilled. 847a9038c2d025b Jimmy Kizito 2021-04-19 506 * 847a9038c2d025b Jimmy Kizito 2021-04-19 507 * @param link DPIA link being trained. 847a9038c2d025b Jimmy Kizito 2021-04-19 508 * @param lt_settings link_setting and drive settings (voltage swing and pre-emphasis). 847a9038c2d025b Jimmy Kizito 2021-04-19 509 * @param hop The Hop in display path. DPRX = 0. 847a9038c2d025b Jimmy Kizito 2021-04-19 510 */ 847a9038c2d025b Jimmy Kizito 2021-04-19 511 static enum link_training_result dpia_training_eq_non_transparent(struct dc_link *link, 847a9038c2d025b Jimmy Kizito 2021-04-19 512 struct link_training_settings *lt_settings, 847a9038c2d025b Jimmy Kizito 2021-04-19 513 uint32_t hop) 847a9038c2d025b Jimmy Kizito 2021-04-19 514 { 847a9038c2d025b Jimmy Kizito 2021-04-19 515 enum link_training_result result = LINK_TRAINING_EQ_FAIL_EQ; 847a9038c2d025b Jimmy Kizito 2021-04-19 516 uint8_t repeater_cnt = 0; /* Number of hops/repeaters in display path. */ 847a9038c2d025b Jimmy Kizito 2021-04-19 517 uint32_t retries_eq = 0; 847a9038c2d025b Jimmy Kizito 2021-04-19 518 enum dc_status status; 847a9038c2d025b Jimmy Kizito 2021-04-19 519 enum dc_dp_training_pattern tr_pattern; 847a9038c2d025b Jimmy Kizito 2021-04-19 520 uint32_t wait_time_microsec; 847a9038c2d025b Jimmy Kizito 2021-04-19 521 struct link_training_settings req_settings; 847a9038c2d025b Jimmy Kizito 2021-04-19 522 enum dc_lane_count lane_count = lt_settings->link_settings.lane_count; 847a9038c2d025b Jimmy Kizito 2021-04-19 523 union lane_align_status_updated dpcd_lane_status_updated = { {0} }; 847a9038c2d025b Jimmy Kizito 2021-04-19 524 union lane_status dpcd_lane_status[LANE_COUNT_DP_MAX] = { { {0} } }; 847a9038c2d025b Jimmy Kizito 2021-04-19 525 uint8_t set_cfg_data; 847a9038c2d025b Jimmy Kizito 2021-04-19 526 enum dpia_set_config_ts ts; 847a9038c2d025b Jimmy Kizito 2021-04-19 527 847a9038c2d025b Jimmy Kizito 2021-04-19 528 /* Training pattern is TPS4 for repeater; 847a9038c2d025b Jimmy Kizito 2021-04-19 529 * TPS2/3/4 for DPRX depending on what it supports. 847a9038c2d025b Jimmy Kizito 2021-04-19 530 */ 847a9038c2d025b Jimmy Kizito 2021-04-19 531 if (hop == DPRX) 847a9038c2d025b Jimmy Kizito 2021-04-19 532 tr_pattern = lt_settings->pattern_for_eq; 847a9038c2d025b Jimmy Kizito 2021-04-19 533 else 847a9038c2d025b Jimmy Kizito 2021-04-19 534 tr_pattern = DP_TRAINING_PATTERN_SEQUENCE_4; 847a9038c2d025b Jimmy Kizito 2021-04-19 535 847a9038c2d025b Jimmy Kizito 2021-04-19 536 repeater_cnt = dp_convert_to_count(link->dpcd_caps.lttpr_caps.phy_repeater_cnt); 847a9038c2d025b Jimmy Kizito 2021-04-19 537 847a9038c2d025b Jimmy Kizito 2021-04-19 538 for (retries_eq = 0; retries_eq < LINK_TRAINING_MAX_RETRY_COUNT; retries_eq++) { 847a9038c2d025b Jimmy Kizito 2021-04-19 539 /* DPTX-to-DPIA equalization always successful. */ 847a9038c2d025b Jimmy Kizito 2021-04-19 540 if (hop == repeater_cnt) { 847a9038c2d025b Jimmy Kizito 2021-04-19 541 result = LINK_TRAINING_SUCCESS; 847a9038c2d025b Jimmy Kizito 2021-04-19 542 break; 847a9038c2d025b Jimmy Kizito 2021-04-19 543 } 847a9038c2d025b Jimmy Kizito 2021-04-19 544 847a9038c2d025b Jimmy Kizito 2021-04-19 545 /* Instruct DPOA to transmit TPSn then update DPCD. */ 847a9038c2d025b Jimmy Kizito 2021-04-19 546 if (retries_eq == 0) { 847a9038c2d025b Jimmy Kizito 2021-04-19 547 ts = convert_trng_ptn_to_trng_stg(tr_pattern); 847a9038c2d025b Jimmy Kizito 2021-04-19 548 status = core_link_send_set_config(link, 847a9038c2d025b Jimmy Kizito 2021-04-19 549 DPIA_SET_CFG_SET_TRAINING, 847a9038c2d025b Jimmy Kizito 2021-04-19 550 ts); 847a9038c2d025b Jimmy Kizito 2021-04-19 551 if (status != DC_OK) { 847a9038c2d025b Jimmy Kizito 2021-04-19 552 result = LINK_TRAINING_ABORT; 847a9038c2d025b Jimmy Kizito 2021-04-19 553 break; 847a9038c2d025b Jimmy Kizito 2021-04-19 554 } 847a9038c2d025b Jimmy Kizito 2021-04-19 555 status = dpcd_set_lt_pattern(link, tr_pattern, hop); 847a9038c2d025b Jimmy Kizito 2021-04-19 556 if (status != DC_OK) { 847a9038c2d025b Jimmy Kizito 2021-04-19 557 result = LINK_TRAINING_ABORT; 847a9038c2d025b Jimmy Kizito 2021-04-19 558 break; 847a9038c2d025b Jimmy Kizito 2021-04-19 559 } 847a9038c2d025b Jimmy Kizito 2021-04-19 560 } 847a9038c2d025b Jimmy Kizito 2021-04-19 561 847a9038c2d025b Jimmy Kizito 2021-04-19 562 /* Update DPOA drive settings then DPCD. DPOA only adjusts 847a9038c2d025b Jimmy Kizito 2021-04-19 563 * drive settings for hop immediately downstream. 847a9038c2d025b Jimmy Kizito 2021-04-19 564 */ 847a9038c2d025b Jimmy Kizito 2021-04-19 565 if (hop == repeater_cnt - 1) { 847a9038c2d025b Jimmy Kizito 2021-04-19 566 set_cfg_data = dpia_build_set_config_data(DPIA_SET_CFG_SET_VSPE, 847a9038c2d025b Jimmy Kizito 2021-04-19 567 link, 847a9038c2d025b Jimmy Kizito 2021-04-19 568 lt_settings); 847a9038c2d025b Jimmy Kizito 2021-04-19 569 status = core_link_send_set_config(link, 847a9038c2d025b Jimmy Kizito 2021-04-19 570 DPIA_SET_CFG_SET_VSPE, 847a9038c2d025b Jimmy Kizito 2021-04-19 571 set_cfg_data); 847a9038c2d025b Jimmy Kizito 2021-04-19 572 if (status != DC_OK) { 847a9038c2d025b Jimmy Kizito 2021-04-19 573 result = LINK_TRAINING_ABORT; 847a9038c2d025b Jimmy Kizito 2021-04-19 574 break; 847a9038c2d025b Jimmy Kizito 2021-04-19 575 } 847a9038c2d025b Jimmy Kizito 2021-04-19 576 } 847a9038c2d025b Jimmy Kizito 2021-04-19 577 status = dpcd_set_lane_settings(link, lt_settings, hop); 847a9038c2d025b Jimmy Kizito 2021-04-19 578 if (status != DC_OK) { 847a9038c2d025b Jimmy Kizito 2021-04-19 579 result = LINK_TRAINING_ABORT; 847a9038c2d025b Jimmy Kizito 2021-04-19 580 break; 847a9038c2d025b Jimmy Kizito 2021-04-19 581 } 847a9038c2d025b Jimmy Kizito 2021-04-19 582 847a9038c2d025b Jimmy Kizito 2021-04-19 583 /* Extend wait time on second equalisation attempt on final hop to 847a9038c2d025b Jimmy Kizito 2021-04-19 584 * ensure clock sync packets have been sent. 847a9038c2d025b Jimmy Kizito 2021-04-19 585 */ 847a9038c2d025b Jimmy Kizito 2021-04-19 586 if (hop == DPRX && retries_eq == 1) 847a9038c2d025b Jimmy Kizito 2021-04-19 @587 wait_time_microsec = max(wait_time_microsec, (uint32_t)DPIA_CLK_SYNC_DELAY); 847a9038c2d025b Jimmy Kizito 2021-04-19 588 else 847a9038c2d025b Jimmy Kizito 2021-04-19 589 wait_time_microsec = dpia_get_eq_aux_rd_interval(link, lt_settings, hop); 847a9038c2d025b Jimmy Kizito 2021-04-19 590 847a9038c2d025b Jimmy Kizito 2021-04-19 591 dp_wait_for_training_aux_rd_interval(link, wait_time_microsec); 847a9038c2d025b Jimmy Kizito 2021-04-19 592 847a9038c2d025b Jimmy Kizito 2021-04-19 593 /* Read status and adjustment requests from DPCD. */ 847a9038c2d025b Jimmy Kizito 2021-04-19 594 status = dp_get_lane_status_and_drive_settings(link, 847a9038c2d025b Jimmy Kizito 2021-04-19 595 lt_settings, 847a9038c2d025b Jimmy Kizito 2021-04-19 596 dpcd_lane_status, 847a9038c2d025b Jimmy Kizito 2021-04-19 597 &dpcd_lane_status_updated, 847a9038c2d025b Jimmy Kizito 2021-04-19 598 &req_settings, 847a9038c2d025b Jimmy Kizito 2021-04-19 599 hop); 847a9038c2d025b Jimmy Kizito 2021-04-19 600 if (status != DC_OK) { 847a9038c2d025b Jimmy Kizito 2021-04-19 601 result = LINK_TRAINING_ABORT; 847a9038c2d025b Jimmy Kizito 2021-04-19 602 break; 847a9038c2d025b Jimmy Kizito 2021-04-19 603 } 847a9038c2d025b Jimmy Kizito 2021-04-19 604 847a9038c2d025b Jimmy Kizito 2021-04-19 605 /* CR can still fail during EQ phase. Fail training if CR fails. */ 847a9038c2d025b Jimmy Kizito 2021-04-19 606 if (!dp_is_cr_done(lane_count, dpcd_lane_status)) { 847a9038c2d025b Jimmy Kizito 2021-04-19 607 result = LINK_TRAINING_EQ_FAIL_CR; 847a9038c2d025b Jimmy Kizito 2021-04-19 608 break; 847a9038c2d025b Jimmy Kizito 2021-04-19 609 } 847a9038c2d025b Jimmy Kizito 2021-04-19 610 847a9038c2d025b Jimmy Kizito 2021-04-19 611 if (dp_is_ch_eq_done(lane_count, dpcd_lane_status) && 847a9038c2d025b Jimmy Kizito 2021-04-19 612 dp_is_symbol_locked(link->cur_link_settings.lane_count, dpcd_lane_status) && 847a9038c2d025b Jimmy Kizito 2021-04-19 613 dp_is_interlane_aligned(dpcd_lane_status_updated)) { 847a9038c2d025b Jimmy Kizito 2021-04-19 614 result = LINK_TRAINING_SUCCESS; 847a9038c2d025b Jimmy Kizito 2021-04-19 615 break; 847a9038c2d025b Jimmy Kizito 2021-04-19 616 } 847a9038c2d025b Jimmy Kizito 2021-04-19 617 847a9038c2d025b Jimmy Kizito 2021-04-19 618 /* Update VS/PE. */ 847a9038c2d025b Jimmy Kizito 2021-04-19 619 dp_update_drive_settings(lt_settings, req_settings); 847a9038c2d025b Jimmy Kizito 2021-04-19 620 } 847a9038c2d025b Jimmy Kizito 2021-04-19 621 847a9038c2d025b Jimmy Kizito 2021-04-19 622 /* Abort link training if equalization failed due to HPD unplug. */ 847a9038c2d025b Jimmy Kizito 2021-04-19 623 if (!link->hpd_status) 847a9038c2d025b Jimmy Kizito 2021-04-19 624 result = LINK_TRAINING_ABORT; 847a9038c2d025b Jimmy Kizito 2021-04-19 625 847a9038c2d025b Jimmy Kizito 2021-04-19 626 DC_LOG_HW_LINK_TRAINING("%s\n DPIA(%d) equalization\n" 847a9038c2d025b Jimmy Kizito 2021-04-19 627 " - hop(%d)\n - result(%d)\n - retries(%d)\n", 847a9038c2d025b Jimmy Kizito 2021-04-19 628 __func__, 847a9038c2d025b Jimmy Kizito 2021-04-19 629 link->link_id.enum_id - ENUM_ID_1, 847a9038c2d025b Jimmy Kizito 2021-04-19 630 hop, 847a9038c2d025b Jimmy Kizito 2021-04-19 631 result, 847a9038c2d025b Jimmy Kizito 2021-04-19 632 retries_eq); 847a9038c2d025b Jimmy Kizito 2021-04-19 633 847a9038c2d025b Jimmy Kizito 2021-04-19 634 return result; 847a9038c2d025b Jimmy Kizito 2021-04-19 635 } 847a9038c2d025b Jimmy Kizito 2021-04-19 636 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
