1/* SPDX-License-Identifier: GPL-2.0+ */ 2/* 3 * Copyright (c) 2014 Google, Inc 4 */ 5 6#ifndef __I2C_EEPROM 7#define __I2C_EEPROM 8 9#include <linux/errno.h> 10 11struct udevice; 12 13struct i2c_eeprom_ops { 14 int (*read)(struct udevice *dev, int offset, uint8_t *buf, int size); 15 int (*write)(struct udevice *dev, int offset, const uint8_t *buf, 16 int size); 17 int (*size)(struct udevice *dev); 18}; 19 20struct i2c_eeprom { 21 /* The EEPROM's page size in byte */ 22 unsigned long pagesize; 23 /* The EEPROM's capacity in bytes */ 24 unsigned long size; 25}; 26 27#if CONFIG_IS_ENABLED(I2C_EEPROM) 28/* 29 * i2c_eeprom_read() - read bytes from an I2C EEPROM chip 30 * 31 * @dev: Chip to read from 32 * @offset: Offset within chip to start reading 33 * @buf: Place to put data 34 * @size: Number of bytes to read 35 * 36 * Return: 0 on success, -ve on failure 37 */ 38int i2c_eeprom_read(struct udevice *dev, int offset, uint8_t *buf, int size); 39 40/* 41 * i2c_eeprom_write() - write bytes to an I2C EEPROM chip 42 * 43 * @dev: Chip to write to 44 * @offset: Offset within chip to start writing 45 * @buf: Buffer containing data to write 46 * @size: Number of bytes to write 47 * 48 * Return: 0 on success, -ve on failure 49 */ 50int i2c_eeprom_write(struct udevice *dev, int offset, const uint8_t *buf, 51 int size); 52 53/* 54 * i2c_eeprom_size() - get size of I2C EEPROM chip 55 * 56 * @dev: Chip to query 57 * 58 * Return: +ve size in bytes on success, -ve on failure 59 */ 60int i2c_eeprom_size(struct udevice *dev); 61 62#else /* !I2C_EEPROM */ 63 64static inline int i2c_eeprom_read(struct udevice *dev, int offset, uint8_t *buf, 65 int size) 66{ 67 return -ENOSYS; 68} 69 70static inline int i2c_eeprom_write(struct udevice *dev, int offset, 71 const uint8_t *buf, int size) 72{ 73 return -ENOSYS; 74} 75 76static inline int i2c_eeprom_size(struct udevice *dev) 77{ 78 return -ENOSYS; 79} 80 81#endif /* I2C_EEPROM */ 82 83#endif 84