Commit 59df9bb2 authored by Fabio Estevam's avatar Fabio Estevam Committed by Samuel Ortiz

nxp-nci: i2c: Do not check specifically for -EREMOTEIO error

Function nxp_nci_i2c_write currently assumes in case of
I2C bus NACK that the NFC device is in stand-by mode and
will retry the I2C transaction after a pause. This assumes
that the first failed I2C transaction will wake-up the device.

This is done by checking on EREMOTEIO, which is wrong. According
to Documentation/i2c/fault-codes ENXIO shall be used. Unfortunately
the NOACK return code is currently inconsistent across various I2C
host controller drivers. So only check for the generic error case
instead.

This is a temporary fix. As soon as all I2C bus master drivers are
fixed to consistently return 'ENXIO', then we can do the specific
error check again.
Signed-off-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent 7f151f1d
...@@ -85,7 +85,7 @@ static int nxp_nci_i2c_write(void *phy_id, struct sk_buff *skb) ...@@ -85,7 +85,7 @@ static int nxp_nci_i2c_write(void *phy_id, struct sk_buff *skb)
return phy->hard_fault; return phy->hard_fault;
r = i2c_master_send(client, skb->data, skb->len); r = i2c_master_send(client, skb->data, skb->len);
if (r == -EREMOTEIO) { if (r < 0) {
/* Retry, chip was in standby */ /* Retry, chip was in standby */
usleep_range(110000, 120000); usleep_range(110000, 120000);
r = i2c_master_send(client, skb->data, skb->len); r = i2c_master_send(client, skb->data, skb->len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment