diff options
author | Andreas Werner <wernerandy@gmx.de> | 2013-11-17 12:46:20 -0500 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2013-11-17 13:29:58 -0500 |
commit | 5e47eec00425830bfaf30f80a1a4f603dc60ae93 (patch) | |
tree | eb6a57725615e3119517a02b6466ad758161948e /drivers/i2c | |
parent | 93d17247118ca533edd489f8e09bde417f4720ce (diff) |
i2c: i2c-eg20t: do not print error message in syslog if no ACK received
Using the i2c-eg20t driver and call i2cdetect or probe on the bus,
the driver will print a lot of error messages if there was no ACK
received.
i2cdetect normally print a table with all the available devices. If there
is no device on the address, the table will be empty.
Currently with the i2c-eg20t driver, the table is not visible because
the error messages destroy the table.
Error message: pch_i2c_getack return -71
This patch prevent the driver to print the messages to syslog.
The pch_i2c_wait_for_check_xfer function is the only one who is
calling pch_i2c_getack, so we can delete the function and add the
read to pch_i2c_wait_for_check_xfer.
If no ACK is received, the Message will be printed as a dbg
message.
Fixed print message to be a one liner so we can grep for the
error message.
Tested on Intel Atom E6xx and Eg20t Chipset.
Signed-off-by: Andreas Werner <wernerandy@gmx.de>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-eg20t.c | 26 |
1 files changed, 4 insertions, 22 deletions
diff --git a/drivers/i2c/busses/i2c-eg20t.c b/drivers/i2c/busses/i2c-eg20t.c index 0f3752967c4b..ff15ae90aaf5 100644 --- a/drivers/i2c/busses/i2c-eg20t.c +++ b/drivers/i2c/busses/i2c-eg20t.c | |||
@@ -312,24 +312,6 @@ static void pch_i2c_start(struct i2c_algo_pch_data *adap) | |||
312 | } | 312 | } |
313 | 313 | ||
314 | /** | 314 | /** |
315 | * pch_i2c_getack() - to confirm ACK/NACK | ||
316 | * @adap: Pointer to struct i2c_algo_pch_data. | ||
317 | */ | ||
318 | static s32 pch_i2c_getack(struct i2c_algo_pch_data *adap) | ||
319 | { | ||
320 | u32 reg_val; | ||
321 | void __iomem *p = adap->pch_base_address; | ||
322 | reg_val = ioread32(p + PCH_I2CSR) & PCH_GETACK; | ||
323 | |||
324 | if (reg_val != 0) { | ||
325 | pch_err(adap, "return%d\n", -EPROTO); | ||
326 | return -EPROTO; | ||
327 | } | ||
328 | |||
329 | return 0; | ||
330 | } | ||
331 | |||
332 | /** | ||
333 | * pch_i2c_stop() - generate stop condition in normal mode. | 315 | * pch_i2c_stop() - generate stop condition in normal mode. |
334 | * @adap: Pointer to struct i2c_algo_pch_data. | 316 | * @adap: Pointer to struct i2c_algo_pch_data. |
335 | */ | 317 | */ |
@@ -344,6 +326,7 @@ static void pch_i2c_stop(struct i2c_algo_pch_data *adap) | |||
344 | static int pch_i2c_wait_for_check_xfer(struct i2c_algo_pch_data *adap) | 326 | static int pch_i2c_wait_for_check_xfer(struct i2c_algo_pch_data *adap) |
345 | { | 327 | { |
346 | long ret; | 328 | long ret; |
329 | void __iomem *p = adap->pch_base_address; | ||
347 | 330 | ||
348 | ret = wait_event_timeout(pch_event, | 331 | ret = wait_event_timeout(pch_event, |
349 | (adap->pch_event_flag != 0), msecs_to_jiffies(1000)); | 332 | (adap->pch_event_flag != 0), msecs_to_jiffies(1000)); |
@@ -366,10 +349,9 @@ static int pch_i2c_wait_for_check_xfer(struct i2c_algo_pch_data *adap) | |||
366 | 349 | ||
367 | adap->pch_event_flag = 0; | 350 | adap->pch_event_flag = 0; |
368 | 351 | ||
369 | if (pch_i2c_getack(adap)) { | 352 | if (ioread32(p + PCH_I2CSR) & PCH_GETACK) { |
370 | pch_dbg(adap, "Receive NACK for slave address" | 353 | pch_dbg(adap, "Receive NACK for slave address setting\n"); |
371 | "setting\n"); | 354 | return -ENXIO; |
372 | return -EIO; | ||
373 | } | 355 | } |
374 | 356 | ||
375 | return 0; | 357 | return 0; |