X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fi2c_eeprom.h;h=32dcb03497309681f44f0c1e8aa740a2d15a35db;hb=46b5c8ed017958fc387ab86c71ae6c90abb6793c;hp=ea6c962a3932f3bc7a28276a93e2bc9c45f2a2cf;hpb=a5a58826110eb3da2956c6b3213bd750e166d75c;p=platform%2Fkernel%2Fu-boot.git diff --git a/include/i2c_eeprom.h b/include/i2c_eeprom.h index ea6c962..32dcb03 100644 --- a/include/i2c_eeprom.h +++ b/include/i2c_eeprom.h @@ -1,19 +1,81 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * Copyright (c) 2014 Google, Inc - * - * SPDX-License-Identifier: GPL-2.0+ */ #ifndef __I2C_EEPROM #define __I2C_EEPROM +struct udevice; + struct i2c_eeprom_ops { int (*read)(struct udevice *dev, int offset, uint8_t *buf, int size); int (*write)(struct udevice *dev, int offset, const uint8_t *buf, int size); + int (*size)(struct udevice *dev); }; struct i2c_eeprom { + /* The EEPROM's page size in byte */ + unsigned long pagesize; + /* The EEPROM's capacity in bytes */ + unsigned long size; }; +#if CONFIG_IS_ENABLED(I2C_EEPROM) +/* + * 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, const uint8_t *buf, + int size); + +/* + * i2c_eeprom_size() - get size of I2C EEPROM chip + * + * @dev: Chip to query + * + * Return: +ve size in bytes on success, -ve on failure + */ +int i2c_eeprom_size(struct udevice *dev); + +#else /* !I2C_EEPROM */ + +static inline int i2c_eeprom_read(struct udevice *dev, int offset, uint8_t *buf, + int size) +{ + return -ENOSYS; +} + +static inline int i2c_eeprom_write(struct udevice *dev, int offset, + const uint8_t *buf, int size) +{ + return -ENOSYS; +} + +static inline int i2c_eeprom_size(struct udevice *dev) +{ + return -ENOSYS; +} + +#endif /* I2C_EEPROM */ + #endif