[PATCH v2 1/1] drivers: i2c: add brcm iproc I2C driver support

Rayagonda Kokatanur rayagonda.kokatanur at broadcom.com
Wed Apr 8 06:33:45 CEST 2020


On Wed, Apr 8, 2020 at 9:30 AM Heiko Schocher <hs at denx.de> wrote:
>
> Hello Rayagonda Kokatanur,
>
> Am 26.03.2020 um 11:51 schrieb Rayagonda Kokatanur:
> > Add I2C driver support for Broadcom iproc-based socs.
> >
> > Signed-off-by: Arjun Jyothi <arjun.jyothi at broadcom.com>
> > Signed-off-by: Rayagonda Kokatanur <rayagonda.kokatanur at broadcom.com>
> > Signed-off-by: Sheetal Tigadoli <sheetal.tigadoli at broadcom.com>
> > Signed-off-by: Vladimir Olovyannikov <vladimir.olovyannikov at broadcom.com>
> > ---
> > Changes from v1:
> >   -Address all review comments from Heiko Schocher
> >
> >   drivers/i2c/Kconfig     |   8 +
> >   drivers/i2c/Makefile    |   1 +
> >   drivers/i2c/iproc_i2c.c | 713 ++++++++++++++++++++++++++++++++++++++++
> >   drivers/i2c/iproc_i2c.h | 344 +++++++++++++++++++
> >   4 files changed, 1066 insertions(+)
> >   create mode 100644 drivers/i2c/iproc_i2c.c
> >   create mode 100644 drivers/i2c/iproc_i2c.h
> >
> > diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
> > index 03d2fed341..71c827927a 100644
> > --- a/drivers/i2c/Kconfig
> > +++ b/drivers/i2c/Kconfig
> > @@ -71,6 +71,14 @@ config SYS_I2C_AT91
> >         i2c-gpio driver unless your system can cope with this limitation.
> >         Binding info: doc/device-tree-bindings/i2c/i2c-at91.txt
> >
> > +config IPROC_I2C
> > +     bool "Broadcom I2C driver"
> > +     depends on DM_I2C
> > +     help
> > +       Broadcom I2C driver.
> > +       Add support for Broadcom I2C driver.
> > +       Say yes here to to enable the Broadco I2C driver.
> > +
> >   config SYS_I2C_FSL
> >          bool "Freescale I2C bus driver"
> >          depends on DM_I2C
> > diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile
> > index f5a471f887..1ab7a941ca 100644
> > --- a/drivers/i2c/Makefile
> > +++ b/drivers/i2c/Makefile
> > @@ -21,6 +21,7 @@ obj-$(CONFIG_SYS_I2C_FSL) += fsl_i2c.o
> >   obj-$(CONFIG_SYS_I2C_IHS) += ihs_i2c.o
> >   obj-$(CONFIG_SYS_I2C_INTEL) += intel_i2c.o
> >   obj-$(CONFIG_SYS_I2C_IMX_LPI2C) += imx_lpi2c.o
> > +obj-$(CONFIG_IPROC_I2C) += iproc_i2c.o
>
> Sorry for the late comment ... can you please rename this config to
>
> CONFIG_SYS_I2C_IPROC

Will fix this, thank you.

>
> >   obj-$(CONFIG_SYS_I2C_KONA) += kona_i2c.o
> >   obj-$(CONFIG_SYS_I2C_LPC32XX) += lpc32xx_i2c.o
> >   obj-$(CONFIG_SYS_I2C_MESON) += meson_i2c.o
> > diff --git a/drivers/i2c/iproc_i2c.c b/drivers/i2c/iproc_i2c.c
> > new file mode 100644
> > index 0000000000..ea28c18da5
> > --- /dev/null
> > +++ b/drivers/i2c/iproc_i2c.c
> [...]
> > +/*
> > + * This function set clock frequency for SMBus block. As per hardware
> > + * engineering, the clock frequency can be changed dynamically.
> > + */
> > +static int iproc_i2c_set_clk_freq(struct iproc_i2c *bus_prvdata)
> > +{
> > +     struct iproc_i2c_regs *base = bus_prvdata->base;
> > +     unsigned int regval;
> > +
> > +     regval = iproc_i2c_reg_read(&base->timg_cfg);
> > +
> > +     switch (bus_prvdata->bus_speed) {
> > +     case I2C_SPEED_100KHZ:
> > +             regval &= ~CCB_SMB_TIMGCFG_MODE400_MASK;
> > +             break;
> > +
> > +     case I2C_SPEED_400KHZ:
> > +             regval |= CCB_SMB_TIMGCFG_MODE400_MASK;
> > +             break;
>
> Please use here the enums from:
>
> https://gitlab.denx.de/u-boot/u-boot/-/blob/master/include/i2c.h#L44
>
> and drop later your own defines of I2C_SPEED_*

I will use enums from include/i2c.h file and remove our own enums. Thank you.
>
> Thanks!
>
> Beside of this, you can add my
>
> Reviewed-by: Heiko Schocher <hs at denx.de>

Will add, thank you.

Best regards,
Rayagonda

>
> bye,
> Heiko
> --
> DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: +49-8142-66989-52   Fax: +49-8142-66989-80   Email: hs at denx.de


More information about the U-Boot mailing list