nfc: nxp-nci: treat -ENXIO in IRQ thread as no data available

The I2C read operation in the IRQ thread may return -ENXIO
when the controller has not yet provided data after asserting IRQ.

IRQ assertion does not guarantee that data is immediately
available on the I2C bus. In such cases, the read request may
be NACKed, resulting in -ENXIO.

Treat this condition as "no data available yet" and log it at
debug level instead of reporting it as a read failure.

This avoids misleading error messages during normal operation.

Signed-off-by: Carl Lee <carl.lee@amd.com>
Link: https://patch.msgid.link/20260526-nfc-nxp-nci-treat-enxio-as-no-data-available-yet-v1-1-305bb11b9147@amd.com
Signed-off-by: David Heidelberg <david@ixit.cz>
This commit is contained in:
Carl Lee 2026-05-26 09:50:29 +08:00 committed by David Heidelberg
parent 791ccc8644
commit 2d78676b1f
No known key found for this signature in database
GPG Key ID: 60023FC4D3492072

View File

@ -231,6 +231,14 @@ static irqreturn_t nxp_nci_i2c_irq_thread_fn(int irq, void *phy_id)
if (info->mode == NXP_NCI_MODE_FW)
nxp_nci_fw_recv_frame(phy->ndev, NULL);
}
if (r == -ENXIO) {
/*
* -ENXIO may occur if the controller has not yet
* provided data after asserting IRQ.
*/
dev_dbg(&client->dev, "No data available yet\n");
goto exit_irq_handled;
}
if (r < 0) {
nfc_err(&client->dev, "Read failed with error %d\n", r);
goto exit_irq_handled;