• Stefan Richter's avatar
    firewire: ohci: fix probe failure with Agere/LSI controllers · 0ca49345
    Stefan Richter authored
    Since commit bd972688
    "firewire: ohci: Fix 'failed to read phy reg' on FW643 rev8",
    there is a high chance that firewire-ohci fails to initialize LSI née
    Agere controllers.
    https://bugzilla.kernel.org/show_bug.cgi?id=65151
    
    Peter Hurley points out the reason:  IEEE 1394a:2000 clause 5A.1 (or
    IEEE 1394:2008 clause 17.2.1) say:  "The PHY shall insure that no more
    than 10 ms elapse from the reassertion of LPS until the interface is
    reset.  The link shall not assert LReq until the reset is complete."
    In other words, the link needs to give the PHY at least 10 ms to get
    the interface operational.
    
    With just the msleep(1) in bd972688, the first read_phy_reg()
    during ohci_enable() may happen before the phy-link interface reset was
    finished, and fail.  Due to the high variability of msleep(n) with small
    n, this failure was not fully reproducible, and not apparent at all with
    low CONFIG_HZ setting.
    
    On the other hand, Peter can no longer reproduce the issue with FW643
    rev8.  The read phy reg failures that happened back then may have had an
    unrelated cause.  So, just revert bd972688, except for the valid
    comment on TSB82AA2 cards.
    
    Reported-by: Mikhail Gavrilov
    Reported-by: default avatarJay Fenlason <fenlason@redhat.com>
    Reported-by: default avatarClemens Ladisch <clemens@ladisch.de>
    Reported-by: default avatarPeter Hurley <peter@hurleysoftware.com>
    Cc: stable@vger.kernel.org # v3.10+
    Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
    0ca49345
ohci.c 105 KB