IB/hfi1: Wait for QSFP modules to initialize
authorEaswar Hariharan <easwar.hariharan@intel.com>
Thu, 12 May 2016 17:22:39 +0000 (10:22 -0700)
committerDoug Ledford <dledford@redhat.com>
Fri, 13 May 2016 23:39:14 +0000 (19:39 -0400)
commit9775a991f9bdbdde3cc38e553326755af5b2b2a9
treea0101d0215a599c762af30592d2ab7fae7f2ff11
parent0c7f77afb7f6e74af899584ac672c8d9e63058b0
IB/hfi1: Wait for QSFP modules to initialize

The function level reset in init_chip() and subsequent write of all 1s
to the ASIC_QSFP registers effectively resets attached active and
optical QSFP modules that pay attention to the RESET_N pin.

We subsequently try to access the QSFP management interface to qualify
and tune the channel and fabric SerDes before enough time (2 seconds
per SFF 8679 spec for QSFP28 modules) has elapsed for the module to
finish initialization. This fails and causes the failure of the channel
tuning algorithm, preventing us from bringing the link up.

This patch checks the port type prior to beginning channel and SerDes
tuning, and if found to be QSFP, watches for the QSFP initialization
complete interrupt, with a maximum timeout of 2 seconds, to allow the
initialization to complete.

Reviewed-by: Dean Luick <dean.luick@intel.com>
Signed-off-by: Easwar Hariharan <easwar.hariharan@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/staging/rdma/hfi1/chip.c
drivers/staging/rdma/hfi1/platform.c
drivers/staging/rdma/hfi1/platform.h