[U-Boot] [PATCH v2 3/8] ti: common: board_detect: Introduce function to set the address length.

Heiko Schocher hs at denx.de
Fri Apr 28 03:58:29 UTC 2017


Hello Franklin,

Am 20.04.2017 um 17:25 schrieb Franklin S Cooper Jr:
> Reading from the I2C EEPROM used typically requires using an address length
> of 2. However, when using DM for I2C the default address length used is 1.
> To fix this introduce a new function that allows the address length to be
> changed. The logic to do so was copied from cmd/i2c.c.
>
> Signed-off-by: Franklin S Cooper Jr <fcooper at ti.com>
> ---
>   board/ti/common/board_detect.c | 37 +++++++++++++++++++++++++++++++++++++

Reviewed-by: Heiko Schocher <hs at denx.de>

Applied to u-boot-i2c/next

bye,
Heiko
>   1 file changed, 37 insertions(+)
>
> diff --git a/board/ti/common/board_detect.c b/board/ti/common/board_detect.c
> index c55e24e..1e695f4 100644
> --- a/board/ti/common/board_detect.c
> +++ b/board/ti/common/board_detect.c
> @@ -10,10 +10,47 @@
>
>   #include <common.h>
>   #include <asm/omap_common.h>
> +#include <dm/uclass.h>
>   #include <i2c.h>
>
>   #include "board_detect.h"
>
> +#if defined(CONFIG_DM_I2C_COMPAT)
> +/**
> + * ti_i2c_set_alen - Set chip's i2c address length
> + * @bus_addr - I2C bus number
> + * @dev_addr - I2C eeprom id
> + * @alen     - I2C address length in bytes
> + *
> + * DM_I2C by default sets the address length to be used to 1. This
> + * function allows this address length to be changed to match the
> + * eeprom used for board detection.
> + */
> +int __maybe_unused ti_i2c_set_alen(int bus_addr, int dev_addr, int alen)
> +{
> +	struct udevice *dev;
> +	struct udevice *bus;
> +	int rc;
> +
> +	rc = uclass_get_device_by_seq(UCLASS_I2C, bus_addr, &bus);
> +	if (rc)
> +		return rc;
> +	rc = i2c_get_chip(bus, dev_addr, 1, &dev);
> +	if (rc)
> +		return rc;
> +	rc = i2c_set_chip_offset_len(dev, alen);
> +	if (rc)
> +		return rc;
> +
> +	return 0;
> +}
> +#else
> +int __maybe_unused ti_i2c_set_alen(int bus_addr, int dev_addr, int alen)
> +{
> +	return 0;
> +}
> +#endif
> +
>   /**
>    * ti_i2c_eeprom_init - Initialize an i2c bus and probe for a device
>    * @i2c_bus: i2c bus number to initialize
>

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list