]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - cmd/i2c.c
Merge git://git.denx.de/u-boot-ubi
[people/ms/u-boot.git] / cmd / i2c.c
index 18ce789d7edd916bd704e776b70afedaa3b446d7..bfddf8be1b9849d5cb9f66262aaaf747896d7396 100644 (file)
--- a/cmd/i2c.c
+++ b/cmd/i2c.c
@@ -151,6 +151,16 @@ static int cmd_i2c_set_bus_num(unsigned int busnum)
 
 static int i2c_get_cur_bus(struct udevice **busp)
 {
+#ifdef CONFIG_I2C_SET_DEFAULT_BUS_NUM
+       if (!i2c_cur_bus) {
+               if (cmd_i2c_set_bus_num(CONFIG_I2C_DEFAULT_BUS_NUMBER)) {
+                       printf("Default I2C bus %d not found\n",
+                              CONFIG_I2C_DEFAULT_BUS_NUMBER);
+                       return -ENODEV;
+               }
+       }
+#endif
+
        if (!i2c_cur_bus) {
                puts("No I2C bus selected\n");
                return -ENODEV;
@@ -178,7 +188,7 @@ static int i2c_get_cur_bus_chip(uint chip_addr, struct udevice **devp)
  * i2c_init_board() - Board-specific I2C bus init
  *
  * This function is the default no-op implementation of I2C bus
- * initialization. This function can be overriden by board-specific
+ * initialization. This function can be overridden by board-specific
  * implementation if needed.
  */
 __weak
@@ -1146,7 +1156,10 @@ static int do_sdram (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
        uint    chip;
        u_char  data[128];
        u_char  cksum;
-       int     j;
+       int     j, ret;
+#ifdef CONFIG_DM_I2C
+       struct udevice *dev;
+#endif
 
        static const char *decode_CAS_DDR2[] = {
                " TBD", " 6", " 5", " 4", " 3", " 2", " TBD", " TBD"
@@ -1200,7 +1213,14 @@ static int do_sdram (cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
         */
        chip = simple_strtoul (argv[1], NULL, 16);
 
-       if (i2c_read (chip, 0, 1, data, sizeof (data)) != 0) {
+#ifdef CONFIG_DM_I2C
+       ret = i2c_get_cur_bus_chip(chip, &dev);
+       if (!ret)
+               ret = dm_i2c_read(dev, 0, data, sizeof(data));
+#else
+       ret = i2c_read(chip, 0, 1, data, sizeof(data));
+#endif
+       if (ret) {
                puts ("No SDRAM Serial Presence Detect found.\n");
                return 1;
        }