diff mbox

[U-Boot,v3,1/2] i2c_eeprom: add read and write functions

Message ID MMXP123MB1376E4CD583AD593E68C515DAC1D0@MMXP123MB1376.GBRP123.PROD.OUTLOOK.COM
State Accepted
Commit 8880efbd1ffd54bcddb427229ff925151a054257
Delegated to: Simon Glass
Headers show

Commit Message

Jonas Karlman April 22, 2017, 8:57 a.m. UTC
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---

Changes in v3:
- Add i2c_eeprom_{read,write} functions

Changes in v2: None

 drivers/misc/i2c_eeprom.c | 32 ++++++++++++++++++++++++++------
 include/i2c_eeprom.h      | 24 ++++++++++++++++++++++++
 2 files changed, 50 insertions(+), 6 deletions(-)

Comments

Simon Glass April 29, 2017, 12:26 a.m. UTC | #1
On 22 April 2017 at 02:57, Jonas Karlman <jonas@kwiboo.se> wrote:
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> ---
>
> Changes in v3:
> - Add i2c_eeprom_{read,write} functions
>
> Changes in v2: None
>
>  drivers/misc/i2c_eeprom.c | 32 ++++++++++++++++++++++++++------
>  include/i2c_eeprom.h      | 24 ++++++++++++++++++++++++
>  2 files changed, 50 insertions(+), 6 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>
Simon Glass May 2, 2017, 11:39 a.m. UTC | #2
On 22 April 2017 at 02:57, Jonas Karlman <jonas@kwiboo.se> wrote:
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
> ---
>
> Changes in v3:
> - Add i2c_eeprom_{read,write} functions
>
> Changes in v2: None
>
>  drivers/misc/i2c_eeprom.c | 32 ++++++++++++++++++++++++++------
>  include/i2c_eeprom.h      | 24 ++++++++++++++++++++++++
>  2 files changed, 50 insertions(+), 6 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot-rockchip/next, thanks!
diff mbox

Patch

diff --git a/drivers/misc/i2c_eeprom.c b/drivers/misc/i2c_eeprom.c
index c9f4174bad..da6e2b05f7 100644
--- a/drivers/misc/i2c_eeprom.c
+++ b/drivers/misc/i2c_eeprom.c
@@ -10,21 +10,41 @@ 
 #include <i2c.h>
 #include <i2c_eeprom.h>
 
-static int i2c_eeprom_read(struct udevice *dev, int offset, uint8_t *buf,
-			   int size)
+int i2c_eeprom_read(struct udevice *dev, int offset, uint8_t *buf, int size)
+{
+	const struct i2c_eeprom_ops *ops = device_get_ops(dev);
+
+	if (!ops->read)
+		return -ENOSYS;
+
+	return ops->read(dev, offset, buf, size);
+}
+
+int i2c_eeprom_write(struct udevice *dev, int offset, uint8_t *buf, int size)
+{
+	const struct i2c_eeprom_ops *ops = device_get_ops(dev);
+
+	if (!ops->write)
+		return -ENOSYS;
+
+	return ops->write(dev, offset, buf, size);
+}
+
+static int i2c_eeprom_std_read(struct udevice *dev, int offset, uint8_t *buf,
+			       int size)
 {
 	return dm_i2c_read(dev, offset, buf, size);
 }
 
-static int i2c_eeprom_write(struct udevice *dev, int offset,
-			    const uint8_t *buf, int size)
+static int i2c_eeprom_std_write(struct udevice *dev, int offset,
+				const uint8_t *buf, int size)
 {
 	return -ENODEV;
 }
 
 struct i2c_eeprom_ops i2c_eeprom_std_ops = {
-	.read	= i2c_eeprom_read,
-	.write	= i2c_eeprom_write,
+	.read	= i2c_eeprom_std_read,
+	.write	= i2c_eeprom_std_write,
 };
 
 static int i2c_eeprom_std_ofdata_to_platdata(struct udevice *dev)
diff --git a/include/i2c_eeprom.h b/include/i2c_eeprom.h
index 0452892812..bb5c6b118b 100644
--- a/include/i2c_eeprom.h
+++ b/include/i2c_eeprom.h
@@ -20,4 +20,28 @@  struct i2c_eeprom {
 	unsigned pagewidth;
 };
 
+/*
+ * i2c_eeprom_read() - read bytes from an I2C EEPROM chip
+ *
+ * @dev:	Chip to read from
+ * @offset:	Offset within chip to start reading
+ * @buf:	Place to put data
+ * @size:	Number of bytes to read
+ *
+ * @return 0 on success, -ve on failure
+ */
+int i2c_eeprom_read(struct udevice *dev, int offset, uint8_t *buf, int size);
+
+/*
+ * i2c_eeprom_write() - write bytes to an I2C EEPROM chip
+ *
+ * @dev:	Chip to write to
+ * @offset:	Offset within chip to start writing
+ * @buf:	Buffer containing data to write
+ * @size:	Number of bytes to write
+ *
+ * @return 0 on success, -ve on failure
+ */
+int i2c_eeprom_write(struct udevice *dev, int offset, uint8_t *buf, int size);
+
 #endif