Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e47eec0 authored by Andreas Werner's avatar Andreas Werner Committed by Wolfram Sang
Browse files

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: default avatarAndreas Werner <wernerandy@gmx.de>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent 93d17247
Loading
Loading
Loading
Loading
+4 −22
Original line number Diff line number Diff line
@@ -311,24 +311,6 @@ static void pch_i2c_start(struct i2c_algo_pch_data *adap)
	pch_setbit(adap->pch_base_address, PCH_I2CCTL, PCH_START);
}

/**
 * pch_i2c_getack() - to confirm ACK/NACK
 * @adap:	Pointer to struct i2c_algo_pch_data.
 */
static s32 pch_i2c_getack(struct i2c_algo_pch_data *adap)
{
	u32 reg_val;
	void __iomem *p = adap->pch_base_address;
	reg_val = ioread32(p + PCH_I2CSR) & PCH_GETACK;

	if (reg_val != 0) {
		pch_err(adap, "return%d\n", -EPROTO);
		return -EPROTO;
	}

	return 0;
}

/**
 * pch_i2c_stop() - generate stop condition in normal mode.
 * @adap:	Pointer to struct i2c_algo_pch_data.
@@ -344,6 +326,7 @@ static void pch_i2c_stop(struct i2c_algo_pch_data *adap)
static int pch_i2c_wait_for_check_xfer(struct i2c_algo_pch_data *adap)
{
	long ret;
	void __iomem *p = adap->pch_base_address;

	ret = wait_event_timeout(pch_event,
			(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)

	adap->pch_event_flag = 0;

	if (pch_i2c_getack(adap)) {
		pch_dbg(adap, "Receive NACK for slave address"
			"setting\n");
		return -EIO;
	if (ioread32(p + PCH_I2CSR) & PCH_GETACK) {
		pch_dbg(adap, "Receive NACK for slave address setting\n");
		return -ENXIO;
	}

	return 0;