Skip to contentSkip to conversation

dm: spi: Correct SPI claim/release_bus() methods

PATCH New Simon Glass 3 participants 5 messages Apr 19, 2015 – Apr 23, 2015

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 dm: spi: Correct SPI claim/release_bus() methods

These methods should be passed a slave device, not a bus. This matches the old SPI interface. It is important to know which device is claiming the bus so passing a bus is not that useful.

---

 drivers/spi/exynos_spi.c     |  6 ++++--
 drivers/spi/spi-uclass.c     |  4 ++--
 drivers/spi/tegra114_spi.c   |  3 ++-
 drivers/spi/tegra20_sflash.c |  3 ++-
 drivers/spi/tegra20_slink.c  |  3 ++-
 include/spi.h                | 10 +++++-----
 6 files changed, 17 insertions(+), 12 deletions(-)
drivers/spi/exynos_spi.c +4 -2
index a46d8c1..67f6b2d 100644
@@ -296,8 +296,9 @@ static int exynos_spi_probe(struct udevice *bus)
 	return 0;
 }
 
-static int exynos_spi_claim_bus(struct udevice *bus)
+static int exynos_spi_claim_bus(struct udevice *dev)
 {
+	struct udevice *bus = dev->parent;
 	struct exynos_spi_priv *priv = dev_get_priv(bus);
 
 	exynos_pinmux_config(priv->periph_id, PINMUX_FLAG_NONE);
@@ -308,8 +309,9 @@ static int exynos_spi_claim_bus(struct udevice *bus)
 	return 0;
 }
 
-static int exynos_spi_release_bus(struct udevice *bus)
+static int exynos_spi_release_bus(struct udevice *dev)
 {
+	struct udevice *bus = dev->parent;
 	struct exynos_spi_priv *priv = dev_get_priv(bus);
 
 	spi_flush_fifo(priv->regs);
drivers/spi/spi-uclass.c +2 -2
index 866c48f..83fe8e0 100644
@@ -67,7 +67,7 @@ int spi_claim_bus(struct spi_slave *slave)
 	if (ret)
 		return ret;
 
-	return ops->claim_bus ? ops->claim_bus(bus) : 0;
+	return ops->claim_bus ? ops->claim_bus(dev) : 0;
 }
 
 void spi_release_bus(struct spi_slave *slave)
@@ -77,7 +77,7 @@ void spi_release_bus(struct spi_slave *slave)
 	struct dm_spi_ops *ops = spi_get_ops(bus);
 
 	if (ops->release_bus)
-		ops->release_bus(bus);
+		ops->release_bus(dev);
 }
 
 int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
drivers/spi/tegra114_spi.c +2 -1
index 53ff9ea..4bec663 100644
@@ -153,8 +153,9 @@ static int tegra114_spi_probe(struct udevice *bus)
 	return 0;
 }
 
-static int tegra114_spi_claim_bus(struct udevice *bus)
+static int tegra114_spi_claim_bus(struct udevice *dev)
 {
+	struct udevice *bus = dev->parent;
 	struct tegra114_spi_priv *priv = dev_get_priv(bus);
 	struct spi_regs *regs = priv->regs;
 
drivers/spi/tegra20_sflash.c +2 -1
index 78c74cd..82c1b84 100644
@@ -125,8 +125,9 @@ static int tegra20_sflash_probe(struct udevice *bus)
 	return 0;
 }
 
-static int tegra20_sflash_claim_bus(struct udevice *bus)
+static int tegra20_sflash_claim_bus(struct udevice *dev)
 {
+	struct udevice *bus = dev->parent;
 	struct tegra20_sflash_priv *priv = dev_get_priv(bus);
 	struct spi_regs *regs = priv->regs;
 	u32 reg;
drivers/spi/tegra20_slink.c +2 -1
index 597d6ad..f6fb89b 100644
@@ -141,8 +141,9 @@ static int tegra30_spi_probe(struct udevice *bus)
 	return 0;
 }
 
-static int tegra30_spi_claim_bus(struct udevice *bus)
+static int tegra30_spi_claim_bus(struct udevice *dev)
 {
+	struct udevice *bus = dev->parent;
 	struct tegra30_spi_priv *priv = dev_get_priv(bus);
 	struct spi_regs *regs = priv->regs;
 	u32 reg;
include/spi.h +5 -5
index c58e453..863e6db 100644
@@ -385,12 +385,12 @@ struct dm_spi_ops {
 	 * allowed to claim the same bus for several slaves without releasing
 	 * the bus in between.
 	 *
-	 * @bus:	The SPI slave
+	 * @dev:	The SPI slave
 	 *
 	 * Returns: 0 if the bus was claimed successfully, or a negative value
 	 * if it wasn't.
 	 */
-	int (*claim_bus)(struct udevice *bus);
+	int (*claim_bus)(struct udevice *dev);
 
 	/**
 	 * Release the SPI bus
@@ -399,9 +399,9 @@ struct dm_spi_ops {
 	 * all transfers have finished. It may disable any SPI hardware as
 	 * appropriate.
 	 *
-	 * @bus:	The SPI slave
+	 * @dev:	The SPI slave
 	 */
-	int (*release_bus)(struct udevice *bus);
+	int (*release_bus)(struct udevice *dev);
 
 	/**
 	 * Set the word length for SPI transactions
@@ -413,7 +413,7 @@ struct dm_spi_ops {
 	 *
 	 * Returns: 0 on success, -ve on failure.
 	 */
-	int (*set_wordlen)(struct udevice *bus, unsigned int wordlen);
+	int (*set_wordlen)(struct udevice *dev, unsigned int wordlen);
 
 	/**
 	 * SPI transfer
Signature · 1 line
2.2.0.rc0.207.ga3a616c
#1 lore raw

PATCH 1/1 dm: spi: Correct SPI claim/release_bus() methods

Hi, Simon

Quoted 141 lines · Simon Glass

These methods should be passed a slave device, not a bus. This matches the old SPI interface. It is important to know which device is claiming the bus so passing a bus is not that useful.

---

  drivers/spi/exynos_spi.c     |  6 ++++--
  drivers/spi/spi-uclass.c     |  4 ++--
  drivers/spi/tegra114_spi.c   |  3 ++-
  drivers/spi/tegra20_sflash.c |  3 ++-
  drivers/spi/tegra20_slink.c  |  3 ++-
  include/spi.h                | 10 +++++-----
  6 files changed, 17 insertions(+), 12 deletions(-)
drivers/spi/exynos_spi.c +4 -2
index a46d8c1..67f6b2d 100644
@@ -296,8 +296,9 @@ static int exynos_spi_probe(struct udevice *bus)
  	return 0;
  }
 
-static int exynos_spi_claim_bus(struct udevice *bus)
+static int exynos_spi_claim_bus(struct udevice *dev)
  {
+	struct udevice *bus = dev->parent;
  	struct exynos_spi_priv *priv = dev_get_priv(bus);
 
  	exynos_pinmux_config(priv->periph_id, PINMUX_FLAG_NONE);
@@ -308,8 +309,9 @@ static int exynos_spi_claim_bus(struct udevice *bus)
  	return 0;
  }
 
-static int exynos_spi_release_bus(struct udevice *bus)
+static int exynos_spi_release_bus(struct udevice *dev)
  {
+	struct udevice *bus = dev->parent;
  	struct exynos_spi_priv *priv = dev_get_priv(bus);
 
  	spi_flush_fifo(priv->regs);
drivers/spi/spi-uclass.c +2 -2
index 866c48f..83fe8e0 100644
@@ -67,7 +67,7 @@ int spi_claim_bus(struct spi_slave *slave)
  	if (ret)
  		return ret;
 
-	return ops->claim_bus ? ops->claim_bus(bus) : 0;
+	return ops->claim_bus ? ops->claim_bus(dev) : 0;
  }
 
  void spi_release_bus(struct spi_slave *slave)
@@ -77,7 +77,7 @@ void spi_release_bus(struct spi_slave *slave)
  	struct dm_spi_ops *ops = spi_get_ops(bus);
 
  	if (ops->release_bus)
-		ops->release_bus(bus);
+		ops->release_bus(dev);
  }
 
  int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
drivers/spi/tegra114_spi.c +2 -1
index 53ff9ea..4bec663 100644
@@ -153,8 +153,9 @@ static int tegra114_spi_probe(struct udevice *bus)
  	return 0;
  }
 
-static int tegra114_spi_claim_bus(struct udevice *bus)
+static int tegra114_spi_claim_bus(struct udevice *dev)
  {
+	struct udevice *bus = dev->parent;
  	struct tegra114_spi_priv *priv = dev_get_priv(bus);
  	struct spi_regs *regs = priv->regs;
 
drivers/spi/tegra20_sflash.c +2 -1
index 78c74cd..82c1b84 100644
@@ -125,8 +125,9 @@ static int tegra20_sflash_probe(struct udevice *bus)
  	return 0;
  }
 
-static int tegra20_sflash_claim_bus(struct udevice *bus)
+static int tegra20_sflash_claim_bus(struct udevice *dev)
  {
+	struct udevice *bus = dev->parent;
  	struct tegra20_sflash_priv *priv = dev_get_priv(bus);
  	struct spi_regs *regs = priv->regs;
  	u32 reg;
drivers/spi/tegra20_slink.c +2 -1
index 597d6ad..f6fb89b 100644
@@ -141,8 +141,9 @@ static int tegra30_spi_probe(struct udevice *bus)
  	return 0;
  }
 
-static int tegra30_spi_claim_bus(struct udevice *bus)
+static int tegra30_spi_claim_bus(struct udevice *dev)
  {
+	struct udevice *bus = dev->parent;
  	struct tegra30_spi_priv *priv = dev_get_priv(bus);
  	struct spi_regs *regs = priv->regs;
  	u32 reg;
include/spi.h +4 -4
index c58e453..863e6db 100644
@@ -385,12 +385,12 @@ struct dm_spi_ops {
  	 * allowed to claim the same bus for several slaves without releasing
  	 * the bus in between.
  	 *
-	 * @bus:	The SPI slave
+	 * @dev:	The SPI slave
  	 *
  	 * Returns: 0 if the bus was claimed successfully, or a negative value
  	 * if it wasn't.
  	 */
-	int (*claim_bus)(struct udevice *bus);
+	int (*claim_bus)(struct udevice *dev);
 
  	/**
  	 * Release the SPI bus
@@ -399,9 +399,9 @@ struct dm_spi_ops {
  	 * all transfers have finished. It may disable any SPI hardware as
  	 * appropriate.
  	 *
-	 * @bus:	The SPI slave
+	 * @dev:	The SPI slave
  	 */
-	int (*release_bus)(struct udevice *bus);
+	int (*release_bus)(struct udevice *dev);
 
  	/**
  	 * Set the word length for SPI transactions

include/spi.h struct dm_spi_ops { · line 419

Quoted 8 lines
include/spi.h +1 -1
@@ -413,7 +413,7 @@ struct dm_spi_ops {
  	 *
  	 * Returns: 0 on success, -ve on failure.
  	 */
-	int (*set_wordlen)(struct udevice *bus, unsigned int wordlen);
+	int (*set_wordlen)(struct udevice *dev, unsigned int wordlen);
 
  	/**
  	 * SPI transfer

After applying this patch, qspi flashes can be correctly probed and read/write on i.MX platform. I original posted a patch
https://patchwork.ozlabs.org/patch/461034/ which seems in wrong way:)

Regards,
Peng.

#2 lore raw

PATCH 1/1 dm: spi: Correct SPI claim/release_bus() methods

Quoted 148 lines · Peng Fan

Hi, Simon

Quoted 131 lines · Simon Glass

These methods should be passed a slave device, not a bus. This matches the old SPI interface. It is important to know which device is claiming the bus
so passing a bus is not that useful.

---

  drivers/spi/exynos_spi.c     |  6 ++++--
  drivers/spi/spi-uclass.c     |  4 ++--
  drivers/spi/tegra114_spi.c   |  3 ++-
  drivers/spi/tegra20_sflash.c |  3 ++-
  drivers/spi/tegra20_slink.c  |  3 ++-
  include/spi.h                | 10 +++++-----
  6 files changed, 17 insertions(+), 12 deletions(-)
drivers/spi/exynos_spi.c +4 -0
index a46d8c1..67f6b2d 100644
@@ -296,8 +296,9 @@ static int exynos_spi_probe(struct udevice *bus)
        return 0;
  }
  -static int exynos_spi_claim_bus(struct udevice *bus)
+static int exynos_spi_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct exynos_spi_priv *priv = dev_get_priv(bus);
        exynos_pinmux_config(priv->periph_id, PINMUX_FLAG_NONE);
@@ -308,8 +309,9 @@ static int exynos_spi_claim_bus(struct udevice *bus)
        return 0;
  }
  -static int exynos_spi_release_bus(struct udevice *bus)
+static int exynos_spi_release_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct exynos_spi_priv *priv = dev_get_priv(bus);
        spi_flush_fifo(priv->regs);
drivers/spi/spi-uclass.c +2 -1
index 866c48f..83fe8e0 100644
@@ -67,7 +67,7 @@ int spi_claim_bus(struct spi_slave *slave)
        if (ret)
                return ret;
  -     return ops->claim_bus ? ops->claim_bus(bus) : 0;
+       return ops->claim_bus ? ops->claim_bus(dev) : 0;
  }
    void spi_release_bus(struct spi_slave *slave)
@@ -77,7 +77,7 @@ void spi_release_bus(struct spi_slave *slave)
        struct dm_spi_ops *ops = spi_get_ops(bus);
        if (ops->release_bus)
-               ops->release_bus(bus);
+               ops->release_bus(dev);
  }
    int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
drivers/spi/tegra114_spi.c +2 -0
index 53ff9ea..4bec663 100644
@@ -153,8 +153,9 @@ static int tegra114_spi_probe(struct udevice *bus)
        return 0;
  }
  -static int tegra114_spi_claim_bus(struct udevice *bus)
+static int tegra114_spi_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct tegra114_spi_priv *priv = dev_get_priv(bus);
        struct spi_regs *regs = priv->regs;
  diff --git a/drivers/spi/tegra20_sflash.c b/drivers/spi/tegra20_sflash.c

index 78c74cd..82c1b84 100644

drivers/spi/tegra20_sflash.c +2 -0
@@ -125,8 +125,9 @@ static int tegra20_sflash_probe(struct udevice *bus)
        return 0;
  }
  -static int tegra20_sflash_claim_bus(struct udevice *bus)
+static int tegra20_sflash_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct tegra20_sflash_priv *priv = dev_get_priv(bus);
        struct spi_regs *regs = priv->regs;
        u32 reg;
drivers/spi/tegra20_slink.c +2 -0
index 597d6ad..f6fb89b 100644
@@ -141,8 +141,9 @@ static int tegra30_spi_probe(struct udevice *bus)
        return 0;
  }
  -static int tegra30_spi_claim_bus(struct udevice *bus)
+static int tegra30_spi_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct tegra30_spi_priv *priv = dev_get_priv(bus);
        struct spi_regs *regs = priv->regs;
        u32 reg;
include/spi.h +0 -0
index c58e453..863e6db 100644
@@ -385,12 +385,12 @@ struct dm_spi_ops {
         * allowed to claim the same bus for several slaves without

releasing
* the bus in between.
*

include/spi.h +1 -1
-        * @bus:        The SPI slave
+        * @dev:        The SPI slave
         *
         * Returns: 0 if the bus was claimed successfully, or a negative

value
* if it wasn't.
*/

include/spi.h +3 -3
-       int (*claim_bus)(struct udevice *bus);
+       int (*claim_bus)(struct udevice *dev);
        /**
         * Release the SPI bus
@@ -399,9 +399,9 @@ struct dm_spi_ops {
         * all transfers have finished. It may disable any SPI hardware as
         * appropriate.
         *
-        * @bus:        The SPI slave
+        * @dev:        The SPI slave
         */
-       int (*release_bus)(struct udevice *bus);
+       int (*release_bus)(struct udevice *dev);
        /**
         * Set the word length for SPI transactions

include/spi.h struct dm_spi_ops { · line 418

Quoted 7 lines
include/spi.h +1 -1
@@ -413,7 +413,7 @@ struct dm_spi_ops {
         *
         * Returns: 0 on success, -ve on failure.
         */
-       int (*set_wordlen)(struct udevice *bus, unsigned int wordlen);
+       int (*set_wordlen)(struct udevice *dev, unsigned int wordlen);
        /**
         * SPI transfer

After applying this patch, qspi flashes can be correctly probed and read/write on i.MX platform. I original posted a patch
https://patchwork.ozlabs.org/patch/461034/ which seems in wrong way:)

Quoted 1 line

I'm picking on -spi/master! any concerns?

thanks!

Signature · 1 line
Jagan.
#3 lore raw

PATCH 1/1 dm: spi: Correct SPI claim/release_bus() methods

Hi Jagan,

Quoted 149 lines · Jagan Teki
Quoted 148 lines · Peng Fan

Hi, Simon

Quoted 131 lines · Simon Glass

These methods should be passed a slave device, not a bus. This matches the old SPI interface. It is important to know which device is claiming the bus
so passing a bus is not that useful.

---

  drivers/spi/exynos_spi.c     |  6 ++++--
  drivers/spi/spi-uclass.c     |  4 ++--
  drivers/spi/tegra114_spi.c   |  3 ++-
  drivers/spi/tegra20_sflash.c |  3 ++-
  drivers/spi/tegra20_slink.c  |  3 ++-
  include/spi.h                | 10 +++++-----
  6 files changed, 17 insertions(+), 12 deletions(-)
drivers/spi/exynos_spi.c +4 -0
index a46d8c1..67f6b2d 100644
@@ -296,8 +296,9 @@ static int exynos_spi_probe(struct udevice *bus)
        return 0;
  }
  -static int exynos_spi_claim_bus(struct udevice *bus)
+static int exynos_spi_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct exynos_spi_priv *priv = dev_get_priv(bus);
        exynos_pinmux_config(priv->periph_id, PINMUX_FLAG_NONE);
@@ -308,8 +309,9 @@ static int exynos_spi_claim_bus(struct udevice *bus)
        return 0;
  }
  -static int exynos_spi_release_bus(struct udevice *bus)
+static int exynos_spi_release_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct exynos_spi_priv *priv = dev_get_priv(bus);
        spi_flush_fifo(priv->regs);
drivers/spi/spi-uclass.c +2 -1
index 866c48f..83fe8e0 100644
@@ -67,7 +67,7 @@ int spi_claim_bus(struct spi_slave *slave)
        if (ret)
                return ret;
  -     return ops->claim_bus ? ops->claim_bus(bus) : 0;
+       return ops->claim_bus ? ops->claim_bus(dev) : 0;
  }
    void spi_release_bus(struct spi_slave *slave)
@@ -77,7 +77,7 @@ void spi_release_bus(struct spi_slave *slave)
        struct dm_spi_ops *ops = spi_get_ops(bus);
        if (ops->release_bus)
-               ops->release_bus(bus);
+               ops->release_bus(dev);
  }
    int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
drivers/spi/tegra114_spi.c +2 -0
index 53ff9ea..4bec663 100644
@@ -153,8 +153,9 @@ static int tegra114_spi_probe(struct udevice *bus)
        return 0;
  }
  -static int tegra114_spi_claim_bus(struct udevice *bus)
+static int tegra114_spi_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct tegra114_spi_priv *priv = dev_get_priv(bus);
        struct spi_regs *regs = priv->regs;
  diff --git a/drivers/spi/tegra20_sflash.c b/drivers/spi/tegra20_sflash.c

index 78c74cd..82c1b84 100644

drivers/spi/tegra20_sflash.c +2 -0
@@ -125,8 +125,9 @@ static int tegra20_sflash_probe(struct udevice *bus)
        return 0;
  }
  -static int tegra20_sflash_claim_bus(struct udevice *bus)
+static int tegra20_sflash_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct tegra20_sflash_priv *priv = dev_get_priv(bus);
        struct spi_regs *regs = priv->regs;
        u32 reg;
drivers/spi/tegra20_slink.c +2 -0
index 597d6ad..f6fb89b 100644
@@ -141,8 +141,9 @@ static int tegra30_spi_probe(struct udevice *bus)
        return 0;
  }
  -static int tegra30_spi_claim_bus(struct udevice *bus)
+static int tegra30_spi_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct tegra30_spi_priv *priv = dev_get_priv(bus);
        struct spi_regs *regs = priv->regs;
        u32 reg;
include/spi.h +0 -0
index c58e453..863e6db 100644
@@ -385,12 +385,12 @@ struct dm_spi_ops {
         * allowed to claim the same bus for several slaves without

releasing
* the bus in between.
*

include/spi.h +1 -1
-        * @bus:        The SPI slave
+        * @dev:        The SPI slave
         *
         * Returns: 0 if the bus was claimed successfully, or a negative

value
* if it wasn't.
*/

include/spi.h +3 -3
-       int (*claim_bus)(struct udevice *bus);
+       int (*claim_bus)(struct udevice *dev);
        /**
         * Release the SPI bus
@@ -399,9 +399,9 @@ struct dm_spi_ops {
         * all transfers have finished. It may disable any SPI hardware as
         * appropriate.
         *
-        * @bus:        The SPI slave
+        * @dev:        The SPI slave
         */
-       int (*release_bus)(struct udevice *bus);
+       int (*release_bus)(struct udevice *dev);
        /**
         * Set the word length for SPI transactions

include/spi.h struct dm_spi_ops { · line 418

Quoted 7 lines
include/spi.h +1 -1
@@ -413,7 +413,7 @@ struct dm_spi_ops {
         *
         * Returns: 0 on success, -ve on failure.
         */
-       int (*set_wordlen)(struct udevice *bus, unsigned int wordlen);
+       int (*set_wordlen)(struct udevice *dev, unsigned int wordlen);
        /**
         * SPI transfer

After applying this patch, qspi flashes can be correctly probed and read/write on i.MX platform. I original posted a patch
https://patchwork.ozlabs.org/patch/461034/ which seems in wrong way:)

Quoted 3 lines
Quoted 1 line

I'm picking on -spi/master! any concerns?

That's fine with me.

Regards,
Simon

#4 lore raw

PATCH 1/1 dm: spi: Correct SPI claim/release_bus() methods

Quoted 152 lines · Simon Glass

Hi Jagan,

Quoted 149 lines · Jagan Teki
Quoted 148 lines · Peng Fan

Hi, Simon

Quoted 131 lines · Simon Glass

These methods should be passed a slave device, not a bus. This matches the old SPI interface. It is important to know which device is claiming the bus
so passing a bus is not that useful.

---

  drivers/spi/exynos_spi.c     |  6 ++++--
  drivers/spi/spi-uclass.c     |  4 ++--
  drivers/spi/tegra114_spi.c   |  3 ++-
  drivers/spi/tegra20_sflash.c |  3 ++-
  drivers/spi/tegra20_slink.c  |  3 ++-
  include/spi.h                | 10 +++++-----
  6 files changed, 17 insertions(+), 12 deletions(-)
drivers/spi/exynos_spi.c +4 -0
index a46d8c1..67f6b2d 100644
@@ -296,8 +296,9 @@ static int exynos_spi_probe(struct udevice *bus)
        return 0;
  }
  -static int exynos_spi_claim_bus(struct udevice *bus)
+static int exynos_spi_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct exynos_spi_priv *priv = dev_get_priv(bus);
        exynos_pinmux_config(priv->periph_id, PINMUX_FLAG_NONE);
@@ -308,8 +309,9 @@ static int exynos_spi_claim_bus(struct udevice *bus)
        return 0;
  }
  -static int exynos_spi_release_bus(struct udevice *bus)
+static int exynos_spi_release_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct exynos_spi_priv *priv = dev_get_priv(bus);
        spi_flush_fifo(priv->regs);
drivers/spi/spi-uclass.c +2 -1
index 866c48f..83fe8e0 100644
@@ -67,7 +67,7 @@ int spi_claim_bus(struct spi_slave *slave)
        if (ret)
                return ret;
  -     return ops->claim_bus ? ops->claim_bus(bus) : 0;
+       return ops->claim_bus ? ops->claim_bus(dev) : 0;
  }
    void spi_release_bus(struct spi_slave *slave)
@@ -77,7 +77,7 @@ void spi_release_bus(struct spi_slave *slave)
        struct dm_spi_ops *ops = spi_get_ops(bus);
        if (ops->release_bus)
-               ops->release_bus(bus);
+               ops->release_bus(dev);
  }
    int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
drivers/spi/tegra114_spi.c +2 -0
index 53ff9ea..4bec663 100644
@@ -153,8 +153,9 @@ static int tegra114_spi_probe(struct udevice *bus)
        return 0;
  }
  -static int tegra114_spi_claim_bus(struct udevice *bus)
+static int tegra114_spi_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct tegra114_spi_priv *priv = dev_get_priv(bus);
        struct spi_regs *regs = priv->regs;
  diff --git a/drivers/spi/tegra20_sflash.c b/drivers/spi/tegra20_sflash.c

index 78c74cd..82c1b84 100644

drivers/spi/tegra20_sflash.c +2 -0
@@ -125,8 +125,9 @@ static int tegra20_sflash_probe(struct udevice *bus)
        return 0;
  }
  -static int tegra20_sflash_claim_bus(struct udevice *bus)
+static int tegra20_sflash_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct tegra20_sflash_priv *priv = dev_get_priv(bus);
        struct spi_regs *regs = priv->regs;
        u32 reg;
drivers/spi/tegra20_slink.c +2 -0
index 597d6ad..f6fb89b 100644
@@ -141,8 +141,9 @@ static int tegra30_spi_probe(struct udevice *bus)
        return 0;
  }
  -static int tegra30_spi_claim_bus(struct udevice *bus)
+static int tegra30_spi_claim_bus(struct udevice *dev)
  {
+       struct udevice *bus = dev->parent;
        struct tegra30_spi_priv *priv = dev_get_priv(bus);
        struct spi_regs *regs = priv->regs;
        u32 reg;
include/spi.h +0 -0
index c58e453..863e6db 100644
@@ -385,12 +385,12 @@ struct dm_spi_ops {
         * allowed to claim the same bus for several slaves without

releasing
* the bus in between.
*

include/spi.h +1 -1
-        * @bus:        The SPI slave
+        * @dev:        The SPI slave
         *
         * Returns: 0 if the bus was claimed successfully, or a negative

value
* if it wasn't.
*/

include/spi.h +3 -3
-       int (*claim_bus)(struct udevice *bus);
+       int (*claim_bus)(struct udevice *dev);
        /**
         * Release the SPI bus
@@ -399,9 +399,9 @@ struct dm_spi_ops {
         * all transfers have finished. It may disable any SPI hardware as
         * appropriate.
         *
-        * @bus:        The SPI slave
+        * @dev:        The SPI slave
         */
-       int (*release_bus)(struct udevice *bus);
+       int (*release_bus)(struct udevice *dev);
        /**
         * Set the word length for SPI transactions

include/spi.h struct dm_spi_ops { · line 418

Quoted 7 lines
include/spi.h +1 -1
@@ -413,7 +413,7 @@ struct dm_spi_ops {
         *
         * Returns: 0 on success, -ve on failure.
         */
-       int (*set_wordlen)(struct udevice *bus, unsigned int wordlen);
+       int (*set_wordlen)(struct udevice *dev, unsigned int wordlen);
        /**
         * SPI transfer

After applying this patch, qspi flashes can be correctly probed and read/write on i.MX platform. I original posted a patch
https://patchwork.ozlabs.org/patch/461034/ which seems in wrong way:)

Quoted 5 lines
Quoted 3 lines
Quoted 1 line

I'm picking on -spi/master! any concerns?

That's fine with me.

Applied to u-boot-spi/master

thanks!

Signature · 1 line
Jagan.