summaryrefslogtreecommitdiff
path: root/drivers/i2c/at91_i2c.c
diff options
context:
space:
mode:
authorAlan Ott <alan@softiron.com>2017-11-28 22:25:24 -0500
committerHeiko Schocher <hs@denx.de>2017-12-07 09:29:19 +0100
commitcab8a27d80afbdcb7ba422c4c4f85130678373a9 (patch)
tree33a083bed997bd2da2dd260f8febad8796fea732 /drivers/i2c/at91_i2c.c
parent0afbb0e1c01382f4bcd728ecbd4e49a928dbbccb (diff)
downloadu-boot-cab8a27d80afbdcb7ba422c4c4f85130678373a9.tar.gz
u-boot-cab8a27d80afbdcb7ba422c4c4f85130678373a9.tar.bz2
u-boot-cab8a27d80afbdcb7ba422c4c4f85130678373a9.zip
i2c: at91_i2c: remove the .probe_chip function
The .probe_chip function is supposed to probe an i2c device on the bus to determine whether a device is answering to a particular address. at91_i2c_probe_chip() did not do anything resembling this and always returned 0. It looks as though at91_i2c_probe_chip() was intended to be a .probe function for the controller, as it was copied-and-pasted to become at91_i2c_probe() in 0bc8f640a4d7ed. Removing the at91_i2c_probe_chip() function makes the higher layer (i2c_probe_chip()) try a zero-length read transfer to test for the presence of a device instead, which does work. Signed-off-by: Alan Ott <alan@softiron.com> Acked-by: Wenyou Yang <wenyou.yang@microchip.com> Reviewed-by: Heiko Schocher <hs@denx.de>
Diffstat (limited to 'drivers/i2c/at91_i2c.c')
-rw-r--r--drivers/i2c/at91_i2c.c22
1 files changed, 0 insertions, 22 deletions
diff --git a/drivers/i2c/at91_i2c.c b/drivers/i2c/at91_i2c.c
index 20d09296a1..7917ca1231 100644
--- a/drivers/i2c/at91_i2c.c
+++ b/drivers/i2c/at91_i2c.c
@@ -201,27 +201,6 @@ static int at91_i2c_enable_clk(struct udevice *dev)
return 0;
}
-static int at91_i2c_probe_chip(struct udevice *dev, uint chip, uint chip_flags)
-{
- struct at91_i2c_bus *bus = dev_get_priv(dev);
- struct at91_i2c_regs *reg = bus->regs;
- int ret;
-
- ret = at91_i2c_enable_clk(dev);
- if (ret)
- return ret;
-
- writel(TWI_CR_SWRST, &reg->cr);
-
- at91_calc_i2c_clock(dev, bus->clock_frequency);
-
- writel(bus->cwgr_val, &reg->cwgr);
- writel(TWI_CR_MSEN, &reg->cr);
- writel(TWI_CR_SVDIS, &reg->cr);
-
- return 0;
-}
-
static int at91_i2c_set_bus_speed(struct udevice *dev, unsigned int speed)
{
struct at91_i2c_bus *bus = dev_get_priv(dev);
@@ -256,7 +235,6 @@ static int at91_i2c_ofdata_to_platdata(struct udevice *dev)
static const struct dm_i2c_ops at91_i2c_ops = {
.xfer = at91_i2c_xfer,
- .probe_chip = at91_i2c_probe_chip,
.set_bus_speed = at91_i2c_set_bus_speed,
.get_bus_speed = at91_i2c_get_bus_speed,
};