Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1677634

[RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses

From Claudiu Beznea <claudiu.beznea@microchip.com>
Newsgroups linux.kernel
Subject [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses
Date 2017-06-29 13:40 +0200
Message-ID <tXFXJ-6YG-33@gated-at.bofh.it> (permalink)
References <tXFXH-6YG-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Add support for reading from different offsets of EEPROM.
The offset is initialized via device tree. If nothing is
given as input the old value, 0x90, is used. In this way
the driver could be used as generic driver for different
vendor memories by only changing the reading offset via
device tree.

Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
---
 drivers/misc/eeprom/at24.c         | 5 ++++-
 include/linux/platform_data/at24.h | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/eeprom/at24.c b/drivers/misc/eeprom/at24.c
index 764ff5df..53c5fb8 100644
--- a/drivers/misc/eeprom/at24.c
+++ b/drivers/misc/eeprom/at24.c
@@ -365,7 +365,7 @@ static ssize_t at24_eeprom_read_mac(struct at24_data *at24, char *buf,
 	memset(msg, 0, sizeof(msg));
 	msg[0].addr = client->addr;
 	msg[0].buf = addrbuf;
-	addrbuf[0] = 0x90 + offset;
+	addrbuf[0] = at24->chip.offset + offset;
 	msg[0].len = 1;
 	msg[1].addr = client->addr;
 	msg[1].flags = I2C_M_RD;
@@ -581,6 +581,9 @@ static void at24_get_pdata(struct device *dev, struct at24_platform_data *chip)
 		 */
 		chip->page_size = 1;
 	}
+	err = device_property_read_u8(dev, "start-offset", &chip->offset);
+	if (err)
+		chip->offset = 0x90;
 }
 
 static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id)
diff --git a/include/linux/platform_data/at24.h b/include/linux/platform_data/at24.h
index 271a4e2..d55c454 100644
--- a/include/linux/platform_data/at24.h
+++ b/include/linux/platform_data/at24.h
@@ -50,6 +50,7 @@ struct at24_platform_data {
 #define AT24_FLAG_TAKE8ADDR	BIT(4)	/* take always 8 addresses (24c00) */
 #define AT24_FLAG_SERIAL	BIT(3)	/* factory-programmed serial number */
 #define AT24_FLAG_MAC		BIT(2)	/* factory-programmed mac address */
+	u8		offset;
 
 	void		(*setup)(struct nvmem_device *nvmem, void *context);
 	void		*context;
-- 
2.7.4

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac eeprom from different addresses Claudiu Beznea <claudiu.beznea@microchip.com> - 2017-06-29 13:40 +0200
  Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac  eeprom from different addresses Andy Shevchenko <andy.shevchenko@gmail.com> - 2017-06-29 14:00 +0200
    Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac  eeprom from different addresses Ludovic Desroches <ludovic.desroches@microchip.com> - 2017-06-29 15:40 +0200
  Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac  eeprom from different addresses David Lechner <david@lechnology.com> - 2017-06-29 18:20 +0200
  Re: [RFC PATCH 2/3] drivers: misc: eeprom: at24: support reading mac  eeprom from different addresses Uwe Kleine-König          <u.kleine-koenig@pengutronix.de> - 2017-06-30 09:30 +0200

csiph-web