]> Git Repo - J-u-boot.git/blobdiff - cmd/eeprom.c
cmd: fwu: make changes for supporting FWU metadata version 2
[J-u-boot.git] / cmd / eeprom.c
index b3fd37c8274b39567be1e6cf5a620e7faaca0e26..322765ad02a013b1c5dff318f1f4285207f9714a 100644 (file)
@@ -15,7 +15,7 @@
  * degradation (typical for EEPROM) is incured for FRAM memory:
  *
  * #define CONFIG_SYS_I2C_FRAM
- * #undef CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS
+ * Set CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS to 0
  *
  */
 
 #include <eeprom_layout.h>
 #include <linux/delay.h>
 
-#ifndef        CONFIG_SYS_I2C_SPEED
-#define        CONFIG_SYS_I2C_SPEED    50000
-#endif
-
-#ifndef CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  0
-#endif
-
-#ifndef CONFIG_SYS_EEPROM_PAGE_WRITE_BITS
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      8
-#endif
-
 #ifndef        I2C_RXTX_LEN
 #define I2C_RXTX_LEN   128
 #endif
 #define        EEPROM_PAGE_SIZE        (1 << CONFIG_SYS_EEPROM_PAGE_WRITE_BITS)
 #define        EEPROM_PAGE_OFFSET(x)   ((x) & (EEPROM_PAGE_SIZE - 1))
 
-/*
- * for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 2 (16-bit EEPROM address) offset is
- *   0x000nxxxx for EEPROM address selectors at n, offset xxxx in EEPROM.
- *
- * for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 (8-bit EEPROM page address) offset is
- *   0x00000nxx for EEPROM address selectors and page number at n.
- */
-#if !defined(CONFIG_SPI) || defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
-#if !defined(CONFIG_SYS_I2C_EEPROM_ADDR_LEN) || \
-       (CONFIG_SYS_I2C_EEPROM_ADDR_LEN < 1) || \
-       (CONFIG_SYS_I2C_EEPROM_ADDR_LEN > 2)
-#error CONFIG_SYS_I2C_EEPROM_ADDR_LEN must be 1 or 2
-#endif
-#endif
-
 #if CONFIG_IS_ENABLED(DM_I2C)
 static int eeprom_i2c_bus;
 #endif
@@ -75,13 +48,20 @@ void eeprom_init(int bus)
        /* I2C EEPROM */
 #if CONFIG_IS_ENABLED(DM_I2C)
        eeprom_i2c_bus = bus;
-#elif defined(CONFIG_SYS_I2C)
+#elif CONFIG_IS_ENABLED(SYS_I2C_LEGACY)
        if (bus >= 0)
                i2c_set_bus_num(bus);
        i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
 #endif
 }
 
+/*
+ * for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 2 (16-bit EEPROM address) offset is
+ *   0x000nxxxx for EEPROM address selectors at n, offset xxxx in EEPROM.
+ *
+ * for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 (8-bit EEPROM page address) offset is
+ *   0x00000nxx for EEPROM address selectors and page number at n.
+ */
 static int eeprom_addr(unsigned dev_addr, unsigned offset, uchar *addr)
 {
        unsigned blk_off;
@@ -169,7 +149,7 @@ static int eeprom_rw(unsigned dev_addr, unsigned offset, uchar *buffer,
        int rcode = 0;
        uchar addr[3];
 
-#if defined(CONFIG_SYS_I2C_EEPROM_BUS)
+#if !CONFIG_IS_ENABLED(DM_I2C) && defined(CONFIG_SYS_I2C_EEPROM_BUS)
        eeprom_init(CONFIG_SYS_I2C_EEPROM_BUS);
 #endif
 
@@ -183,8 +163,10 @@ static int eeprom_rw(unsigned dev_addr, unsigned offset, uchar *buffer,
                buffer += len;
                offset += len;
 
+#if CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS > 0
                if (!read)
                        udelay(CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS * 1000);
+#endif
        }
 
        return rcode;
@@ -218,10 +200,10 @@ int eeprom_write(unsigned dev_addr, unsigned offset,
        return ret;
 }
 
-static int parse_numeric_param(char *str)
+static long parse_numeric_param(char *str)
 {
        char *endptr;
-       int value = simple_strtol(str, &endptr, 16);
+       long value = simple_strtol(str, &endptr, 16);
 
        return (*endptr != '\0') ? -1 : value;
 }
@@ -243,10 +225,10 @@ static int parse_i2c_bus_addr(int *i2c_bus, ulong *i2c_addr, int argc,
        int argc_no_bus = argc_no_bus_addr + 1;
        int argc_bus_addr = argc_no_bus_addr + 2;
 
-#ifdef CONFIG_SYS_DEF_EEPROM_ADDR
+#ifdef CONFIG_SYS_I2C_EEPROM_ADDR
        if (argc == argc_no_bus_addr) {
                *i2c_bus = -1;
-               *i2c_addr = CONFIG_SYS_DEF_EEPROM_ADDR;
+               *i2c_addr = CONFIG_SYS_I2C_EEPROM_ADDR;
 
                return 0;
        }
@@ -453,4 +435,4 @@ U_BOOT_CMD(
        "The values which can be provided with the -l option are:\n"
        CONFIG_EEPROM_LAYOUT_HELP_STRING"\n"
 #endif
-)
+);
This page took 0.030213 seconds and 4 git commands to generate.