• Dmitry Osipenko's avatar
    nfc: pn544: Fix occasional HW initialization failure · c3331d2f
    Dmitry Osipenko authored
    The PN544 driver checks the "enable" polarity during of driver's probe and
    it's doing that by turning ON and OFF NFC with different polarities until
    enabling succeeds. It takes some time for the hardware to power-down, and
    thus, to deassert the IRQ that is raised by turning ON the hardware.
    Since the delay after last power-down of the polarity-checking process is
    missed in the code, the interrupt may trigger immediately after installing
    the IRQ handler (right after the checking is done), which results in IRQ
    handler trying to touch the disabled HW and ends with marking NFC as
    'DEAD' during of the driver's probe:
    
      pn544_hci_i2c 1-002a: NFC: nfc_en polarity : active high
      pn544_hci_i2c 1-002a: NFC: invalid len byte
      shdlc: llc_shdlc_recv_frame: NULL Frame -> link is dead
    
    This patch fixes the occasional NFC initialization failure on Nexus 7
    device.
    Signed-off-by: default avatarDmitry Osipenko <digetx@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c3331d2f
i2c.c 23.9 KB