linux-i2c.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
  • * [PATCH 4/6] i2c: designware: Detect the FIFO size in the common code
           [not found] <20200306131955.12806-1-Sergey.Semin@baikalelectronics.ru>
           [not found] ` <20200306131955.12806-1-Sergey.Semin-UN2wsyeM1qLJ45LvJ/SUn8gurn75+9Lz@public.gmane.org>
    @ 2020-03-06 13:19 ` Sergey.Semin
      2020-03-06 15:01   ` Andy Shevchenko
      2020-03-21 18:32   ` Wolfram Sang
      2020-03-06 13:19 ` [PATCH 5/6] i2c: designware: Discard i2c_dw_read_comp_param() function Sergey.Semin
      2020-03-06 13:19 ` [PATCH 6/6] i2c: designware: Add Baikal-T1 SoC I2C controller support Sergey.Semin
      3 siblings, 2 replies; 17+ messages in thread
    From: Sergey.Semin @ 2020-03-06 13:19 UTC (permalink / raw)
      To: Jarkko Nikula, Andy Shevchenko, Mika Westerberg
      Cc: Serge Semin, Serge Semin, Alexey Malahov, Thomas Bogendoerfer,
    	Paul Burton, Ralf Baechle, linux-i2c, linux-kernel
    
    From: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    
    The problem with detecting the FIFO depth in the platform driver
    is that in order to implement this we have to access the controller
    IC_COMP_PARAM_1 register. Currently it's done before the
    i2c_dw_set_reg_access() method execution, which is errors prone since
    the method determines the registers endianness and access mode and we
    can't use dw_readl/dw_writel accessors before this information is
    retrieved. We also can't move the i2c_dw_set_reg_access() function
    invocation to after the master/slave probe functions call (when endianness
    and access mode are determined), since the FIFO depth information is used
    by them for initializations. So in order to fix the problem we have no
    choice but to move the FIFO size detection methods to the common code and
    call it at the probe stage.
    
    Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    Signed-off-by: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Paul Burton <paulburton@kernel.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-i2c@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    ---
     drivers/i2c/busses/i2c-designware-common.c  | 22 +++++++++++++++++++
     drivers/i2c/busses/i2c-designware-core.h    |  1 +
     drivers/i2c/busses/i2c-designware-master.c  |  2 ++
     drivers/i2c/busses/i2c-designware-platdrv.c | 24 ---------------------
     drivers/i2c/busses/i2c-designware-slave.c   |  2 ++
     5 files changed, 27 insertions(+), 24 deletions(-)
    
    diff --git a/drivers/i2c/busses/i2c-designware-common.c b/drivers/i2c/busses/i2c-designware-common.c
    index 2de7452fcd6d..4291ff6246d8 100644
    --- a/drivers/i2c/busses/i2c-designware-common.c
    +++ b/drivers/i2c/busses/i2c-designware-common.c
    @@ -344,6 +344,28 @@ int i2c_dw_handle_tx_abort(struct dw_i2c_dev *dev)
     		return -EIO;
     }
     
    +void i2c_dw_set_fifo_size(struct dw_i2c_dev *dev)
    +{
    +	u32 param, tx_fifo_depth, rx_fifo_depth;
    +
    +	/*
    +	 * Try to detect the FIFO depth if not set by interface driver,
    +	 * the depth could be from 2 to 256 from HW spec.
    +	 */
    +	param = dw_readl(dev, DW_IC_COMP_PARAM_1);
    +	tx_fifo_depth = ((param >> 16) & 0xff) + 1;
    +	rx_fifo_depth = ((param >> 8)  & 0xff) + 1;
    +	if (!dev->tx_fifo_depth) {
    +		dev->tx_fifo_depth = tx_fifo_depth;
    +		dev->rx_fifo_depth = rx_fifo_depth;
    +	} else if (tx_fifo_depth >= 2) {
    +		dev->tx_fifo_depth = min_t(u32, dev->tx_fifo_depth,
    +				tx_fifo_depth);
    +		dev->rx_fifo_depth = min_t(u32, dev->rx_fifo_depth,
    +				rx_fifo_depth);
    +	}
    +}
    +
     u32 i2c_dw_func(struct i2c_adapter *adap)
     {
     	struct dw_i2c_dev *dev = i2c_get_adapdata(adap);
    diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h
    index 67edbbde1070..3fbc9f22fcf1 100644
    --- a/drivers/i2c/busses/i2c-designware-core.h
    +++ b/drivers/i2c/busses/i2c-designware-core.h
    @@ -297,6 +297,7 @@ int i2c_dw_acquire_lock(struct dw_i2c_dev *dev);
     void i2c_dw_release_lock(struct dw_i2c_dev *dev);
     int i2c_dw_wait_bus_not_busy(struct dw_i2c_dev *dev);
     int i2c_dw_handle_tx_abort(struct dw_i2c_dev *dev);
    +void i2c_dw_set_fifo_size(struct dw_i2c_dev *dev);
     u32 i2c_dw_func(struct i2c_adapter *adap);
     void i2c_dw_disable(struct dw_i2c_dev *dev);
     void i2c_dw_disable_int(struct dw_i2c_dev *dev);
    diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
    index e8b328242256..05da900cf375 100644
    --- a/drivers/i2c/busses/i2c-designware-master.c
    +++ b/drivers/i2c/busses/i2c-designware-master.c
    @@ -698,6 +698,8 @@ int i2c_dw_probe(struct dw_i2c_dev *dev)
     	if (ret)
     		return ret;
     
    +	i2c_dw_set_fifo_size(dev);
    +
     	ret = dev->init(dev);
     	if (ret)
     		return ret;
    diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
    index 3b7d58c2fe85..cb494273bb60 100644
    --- a/drivers/i2c/busses/i2c-designware-platdrv.c
    +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
    @@ -219,28 +219,6 @@ static void i2c_dw_configure_slave(struct dw_i2c_dev *dev)
     	dev->mode = DW_IC_SLAVE;
     }
     
    -static void dw_i2c_set_fifo_size(struct dw_i2c_dev *dev)
    -{
    -	u32 param, tx_fifo_depth, rx_fifo_depth;
    -
    -	/*
    -	 * Try to detect the FIFO depth if not set by interface driver,
    -	 * the depth could be from 2 to 256 from HW spec.
    -	 */
    -	param = i2c_dw_read_comp_param(dev);
    -	tx_fifo_depth = ((param >> 16) & 0xff) + 1;
    -	rx_fifo_depth = ((param >> 8)  & 0xff) + 1;
    -	if (!dev->tx_fifo_depth) {
    -		dev->tx_fifo_depth = tx_fifo_depth;
    -		dev->rx_fifo_depth = rx_fifo_depth;
    -	} else if (tx_fifo_depth >= 2) {
    -		dev->tx_fifo_depth = min_t(u32, dev->tx_fifo_depth,
    -				tx_fifo_depth);
    -		dev->rx_fifo_depth = min_t(u32, dev->rx_fifo_depth,
    -				rx_fifo_depth);
    -	}
    -}
    -
     static void dw_i2c_plat_pm_cleanup(struct dw_i2c_dev *dev)
     {
     	pm_runtime_disable(dev->dev);
    @@ -362,8 +340,6 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
     				div_u64(clk_khz * t->sda_hold_ns + 500000, 1000000);
     	}
     
    -	dw_i2c_set_fifo_size(dev);
    -
     	adap = &dev->adapter;
     	adap->owner = THIS_MODULE;
     	adap->class = I2C_CLASS_DEPRECATED;
    diff --git a/drivers/i2c/busses/i2c-designware-slave.c b/drivers/i2c/busses/i2c-designware-slave.c
    index f5f001738df5..0fc3aa31d46a 100644
    --- a/drivers/i2c/busses/i2c-designware-slave.c
    +++ b/drivers/i2c/busses/i2c-designware-slave.c
    @@ -260,6 +260,8 @@ int i2c_dw_probe_slave(struct dw_i2c_dev *dev)
     	if (ret)
     		return ret;
     
    +	i2c_dw_set_fifo_size(dev);
    +
     	ret = dev->init(dev);
     	if (ret)
     		return ret;
    -- 
    2.25.1
    
    ^ permalink raw reply related	[flat|nested] 17+ messages in thread
  • * [PATCH 5/6] i2c: designware: Discard i2c_dw_read_comp_param() function
           [not found] <20200306131955.12806-1-Sergey.Semin@baikalelectronics.ru>
           [not found] ` <20200306131955.12806-1-Sergey.Semin-UN2wsyeM1qLJ45LvJ/SUn8gurn75+9Lz@public.gmane.org>
      2020-03-06 13:19 ` [PATCH 4/6] i2c: designware: Detect the FIFO size in the common code Sergey.Semin
    @ 2020-03-06 13:19 ` Sergey.Semin
      2020-03-12 14:50   ` Jarkko Nikula
      2020-03-21 18:32   ` Wolfram Sang
      2020-03-06 13:19 ` [PATCH 6/6] i2c: designware: Add Baikal-T1 SoC I2C controller support Sergey.Semin
      3 siblings, 2 replies; 17+ messages in thread
    From: Sergey.Semin @ 2020-03-06 13:19 UTC (permalink / raw)
      To: Jarkko Nikula, Andy Shevchenko, Mika Westerberg
      Cc: Serge Semin, Serge Semin, Alexey Malahov, Thomas Bogendoerfer,
    	Paul Burton, Ralf Baechle, linux-i2c, linux-kernel
    
    From: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    
    There is no code left in the kernel which would be using the function.
    So just remove it.
    
    Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    Signed-off-by: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Paul Burton <paulburton@kernel.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-i2c@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    ---
     drivers/i2c/busses/i2c-designware-common.c | 6 ------
     drivers/i2c/busses/i2c-designware-core.h   | 1 -
     2 files changed, 7 deletions(-)
    
    diff --git a/drivers/i2c/busses/i2c-designware-common.c b/drivers/i2c/busses/i2c-designware-common.c
    index 4291ff6246d8..72e93c1aa9bc 100644
    --- a/drivers/i2c/busses/i2c-designware-common.c
    +++ b/drivers/i2c/busses/i2c-designware-common.c
    @@ -388,11 +388,5 @@ void i2c_dw_disable_int(struct dw_i2c_dev *dev)
     	dw_writel(dev, 0, DW_IC_INTR_MASK);
     }
     
    -u32 i2c_dw_read_comp_param(struct dw_i2c_dev *dev)
    -{
    -	return dw_readl(dev, DW_IC_COMP_PARAM_1);
    -}
    -EXPORT_SYMBOL_GPL(i2c_dw_read_comp_param);
    -
     MODULE_DESCRIPTION("Synopsys DesignWare I2C bus adapter core");
     MODULE_LICENSE("GPL");
    diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h
    index 3fbc9f22fcf1..b220ad64c38d 100644
    --- a/drivers/i2c/busses/i2c-designware-core.h
    +++ b/drivers/i2c/busses/i2c-designware-core.h
    @@ -314,7 +314,6 @@ static inline void __i2c_dw_disable_nowait(struct dw_i2c_dev *dev)
     
     void __i2c_dw_disable(struct dw_i2c_dev *dev);
     
    -extern u32 i2c_dw_read_comp_param(struct dw_i2c_dev *dev);
     extern int i2c_dw_probe(struct dw_i2c_dev *dev);
     #if IS_ENABLED(CONFIG_I2C_DESIGNWARE_SLAVE)
     extern int i2c_dw_probe_slave(struct dw_i2c_dev *dev);
    -- 
    2.25.1
    
    ^ permalink raw reply related	[flat|nested] 17+ messages in thread
  • * [PATCH 6/6] i2c: designware: Add Baikal-T1 SoC I2C controller support
           [not found] <20200306131955.12806-1-Sergey.Semin@baikalelectronics.ru>
                       ` (2 preceding siblings ...)
      2020-03-06 13:19 ` [PATCH 5/6] i2c: designware: Discard i2c_dw_read_comp_param() function Sergey.Semin
    @ 2020-03-06 13:19 ` Sergey.Semin
      2020-03-06 13:51   ` Andy Shevchenko
      2020-03-21 18:33   ` Wolfram Sang
      3 siblings, 2 replies; 17+ messages in thread
    From: Sergey.Semin @ 2020-03-06 13:19 UTC (permalink / raw)
      To: Jarkko Nikula, Andy Shevchenko, Mika Westerberg
      Cc: Serge Semin, Serge Semin, Alexey Malahov, Thomas Bogendoerfer,
    	Paul Burton, Ralf Baechle, linux-i2c, linux-kernel
    
    From: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    
    A third I2C controller embedded into the Baikal-T1 SoC is also fully
    based on the DW APB I2C core, but its registers are indirectly
    accessible via "command/data in/data out" trio. There is no difference
    other than that. So in order to have that controller supported by the
    common DW APB I2C driver we only need to introduce a new flag
    ACCESS_INDIRECT and use the access-registers to reach the I2C controller
    normal registers space in the dw_readl/dw_writel methods. Currently this
    flag is only enabled for the controllers with "be,bt1-i2c" compatible
    string.
    
    Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
    Signed-off-by: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Paul Burton <paulburton@kernel.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-i2c@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    ---
     drivers/i2c/busses/i2c-designware-common.c  | 79 ++++++++++++++++++---
     drivers/i2c/busses/i2c-designware-core.h    | 14 ++++
     drivers/i2c/busses/i2c-designware-master.c  |  1 +
     drivers/i2c/busses/i2c-designware-platdrv.c |  1 +
     drivers/i2c/busses/i2c-designware-slave.c   |  1 +
     5 files changed, 86 insertions(+), 10 deletions(-)
    
    diff --git a/drivers/i2c/busses/i2c-designware-common.c b/drivers/i2c/busses/i2c-designware-common.c
    index 72e93c1aa9bc..d3010bb6ad42 100644
    --- a/drivers/i2c/busses/i2c-designware-common.c
    +++ b/drivers/i2c/busses/i2c-designware-common.c
    @@ -15,6 +15,7 @@
     #include <linux/err.h>
     #include <linux/i2c.h>
     #include <linux/interrupt.h>
    +#include <linux/spinlock.h>
     #include <linux/io.h>
     #include <linux/module.h>
     #include <linux/pm_runtime.h>
    @@ -53,15 +54,75 @@ static char *abort_sources[] = {
     		"incorrect slave-transmitter mode configuration",
     };
     
    +static inline u32 dw_read_reg(struct dw_i2c_dev *dev, int offset)
    +{
    +	if (dev->flags & ACCESS_16BIT)
    +		return readw_relaxed(dev->base + offset) |
    +			(readw_relaxed(dev->base + offset + 2) << 16);
    +	else
    +		return readl_relaxed(dev->base + offset);
    +}
    +
    +static inline void dw_write_reg(struct dw_i2c_dev *dev, u32 b, int offset)
    +{
    +	if (dev->flags & ACCESS_16BIT) {
    +		writew_relaxed((u16)b, dev->base + offset);
    +		writew_relaxed((u16)(b >> 16), dev->base + offset + 2);
    +	} else {
    +		writel_relaxed(b, dev->base + offset);
    +	}
    +}
    +
    +static inline u32 dw_read_ind(struct dw_i2c_dev *dev, int offset)
    +{
    +	unsigned long flags, ok = DW_IC_IND_RETRY;
    +	u32 cmd, value = 0;
    +
    +	cmd = DW_IC_CTL_GO | (offset & DW_IC_CTL_ADDR_MASK);
    +
    +	spin_lock_irqsave(&dev->ind_lock, flags);
    +
    +	dw_write_reg(dev, cmd, DW_IC_CTL);
    +
    +	while ((dw_read_reg(dev, DW_IC_CTL) & DW_IC_CTL_GO) && ok--);
    +	if (ok)
    +		value = dw_read_reg(dev, DW_IC_DO);
    +	else
    +		dev_err(dev->dev, "Register 0x%02x read timedout\n", offset);
    +
    +	spin_unlock_irqrestore(&dev->ind_lock, flags);
    +
    +	return value;
    +}
    +
    +static inline void dw_write_ind(struct dw_i2c_dev *dev, u32 b, int offset)
    +{
    +	unsigned long flags, ok = DW_IC_IND_RETRY;
    +	u32 cmd;
    +
    +	cmd = DW_IC_CTL_GO | DW_IC_CTL_WR | (offset & DW_IC_CTL_ADDR_MASK);
    +
    +	spin_lock_irqsave(&dev->ind_lock, flags);
    +
    +	dw_write_reg(dev, b, DW_IC_DI);
    +	dw_write_reg(dev, cmd, DW_IC_CTL);
    +
    +	while ((dw_read_reg(dev, DW_IC_CTL) & DW_IC_CTL_GO) && ok--);
    +
    +	spin_unlock_irqrestore(&dev->ind_lock, flags);
    +
    +	if (!ok)
    +		dev_err(dev->dev, "Register 0x%02x write timedout\n", offset);
    +}
    +
     u32 dw_readl(struct dw_i2c_dev *dev, int offset)
     {
     	u32 value;
     
    -	if (dev->flags & ACCESS_16BIT)
    -		value = readw_relaxed(dev->base + offset) |
    -			(readw_relaxed(dev->base + offset + 2) << 16);
    +	if (dev->flags & ACCESS_INDIRECT)
    +		value = dw_read_ind(dev, offset);
     	else
    -		value = readl_relaxed(dev->base + offset);
    +		value = dw_read_reg(dev, offset);
     
     	if (dev->flags & ACCESS_SWAP)
     		return swab32(value);
    @@ -74,12 +135,10 @@ void dw_writel(struct dw_i2c_dev *dev, u32 b, int offset)
     	if (dev->flags & ACCESS_SWAP)
     		b = swab32(b);
     
    -	if (dev->flags & ACCESS_16BIT) {
    -		writew_relaxed((u16)b, dev->base + offset);
    -		writew_relaxed((u16)(b >> 16), dev->base + offset + 2);
    -	} else {
    -		writel_relaxed(b, dev->base + offset);
    -	}
    +	if (dev->flags & ACCESS_INDIRECT)
    +		dw_write_ind(dev, b, offset);
    +	else
    +		dw_write_reg(dev, b, offset);
     }
     
     /**
    diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h
    index b220ad64c38d..0857b3842283 100644
    --- a/drivers/i2c/busses/i2c-designware-core.h
    +++ b/drivers/i2c/busses/i2c-designware-core.h
    @@ -170,11 +170,23 @@
     					 DW_IC_TX_ABRT_TXDATA_NOACK | \
     					 DW_IC_TX_ABRT_GCALL_NOACK)
     
    +/*
    + * Access registers for the IC space described above.
    + */
    +#define DW_IC_CTL		0x0
    +#define DW_IC_DI		0x4
    +#define DW_IC_DO		0x8
    +#define DW_IC_IND_RETRY		100
    +
    +#define DW_IC_CTL_GO		BIT(31)
    +#define DW_IC_CTL_WR		BIT(8)
    +#define DW_IC_CTL_ADDR_MASK	GENMASK(7, 0)
     
     /**
      * struct dw_i2c_dev - private i2c-designware data
      * @dev: driver model device node
      * @base: IO registers pointer
    + * @ind_lock: Spin-lock for indirectly accesible registers
      * @cmd_complete: tx completion indicator
      * @clk: input reference clock
      * @pclk: clock required to access the registers
    @@ -226,6 +238,7 @@ struct dw_i2c_dev {
     	struct device		*dev;
     	void __iomem		*base;
     	void __iomem		*ext;
    +	spinlock_t		ind_lock;
     	struct completion	cmd_complete;
     	struct clk		*clk;
     	struct clk		*pclk;
    @@ -280,6 +293,7 @@ struct dw_i2c_dev {
     #define ACCESS_16BIT		0x00000002
     #define ACCESS_INTR_MASK	0x00000004
     #define ACCESS_NO_IRQ_SUSPEND	0x00000008
    +#define ACCESS_INDIRECT		0x00000010
     
     #define MODEL_CHERRYTRAIL	0x00000100
     #define MODEL_MSCC_OCELOT	0x00000200
    diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
    index 05da900cf375..59365dd4dc66 100644
    --- a/drivers/i2c/busses/i2c-designware-master.c
    +++ b/drivers/i2c/busses/i2c-designware-master.c
    @@ -684,6 +684,7 @@ int i2c_dw_probe(struct dw_i2c_dev *dev)
     	unsigned long irq_flags;
     	int ret;
     
    +	spin_lock_init(&dev->ind_lock);
     	init_completion(&dev->cmd_complete);
     
     	dev->init = i2c_dw_init_master;
    diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
    index cb494273bb60..683c456c4e1c 100644
    --- a/drivers/i2c/busses/i2c-designware-platdrv.c
    +++ b/drivers/i2c/busses/i2c-designware-platdrv.c
    @@ -176,6 +176,7 @@ static int dw_i2c_of_configure(struct platform_device *pdev)
     static const struct of_device_id dw_i2c_of_match[] = {
     	{ .compatible = "snps,designware-i2c", },
     	{ .compatible = "mscc,ocelot-i2c", .data = (void *)MODEL_MSCC_OCELOT },
    +	{ .compatible = "be,bt1-i2c", .data = (void *)ACCESS_INDIRECT },
     	{},
     };
     MODULE_DEVICE_TABLE(of, dw_i2c_of_match);
    diff --git a/drivers/i2c/busses/i2c-designware-slave.c b/drivers/i2c/busses/i2c-designware-slave.c
    index 0fc3aa31d46a..a6e65dcc693b 100644
    --- a/drivers/i2c/busses/i2c-designware-slave.c
    +++ b/drivers/i2c/busses/i2c-designware-slave.c
    @@ -246,6 +246,7 @@ int i2c_dw_probe_slave(struct dw_i2c_dev *dev)
     	struct i2c_adapter *adap = &dev->adapter;
     	int ret;
     
    +	spin_lock_init(&dev->ind_lock);
     	init_completion(&dev->cmd_complete);
     
     	dev->init = i2c_dw_init_slave;
    -- 
    2.25.1
    
    ^ permalink raw reply related	[flat|nested] 17+ messages in thread

  • end of thread, other threads:[~2020-03-25 21:09 UTC | newest]
    
    Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <20200306131955.12806-1-Sergey.Semin@baikalelectronics.ru>
         [not found] ` <20200306131955.12806-1-Sergey.Semin-UN2wsyeM1qLJ45LvJ/SUn8gurn75+9Lz@public.gmane.org>
    2020-03-06 13:19   ` [PATCH 2/6] dt-bindings: i2c: Replace DW I2C legacy bindings with YAML-based one Sergey.Semin-UN2wsyeM1qLJ45LvJ/SUn8gurn75+9Lz
         [not found]     ` <20200306132011.66A7A80307C4-wa7pjkrhtJ0iPEH9HxOKe7DSMK2IXMYWh13vi7wywA4@public.gmane.org>
    2020-03-12 21:43       ` Rob Herring
    2020-03-25 20:49         ` Sergey Semin
    2020-03-06 13:19   ` [PATCH 3/6] dt-bindings: i2c: dw: Add Baikal-T1 SoC I2C controller Sergey.Semin-UN2wsyeM1qLJ45LvJ/SUn8gurn75+9Lz
    2020-03-12 21:43     ` Rob Herring
    2020-03-25 21:09       ` Sergey Semin
    2020-03-06 13:19 ` [PATCH 4/6] i2c: designware: Detect the FIFO size in the common code Sergey.Semin
    2020-03-06 15:01   ` Andy Shevchenko
    2020-03-12 14:50     ` Jarkko Nikula
    2020-03-21 18:32   ` Wolfram Sang
    2020-03-06 13:19 ` [PATCH 5/6] i2c: designware: Discard i2c_dw_read_comp_param() function Sergey.Semin
    2020-03-12 14:50   ` Jarkko Nikula
    2020-03-21 18:32   ` Wolfram Sang
    2020-03-06 13:19 ` [PATCH 6/6] i2c: designware: Add Baikal-T1 SoC I2C controller support Sergey.Semin
    2020-03-06 13:51   ` Andy Shevchenko
    2020-03-21 18:33   ` Wolfram Sang
    2020-03-25 18:21     ` Sergey Semin
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox;
    as well as URLs for NNTP newsgroup(s).