xref: /qemu/include/hw/nvram/eeprom_at24c.h (revision 9f782e9e)
19618ebaeSPeter Delevoryas /*
29618ebaeSPeter Delevoryas  * Copyright (c) Meta Platforms, Inc. and affiliates.
39618ebaeSPeter Delevoryas  *
49618ebaeSPeter Delevoryas  * SPDX-License-Identifier: GPL-2.0-only
59618ebaeSPeter Delevoryas  */
69618ebaeSPeter Delevoryas 
79618ebaeSPeter Delevoryas #ifndef EEPROM_AT24C_H
89618ebaeSPeter Delevoryas #define EEPROM_AT24C_H
99618ebaeSPeter Delevoryas 
109618ebaeSPeter Delevoryas #include "hw/i2c/i2c.h"
119618ebaeSPeter Delevoryas 
129618ebaeSPeter Delevoryas /*
139618ebaeSPeter Delevoryas  * Create and realize an AT24C EEPROM device on the heap.
149618ebaeSPeter Delevoryas  * @bus: I2C bus to put it on
159618ebaeSPeter Delevoryas  * @address: I2C address of the EEPROM slave when put on a bus
169618ebaeSPeter Delevoryas  * @rom_size: size of the EEPROM
179618ebaeSPeter Delevoryas  *
189618ebaeSPeter Delevoryas  * Create the device state structure, initialize it, put it on the specified
199618ebaeSPeter Delevoryas  * @bus, and drop the reference to it (the device is realized).
209618ebaeSPeter Delevoryas  */
219618ebaeSPeter Delevoryas I2CSlave *at24c_eeprom_init(I2CBus *bus, uint8_t address, uint32_t rom_size);
229618ebaeSPeter Delevoryas 
23*9f782e9eSPeter Delevoryas 
24*9f782e9eSPeter Delevoryas /*
25*9f782e9eSPeter Delevoryas  * Create and realize an AT24C EEPROM device on the heap with initial data.
26*9f782e9eSPeter Delevoryas  * @bus: I2C bus to put it on
27*9f782e9eSPeter Delevoryas  * @address: I2C address of the EEPROM slave when put on a bus
28*9f782e9eSPeter Delevoryas  * @rom_size: size of the EEPROM
29*9f782e9eSPeter Delevoryas  * @init_rom: Array of bytes to initialize EEPROM memory with
30*9f782e9eSPeter Delevoryas  * @init_rom_size: Size of @init_rom, must be less than or equal to @rom_size
31*9f782e9eSPeter Delevoryas  *
32*9f782e9eSPeter Delevoryas  * Create the device state structure, initialize it, put it on the specified
33*9f782e9eSPeter Delevoryas  * @bus, and drop the reference to it (the device is realized). Copies the data
34*9f782e9eSPeter Delevoryas  * from @init_rom to the beginning of the EEPROM memory buffer.
35*9f782e9eSPeter Delevoryas  */
36*9f782e9eSPeter Delevoryas I2CSlave *at24c_eeprom_init_rom(I2CBus *bus, uint8_t address, uint32_t rom_size,
37*9f782e9eSPeter Delevoryas                                 const uint8_t *init_rom, uint32_t init_rom_size);
38*9f782e9eSPeter Delevoryas 
399618ebaeSPeter Delevoryas #endif
40