All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mario Six <mario.six@gdsys.cc>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 078/080] i2c: ihs_i2c: Make DM compatible
Date: Fri, 29 Sep 2017 14:52:36 +0200	[thread overview]
Message-ID: <20170929125238.26226-78-mario.six@gdsys.cc> (raw)
In-Reply-To: <20170929125238.26226-1-mario.six@gdsys.cc>

Make the ihs_i2c driver DM-compatible; for legacy boards, the old functions are
retained within #ifdefs.

No board uses the new DM driver yet; this patch only lays the foundation for
future support.

Signed-off-by: Mario Six <mario.six@gdsys.cc>
---
 drivers/i2c/ihs_i2c.c | 201 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 198 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/ihs_i2c.c b/drivers/i2c/ihs_i2c.c
index 6fd016339c..c3fddb55f9 100644
--- a/drivers/i2c/ihs_i2c.c
+++ b/drivers/i2c/ihs_i2c.c
@@ -3,19 +3,39 @@
  * Dirk Eibach,  Guntermann & Drunck GmbH, eibach at gdsys.de
  *
  * SPDX-License-Identifier:	GPL-2.0+
- *
- * NOTE: This driver should be converted to driver model before June 2017.
- * Please see doc/driver-model/i2c-howto.txt for instructions.
  */

 #include <common.h>
 #include <i2c.h>
+#ifdef CONFIG_DM_I2C
+#include <dm.h>
+#include <ihs_fpga.h>
+#include "../misc/gdsys_soc.h"
+#else
 #include <gdsys_fpga.h>
+#endif
 #include <asm/unaligned.h>

+#ifdef CONFIG_DM_I2C
+struct ihs_i2c_priv {
+	uint speed;
+	phys_addr_t addr;
+};
+
+enum {
+	REG_INTERRUPT_STATUS = 0x00,
+	REG_INTERRUPT_ENABLE_CONTROL = 0x02,
+	REG_WRITE_MAILBOX_EXT = 0x04,
+	REG_WRITE_MAILBOX = 0x06,
+	REG_READ_MAILBOX_EXT = 0x08,
+	REG_READ_MAILBOX = 0x0A,
+};
+
+#else /* !CONFIG_DM_I2C */
 DECLARE_GLOBAL_DATA_PTR;

 #ifdef CONFIG_SYS_I2C_IHS_DUAL
+
 #define I2C_SET_REG(fld, val) \
 	do { \
 		if (I2C_ADAP_HWNR & 0x10) \
@@ -40,6 +60,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #define I2C_GET_REG(fld, val) \
 		FPGA_GET_REG(I2C_ADAP_HWNR, i2c0.fld, val)
 #endif
+#endif /* CONFIG_DM_I2C */

 enum {
 	I2CINT_ERROR_EV = BIT(13),
@@ -62,33 +83,71 @@ enum {
 	I2COP_READ = 1,
 };

+#ifdef CONFIG_DM_I2C
+static int wait_for_int(struct udevice *dev, int read)
+#else
 static int wait_for_int(bool read)
+#endif
 {
 	u16 val;
 	uint ctr = 0;
+#ifdef CONFIG_DM_I2C
+	struct ihs_i2c_priv *priv = dev_get_priv(dev);
+	struct udevice *fpga;

+	gdsys_soc_get_fpga(dev, &fpga);
+#endif
+
+#ifdef CONFIG_DM_I2C
+	val = fpga_in_le16(fpga,
+			   priv->addr + REG_INTERRUPT_STATUS);
+#else
 	I2C_GET_REG(interrupt_status, &val);
+#endif
 	/* Wait until error or receive/transmit interrupt was raised */
 	while (!(val & (I2CINT_ERROR_EV
 	       | (read ? I2CINT_RECEIVE_EV : I2CINT_TRANSMIT_EV)))) {
 		udelay(10);
 		if (ctr++ > 5000)
 			return 1;
+#ifdef CONFIG_DM_I2C
+		val = fpga_in_le16(fpga,
+				   priv->addr + REG_INTERRUPT_STATUS);
+#else
 		I2C_GET_REG(interrupt_status, &val);
+#endif
 	}

 	return (val & I2CINT_ERROR_EV) ? 1 : 0;
 }

+#ifdef CONFIG_DM_I2C
+static int ihs_i2c_transfer(struct udevice *dev, uchar chip,
+			    uchar *buffer, int len, int read, bool is_last)
+#else
 static int ihs_i2c_transfer(uchar chip, uchar *buffer, int len, bool read,
 			    bool is_last)
+#endif
 {
 	u16 val;
+#ifdef CONFIG_DM_I2C
+	struct ihs_i2c_priv *priv = dev_get_priv(dev);
+	struct udevice *fpga;
+
+	gdsys_soc_get_fpga(dev, &fpga);
+#endif

 	/* Clear interrupt status */
+#ifdef CONFIG_DM_I2C
+	fpga_out_le16(fpga, priv->addr + REG_INTERRUPT_STATUS,
+		      I2CINT_ERROR_EV | I2CINT_RECEIVE_EV | I2CINT_TRANSMIT_EV);
+	val = fpga_in_le16(fpga,
+			   priv->addr + REG_INTERRUPT_STATUS);
+#else
 	I2C_SET_REG(interrupt_status, I2CINT_ERROR_EV
 		     | I2CINT_RECEIVE_EV | I2CINT_TRANSMIT_EV);
 	I2C_GET_REG(interrupt_status, &val);
+#endif

 	/* If we want to write and have data, write the bytes to the mailbox */
 	if (!read && len) {
@@ -96,22 +155,45 @@ static int ihs_i2c_transfer(uchar chip, uchar *buffer, int len, bool read,

 		if (len > 1)
 			val |= buffer[1] << 8;
+#ifdef CONFIG_DM_I2C
+		fpga_out_le16(fpga,
+			      priv->addr + REG_WRITE_MAILBOX_EXT, val);
+#else
 		I2C_SET_REG(write_mailbox_ext, val);
+#endif
 	}

+#ifdef CONFIG_DM_I2C
+	fpga_out_le16(fpga, priv->addr + REG_WRITE_MAILBOX,
+		      I2CMB_NATIVE
+		      | (read ? I2CMB_READ : I2CMB_WRITE)
+		      | (chip << 1)
+		      | ((len > 1) ? I2CMB_2BYTE : I2CMB_1BYTE)
+		      | (!is_last ? I2CMB_HOLD_BUS : I2CMB_DONT_HOLD_BUS));
+#else
 	I2C_SET_REG(write_mailbox,
 		    I2CMB_NATIVE
 		    | (read ? 0 : I2CMB_WRITE)
 		    | (chip << 1)
 		    | ((len > 1) ? I2CMB_2BYTE : 0)
 		    | (is_last ? 0 : I2CMB_HOLD_BUS));
+#endif

+#ifdef CONFIG_DM_I2C
+	if (wait_for_int(dev, read))
+#else
 	if (wait_for_int(read))
+#endif
 		return 1;

 	/* If we want to read, get the bytes from the mailbox */
 	if (read) {
+#ifdef CONFIG_DM_I2C
+		val = fpga_in_le16(fpga,
+				   priv->addr + REG_READ_MAILBOX_EXT);
+#else
 		I2C_GET_REG(read_mailbox_ext, &val);
+#endif
 		buffer[0] = val & 0xff;
 		if (len > 1)
 			buffer[1] = val >> 8;
@@ -120,15 +202,25 @@ static int ihs_i2c_transfer(uchar chip, uchar *buffer, int len, bool read,
 	return 0;
 }

+#ifdef CONFIG_DM_I2C
+static int ihs_i2c_address(struct udevice *dev, uchar chip, u8 *addr, int alen, bool hold_bus)
+#else
 static int ihs_i2c_address(uchar chip, u8 *addr, int alen, bool hold_bus)
+#endif
 {
 	while (alen) {
 		int transfer = min(alen, 2);
 		bool is_last = alen <= transfer;

+#ifdef CONFIG_DM_I2C
+		if (ihs_i2c_transfer(dev, chip, addr, transfer, I2COP_WRITE,
+				     hold_bus ? false : is_last))
+			return 1;
+#else
 		if (ihs_i2c_transfer(chip, addr, transfer, I2COP_WRITE,
 				     hold_bus ? false : is_last))
 			return 1;
+#endif

 		alen -= transfer;
 	}
@@ -136,20 +228,36 @@ static int ihs_i2c_address(uchar chip, u8 *addr, int alen, bool hold_bus)
 	return 0;
 }

+#ifdef CONFIG_DM_I2C
+static int ihs_i2c_access(struct udevice *dev, uchar chip, u8 *addr,
+			  int alen, uchar *buffer, int len, int read)
+#else
 static int ihs_i2c_access(struct i2c_adapter *adap, uchar chip, u8 *addr,
 			  int alen, uchar *buffer, int len, int read)
+#endif
 {
 	/* Don't hold the bus if length of data to send/receive is zero */
+#ifdef CONFIG_DM_I2C
+	if (len <= 0 || ihs_i2c_address(dev, chip, addr, alen, len))
+		return 1;
+#else
 	if (len <= 0 || ihs_i2c_address(chip, addr, alen, len))
 		return 1;
+#endif

 	while (len) {
 		int transfer = min(len, 2);
 		bool is_last = len <= transfer;

+#ifdef CONFIG_DM_I2C
+		if (ihs_i2c_transfer(dev, chip, buffer, transfer, read,
+				     is_last))
+			return 2;
+#else
 		if (ihs_i2c_transfer(chip, buffer, transfer, read,
 				     is_last))
 			return 2;
+#endif

 		buffer += transfer;
 		len -= transfer;
@@ -158,6 +266,92 @@ static int ihs_i2c_access(struct i2c_adapter *adap, uchar chip, u8 *addr,
 	return 0;
 }

+#ifdef CONFIG_DM_I2C
+
+int ihs_i2c_probe(struct udevice *bus)
+{
+	struct ihs_i2c_priv *priv = dev_get_priv(bus);
+	int addr;
+
+	addr = dev_read_u32_default(bus, "reg", -1);
+
+	priv->addr = addr;
+
+	return 0;
+}
+
+static int ihs_i2c_set_bus_speed(struct udevice *bus, uint speed)
+{
+	struct ihs_i2c_priv *priv = dev_get_priv(bus);
+
+	if (speed != priv->speed && priv->speed != 0)
+		return 1;
+
+	priv->speed = speed;
+
+	return 0;
+}
+
+static int ihs_i2c_xfer(struct udevice *bus, struct i2c_msg *msg, int nmsgs)
+{
+	struct i2c_msg *dmsg, *omsg, dummy;
+
+	memset(&dummy, 0, sizeof(struct i2c_msg));
+
+	/* We expect either two messages (one with an offset and one with the
+	 * actucal data) or one message (just data)
+	 */
+	if (nmsgs > 2 || nmsgs == 0) {
+		debug("%s: Only one or two messages are supported.", __func__);
+		return -1;
+	}
+
+	omsg = nmsgs == 1 ? &dummy : msg;
+	dmsg = nmsgs == 1 ? msg : msg + 1;
+
+	if (dmsg->flags & I2C_M_RD)
+		return ihs_i2c_access(bus, dmsg->addr, omsg->buf,
+				      omsg->len, dmsg->buf, dmsg->len,
+				      I2COP_READ);
+	else
+		return ihs_i2c_access(bus, dmsg->addr, omsg->buf,
+				      omsg->len, dmsg->buf, dmsg->len,
+				      I2COP_WRITE);
+}
+
+static int ihs_i2c_probe_chip(struct udevice *bus, u32 chip_addr,
+			      u32 chip_flags)
+{
+	uchar buffer[2];
+
+	if (ihs_i2c_transfer(bus, chip_addr, buffer, 0, I2COP_READ, true))
+		return 1;
+
+	return 0;
+}
+
+static const struct dm_i2c_ops ihs_i2c_ops = {
+	.xfer           = ihs_i2c_xfer,
+	.probe_chip     = ihs_i2c_probe_chip,
+	.set_bus_speed  = ihs_i2c_set_bus_speed,
+};
+
+static const struct udevice_id ihs_i2c_ids[] = {
+	{ .compatible = "gdsys,ihs_i2cmaster", },
+	{ /* sentinel */ }
+};
+
+U_BOOT_DRIVER(i2c_ihs) = {
+	.name = "i2c_ihs",
+	.id = UCLASS_I2C,
+	.of_match = ihs_i2c_ids,
+	.probe = ihs_i2c_probe,
+	.priv_auto_alloc_size = sizeof(struct ihs_i2c_priv),
+	.ops = &ihs_i2c_ops,
+};
+
+#else /* CONFIG_DM_I2C */
+
 static void ihs_i2c_init(struct i2c_adapter *adap, int speed, int slaveaddr)
 {
 #ifdef CONFIG_SYS_I2C_INIT_BOARD
@@ -269,3 +463,4 @@ U_BOOT_I2C_ADAP_COMPLETE(ihs3_1, ihs_i2c_init, ihs_i2c_probe,
 			 CONFIG_SYS_I2C_IHS_SLAVE_3_1, 19)
 #endif
 #endif
+#endif /* CONFIG_DM_I2C */
--
2.11.0

  parent reply	other threads:[~2017-09-29 12:52 UTC|newest]

Thread overview: 121+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-29 12:51 [U-Boot] [PATCH 001/080] mpc8308rdb: Fix style violation Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 002/080] mpc83xx: spd_sdram: Fix whitespace style violations Mario Six
2017-09-29 14:03   ` Wolfgang Denk
2017-10-04  6:14     ` Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 003/080] mpc83xx: spd_sdram: Fix " Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 004/080] include: dm: Fix 'devioe'/'devuce' typos Mario Six
2017-10-09  4:46   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 005/080] lib: fdtdec: Fix whitespace style violations Mario Six
2017-10-09  4:46   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 006/080] lib: fdtdec: Fix some " Mario Six
2017-10-09  4:46   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 007/080] core: ofnode: Fix " Mario Six
2017-10-09  4:45   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 008/080] core: read: " Mario Six
2017-10-09  4:45   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 009/080] core: Add {ofnode, dev}_translate_address functions Mario Six
2017-10-09  4:46   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 010/080] core: Make device_is_compatible live-tree compatible Mario Six
2017-10-09  4:46   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 011/080] clk: clk-uclass: Fix style violations Mario Six
2017-10-09  4:46   ` Simon Glass
2017-10-09  8:10     ` Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 012/080] clk: clk_fixed_rate: Fix style violation Mario Six
2017-10-09  4:46   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 013/080] clk: Remove superfluous gd declarations Mario Six
2017-10-09  4:46   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 014/080] spi: Fix style violation and improve code Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 015/080] spi: Remove obsolete spi_base_setup_slave_fdt Mario Six
2017-10-09  4:46   ` Simon Glass
2017-10-09  9:32   ` Jagan Teki
2017-09-29 12:51 ` [U-Boot] [PATCH 016/080] spi: Remove spi_flash_probe_fdt Mario Six
2017-10-09  4:47   ` Simon Glass
2017-10-09  9:35   ` Jagan Teki
2017-09-29 12:51 ` [U-Boot] [PATCH 017/080] spi: Remove spi_setup_slave_fdt Mario Six
2017-10-09  4:47   ` Simon Glass
2017-10-09  9:36   ` Jagan Teki
2017-09-29 12:51 ` [U-Boot] [PATCH 018/080] spi: Remove CONFIG_OF_SPI_FLASH Mario Six
2017-10-09  4:46   ` Simon Glass
2017-10-09  9:34   ` Jagan Teki
2017-09-29 12:51 ` [U-Boot] [PATCH 019/080] spi: sf_probe: Fix style violations Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 020/080] spi: spi-uclass: " Mario Six
2017-10-09  4:47   ` Simon Glass
2017-10-09  9:36   ` Jagan Teki
2017-09-29 12:51 ` [U-Boot] [PATCH 021/080] sf_probe: Merge spi_flash_probe_tail into spi_flash_probe Mario Six
2017-10-09  4:47   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 022/080] net: tsec: Fix style violations Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 023/080] net: tsec: Fix memory leak in error path Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 024/080] net: tsec: Make live-tree compatible Mario Six
2017-10-09  4:47   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 025/080] i2c: fsl_i2c: Fix style violations Mario Six
2017-10-02  6:19   ` Heiko Schocher
2017-09-29 12:51 ` [U-Boot] [PATCH 026/080] i2c: fsl_i2c: Remove inline declarations Mario Six
2017-10-02  6:20   ` Heiko Schocher
2017-09-29 12:51 ` [U-Boot] [PATCH 027/080] i2c: fsl_i2c: Make live-tree compatible Mario Six
2017-10-02  6:20   ` Heiko Schocher
2017-09-29 12:51 ` [U-Boot] [PATCH 028/080] gpio: pca953x_gpio: Fix style violations Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 029/080] gpio: pca953x_gpio: Make live-tree compatible Mario Six
2017-10-09  4:47   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 030/080] serial: ns16550: Fix style violation Mario Six
2017-10-09  4:48   ` Simon Glass
2017-09-29 12:51 ` [U-Boot] [PATCH 031/080] serial: ns16550: Fix address translation Mario Six
2017-10-09  4:48   ` Simon Glass
2017-10-09 12:45     ` Mario Six
2017-10-09 12:55       ` Dr. Philipp Tomsich
2017-10-09 14:09         ` Simon Glass
2017-10-11 13:29           ` Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 032/080] gdsys: Post ppc4xx removal cleanup Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 033/080] net: phy: marvell: Fix style violations Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 034/080] net: phy: marvell 88e151x: Fix handling of bare RGMII interface type Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 035/080] cfi_flash: Fix space between function name and parenthesis Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 036/080] cfi_flash: Fix style of pointer declarations Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 037/080] cfi_flash: Fix Parenthesis spacing Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 038/080] cfi_flash: Fix whitespace with casting Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 039/080] cfi_flash: Fix indent of case statements Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 040/080] cfi_flash: Fix spacing around casts/operators Mario Six
2017-09-29 12:51 ` [U-Boot] [PATCH 041/080] cfi_flash: Fix missing/superfluous lines Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 042/080] cfi_flash: Remove braces for single-statement blocks Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 043/080] cfi_flash: Fix logical continuations Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 044/080] cfi_flash: Use __func__ macro instead of function name Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 045/080] cfi_flash: Fix comment style Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 046/080] cfi_flash: Remove unnecessary braces Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 047/080] cfi_flash: Add missing braces in blocks Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 048/080] cfi_flash: Fix spelling of "Unknown" Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 049/080] cfi_flash: Fix else after break Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 050/080] cfi_flash: Fix placement of brace Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 051/080] cfi_flash: Remove return from void function Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 052/080] cfi_flash: Reduce the scope of some variables Mario Six
2017-09-29 17:10   ` Masahiro Yamada
2017-10-04  6:23     ` Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 053/080] cfi_flash: Remove assignments from if conditions Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 054/080] cfi_flash: Use u8 pointers instead of void pointers Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 055/080] cfi_flash: Fix strings split across lines Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 056/080] cfi_flash: Rename camel-case variables Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 057/080] flash: Fix spelling of "ERR_TIMOUT" Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 058/080] cfi_flash: Bound-check index before array access Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 059/080] cfi_flash: Fix long lines Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 060/080] cfi_flash: Fix indention Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 061/080] cfi_flash: Always define cfi_flash_num_flash_banks Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 062/080] mtd: cfi_flash: Make live-tree compatible Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 063/080] gpio: mpc85xx_gpio: Fix style violations Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 064/080] gpio: mpc85xx: Rename driver file to mpc8xxx Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 065/080] gpio: mpc8xxx: Rename Kconfig option, structures, and functions Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 066/080] gpio: mpc8xxx: Make compatible with more SoCs Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 067/080] mpc83xx: Prepare usage of DM gpio driver Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 068/080] gpio: mpc8xxx: Make live-tree compatible Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 069/080] cmd: mdio: Fix style violations Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 070/080] common: board_f: " Mario Six
2017-10-09  4:48   ` Simon Glass
2017-09-29 12:52 ` [U-Boot] [PATCH 071/080] common: board_r: " Mario Six
2017-10-09  4:48   ` Simon Glass
2017-09-29 12:52 ` [U-Boot] [PATCH 072/080] gdsys: mpc8308: " Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 073/080] gdsys: mpc8308: Use shadow register for output GPIO values Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 074/080] strider, hrcon: Reset CAT phy on CON2 module Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 075/080] gdsys:phy: Adapt fixup_88e1518() to latest Release Notes Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 076/080] phy: Fix style violations Mario Six
2017-12-05 20:17   ` Joe Hershberger
2017-09-29 12:52 ` [U-Boot] [PATCH 077/080] i2c: ihs_i2c: Prepare DM conversion Mario Six
2017-09-29 12:52 ` Mario Six [this message]
2017-09-29 12:52 ` [U-Boot] [PATCH 079/080] i2c: ihs_i2c: Factor out send_buffer method Mario Six
2017-09-29 12:52 ` [U-Boot] [PATCH 080/080] clk: Makefile: Sort entries alphabetically Mario Six
2017-10-09  4:48   ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170929125238.26226-78-mario.six@gdsys.cc \
    --to=mario.six@gdsys.cc \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.