cmd: i2c: Fix use sdram sub command with CONFIG_DM_I2C
authorNobuhiro Iwamatsu <iwamatsu@nigauri.org>
Fri, 1 Dec 2017 05:39:40 +0000 (14:39 +0900)
committerHeiko Schocher <hs@denx.de>
Thu, 7 Dec 2017 08:29:35 +0000 (09:29 +0100)
sdram sub command of i2c command does not support Drivers Model.
This adds Drivers Model support to sdram sub command.

Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heiko Schocher <hs@denx.de>
cmd/i2c.c

index 3dd7c6ba4de2d014535a973ba400eae060d8698d..bfddf8be1b9849d5cb9f66262aaaf747896d7396 100644 (file)
--- a/cmd/i2c.c
+++ b/cmd/i2c.c
@@ -1156,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"
@@ -1210,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;
        }