Commit 99363d1c authored by Jean Delvare's avatar Jean Delvare Committed by Bartosz Golaszewski
Browse files

eeprom: at24: Tidy at24_read()



The elegant code in at24_read() has the drawback that we now need
to make a copy of all parameters to pass them to the post-processing
callback function if there is one. Rewrite the loop in such a way that
the parameters are not modified, so saving them is no longer needed.

Signed-off-by: default avatarJean Delvare <jdelvare@suse.de>
Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarBartosz Golaszewski <bgolaszewski@baylibre.com>
parent a4423ced
Loading
Loading
Loading
Loading
+4 −10
Original line number Diff line number Diff line
@@ -422,10 +422,7 @@ static int at24_read(void *priv, unsigned int off, void *val, size_t count)
	struct at24_data *at24;
	struct device *dev;
	char *buf = val;
	int ret;
	unsigned int orig_off = off;
	char *orig_buf = buf;
	size_t orig_count = count;
	int i, ret;

	at24 = priv;
	dev = at24_base_client_dev(at24);
@@ -448,16 +445,13 @@ static int at24_read(void *priv, unsigned int off, void *val, size_t count)
	 */
	mutex_lock(&at24->lock);

	while (count) {
		ret = at24_regmap_read(at24, buf, off, count);
	for (i = 0; count; i += ret, count -= ret) {
		ret = at24_regmap_read(at24, buf + i, off + i, count);
		if (ret < 0) {
			mutex_unlock(&at24->lock);
			pm_runtime_put(dev);
			return ret;
		}
		buf += ret;
		off += ret;
		count -= ret;
	}

	mutex_unlock(&at24->lock);
@@ -465,7 +459,7 @@ static int at24_read(void *priv, unsigned int off, void *val, size_t count)
	pm_runtime_put(dev);

	if (unlikely(at24->read_post))
		at24->read_post(orig_off, orig_buf, orig_count);
		at24->read_post(off, buf, i);

	return 0;
}