[U-Boot] [PATCH 07/18] i2c: imx: add macros to setup pads for multiple SoC types

Tim Harvey tharvey at gateworks.com
Mon Aug 4 06:28:10 CEST 2014


On Sun, Aug 3, 2014 at 12:34 AM, Nikita Kiryanov <nikita at compulab.co.il> wrote:
> Add macro which defines i2c_pads_info structs for multiple SoC types,
> and a macro which selects the appropriate struct based on CPU type,
> thus eliminating the need to manage multiple i2c pad configurations
> manually when supporting multiple SoC types.
>
> Cc: Stefano Babic <sbabic at denx.de>
> Signed-off-by: Nikita Kiryanov <nikita at compulab.co.il>
> ---
>  arch/arm/include/asm/imx-common/mxc_i2c.h | 33 +++++++++++++++++++++++++++++++
>  1 file changed, 33 insertions(+)
>
> diff --git a/arch/arm/include/asm/imx-common/mxc_i2c.h b/arch/arm/include/asm/imx-common/mxc_i2c.h
> index 47a9edc..182c2f3 100644
> --- a/arch/arm/include/asm/imx-common/mxc_i2c.h
> +++ b/arch/arm/include/asm/imx-common/mxc_i2c.h
> @@ -19,6 +19,39 @@ struct i2c_pads_info {
>         struct i2c_pin_ctrl sda;
>  };
>
> +#if defined(CONFIG_MX6QDL)
> +#define I2C_PADS(name, scl_i2c, scl_gpio, scl_gp, sda_i2c, sda_gpio, sda_gp) \
> +       struct i2c_pads_info mx6q_##name = {            \
> +               .scl = {                                \
> +                       .i2c_mode = MX6Q_##scl_i2c,     \
> +                       .gpio_mode = MX6Q_##scl_gpio,   \
> +                       .gp = scl_gp,                   \
> +               },                                      \
> +               .sda = {                                \
> +                       .i2c_mode = MX6Q_##sda_i2c,     \
> +                       .gpio_mode = MX6Q_##sda_gpio,   \
> +                       .gp = sda_gp,                   \
> +               }                                       \
> +       };                                              \
> +       struct i2c_pads_info mx6s_##name = {            \
> +               .scl = {                                \
> +                       .i2c_mode = MX6DL_##scl_i2c,    \
> +                       .gpio_mode = MX6DL_##scl_gpio,  \
> +                       .gp = scl_gp,                   \
> +               },                                      \
> +               .sda = {                                \
> +                       .i2c_mode = MX6DL_##sda_i2c,    \
> +                       .gpio_mode = MX6DL_##sda_gpio,  \
> +                       .gp = sda_gp,                   \
> +               }                                       \
> +       };
> +
> +
> +#define I2C_PADS_INFO(name)    \
> +       (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D)) ? \
> +                                       &mx6q_##name : &mx6s_##name
> +#endif
> +
>  void setup_i2c(unsigned i2c_index, int speed, int slave_addr,
>                 struct i2c_pads_info *p);
>  void bus_i2c_init(void *base, int speed, int slave_addr,
> --
> 1.9.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot

Hi Nikita,

Very nice cleanup!

Acked-by: Tim Harvey <tharvey at gateworks.com>

Tim


More information about the U-Boot mailing list