[U-Boot] [PATCH 1/8] imx: i2c: Zap unnecessary malloc() calls

Simon Glass sjg at chromium.org
Tue Dec 16 17:27:53 CET 2014


Hi Marek,

On 16 December 2014 at 06:09, Marek Vasut <marex at denx.de> wrote:
> The malloc() calls are unnecessary, just allocate the stuff on stack.
> While at it, reorder the code a little, so that only one variable is
> used for the text, use snprintf() instead of sprintf() and use %01d
> as a formatting string to avoid any possible overflows.
>
> Signed-off-by: Marek Vasut <marex at denx.de>
> Cc: Igor Grinberg <grinberg at compulab.co.il>
> Cc: Nikita Kiryanov <nikita at compulab.co.il>
> Cc: Sean Cross <xobs at kosagi.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Stefano Babic <sbabic at denx.de>
> Cc: Tim Harvey <tharvey at gateworks.com>
> ---
>  arch/arm/imx-common/i2c-mxv7.c | 24 ++++++++----------------
>  1 file changed, 8 insertions(+), 16 deletions(-)
>
> diff --git a/arch/arm/imx-common/i2c-mxv7.c b/arch/arm/imx-common/i2c-mxv7.c
> index 34f5387..1a632e7 100644
> --- a/arch/arm/imx-common/i2c-mxv7.c
> +++ b/arch/arm/imx-common/i2c-mxv7.c
> @@ -73,26 +73,21 @@ static void * const i2c_bases[] = {
>  int setup_i2c(unsigned i2c_index, int speed, int slave_addr,
>               struct i2c_pads_info *p)
>  {
> -       char *name1, *name2;
> +       char name[9];
>         int ret;
>
>         if (i2c_index >= ARRAY_SIZE(i2c_bases))
>                 return -EINVAL;
>
> -       name1 = malloc(9);
> -       name2 = malloc(9);
> -       if (!name1 || !name2)
> -               return -ENOMEM;
> -
> -       sprintf(name1, "i2c_sda%d", i2c_index);
> -       sprintf(name2, "i2c_scl%d", i2c_index);
> -       ret = gpio_request(p->sda.gp, name1);
> +       snprintf(name, sizeof(name), "i2c_sda%01d", i2c_index);
> +       ret = gpio_request(p->sda.gp, name);

Does this board use driver model? If not it should be easy to convert
since one MX6 board supports it. With driver model there is
gpio_requestf("i2c_sda%01d", i2c_index);

>         if (ret)
> -               goto err_req1;
> +               return ret;
>
> -       ret = gpio_request(p->scl.gp, name2);
> +       snprintf(name, sizeof(name), "i2c_scl%01d", i2c_index);
> +       ret = gpio_request(p->scl.gp, name);
>         if (ret)
> -               goto err_req2;
> +               goto err_req;
>
>         /* Enable i2c clock */
>         ret = enable_i2c_clk(1, i2c_index);
> @@ -112,11 +107,8 @@ int setup_i2c(unsigned i2c_index, int speed, int slave_addr,
>  err_idle:
>  err_clk:
>         gpio_free(p->scl.gp);
> -err_req2:
> +err_req:
>         gpio_free(p->sda.gp);
> -err_req1:
> -       free(name1);
> -       free(name2);
>
>         return ret;
>  }
> --
> 2.1.3
>

Regards,
Simon


More information about the U-Boot mailing list