summaryrefslogtreecommitdiffstats
path: root/drivers/staging/rdma/hfi1/chip.c
diff options
context:
space:
mode:
authorEaswar Hariharan2015-11-07 02:06:57 +0100
committerGreg Kroah-Hartman2015-11-16 05:02:47 +0100
commit72a67ba2fa69737757c637ac541a4f0271efb41d (patch)
tree793ae07b62f5f54ab37d1a05758a68da1c208b42 /drivers/staging/rdma/hfi1/chip.c
parentstaging/rdma/hfi1: Convert dd_dev_info() to hfi1_cdbg() in process startup (diff)
downloadkernel-qcow2-linux-72a67ba2fa69737757c637ac541a4f0271efb41d.tar.gz
kernel-qcow2-linux-72a67ba2fa69737757c637ac541a4f0271efb41d.tar.xz
kernel-qcow2-linux-72a67ba2fa69737757c637ac541a4f0271efb41d.zip
staging/rdma/hfi1: Clear the QSFP reset that is asserted on FLR
The FLR on driver load asserts the QSFP reset pin and the driver does not deassert it after. This patch allows the external QSFP cable to exit reset by writing 1 to all the QSFP pins. Reviewed-by: Dean Luick <dean.luick@intel.com> Signed-off-by: Easwar Hariharan <easwar.hariharan@intel.com> Signed-off-by: Jubin John <jubin.john@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/rdma/hfi1/chip.c')
-rw-r--r--drivers/staging/rdma/hfi1/chip.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/staging/rdma/hfi1/chip.c b/drivers/staging/rdma/hfi1/chip.c
index 4e22477c9739..dd2ba2516a66 100644
--- a/drivers/staging/rdma/hfi1/chip.c
+++ b/drivers/staging/rdma/hfi1/chip.c
@@ -9923,19 +9923,16 @@ static void init_chip(struct hfi1_devdata *dd)
setextled(dd, 0);
/*
* Clear the QSFP reset.
- * A0 leaves the out lines floating on power on, then on an FLR
- * enforces a 0 on all out pins. The driver does not touch
+ * An FLR enforces a 0 on all out pins. The driver does not touch
* ASIC_QSFPn_OUT otherwise. This leaves RESET_N low and
- * anything plugged constantly in reset, if it pays attention
+ * anything plugged constantly in reset, if it pays attention
* to RESET_N.
- * A prime example of this is SiPh. For now, set all pins high.
+ * Prime examples of this are optical cables. Set all pins high.
* I2CCLK and I2CDAT will change per direction, and INT_N and
* MODPRS_N are input only and their value is ignored.
*/
- if (is_a0(dd)) {
- write_csr(dd, ASIC_QSFP1_OUT, 0x1f);
- write_csr(dd, ASIC_QSFP2_OUT, 0x1f);
- }
+ write_csr(dd, ASIC_QSFP1_OUT, 0x1f);
+ write_csr(dd, ASIC_QSFP2_OUT, 0x1f);
}
static void init_early_variables(struct hfi1_devdata *dd)