From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tetsuyuki Kobayashi Date: Tue, 15 Apr 2014 09:50:07 +0900 Subject: [U-Boot] [PATCH v3 1/2] i2c: sh_i2c: bugfix: i2c probe command does not work In-Reply-To: <20140414191736.GJ23803@bill-the-cat> References: <1397450710-22144-1-git-send-email-koba@kmckk.co.jp> <1397463238-9649-1-git-send-email-koba@kmckk.co.jp> <1397463238-9649-2-git-send-email-koba@kmckk.co.jp> <20140414191736.GJ23803@bill-the-cat> Message-ID: <534C823F.60500@kmckk.co.jp> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de (2014/04/15 4:17), Tom Rini wrote: > On Mon, Apr 14, 2014 at 05:13:57PM +0900, Tetsuyuki Kobayashi wrote: >> 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 >> --- >> Changes for v2: >> - correct typo in commit message. >> >> Changes for v3: >> - prepare dummy data buffer and use it to avoid NULL access. >> >> drivers/i2c/sh_i2c.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> 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, > > I will take this patch as-is, but please use sizeof(foo) rather than > sizeof foo. It's valid but uncommon syntax for the project, thanks! > I understand about sizeof(foo). Anyway thank you very much! U-Boot v2014.04 works fine on kzm9g board.