diff options
Diffstat (limited to 'drivers/i2c/i2c-core-acpi.c')
| -rw-r--r-- | drivers/i2c/i2c-core-acpi.c | 13 | 
1 files changed, 10 insertions, 3 deletions
| diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c index a9126b3cda61..7c3b4740b94b 100644 --- a/drivers/i2c/i2c-core-acpi.c +++ b/drivers/i2c/i2c-core-acpi.c @@ -445,10 +445,17 @@ static int acpi_gsb_i2c_read_bytes(struct i2c_client *client,  	msgs[1].buf = buffer;  	ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs)); -	if (ret < 0) -		dev_err(&client->adapter->dev, "i2c read failed\n"); -	else +	if (ret < 0) { +		/* Getting a NACK is unfortunately normal with some DSTDs */ +		if (ret == -EREMOTEIO) +			dev_dbg(&client->adapter->dev, "i2c read %d bytes from client@%#x starting at reg %#x failed, error: %d\n", +				data_len, client->addr, cmd, ret); +		else +			dev_err(&client->adapter->dev, "i2c read %d bytes from client@%#x starting at reg %#x failed, error: %d\n", +				data_len, client->addr, cmd, ret); +	} else {  		memcpy(data, buffer, data_len); +	}  	kfree(buffer);  	return ret; | 
