Lines Matching refs:recv

146 margin_apply_hw_quirks(struct margin_recv *recv, struct margin_link_args *args)  in margin_apply_hw_quirks()  argument
148 switch (recv->dev->hw) in margin_apply_hw_quirks()
151 if (recv->recvn == 1) in margin_apply_hw_quirks()
153 recv->params->volt_offset = 12; in margin_apply_hw_quirks()
154 args->recv_args[recv->recvn - 1].t.one_side_is_whole = true; in margin_apply_hw_quirks()
155 args->recv_args[recv->recvn - 1].t.valid = true; in margin_apply_hw_quirks()
228 step_cmd = MARG_TIM(arg.dir == TIM_LEFT, steps_done, arg.recv->recvn); in margin_test_lanes()
233 step_cmd = MARG_VOLT(arg.dir == VOLT_DOWN, steps_done, arg.recv->recvn); in margin_test_lanes()
241 margin_set_cmd(arg.recv->dev, arg.results[i].lane, NO_COMMAND); in margin_test_lanes()
242 margin_set_cmd(arg.recv->dev, arg.results[i].lane, in margin_test_lanes()
243 SET_ERROR_LIMIT(arg.recv->error_limit, arg.recv->recvn)); in margin_test_lanes()
244 margin_set_cmd(arg.recv->dev, arg.results[i].lane, NO_COMMAND); in margin_test_lanes()
263 int ctrl_addr = LMR_LANE_CTRL(arg.recv->dev->lmr_cap_addr, arg.results[i].lane); in margin_test_lanes()
264 pci_write_word(arg.recv->dev->dev, ctrl_addr, step_cmd); in margin_test_lanes()
267 msleep(arg.recv->dwell_time * 1000); in margin_test_lanes()
273 int status_addr = LMR_LANE_STATUS(arg.recv->dev->lmr_cap_addr, arg.results[i].lane); in margin_test_lanes()
274 lane_status = pci_read_word(arg.recv->dev->dev, status_addr); in margin_test_lanes()
277 && GET_REG_MASK(lane_status, LMR_CMD_RECVN) == arg.recv->recvn in margin_test_lanes()
279 && GET_REG_MASK(lane_status, LMR_PLD_ERR_CNT) <= arg.recv->error_limit in margin_test_lanes()
280 && margin_set_cmd(arg.recv->dev, arg.results[i].lane, NO_COMMAND))) in margin_test_lanes()
297 margin_set_cmd(arg.recv->dev, arg.results[i].lane, NO_COMMAND); in margin_test_lanes()
298 margin_set_cmd(arg.recv->dev, arg.results[i].lane, CLEAR_ERROR_LOG(arg.recv->recvn)); in margin_test_lanes()
299 margin_set_cmd(arg.recv->dev, arg.results[i].lane, NO_COMMAND); in margin_test_lanes()
300 margin_set_cmd(arg.recv->dev, arg.results[i].lane, GO_TO_NORMAL_SETTINGS(arg.recv->recvn)); in margin_test_lanes()
301 margin_set_cmd(arg.recv->dev, arg.results[i].lane, NO_COMMAND); in margin_test_lanes()
314 struct margin_recv recv = { .dev = dev, in margin_test_receiver() local
324 margin_log_recvn(&recv); in margin_test_receiver()
333 if (!read_params_internal(dev, recvn, recv.lane_reversal, &params)) in margin_test_receiver()
335 recv.lane_reversal = true; in margin_test_receiver()
336 if (!read_params_internal(dev, recvn, recv.lane_reversal, &params)) in margin_test_receiver()
346 if (recv.parallel_lanes > params.max_lanes + 1) in margin_test_receiver()
347 recv.parallel_lanes = params.max_lanes + 1; in margin_test_receiver()
348 margin_apply_hw_quirks(&recv, args); in margin_test_receiver()
349 margin_log_hw_quirks(&recv); in margin_test_receiver()
359 results->lane_reversal = recv.lane_reversal; in margin_test_receiver()
363 margin_log_receiver(&recv); in margin_test_receiver()
369 = recv.lane_reversal ? dev->max_width - lanes_to_margin[i] - 1 : lanes_to_margin[i]; in margin_test_receiver()
376 struct margin_lanes_data lanes_data = { .recv = &recv, in margin_test_receiver()
389 use_lanes = (lanes_done + recv.parallel_lanes > lanes_n) ? lanes_n - lanes_done : in margin_test_receiver()
390 recv.parallel_lanes; in margin_test_receiver()
418 if (recv.lane_reversal) in margin_test_receiver()