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

Commit 123a17d1 authored by Frank Schaefer's avatar Frank Schaefer Committed by Mauro Carvalho Chehab
Browse files

[media] em28xx-i2c: fix the error code for unknown errors



Commit e63b009d "em28xx-i2c: Fix error code for I2C error transfers"
changed the code to return -ETIMEDOUT on all unknown errors.
But the proper error code for unknown errors is -EIO.
So only report -ETIMEDOUT in case of the errors 0x02 and 0x04, which
are according to Mauro Carvalho Chehab's tests related to i2c clock
stretching and return -EIO for the rest.

Signed-off-by: default avatarFrank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 8ae8cd6c
Loading
Loading
Loading
Loading
+23 −6
Original line number Diff line number Diff line
@@ -226,12 +226,20 @@ static int em28xx_i2c_send_bytes(struct em28xx *dev, u16 addr, u8 *buf,
		 * (even with high payload) ...
		 */
	}

	if (ret == 0x02 || ret == 0x04) {
		/* NOTE: these errors seem to be related to clock stretching */
		if (i2c_debug)
			em28xx_warn("write to i2c device at 0x%x timed out (status=%i)\n",
				    addr, ret);
		return -ETIMEDOUT;
	}

	em28xx_warn("write to i2c device at 0x%x failed with unknown error (status=%i)\n",
		    addr, ret);
	return -EIO;
}

/*
 * em28xx_i2c_recv_bytes()
 * read a byte from the i2c device
@@ -279,10 +287,19 @@ static int em28xx_i2c_recv_bytes(struct em28xx *dev, u16 addr, u8 *buf, u16 len)
		return -ENXIO;
	}

	em28xx_warn("unknown i2c error (status=%i)\n", ret);
	if (ret == 0x02 || ret == 0x04) {
		/* NOTE: these errors seem to be related to clock stretching */
		if (i2c_debug)
			em28xx_warn("write to i2c device at 0x%x timed out (status=%i)\n",
				    addr, ret);
		return -ETIMEDOUT;
	}

	em28xx_warn("write to i2c device at 0x%x failed with unknown error (status=%i)\n",
		    addr, ret);
	return -EIO;
}

/*
 * em28xx_i2c_check_for_device()
 * check if there is a i2c_device at the supplied address