[PATCH u-boot 4/5] aspeed: Added function to configure pins for I2C devices.

Maxim Sloyko maxims at google.com
Thu Nov 24 05:06:54 AEDT 2016


On Wed, Nov 23, 2016 at 8:24 AM, Simon Glass <sjg at chromium.org> wrote:
>
> [resend from correct address]
>
> On 23 November 2016 at 09:13, Simon Glass <sjg at google.com> wrote:
> > Hi Maxim,
> >
> > On 22 November 2016 at 16:56,  <maxims at google.com> wrote:
> >> From: Maxim Sloyko <maxims at google.com>
> >>
> >> In the absence of pinmux driver, I2C driver will be
> >> configuring pins directly.
> >
> > Commit subject s/Added/Add/
> >
> > and please remove the '.' at the end.
> >
> >>
> >> Signed-off-by: Maxim Sloyko <maxims at google.com>
> >> ---
> >>  arch/arm/include/asm/arch-aspeed/ast_scu.h |  5 +++++
> >>  arch/arm/mach-aspeed/ast-scu.c             | 28 ++++++++++++++++++++++++++++
> >>  2 files changed, 33 insertions(+)
> >>
> >> diff --git a/arch/arm/include/asm/arch-aspeed/ast_scu.h b/arch/arm/include/asm/arch-aspeed/ast_scu.h
> >> index eb5aaa2..80ebd6f 100644
> >> --- a/arch/arm/include/asm/arch-aspeed/ast_scu.h
> >> +++ b/arch/arm/include/asm/arch-aspeed/ast_scu.h
> >> @@ -46,4 +46,9 @@ extern void ast_scu_init_eth(u8 num);
> >>  extern void ast_scu_multi_func_eth(u8 num);
> >>  extern void ast_scu_multi_func_romcs(u8 num);
> >>
> >> +/* Enable I2C controller and pins for a particular device.
> >> + * Device numbering starts at 1
> >> + */
> >> +extern void ast_scu_enable_i2c(u8 num);
> >
> > I suspect this should be done as a pinctrl driver. See for
> > drivers/pinctrl for examples.


Yes, in the future that is the plan. I think this is OK for now, given
that this file already has similar functions, see
ast_scu_multi_func_{eth, romcs} above.

>
> >
> >> +
> >>  #endif
> >> diff --git a/arch/arm/mach-aspeed/ast-scu.c b/arch/arm/mach-aspeed/ast-scu.c
> >> index e00dbe2..b5aa8bf 100644
> >> --- a/arch/arm/mach-aspeed/ast-scu.c
> >> +++ b/arch/arm/mach-aspeed/ast-scu.c
> >> @@ -507,3 +507,31 @@ void ast_scu_get_who_init_dram(void)
> >>                 break;
> >>         }
> >>  }
> >> +
> >> +void ast_scu_enable_i2c(u8 bus_num)
> >> +{
> >> +       if (bus_num > SCU_I2C_MAX_BUS_NUM) {
> >> +               debug("%s: bus_num is out of range, must be [%d - %d]\n",
> >> +                     __func__, SCU_I2C_MIN_BUS_NUM, SCU_I2C_MAX_BUS_NUM);
> >> +               return;
> >> +       }
> >> +
> >> +       if (bus_num == 0) {
> >> +               /* Enable I2C Controllers */
> >> +               clrbits_le32(AST_SCU_BASE + AST_SCU_RESET, SCU_RESET_I2C);
> >> +       } else if (bus_num >= 3) {
> >> +               setbits_le32(AST_SCU_BASE + AST_SCU_FUN_PIN_CTRL5,
> >> +                            SCU_FUN_PIN_I2C(bus_num));
> >> +       /* In earlier versions of the SoC these pins are always assigned to
> >> +        * respective I2C buses and require no configuration.
> >> +        */
> >> +#ifdef AST_SOC_G5
> >> +       } else if (bus_num == 1) {
> >> +               setbits_le32(AST_SCU_BASE + AST_SCU_FUN_PIN_CTRL8,
> >> +                            SCU_FUN_PIN_SDA1 | SCU_FUN_PIN_SCL1);
> >> +       } else if (bus_num == 2) {
> >> +               setbits_le32(AST_SCU_BASE + AST_SCU_FUN_PIN_CTRL8,
> >> +                            SCU_FUN_PIN_SDA2 | SCU_FUN_PIN_SCL2);
> >> +#endif
> >> +       }
> >> +}
> >> --
> >> 2.8.0.rc3.226.g39d4020
> >>
> >
> > Regards,
> > Simon




-- 
Maxim Sloyko


More information about the openbmc mailing list