[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