[U-Boot] [PATCH 2/2] i2c: at91_i2c: remove the .probe_chip function

Yang, Wenyou Wenyou.Yang at Microchip.com
Thu Nov 30 01:20:32 UTC 2017



On 2017/11/29 11:25, Alan Ott wrote:
> 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 at softiron.com>
> ---
Acked-by: Wenyou Yang <wenyou.yang at microchip.com>

Thank you for your patch.

>   drivers/i2c/at91_i2c.c | 22 ----------------------
>   1 file changed, 22 deletions(-)
>
> diff --git a/drivers/i2c/at91_i2c.c b/drivers/i2c/at91_i2c.c
> index 20d0929..7917ca1 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,
>   };
Best Regards,
Wenyou Yang


More information about the U-Boot mailing list