X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fi2c_eeprom.h;h=32dcb03497309681f44f0c1e8aa740a2d15a35db;hb=46b5c8ed017958fc387ab86c71ae6c90abb6793c;hp=04528928126606807f477cd3bac0dfae6c69cd84;hpb=c6f086ddcbfb47918b82f6a135c61f432540da42;p=platform%2Fkernel%2Fu-boot.git diff --git a/include/i2c_eeprom.h b/include/i2c_eeprom.h index 0452892..32dcb03 100644 --- a/include/i2c_eeprom.h +++ b/include/i2c_eeprom.h @@ -1,23 +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 page width in bits (pagesize = 2^pagewidth) */ - unsigned pagewidth; + /* 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