Skip to contentSkip to conversation

spi: kirkwood: Get drvdata in .ofdata_to_platdata

PATCH New Jagan Teki 7 participants 19 messages Mar 15, 2018 – Aug 1, 2018 SPI

lore
Share & tools
lore

Jagan Teki

author
#0 lore raw

PATCH 1/2 spi: kirkwood: Get drvdata in .ofdata_to_platdata

Get the is_errata_50mhz_ac in .ofdata_to_platdata, and reuse it in .set_mode this can eventually initialized dt code at once and adding room to add platdata.

---
 drivers/spi/kirkwood_spi.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
drivers/spi/kirkwood_spi.c +5 -3
index 1ad8cdee64..4850a2b955 100644
@@ -249,6 +249,7 @@ struct mvebu_spi_dev {
 
 struct mvebu_spi_platdata {
 	struct kwspi_registers *spireg;
+	bool is_errata_50mhz_ac;
 };
 
 struct mvebu_spi_priv {
@@ -310,7 +311,6 @@ static int mvebu_spi_set_mode(struct udevice *bus, uint mode)
 {
 	struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
 	struct kwspi_registers *reg = plat->spireg;
-	const struct mvebu_spi_dev *drvdata;
 	u32 data = readl(&reg->cfg);
 
 	data &= ~(KWSPI_CPHA | KWSPI_CPOL | KWSPI_RXLSBF | KWSPI_TXLSBF);
@@ -324,8 +324,7 @@ static int mvebu_spi_set_mode(struct udevice *bus, uint mode)
 
 	writel(data, &reg->cfg);
 
-	drvdata = (struct mvebu_spi_dev *)dev_get_driver_data(bus);
-	if (drvdata->is_errata_50mhz_ac)
+	if (plat->is_errata_50mhz_ac)
 		mvebu_spi_50mhz_ac_timing_erratum(bus, mode);
 
 	return 0;
@@ -368,8 +367,11 @@ static int mvebu_spi_probe(struct udevice *bus)
 static int mvebu_spi_ofdata_to_platdata(struct udevice *bus)
 {
 	struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
+	const struct mvebu_spi_dev *drvdata =
+		(struct mvebu_spi_dev *)dev_get_driver_data(bus);
 
 	plat->spireg = (struct kwspi_registers *)devfdt_get_addr(bus);
+	plat->is_errata_50mhz_ac = drvdata->is_errata_50mhz_ac;
 
 	return 0;
 }
Signature · 1 line
2.14.3
author
#1 lore raw

PATCH 1/2 spi: kirkwood: Get drvdata in .ofdata_to_platdata

Quoted 6 lines · Jagan Teki

Get the is_errata_50mhz_ac in .ofdata_to_platdata, and reuse it in .set_mode this can eventually initialized dt code at once and adding room to add platdata.

---

Applied to u-boot-spi/master

author
#2 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

In reply to Jagan Teki

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

---
 drivers/spi/kirkwood_spi.c              | 240 ++++++--------------------------
 include/dm/platform_data/spi_kirkwood.h |  15 ++
 2 files changed, 56 insertions(+), 199 deletions(-)
 create mode 100644 include/dm/platform_data/spi_kirkwood.h
drivers/spi/kirkwood_spi.c +41 -199
index 4850a2b955..16d41de2a6 100644
@@ -14,31 +14,41 @@
 #include <spi.h>
 #include <asm/io.h>
 #include <asm/arch/soc.h>
-#ifdef CONFIG_KIRKWOOD
-#include <asm/arch/mpp.h>
-#endif
 #include <asm/arch-mvebu/spi.h>
 
-static void _spi_cs_activate(struct kwspi_registers *reg)
+#include <dm/platform_data/spi_kirkwood.h>
+
+struct mvebu_spi_dev {
+	bool	is_errata_50mhz_ac;
+};
+
+struct mvebu_spi_priv {
+	struct kwspi_registers *spireg;
+};
+
+static void spi_cs_activate(struct kwspi_registers *reg)
 {
 	setbits_le32(&reg->ctrl, KWSPI_CSN_ACT);
 }
 
-static void _spi_cs_deactivate(struct kwspi_registers *reg)
+static void spi_cs_deactivate(struct kwspi_registers *reg)
 {
 	clrbits_le32(&reg->ctrl, KWSPI_CSN_ACT);
 }
 
-static int _spi_xfer(struct kwspi_registers *reg, unsigned int bitlen,
-		     const void *dout, void *din, unsigned long flags)
+static int mvebu_spi_xfer(struct udevice *dev, unsigned int bitlen,
+			  const void *dout, void *din, unsigned long flags)
 {
+	struct udevice *bus = dev->parent;
+	struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
+	struct kwspi_registers *reg = plat->spireg;
 	unsigned int tmpdout, tmpdin;
 	int tm, isread = 0;
 
-	debug("spi_xfer: dout %p din %p bitlen %u\n", dout, din, bitlen);
+	debug("%s: dout %p din %p bitlen %u\n", __func__, dout, din, bitlen);
 
 	if (flags & SPI_XFER_BEGIN)
-		_spi_cs_activate(reg);
+		spi_cs_activate(reg);
 
 	/*
 	 * handle data in 8-bit chunks
@@ -56,8 +66,8 @@ static int _spi_xfer(struct kwspi_registers *reg, unsigned int bitlen,
 
 		clrbits_le32(&reg->irq_cause, KWSPI_SMEMRDIRQ);
 		writel(tmpdout, &reg->dout);	/* Write the data out */
-		debug("*** spi_xfer: ... %08x written, bitlen %d\n",
-		      tmpdout, bitlen);
+		debug("%s: ... %08x written, bitlen %d\n",
+		      __func__, tmpdout, bitlen);
 
 		/*
 		 * Wait for SPI transmit to get out
@@ -68,8 +78,8 @@ static int _spi_xfer(struct kwspi_registers *reg, unsigned int bitlen,
 			if (readl(&reg->irq_cause) & KWSPI_SMEMRDIRQ) {
 				isread = 1;
 				tmpdin = readl(&reg->din);
-				debug("spi_xfer: din %p..%08x read\n",
-				      din, tmpdin);
+				debug("%s: din %p..%08x read\n",
+				      __func__, din, tmpdin);
 
 				if (din) {
 					*((u8 *)din) = (u8)tmpdin;
@@ -83,179 +93,17 @@ static int _spi_xfer(struct kwspi_registers *reg, unsigned int bitlen,
 				break;
 		}
 		if (tm >= KWSPI_TIMEOUT)
-			printf("*** spi_xfer: Time out during SPI transfer\n");
+			printf("%s: Time out during SPI transfer\n", __func__);
 
 		debug("loopend bitlen %d\n", bitlen);
 	}
 
 	if (flags & SPI_XFER_END)
-		_spi_cs_deactivate(reg);
+		spi_cs_deactivate(reg);
 
 	return 0;
 }
 
-#ifndef CONFIG_DM_SPI
-
-static struct kwspi_registers *spireg =
-	(struct kwspi_registers *)MVEBU_SPI_BASE;
-
-#ifdef CONFIG_KIRKWOOD
-static u32 cs_spi_mpp_back[2];
-#endif
-
-struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
-				unsigned int max_hz, unsigned int mode)
-{
-	struct spi_slave *slave;
-	u32 data;
-#ifdef CONFIG_KIRKWOOD
-	static const u32 kwspi_mpp_config[2][2] = {
-		{ MPP0_SPI_SCn, 0 }, /* if cs == 0 */
-		{ MPP7_SPI_SCn, 0 } /* if cs != 0 */
-	};
-#endif
-
-	if (!spi_cs_is_valid(bus, cs))
-		return NULL;
-
-	slave = spi_alloc_slave_base(bus, cs);
-	if (!slave)
-		return NULL;
-
-	writel(KWSPI_SMEMRDY, &spireg->ctrl);
-
-	/* calculate spi clock prescaller using max_hz */
-	data = ((CONFIG_SYS_TCLK / 2) / max_hz) + 0x10;
-	data = data < KWSPI_CLKPRESCL_MIN ? KWSPI_CLKPRESCL_MIN : data;
-	data = data > KWSPI_CLKPRESCL_MASK ? KWSPI_CLKPRESCL_MASK : data;
-
-	/* program spi clock prescaller using max_hz */
-	writel(KWSPI_ADRLEN_3BYTE | data, &spireg->cfg);
-	debug("data = 0x%08x\n", data);
-
-	writel(KWSPI_SMEMRDIRQ, &spireg->irq_cause);
-	writel(KWSPI_IRQMASK, &spireg->irq_mask);
-
-#ifdef CONFIG_KIRKWOOD
-	/* program mpp registers to select  SPI_CSn */
-	kirkwood_mpp_conf(kwspi_mpp_config[cs ? 1 : 0], cs_spi_mpp_back);
-#endif
-
-	return slave;
-}
-
-void spi_free_slave(struct spi_slave *slave)
-{
-#ifdef CONFIG_KIRKWOOD
-	kirkwood_mpp_conf(cs_spi_mpp_back, NULL);
-#endif
-	free(slave);
-}
-
-#if defined(CONFIG_SYS_KW_SPI_MPP)
-u32 spi_mpp_backup[4];
-#endif
-
-__attribute__((weak)) int board_spi_claim_bus(struct spi_slave *slave)
-{
-	return 0;
-}
-
-int spi_claim_bus(struct spi_slave *slave)
-{
-#if defined(CONFIG_SYS_KW_SPI_MPP)
-	u32 config;
-	u32 spi_mpp_config[4];
-
-	config = CONFIG_SYS_KW_SPI_MPP;
-
-	if (config & MOSI_MPP6)
-		spi_mpp_config[0] = MPP6_SPI_MOSI;
-	else
-		spi_mpp_config[0] = MPP1_SPI_MOSI;
-
-	if (config & SCK_MPP10)
-		spi_mpp_config[1] = MPP10_SPI_SCK;
-	else
-		spi_mpp_config[1] = MPP2_SPI_SCK;
-
-	if (config & MISO_MPP11)
-		spi_mpp_config[2] = MPP11_SPI_MISO;
-	else
-		spi_mpp_config[2] = MPP3_SPI_MISO;
-
-	spi_mpp_config[3] = 0;
-	spi_mpp_backup[3] = 0;
-
-	/* set new spi mpp and save current mpp config */
-	kirkwood_mpp_conf(spi_mpp_config, spi_mpp_backup);
-#endif
-
-	return board_spi_claim_bus(slave);
-}
-
-__attribute__((weak)) void board_spi_release_bus(struct spi_slave *slave)
-{
-}
-
-void spi_release_bus(struct spi_slave *slave)
-{
-#if defined(CONFIG_SYS_KW_SPI_MPP)
-	kirkwood_mpp_conf(spi_mpp_backup, NULL);
-#endif
-
-	board_spi_release_bus(slave);
-}
-
-#ifndef CONFIG_SPI_CS_IS_VALID
-/*
- * you can define this function board specific
- * define above CONFIG in board specific config file and
- * provide the function in board specific src file
- */
-int spi_cs_is_valid(unsigned int bus, unsigned int cs)
-{
-	return bus == 0 && (cs == 0 || cs == 1);
-}
-#endif
-
-void spi_init(void)
-{
-}
-
-void spi_cs_activate(struct spi_slave *slave)
-{
-	_spi_cs_activate(spireg);
-}
-
-void spi_cs_deactivate(struct spi_slave *slave)
-{
-	_spi_cs_deactivate(spireg);
-}
-
-int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
-	     const void *dout, void *din, unsigned long flags)
-{
-	return _spi_xfer(spireg, bitlen, dout, din, flags);
-}
-
-#else
-
-/* Here now the DM part */
-
-struct mvebu_spi_dev {
-	bool			is_errata_50mhz_ac;
-};
-
-struct mvebu_spi_platdata {
-	struct kwspi_registers *spireg;
-	bool is_errata_50mhz_ac;
-};
-
-struct mvebu_spi_priv {
-	struct kwspi_registers *spireg;
-};
-
 static int mvebu_spi_set_speed(struct udevice *bus, uint hz)
 {
 	struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
@@ -330,15 +178,6 @@ static int mvebu_spi_set_mode(struct udevice *bus, uint mode)
 	return 0;
 }
 
-static int mvebu_spi_xfer(struct udevice *dev, unsigned int bitlen,
-			  const void *dout, void *din, unsigned long flags)
-{
-	struct udevice *bus = dev->parent;
-	struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
-
-	return _spi_xfer(plat->spireg, bitlen, dout, din, flags);
-}
-
 static int mvebu_spi_claim_bus(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
@@ -364,6 +203,18 @@ static int mvebu_spi_probe(struct udevice *bus)
 	return 0;
 }
 
+static const struct dm_spi_ops mvebu_spi_ops = {
+	.claim_bus	= mvebu_spi_claim_bus,
+	.xfer		= mvebu_spi_xfer,
+	.set_speed	= mvebu_spi_set_speed,
+	.set_mode	= mvebu_spi_set_mode,
+	/*
+	 * cs_info is not needed, since we require all chip selects to be
+	 * in the device tree explicitly
+	 */
+};
+
+#if CONFIG_IS_ENABLED(OF_CONTROL)
 static int mvebu_spi_ofdata_to_platdata(struct udevice *bus)
 {
 	struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
@@ -376,17 +227,6 @@ static int mvebu_spi_ofdata_to_platdata(struct udevice *bus)
 	return 0;
 }
 
-static const struct dm_spi_ops mvebu_spi_ops = {
-	.claim_bus	= mvebu_spi_claim_bus,
-	.xfer		= mvebu_spi_xfer,
-	.set_speed	= mvebu_spi_set_speed,
-	.set_mode	= mvebu_spi_set_mode,
-	/*
-	 * cs_info is not needed, since we require all chip selects to be
-	 * in the device tree explicitly
-	 */
-};
-
 static const struct mvebu_spi_dev armada_xp_spi_dev_data = {
 	.is_errata_50mhz_ac = false,
 };
@@ -414,15 +254,17 @@ static const struct udevice_id mvebu_spi_ids[] = {
 	},
 	{ }
 };
+#endif
 
 U_BOOT_DRIVER(mvebu_spi) = {
 	.name = "mvebu_spi",
 	.id = UCLASS_SPI,
+#if CONFIG_IS_ENABLED(OF_CONTROL)
 	.of_match = mvebu_spi_ids,
-	.ops = &mvebu_spi_ops,
 	.ofdata_to_platdata = mvebu_spi_ofdata_to_platdata,
 	.platdata_auto_alloc_size = sizeof(struct mvebu_spi_platdata),
+#endif
+	.ops = &mvebu_spi_ops,
 	.priv_auto_alloc_size = sizeof(struct mvebu_spi_priv),
 	.probe = mvebu_spi_probe,
 };
-#endif
include/dm/platform_data/spi_kirkwood.h new file +15 -0
new file mode 100644
index 0000000000..ae9b2783a9
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2018 Jagan Teki <[email protected]>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#ifndef __spi_kirkwood_h
+#define __spi_kirkwood_h
+
+struct mvebu_spi_platdata {
+	struct kwspi_registers *spireg;
+	bool is_errata_50mhz_ac;
+};
+
+#endif /* __spi_kirkwood_h */
Signature · 1 line
2.14.3
#3 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Hi Jagan,

Quoted 354 lines · Jagan Teki

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

---
  drivers/spi/kirkwood_spi.c              | 240 ++++++--------------------------
  include/dm/platform_data/spi_kirkwood.h |  15 ++
  2 files changed, 56 insertions(+), 199 deletions(-)

create mode 100644 include/dm/platform_data/spi_kirkwood.h

drivers/spi/kirkwood_spi.c +41 -199
index 4850a2b955..16d41de2a6 100644
@@ -14,31 +14,41 @@
  #include <spi.h>
  #include <asm/io.h>
  #include <asm/arch/soc.h>
-#ifdef CONFIG_KIRKWOOD
-#include <asm/arch/mpp.h>
-#endif
  #include <asm/arch-mvebu/spi.h>
 
-static void _spi_cs_activate(struct kwspi_registers *reg)
+#include <dm/platform_data/spi_kirkwood.h>
+
+struct mvebu_spi_dev {
+	bool	is_errata_50mhz_ac;
+};
+
+struct mvebu_spi_priv {
+	struct kwspi_registers *spireg;
+};
+
+static void spi_cs_activate(struct kwspi_registers *reg)
  {
  	setbits_le32(&reg->ctrl, KWSPI_CSN_ACT);
  }
 
-static void _spi_cs_deactivate(struct kwspi_registers *reg)
+static void spi_cs_deactivate(struct kwspi_registers *reg)
  {
  	clrbits_le32(&reg->ctrl, KWSPI_CSN_ACT);
  }
 
-static int _spi_xfer(struct kwspi_registers *reg, unsigned int bitlen,
-		     const void *dout, void *din, unsigned long flags)
+static int mvebu_spi_xfer(struct udevice *dev, unsigned int bitlen,
+			  const void *dout, void *din, unsigned long flags)
  {
+	struct udevice *bus = dev->parent;
+	struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
+	struct kwspi_registers *reg = plat->spireg;
  	unsigned int tmpdout, tmpdin;
  	int tm, isread = 0;
 
-	debug("spi_xfer: dout %p din %p bitlen %u\n", dout, din, bitlen);
+	debug("%s: dout %p din %p bitlen %u\n", __func__, dout, din, bitlen);
 
  	if (flags & SPI_XFER_BEGIN)
-		_spi_cs_activate(reg);
+		spi_cs_activate(reg);
 
  	/*
  	 * handle data in 8-bit chunks
@@ -56,8 +66,8 @@ static int _spi_xfer(struct kwspi_registers *reg, unsigned int bitlen,
 
  		clrbits_le32(&reg->irq_cause, KWSPI_SMEMRDIRQ);
  		writel(tmpdout, &reg->dout);	/* Write the data out */
-		debug("*** spi_xfer: ... %08x written, bitlen %d\n",
-		      tmpdout, bitlen);
+		debug("%s: ... %08x written, bitlen %d\n",
+		      __func__, tmpdout, bitlen);
 
  		/*
  		 * Wait for SPI transmit to get out
@@ -68,8 +78,8 @@ static int _spi_xfer(struct kwspi_registers *reg, unsigned int bitlen,
  			if (readl(&reg->irq_cause) & KWSPI_SMEMRDIRQ) {
  				isread = 1;
  				tmpdin = readl(&reg->din);
-				debug("spi_xfer: din %p..%08x read\n",
-				      din, tmpdin);
+				debug("%s: din %p..%08x read\n",
+				      __func__, din, tmpdin);
 
  				if (din) {
  					*((u8 *)din) = (u8)tmpdin;
@@ -83,179 +93,17 @@ static int _spi_xfer(struct kwspi_registers *reg, unsigned int bitlen,
  				break;
  		}
  		if (tm >= KWSPI_TIMEOUT)
-			printf("*** spi_xfer: Time out during SPI transfer\n");
+			printf("%s: Time out during SPI transfer\n", __func__);
 
  		debug("loopend bitlen %d\n", bitlen);
  	}
 
  	if (flags & SPI_XFER_END)
-		_spi_cs_deactivate(reg);
+		spi_cs_deactivate(reg);
 
  	return 0;
  }
 
-#ifndef CONFIG_DM_SPI
-
-static struct kwspi_registers *spireg =
-	(struct kwspi_registers *)MVEBU_SPI_BASE;
-
-#ifdef CONFIG_KIRKWOOD
-static u32 cs_spi_mpp_back[2];
-#endif
-
-struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
-				unsigned int max_hz, unsigned int mode)
-{
-	struct spi_slave *slave;
-	u32 data;
-#ifdef CONFIG_KIRKWOOD
-	static const u32 kwspi_mpp_config[2][2] = {
-		{ MPP0_SPI_SCn, 0 }, /* if cs == 0 */
-		{ MPP7_SPI_SCn, 0 } /* if cs != 0 */
-	};
-#endif
-
-	if (!spi_cs_is_valid(bus, cs))
-		return NULL;
-
-	slave = spi_alloc_slave_base(bus, cs);
-	if (!slave)
-		return NULL;
-
-	writel(KWSPI_SMEMRDY, &spireg->ctrl);
-
-	/* calculate spi clock prescaller using max_hz */
-	data = ((CONFIG_SYS_TCLK / 2) / max_hz) + 0x10;
-	data = data < KWSPI_CLKPRESCL_MIN ? KWSPI_CLKPRESCL_MIN : data;
-	data = data > KWSPI_CLKPRESCL_MASK ? KWSPI_CLKPRESCL_MASK : data;
-
-	/* program spi clock prescaller using max_hz */
-	writel(KWSPI_ADRLEN_3BYTE | data, &spireg->cfg);
-	debug("data = 0x%08x\n", data);
-
-	writel(KWSPI_SMEMRDIRQ, &spireg->irq_cause);
-	writel(KWSPI_IRQMASK, &spireg->irq_mask);
-
-#ifdef CONFIG_KIRKWOOD
-	/* program mpp registers to select  SPI_CSn */
-	kirkwood_mpp_conf(kwspi_mpp_config[cs ? 1 : 0], cs_spi_mpp_back);
-#endif
-
-	return slave;
-}
-
-void spi_free_slave(struct spi_slave *slave)
-{
-#ifdef CONFIG_KIRKWOOD
-	kirkwood_mpp_conf(cs_spi_mpp_back, NULL);
-#endif
-	free(slave);
-}
-
-#if defined(CONFIG_SYS_KW_SPI_MPP)
-u32 spi_mpp_backup[4];
-#endif
-
-__attribute__((weak)) int board_spi_claim_bus(struct spi_slave *slave)
-{
-	return 0;
-}
-
-int spi_claim_bus(struct spi_slave *slave)
-{
-#if defined(CONFIG_SYS_KW_SPI_MPP)
-	u32 config;
-	u32 spi_mpp_config[4];
-
-	config = CONFIG_SYS_KW_SPI_MPP;
-
-	if (config & MOSI_MPP6)
-		spi_mpp_config[0] = MPP6_SPI_MOSI;
-	else
-		spi_mpp_config[0] = MPP1_SPI_MOSI;
-
-	if (config & SCK_MPP10)
-		spi_mpp_config[1] = MPP10_SPI_SCK;
-	else
-		spi_mpp_config[1] = MPP2_SPI_SCK;
-
-	if (config & MISO_MPP11)
-		spi_mpp_config[2] = MPP11_SPI_MISO;
-	else
-		spi_mpp_config[2] = MPP3_SPI_MISO;
-
-	spi_mpp_config[3] = 0;
-	spi_mpp_backup[3] = 0;
-
-	/* set new spi mpp and save current mpp config */
-	kirkwood_mpp_conf(spi_mpp_config, spi_mpp_backup);
-#endif
-
-	return board_spi_claim_bus(slave);
-}
-
-__attribute__((weak)) void board_spi_release_bus(struct spi_slave *slave)
-{
-}
-
-void spi_release_bus(struct spi_slave *slave)
-{
-#if defined(CONFIG_SYS_KW_SPI_MPP)
-	kirkwood_mpp_conf(spi_mpp_backup, NULL);
-#endif
-
-	board_spi_release_bus(slave);
-}
-
-#ifndef CONFIG_SPI_CS_IS_VALID
-/*
- * you can define this function board specific
- * define above CONFIG in board specific config file and
- * provide the function in board specific src file
- */
-int spi_cs_is_valid(unsigned int bus, unsigned int cs)
-{
-	return bus == 0 && (cs == 0 || cs == 1);
-}
-#endif
-
-void spi_init(void)
-{
-}
-
-void spi_cs_activate(struct spi_slave *slave)
-{
-	_spi_cs_activate(spireg);
-}
-
-void spi_cs_deactivate(struct spi_slave *slave)
-{
-	_spi_cs_deactivate(spireg);
-}
-
-int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
-	     const void *dout, void *din, unsigned long flags)
-{
-	return _spi_xfer(spireg, bitlen, dout, din, flags);
-}
-
-#else
-
-/* Here now the DM part */
-
-struct mvebu_spi_dev {
-	bool			is_errata_50mhz_ac;
-};
-
-struct mvebu_spi_platdata {
-	struct kwspi_registers *spireg;
-	bool is_errata_50mhz_ac;
-};
-
-struct mvebu_spi_priv {
-	struct kwspi_registers *spireg;
-};
-
  static int mvebu_spi_set_speed(struct udevice *bus, uint hz)
  {
  	struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
@@ -330,15 +178,6 @@ static int mvebu_spi_set_mode(struct udevice *bus, uint mode)
  	return 0;
  }
 
-static int mvebu_spi_xfer(struct udevice *dev, unsigned int bitlen,
-			  const void *dout, void *din, unsigned long flags)
-{
-	struct udevice *bus = dev->parent;
-	struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
-
-	return _spi_xfer(plat->spireg, bitlen, dout, din, flags);
-}
-
  static int mvebu_spi_claim_bus(struct udevice *dev)
  {
  	struct udevice *bus = dev->parent;
@@ -364,6 +203,18 @@ static int mvebu_spi_probe(struct udevice *bus)
  	return 0;
  }
 
+static const struct dm_spi_ops mvebu_spi_ops = {
+	.claim_bus	= mvebu_spi_claim_bus,
+	.xfer		= mvebu_spi_xfer,
+	.set_speed	= mvebu_spi_set_speed,
+	.set_mode	= mvebu_spi_set_mode,
+	/*
+	 * cs_info is not needed, since we require all chip selects to be
+	 * in the device tree explicitly
+	 */
+};
+
+#if CONFIG_IS_ENABLED(OF_CONTROL)
  static int mvebu_spi_ofdata_to_platdata(struct udevice *bus)
  {
  	struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
@@ -376,17 +227,6 @@ static int mvebu_spi_ofdata_to_platdata(struct udevice *bus)
  	return 0;
  }
 
-static const struct dm_spi_ops mvebu_spi_ops = {
-	.claim_bus	= mvebu_spi_claim_bus,
-	.xfer		= mvebu_spi_xfer,
-	.set_speed	= mvebu_spi_set_speed,
-	.set_mode	= mvebu_spi_set_mode,
-	/*
-	 * cs_info is not needed, since we require all chip selects to be
-	 * in the device tree explicitly
-	 */
-};
-
  static const struct mvebu_spi_dev armada_xp_spi_dev_data = {
  	.is_errata_50mhz_ac = false,
  };
@@ -414,15 +254,17 @@ static const struct udevice_id mvebu_spi_ids[] = {
  	},
  	{ }
  };
+#endif
 
  U_BOOT_DRIVER(mvebu_spi) = {
  	.name = "mvebu_spi",
  	.id = UCLASS_SPI,
+#if CONFIG_IS_ENABLED(OF_CONTROL)
  	.of_match = mvebu_spi_ids,
-	.ops = &mvebu_spi_ops,
  	.ofdata_to_platdata = mvebu_spi_ofdata_to_platdata,
  	.platdata_auto_alloc_size = sizeof(struct mvebu_spi_platdata),
+#endif
+	.ops = &mvebu_spi_ops,
  	.priv_auto_alloc_size = sizeof(struct mvebu_spi_priv),
  	.probe = mvebu_spi_probe,
  };
-#endif
include/dm/platform_data/spi_kirkwood.h new file +5 -0
new file mode 100644
index 0000000000..ae9b2783a9
@@ -0,0 +1,15 @@
+/*
+ * Copyright (C) 2018 Jagan Teki <[email protected]>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */

include/dm/platform_data/spi_kirkwood.h line 15

Quoted 10 lines
include/dm/platform_data/spi_kirkwood.h new file +10 -0
+
+#ifndef __spi_kirkwood_h
+#define __spi_kirkwood_h
+
+struct mvebu_spi_platdata {
+	struct kwspi_registers *spireg;
+	bool is_errata_50mhz_ac;
+};
+
+#endif /* __spi_kirkwood_h */

So you are removing non-DM support from the SPI driver, which breaks current Kirkwood board using this SPI driver (e.g. inetspace_v2). Are you aware of this breakage?

Thanks,
Stefan

#4 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Quoted 15 lines · Stefan Roese

Hi Jagan,

Quoted 11 lines · Jagan Teki

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

---
  drivers/spi/kirkwood_spi.c              | 240
++++++--------------------------
  include/dm/platform_data/spi_kirkwood.h |  15 ++
  2 files changed, 56 insertions(+), 199 deletions(-)

create mode 100644 include/dm/platform_data/spi_kirkwood.h

snip

Quoted 4 lines
Quoted 4 lines
include/dm/platform_data/spi_kirkwood.h new file +4 -0
+
+struct mvebu_spi_platdata {
+       struct kwspi_registers *spireg;
+       bool is_errata_50mhz_ac;
Quoted 8 lines

include/dm/platform_data/spi_kirkwood.h line 15

Quoted 4 lines
include/dm/platform_data/spi_kirkwood.h new file +3 -0
+};
+
+#endif /* __spi_kirkwood_h */

So you are removing non-DM support from the SPI driver, which breaks current Kirkwood board using this SPI driver (e.g. inetspace_v2). Are you aware of this breakage?

Yes, we have migration plan for DM_SPI and DM_SPI_FLASH [1] I have converted this to expect the board MAINTAINERS do switch DM before the deadline. I will not apply until all used boards moved or deadline expire.

[1] doc/driver-model/MIGRATION.txt

Jagan.

Signature · 4 lines
Jagan Teki
Free Software Engineer | www.openedev.com
U-Boot, Linux | Upstream Maintainer
Hyderabad, India.
#5 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Hi Jagan,

Quoted 32 lines · Jagan Teki
Quoted 15 lines · Stefan Roese

Hi Jagan,

Quoted 11 lines · Jagan Teki

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

---
   drivers/spi/kirkwood_spi.c              | 240
++++++--------------------------
   include/dm/platform_data/spi_kirkwood.h |  15 ++
   2 files changed, 56 insertions(+), 199 deletions(-)

create mode 100644 include/dm/platform_data/spi_kirkwood.h

snip

Quoted 4 lines
Quoted 4 lines
include/dm/platform_data/spi_kirkwood.h new file +4 -0
+
+struct mvebu_spi_platdata {
+       struct kwspi_registers *spireg;
+       bool is_errata_50mhz_ac;
Quoted 8 lines

include/dm/platform_data/spi_kirkwood.h line 15

Quoted 4 lines
include/dm/platform_data/spi_kirkwood.h new file +3 -0
+};
+
+#endif /* __spi_kirkwood_h */

So you are removing non-DM support from the SPI driver, which breaks current Kirkwood board using this SPI driver (e.g. inetspace_v2). Are you aware of this breakage?

Quoted 4 lines

Yes, we have migration plan for DM_SPI and DM_SPI_FLASH [1] I have converted this to expect the board MAINTAINERS do switch DM before the deadline. I will not apply until all used boards moved or deadline expire.

Then please Cc the board maintainers of these boards that will break here, so that they are aware (again) of this migration and can possibly take some action.

Thanks,
Stefan

#6 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

In reply to Jagan Teki
Quoted 2 lines · Jagan Teki

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Jagan.

Signature · 4 lines
Jagan Teki
Free Software Engineer | www.openedev.com
U-Boot, Linux | Upstream Maintainer
Hyderabad, India.
#7 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Hi Jagan,

Quoted 9 lines · Jagan Teki
Quoted 2 lines · Jagan Teki

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Jagan.

Hopefully I can get to db88f6820-amc next week.

Stefan, did you want me to send a patch for db88f6820-gp at the same time since the amc board is derived from it?

#8 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Hi Chris,

Quoted 9 lines · Chris Packham
Quoted 8 lines · Jagan Teki
Quoted 2 lines · Jagan Teki

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Quoted 6 lines
Quoted 1 line

Jagan.

Hopefully I can get to db88f6820-amc next week.

Stefan, did you want me to send a patch for db88f6820-gp at the same time since the amc board is derived from it?

Sure, that would be helpful.

But I'm a little bit puzzled about this DM conversion for MVEBU platforms. As all MVEBU targets are already using DM and DM_SPI:

arch/arm/Kconfig:

...
config ARCH_MVEBU

         bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)"
         select OF_CONTROL
         select OF_SEPARATE
         select DM
         select DM_ETH
         select DM_SERIAL
         select DM_SPI
         select DM_SPI_FLASH

So there should be no need to change something here. Or is something not working correctly on some of the MVEBU platforms?

What really is missing is the conversion of the older Marvell platforms, like Kirkwood and Orion. Those are quite ancient and have no DM / OF / DT support at all (AFAIR). So here is the real work that needs to be done. Or all those boards might get dropped soon.

Thanks,
Stefan

#9 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Quoted 6 lines · Stefan Roese

Hi Chris,

Quoted 2 lines · Chris Packham
Quoted 1 line · Jagan Teki

On Thu, Mar 15, 2018 at 5:03 PM, Jagan Teki

<[email protected]>

Quoted 32 lines · wrote:
Quoted 7 lines
Quoted 7 lines
Quoted 2 lines

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Quoted 6 lines
Quoted 1 line

Jagan.

Hopefully I can get to db88f6820-amc next week.

Stefan, did you want me to send a patch for db88f6820-gp at the same time since the amc board is derived from it?

Sure, that would be helpful.

But I'm a little bit puzzled about this DM conversion for MVEBU platforms. As all MVEBU targets are already using DM and DM_SPI:

arch/arm/Kconfig:

...
config ARCH_MVEBU

          bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)"
          select OF_CONTROL
          select OF_SEPARATE
          select DM
          select DM_ETH
          select DM_SERIAL
          select DM_SPI
          select DM_SPI_FLASH
Quoted 8 lines

So there should be no need to change something here. Or is something not working correctly on some of the MVEBU platforms?

What really is missing is the conversion of the older Marvell platforms, like Kirkwood and Orion. Those are quite ancient and have no DM / OF / DT support at all (AFAIR). So here is the real work that needs to be done. Or all those boards might get dropped soon.

Yeah sure enough

=> dm tree
Class Probed Driver Name
----------------------------------------

  root       [ + ]   root_drive  root_driver
  simple_bus [ + ]   generic_si  `-- soc
  simple_bus [ + ]   generic_si      `-- internal-regs
  spi        [ + ]   mvebu_spi           |-- spi at 10680
  spi_flash  [   ]   spi_flash_          |   `-- spi-flash at 0
  i2c        [   ]   i2c_mvtwsi          |-- i2c at 11000
  serial     [ + ]   ns16550_se          |-- serial at 12000
  eth        [ + ]   mvneta              |-- ethernet at 34000
  usb        [   ]   ehci_mvebu          |-- usb at 58000
  eth        [ + ]   mvneta              `-- ethernet at 70000

So nothing to do for MVEBU.

I do have a passing interest in keeping kirkwood support but lack an upstream supported platform to use. I'll have to see if I can update one of our boards to use and upstream bootloader.

#10 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Hi Chris,

Quoted 47 lines · Chris Packham
Quoted 21 lines · Stefan Roese
Quoted 2 lines

Stefan, did you want me to send a patch for db88f6820-gp at the same time since the amc board is derived from it?

Sure, that would be helpful.

But I'm a little bit puzzled about this DM conversion for MVEBU platforms. As all MVEBU targets are already using DM and DM_SPI:

arch/arm/Kconfig:

...
config ARCH_MVEBU

           bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)"
           select OF_CONTROL
           select OF_SEPARATE
           select DM
           select DM_ETH
           select DM_SERIAL
           select DM_SPI
           select DM_SPI_FLASH
Quoted 8 lines

So there should be no need to change something here. Or is something not working correctly on some of the MVEBU platforms?

What really is missing is the conversion of the older Marvell platforms, like Kirkwood and Orion. Those are quite ancient and have no DM / OF / DT support at all (AFAIR). So here is the real work that needs to be done. Or all those boards might get dropped soon.

Yeah sure enough

=> dm tree
Class Probed Driver Name
----------------------------------------

   root       [ + ]   root_drive  root_driver
   simple_bus [ + ]   generic_si  `-- soc
   simple_bus [ + ]   generic_si      `-- internal-regs
   spi        [ + ]   mvebu_spi           |-- spi at 10680
   spi_flash  [   ]   spi_flash_          |   `-- spi-flash at 0
   i2c        [   ]   i2c_mvtwsi          |-- i2c at 11000
   serial     [ + ]   ns16550_se          |-- serial at 12000
   eth        [ + ]   mvneta              |-- ethernet at 34000
   usb        [   ]   ehci_mvebu          |-- usb at 58000
   eth        [ + ]   mvneta              `-- ethernet at 70000
Quoted 1 line

So nothing to do for MVEBU.

Yep, thats what I thought.

Quoted 3 lines

I do have a passing interest in keeping kirkwood support but lack an upstream supported platform to use. I'll have to see if I can update one of our boards to use and upstream bootloader.

Yes, that would be good. As I fear, that Kirkwood might get dropped completely, if nobody reacts here and updates this platform to DM, DT etc.

Thanks,
Stefan

#11 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

In reply to Jagan Teki
Quoted 7 lines · Jagan Teki
Quoted 2 lines · Jagan Teki

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Hi Jagan,

And what is the deadline exactly ?

Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180427/1bb6cc20/attachment.sig>

#12 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Quoted 5 lines · Simon Guinot
Quoted 4 lines · Jagan Teki
Quoted 2 lines · Jagan Teki

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Quoted 7 lines
Quoted 3 lines

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Hi Jagan,

And what is the deadline exactly ?

See DM_SPI/SPI_FLASH migration details from, doc/driver-model/MIGRATION.txt

Jagan.

#13 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Quoted 10 lines · Jagan Teki
Quoted 9 lines · Simon Guinot
Quoted 7 lines · Jagan Teki
Quoted 2 lines · Jagan Teki

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Quoted 5 lines
Quoted 3 lines

Hi Jagan,

And what is the deadline exactly ?

See DM_SPI/SPI_FLASH migration details from, doc/driver-model/MIGRATION.txt

Thanks for letting me know Jagan...

I am no longer reading the U-Boot ML. So if you need me to do some changes on the LaCie/Seagate boards then it would be better to send me an email rather than burying information inside a file.

Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180501/76c17af8/attachment.sig>

#14 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Hi Simon,

Quoted 11 lines · Simon Guinot
Quoted 10 lines · Jagan Teki
Quoted 9 lines · Simon Guinot
Quoted 7 lines · Jagan Teki
Quoted 2 lines · Jagan Teki

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

Hi Jagan,

And what is the deadline exactly ?

See DM_SPI/SPI_FLASH migration details from, doc/driver-model/MIGRATION.txt

Thanks for letting me know Jagan...

Just to be clear here. The older Marvell platforms Orion and Kirkwood completely lack DM (Driver-Model) and DT (Device-Tree) support in U-Boot. This needs to be added (similar to what I've done to the newer parts beginning with Armada XP / 38x) so that the SPI driver (and others) can be used as DM-enabled driver.

Please see arch/arm/mach-mvebu/ for more details here.

Any work on this is greatly appreciated as I fear that the support for these older SoC's might get dropped completely otherwise soon.

Thanks,
Stefan

#15 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Hi All,

Quoted 5 lines · Stefan Roese

Hi Simon,

Quoted 2 lines · Simon Guinot
Quoted 1 line · Jagan Teki

On Fri, Apr 27, 2018 at 2:21 PM, Simon Guinot <

Quoted 2 lines · [email protected]> wrote:
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines · Jagan Teki
Quoted 1 line

On Thu, Mar 15, 2018 at 5:03 PM, Jagan Teki <

Quoted 7 lines · [email protected]> wrote:
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines
Quoted 2 lines

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 3 lines

Hi Jagan,

And what is the deadline exactly ?

See DM_SPI/SPI_FLASH migration details from,

doc/driver-model/MIGRATION.txt

Quoted 9 lines
Quoted 2 lines

Thanks for letting me know Jagan...

Just to be clear here. The older Marvell platforms Orion and Kirkwood completely lack DM (Driver-Model) and DT (Device-Tree) support in U-Boot. This needs to be added (similar to what I've done to the newer parts beginning with Armada XP / 38x) so that the SPI driver (and others) can be used as DM-enabled driver.

Quoted 4 lines

Please see arch/arm/mach-mvebu/ for more details here.

Any work on this is greatly appreciated as I fear that the support for these older SoC's might get dropped completely otherwise soon.

I had a quick try on one of the kirkwood based boards I have. It was pretty easy to bring in the dts files from Linux and get some basic stuff working. I started with i2c since I can still boot without it, I haven't been brave enough to try spi yet.

Hopefully I can spend a bit more time on it over the weekend.

In terms of a long-term plan. I could upstream support for our board, we still include it in the source we distribute as part of our GPL compliance. Since it's a older board that has been fairly stable we're not doing a lot of development on it. My motivation for retaining support for kirkwood is just in case we have some other EOL part that requires us to release a new bootloader. I could do a blind conversion of other in-tree kirkwood boards but my ability to test them would be quite limited.

#16 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Hi Chris,

Quoted 46 lines · Chris Packham

Hi All,

Quoted 5 lines · Stefan Roese

Hi Simon,

Quoted 2 lines · Simon Guinot
Quoted 1 line · Jagan Teki

On Fri, Apr 27, 2018 at 2:21 PM, Simon Guinot <

Quoted 2 lines · simon.guinot at sequanux.org> wrote:
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines · Jagan Teki
Quoted 1 line

On Thu, Mar 15, 2018 at 5:03 PM, Jagan Teki <

Quoted 7 lines · jagan at amarulasolutions.com> wrote:
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines
Quoted 2 lines

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 3 lines

Hi Jagan,

And what is the deadline exactly ?

See DM_SPI/SPI_FLASH migration details from,

doc/driver-model/MIGRATION.txt

Quoted 9 lines
Quoted 2 lines

Thanks for letting me know Jagan...

Just to be clear here. The older Marvell platforms Orion and Kirkwood completely lack DM (Driver-Model) and DT (Device-Tree) support in U-Boot. This needs to be added (similar to what I've done to the newer parts beginning with Armada XP / 38x) so that the SPI driver (and others) can be used as DM-enabled driver.

Quoted 4 lines

Please see arch/arm/mach-mvebu/ for more details here.

Any work on this is greatly appreciated as I fear that the support for these older SoC's might get dropped completely otherwise soon.

I had a quick try on one of the kirkwood based boards I have. It was pretty easy to bring in the dts files from Linux and get some basic stuff working. I started with i2c since I can still boot without it, I haven't been brave enough to try spi yet.

Hopefully I can spend a bit more time on it over the weekend.

Quoted 7 lines

In terms of a long-term plan. I could upstream support for our board, we still include it in the source we distribute as part of our GPL compliance. Since it's a older board that has been fairly stable we're not doing a lot of development on it. My motivation for retaining support for kirkwood is just in case we have some other EOL part that requires us to release a new bootloader. I could do a blind conversion of other in-tree kirkwood boards but my ability to test them would be quite limited.

I have a eSATA Sheevaplug and a IB-NAS6210 lying around here. Both are supported by U-Boot and the Linux kernel. Provided they still work, I could test on these boards if that helps.

#17 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

In reply to Chris Packham

Hi Chris,

Quoted 39 lines · Chris Packham

Hi All,

Quoted 5 lines · Stefan Roese

Hi Simon,

Quoted 2 lines · Simon Guinot
Quoted 1 line · Jagan Teki

On Fri, Apr 27, 2018 at 2:21 PM, Simon Guinot <

Quoted 2 lines · simon.guinot at sequanux.org> wrote:
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines · Jagan Teki
Quoted 1 line

On Thu, Mar 15, 2018 at 5:03 PM, Jagan Teki <

Quoted 7 lines · jagan at amarulasolutions.com> wrote:
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines
Quoted 2 lines

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 3 lines

Hi Jagan,

And what is the deadline exactly ?

See DM_SPI/SPI_FLASH migration details from,

doc/driver-model/MIGRATION.txt

Quoted 9 lines
Quoted 2 lines

Thanks for letting me know Jagan...

Just to be clear here. The older Marvell platforms Orion and Kirkwood completely lack DM (Driver-Model) and DT (Device-Tree) support in U-Boot. This needs to be added (similar to what I've done to the newer parts beginning with Armada XP / 38x) so that the SPI driver (and others) can be used as DM-enabled driver.

Quoted 4 lines

Please see arch/arm/mach-mvebu/ for more details here.

Any work on this is greatly appreciated as I fear that the support for these older SoC's might get dropped completely otherwise soon.

Quoted 6 lines

I had a quick try on one of the kirkwood based boards I have. It was pretty easy to bring in the dts files from Linux and get some basic stuff working. I started with i2c since I can still boot without it, I haven't been brave enough to try spi yet.

Hopefully I can spend a bit more time on it over the weekend.

This sound just great. Thanks.

Quoted 7 lines

In terms of a long-term plan. I could upstream support for our board, we still include it in the source we distribute as part of our GPL compliance. Since it's a older board that has been fairly stable we're not doing a lot of development on it. My motivation for retaining support for kirkwood is just in case we have some other EOL part that requires us to release a new bootloader. I could do a blind conversion of other in-tree kirkwood boards but my ability to test them would be quite limited.

This "blind conversion" is definitely much better, than the removal. Others might be able to test some of the boards. I don't have any of those - so I can't help out here.

Thanks,
Stefan

#18 lore raw

PATCH 2/2 spi: kirkwood: Full dm conversion

Quoted 43 lines · Stefan Roese

Hi Chris,

Quoted 40 lines · Chris Packham

Hi All,

Quoted 5 lines · Stefan Roese

Hi Simon,

Quoted 2 lines · Simon Guinot
Quoted 1 line · Jagan Teki

On Fri, Apr 27, 2018 at 2:21 PM, Simon Guinot <

Quoted 2 lines · simon.guinot at sequanux.org> wrote:
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines · Jagan Teki
Quoted 1 line

On Thu, Mar 15, 2018 at 5:03 PM, Jagan Teki <

Quoted 7 lines · jagan at amarulasolutions.com> wrote:
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines
Quoted 2 lines

kirkwood now support dt along with platform data, respective boards need to switch into dm for the same.

Added all board mainatiner, using this driver on their relevant boards. So try to switch to DM_SPI(SPI_FLASH) before migration deadline expires.

Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 3 lines

Hi Jagan,

And what is the deadline exactly ?

See DM_SPI/SPI_FLASH migration details from,

doc/driver-model/MIGRATION.txt

Quoted 9 lines
Quoted 2 lines

Thanks for letting me know Jagan...

Just to be clear here. The older Marvell platforms Orion and Kirkwood completely lack DM (Driver-Model) and DT (Device-Tree) support in U-Boot. This needs to be added (similar to what I've done to the newer parts beginning with Armada XP / 38x) so that the SPI driver (and others) can be used as DM-enabled driver.

Quoted 4 lines

Please see arch/arm/mach-mvebu/ for more details here.

Any work on this is greatly appreciated as I fear that the support for these older SoC's might get dropped completely otherwise soon.

I had a quick try on one of the kirkwood based boards I have. It was

pretty

Quoted 1 line
Quoted 1 line

easy to bring in the dts files from Linux and get some basic stuff

working.

Quoted 1 line
Quoted 1 line

I started with i2c since I can still boot without it, I haven't been

brave

Quoted 8 lines
Quoted 3 lines

enough to try spi yet.

Hopefully I can spend a bit more time on it over the weekend.

This sound just great. Thanks.

Quoted 2 lines

In terms of a long-term plan. I could upstream support for our board, we still include it in the source we distribute as part of our GPL

compliance.

Quoted 1 line
Quoted 1 line

Since it's a older board that has been fairly stable we're not doing a

lot

Quoted 1 line
Quoted 1 line

of development on it. My motivation for retaining support for kirkwood

is

Quoted 1 line
Quoted 1 line

just in case we have some other EOL part that requires us to release a

new

Quoted 1 line
Quoted 1 line

bootloader. I could do a blind conversion of other in-tree kirkwood

boards

Quoted 5 lines
Quoted 1 line

but my ability to test them would be quite limited.

This "blind conversion" is definitely much better, than the removal. Others might be able to test some of the boards. I don't have any of those - so I can't help out here.

An update on this.

I've tested these 2 patches from Jagan on my out-of-tree Kirkwood board with the addition of http://patchwork.ozlabs.org/patch/909973/ the chip seems accessible. So for both

In terms of getting the conversion done. I'm about halfway through bringing in the dts files from Linux. My plan is to send an initial series for boards that don't enable CONFIG_CMD_SF that just imports the dts and enables CONFIG_OF_CONTROL without actually enabling the DM for any subsystem (that isn't already enabled).

Then for the boards with SF enabled I'll need to build test them with and without Jagan's patches. So that could take a bit longer. Unfortunately in order to maintain bisect-ability these will have have to go in before Jagan's changes can be merged.