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