diff options
author | Jose Miguel Sanchez Sanabria <jsanabria@iseebcn.com> | 2018-06-12 17:02:23 +0200 |
---|---|---|
committer | Jose Miguel Sanchez Sanabria <jsanabria@iseebcn.com> | 2018-06-12 17:02:23 +0200 |
commit | c43b4032b44fde06748744a0318d67c5662f7b48 (patch) | |
tree | 1cc2c987ad8e4ce99493db5122434a274d9b097c /board/isee/igep0146/igep0146_eeprom.c | |
parent | 576e625ef6cc7ea569bb91966e345ebd01824a32 (diff) | |
download | u-boot-imx-c43b4032b44fde06748744a0318d67c5662f7b48.zip u-boot-imx-c43b4032b44fde06748744a0318d67c5662f7b48.tar.gz u-boot-imx-c43b4032b44fde06748744a0318d67c5662f7b48.tar.bz2 |
IGEP0146: Initial commit
Structure folders
defconfig
initial ram config
only UART will be configured for basic printf
Signed-off-by: Jose Miguel Sanchez Sanabria <jsanabria@iseebcn.com>
Diffstat (limited to 'board/isee/igep0146/igep0146_eeprom.c')
-rw-r--r-- | board/isee/igep0146/igep0146_eeprom.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/board/isee/igep0146/igep0146_eeprom.c b/board/isee/igep0146/igep0146_eeprom.c new file mode 100644 index 0000000..33bf1f3 --- /dev/null +++ b/board/isee/igep0146/igep0146_eeprom.c @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2016 ISEE 2007 SL - http://www.isee.biz + * + * EEPROM support source file for IGEP0046 board + * + * Author: Jose Miguel Sanchez Sanabria <jsanabria@iseebcn.com> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <i2c.h> +#include <asm/arch/sys_proto.h> + + +int eeprom46_write_setup (uint8_t s_addr, const char* data, u32 size) +{ + u32 i; + u32 remain = size % 32; + u32 blocks = size / 32; + for (i=0; i < blocks; i++){ + if(i2c_write(CONFIG_SYS_I2C_EEPROM_ADDR, s_addr + (i*32), 2, (uint8_t*) data + (i*32), 32)){ + return -1; + } + udelay(5000); + } + if(remain > 0){ + if(i2c_write(CONFIG_SYS_I2C_EEPROM_ADDR, s_addr + (i*32), 2, (uint8_t*) data + (i*32), remain)) + return -1; + else + udelay(5000); + } + return 0; +} + +int eeprom46_read_setup (uint8_t s_addr, char* data, u32 size) +{ + u32 i; + u32 remain = size % 32; + u32 blocks = size / 32; + for (i=0; i < blocks; i++){ + if(i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, s_addr + (i*32), 2, (uint8_t*) data + (i*32), 32)){ + return -1; + } + } + if(remain > 0) + if(i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, s_addr + (i*32), 2, (uint8_t*) data + (i*32), remain)) + return -1; + return 0; +} + +int check_eeprom (void) +{ + i2c_set_bus_num(CONFIG_SYS_I2C_EEPROM_BUS); + /* Check if baseboard eeprom is available */ + if (i2c_probe(CONFIG_SYS_I2C_EEPROM_ADDR)) { + printf("Could not probe the EEPROM at 0x%x\n", + CONFIG_SYS_I2C_EEPROM_ADDR); + return -1; + } + return 0; +} |