[U-Boot] [PATCH] i2c: designware_i2c: Optionally check enable status register

Heiko Schocher hs at denx.de
Thu Apr 28 08:06:49 CEST 2016


Hello Stefan,

Am 27.04.2016 um 09:02 schrieb Stefan Roese:
> Some platforms don't implement the enable status register at offset 0x9c.
> The SPEAr600 platform is one of them. The recently added check to this
> status register can't be performend on these platforms.
>
> This patch introduces a new config option that can be enabled on such
> platforms not supporting this register.
>
> Signed-off-by: Stefan Roese <sr at denx.de>
> Cc: Heiko Schocher <hs at denx.de>
> ---
>   drivers/i2c/designware_i2c.c | 9 +++++++++
>   1 file changed, 9 insertions(+)

No objections, but I miss an entry in drivers/i2c/Kconfig or at least an
entry in README. Please add this, thanks!

bye,
Heiko
>
> diff --git a/drivers/i2c/designware_i2c.c b/drivers/i2c/designware_i2c.c
> index 0c7cd0b..e60fd0a 100644
> --- a/drivers/i2c/designware_i2c.c
> +++ b/drivers/i2c/designware_i2c.c
> @@ -36,6 +36,14 @@ struct dw_i2c {
>   	struct dw_scl_sda_cfg *scl_sda_cfg;
>   };
>
> +#ifdef CONFIG_SYS_I2C_DW_ENABLE_STATUS_UNSUPPORTED
> +static void dw_i2c_enable(struct i2c_regs *i2c_base, bool enable)
> +{
> +	u32 ena = enable ? IC_ENABLE_0B : 0;
> +
> +	writel(ena, &i2c_base->ic_enable);
> +}
> +#else
>   static void dw_i2c_enable(struct i2c_regs *i2c_base, bool enable)
>   {
>   	u32 ena = enable ? IC_ENABLE_0B : 0;
> @@ -56,6 +64,7 @@ static void dw_i2c_enable(struct i2c_regs *i2c_base, bool enable)
>
>   	printf("timeout in %sabling I2C adapter\n", enable ? "en" : "dis");
>   }
> +#endif
>
>   /*
>    * i2c_set_bus_speed - Set the i2c speed
>

-- 
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