Merge branch 'hfi1' into k.o/for-next
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
@@ -9185,25 +9185,6 @@ static int do_quick_linkup(struct hfi1_devdata *dd)
|
||||
return 0; /* success */
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the SerDes to internal loopback mode.
|
||||
* Returns 0 on success, -errno on error.
|
||||
*/
|
||||
static int set_serdes_loopback_mode(struct hfi1_devdata *dd)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = set_physical_link_state(dd, PLS_INTERNAL_SERDES_LOOPBACK);
|
||||
if (ret == HCMD_SUCCESS)
|
||||
return 0;
|
||||
dd_dev_err(dd,
|
||||
"Set physical link state to SerDes Loopback failed with return %d\n",
|
||||
ret);
|
||||
if (ret >= 0)
|
||||
ret = -EINVAL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Do all special steps to set up loopback.
|
||||
*/
|
||||
@@ -9229,13 +9210,11 @@ static int init_loopback(struct hfi1_devdata *dd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* handle serdes loopback */
|
||||
if (loopback == LOOPBACK_SERDES) {
|
||||
/* internal serdes loopack needs quick linkup on RTL */
|
||||
if (dd->icode == ICODE_RTL_SILICON)
|
||||
quick_linkup = 1;
|
||||
return set_serdes_loopback_mode(dd);
|
||||
}
|
||||
/*
|
||||
* SerDes loopback init sequence is handled in set_local_link_attributes
|
||||
*/
|
||||
if (loopback == LOOPBACK_SERDES)
|
||||
return 0;
|
||||
|
||||
/* LCB loopback - handled at poll time */
|
||||
if (loopback == LOOPBACK_LCB) {
|
||||
@@ -9294,7 +9273,7 @@ static int set_local_link_attributes(struct hfi1_pportdata *ppd)
|
||||
u8 tx_polarity_inversion;
|
||||
u8 rx_polarity_inversion;
|
||||
int ret;
|
||||
|
||||
u32 misc_bits = 0;
|
||||
/* reset our fabric serdes to clear any lingering problems */
|
||||
fabric_serdes_reset(dd);
|
||||
|
||||
@@ -9340,7 +9319,14 @@ static int set_local_link_attributes(struct hfi1_pportdata *ppd)
|
||||
if (ret != HCMD_SUCCESS)
|
||||
goto set_local_link_attributes_fail;
|
||||
|
||||
ret = write_vc_local_link_width(dd, 0, 0,
|
||||
/*
|
||||
* SerDes loopback init sequence requires
|
||||
* setting bit 0 of MISC_CONFIG_BITS
|
||||
*/
|
||||
if (loopback == LOOPBACK_SERDES)
|
||||
misc_bits |= 1 << LOOPBACK_SERDES_CONFIG_BIT_MASK_SHIFT;
|
||||
|
||||
ret = write_vc_local_link_width(dd, misc_bits, 0,
|
||||
opa_to_vc_link_widths(
|
||||
ppd->link_width_enabled));
|
||||
if (ret != HCMD_SUCCESS)
|
||||
|
Reference in New Issue
Block a user