board/BuR/common: add 'brdefaulip_setup' function
[oweals/u-boot.git] / board / BuR / common / common.c
index 28ebb84595feea4582ed527d041b42aa13200864..89087d7dba00dd5478f2b3d59646a934abadada4 100644 (file)
@@ -266,6 +266,40 @@ int ft_board_setup(void *blob, bd_t *bd)
        return 0;
 }
 
+int brdefaultip_setup(int bus, int chip)
+{
+       int rc;
+       struct udevice *i2cdev;
+       u8 u8buf = 0;
+       char defip[256] = { 0 };
+
+       rc = i2c_get_chip_for_busnum(bus, chip, 2, &i2cdev);
+       if (rc != 0) {
+               printf("WARN: cannot probe baseboard EEPROM!\n");
+               return -1;
+       }
+
+       rc = dm_i2c_read(i2cdev, 0, &u8buf, 1);
+       if (rc != 0) {
+               printf("WARN: cannot read baseboard EEPROM!\n");
+               return -1;
+       }
+
+       if (u8buf != 0xFF)
+               snprintf(defip, sizeof(defip),
+                        "if test -r ${ipaddr}; then; else setenv ipaddr 192.168.60.%d; setenv serverip 192.168.60.254; setenv gatewayip 192.168.60.254; setenv netmask 255.255.255.0; fi;",
+                        u8buf);
+       else
+               strncpy(defip,
+                       "if test -r ${ipaddr}; then; else setenv ipaddr 192.168.60.1; setenv serverip 192.168.60.254; setenv gatewayip 192.168.60.254; setenv netmask 255.255.255.0; fi;",
+                       sizeof(defip));
+
+       env_set("brdefaultip", defip);
+       env_set_hex("board_id", u8buf);
+
+       return 0;
+}
+
 int overwrite_console(void)
 {
        return 1;