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

Heiko Schocher hs at denx.de
Wed Apr 8 06:00:06 CEST 2020


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

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

Thanks!

Beside of this, you can add my

Reviewed-by: Heiko Schocher <hs at denx.de>

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