Initial commit, code based on LPC1224 support and LPC812-MAX CMSIS-DAP interface...
[lpc11u3x] / include / extdrv / eeprom.h
1 /****************************************************************************
2  *   extdrv/eeprom.h
3  *
4  *
5  * Copyright 2012 Nathael Pajani <nathael.pajani@ed3l.fr>
6  *
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20  *
21  *************************************************************************** */
23 #ifndef EXTDRV_EEPROM_H
24 #define EXTDRV_EEPROM_H
26 #include <stdint.h>
29 /***************************************************************************** */
30 /*          Read and Write for system eeprom                                   */
31 /***************************************************************************** */
32 /* EEPROM Read
33  * Performs a non-blocking read on the eeprom.
34  *   eeprom_addr : address of the I2C eeprom chip (hardware dependent)
35  *   offset : data offset in eeprom.
36  * RETURN VALUE
37  *   Upon successfull completion, returns the number of bytes read. On error, returns a negative
38  *   integer equivalent to errors from glibc.
39  *   -EFAULT : address above eeprom size
40  *   -EBADFD : Device not initialized
41  *   -EBUSY : Device or ressource Busy or Arbitration lost
42  *   -EAGAIN : Device already in use
43  *   -EINVAL : Invalid argument (buf)
44  *   -EREMOTEIO : Device did not acknowledge
45  *   -EIO : Bad one: Illegal start or stop, or illegal state in i2c state machine
46  */
47 int eeprom_read(uint8_t eeprom_addr, uint32_t offset, void *buf, size_t count);
49 /* EEPROM Write
50  * Performs a non-blocking write on the eeprom.
51  *   eeprom_addr : address of the I2C eeprom chip (hardware dependent)
52  *   offset : data offset in eeprom.
53  * RETURN VALUE
54  *   Upon successfull completion, returns the number of bytes written. On error, returns a negative
55  *   integer equivalent to errors from glibc.
56  *   -EFAULT : address above eeprom size
57  *   -EBADFD : Device not initialized
58  *   -EBUSY : Device or ressource Busy or Arbitration lost
59  *   -EAGAIN : Device already in use
60  *   -EINVAL : Invalid argument (buf)
61  *   -EREMOTEIO : Device did not acknowledge
62  *   -EIO : Bad one: Illegal start or stop, or illegal state in i2c state machine
63  */
64 int eeprom_write(uint8_t eeprom_addr, uint32_t offset, const void *buf, size_t count);
69 #endif /* EXTDRV_EEPROM_H */