On 20 April 2015 at 10:11, Peng Fan <peng....@freescale.com> wrote: > Hi, Simon > > > On 4/19/2015 11:05 PM, Simon Glass wrote: >> >> 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. >> >> Reported-by: Haikun Wang <haikun.w...@freescale.com> >> Signed-off-by: Simon Glass <s...@chromium.org> >> --- >> >> 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(-) >> >> diff --git a/drivers/spi/exynos_spi.c b/drivers/spi/exynos_spi.c >> index a46d8c1..67f6b2d 100644 >> --- a/drivers/spi/exynos_spi.c >> +++ b/drivers/spi/exynos_spi.c >> @@ -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); >> diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c >> index 866c48f..83fe8e0 100644 >> --- a/drivers/spi/spi-uclass.c >> +++ b/drivers/spi/spi-uclass.c >> @@ -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, >> diff --git a/drivers/spi/tegra114_spi.c b/drivers/spi/tegra114_spi.c >> index 53ff9ea..4bec663 100644 >> --- a/drivers/spi/tegra114_spi.c >> +++ b/drivers/spi/tegra114_spi.c >> @@ -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 >> --- a/drivers/spi/tegra20_sflash.c >> +++ b/drivers/spi/tegra20_sflash.c >> @@ -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; >> diff --git a/drivers/spi/tegra20_slink.c b/drivers/spi/tegra20_slink.c >> index 597d6ad..f6fb89b 100644 >> --- a/drivers/spi/tegra20_slink.c >> +++ b/drivers/spi/tegra20_slink.c >> @@ -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; >> diff --git a/include/spi.h b/include/spi.h >> index c58e453..863e6db 100644 >> --- a/include/spi.h >> +++ b/include/spi.h >> @@ -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 > > > 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:) > > Tested-by: Peng Fan <peng....@freescale.com>
I'm picking on -spi/master! any concerns? thanks! -- Jagan. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot