summaryrefslogtreecommitdiff
path: root/drivers/i2c/sh_i2c.c
diff options
context:
space:
mode:
authorTetsuyuki Kobayashi <koba@kmckk.co.jp>2014-04-14 17:13:57 +0900
committerNobuhiro Iwamatsu <iwamatsu@nigauri.org>2014-04-14 17:41:48 +0900
commit7a657689038982affa505b8ad402f17c8fdf10b3 (patch)
treedc0f87129fee7651fdaab7d593986918ea39e0ad /drivers/i2c/sh_i2c.c
parent1b82491ee6ee1e986e5521b33692a00e1f38fe75 (diff)
downloadu-boot-imx-7a657689038982affa505b8ad402f17c8fdf10b3.zip
u-boot-imx-7a657689038982affa505b8ad402f17c8fdf10b3.tar.gz
u-boot-imx-7a657689038982affa505b8ad402f17c8fdf10b3.tar.bz2
i2c: sh_i2c: bugfix: i2c probe command does not work
This is regression of commit 2035d77d i2c: sh_i2c: Update to new CONFIG_SYS_I2C framework Before commit 2035d77d, i2c probe command works properly on kzm9g board. KZM-A9-GT# i2c probe Valid chip addresses: 0C 12 1D 32 39 3D 40 60 After commit 2035d77d, i2c probe command does not work. KZM-A9-GT# i2c probe Valid chip addresses: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F sh_i2c_probe() calls sh_i2c_read(), but read length is 0. So acutally it does not read device at all. This patch prepares dummy buffer and read data into it. Signed-off-by: Tetsuyuki Kobayashi <koba@kmckk.co.jp> Acked-by: Heiko Schocher <hs@denx.de> Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Diffstat (limited to 'drivers/i2c/sh_i2c.c')
-rw-r--r--drivers/i2c/sh_i2c.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/i2c/sh_i2c.c b/drivers/i2c/sh_i2c.c
index cc19100..e7e9692 100644
--- a/drivers/i2c/sh_i2c.c
+++ b/drivers/i2c/sh_i2c.c
@@ -269,7 +269,9 @@ static int sh_i2c_write(struct i2c_adapter *adap, uint8_t chip, uint addr,
static int
sh_i2c_probe(struct i2c_adapter *adap, u8 dev)
{
- return sh_i2c_read(adap, dev, 0, 0, NULL, 0);
+ u8 dummy[1];
+
+ return sh_i2c_read(adap, dev, 0, 0, dummy, sizeof dummy);
}
static unsigned int sh_i2c_set_bus_speed(struct i2c_adapter *adap,