Message ID | 1429455941-14223-1-git-send-email-sjg@chromium.org |
---|---|
State | Accepted |
Delegated to: | Jagannadha Sutradharudu Teki |
Headers | show |
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.wang@freescale.com> > Signed-off-by: Simon Glass <sjg@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.Fan@freescale.com> Regards, Peng.
On 20 April 2015 at 10:11, Peng Fan <Peng.Fan@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.wang@freescale.com> >> Signed-off-by: Simon Glass <sjg@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.Fan@freescale.com> I'm picking on -spi/master! any concerns? thanks!
Hi Jagan, On 19 April 2015 at 23:27, Jagan Teki <jagannadh.teki@gmail.com> wrote: > On 20 April 2015 at 10:11, Peng Fan <Peng.Fan@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.wang@freescale.com> >>> Signed-off-by: Simon Glass <sjg@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.Fan@freescale.com> > > I'm picking on -spi/master! any concerns? That's fine with me. Regards, Simon
On 23 April 2015 at 02:12, Simon Glass <sjg@chromium.org> wrote: > Hi Jagan, > > On 19 April 2015 at 23:27, Jagan Teki <jagannadh.teki@gmail.com> wrote: >> On 20 April 2015 at 10:11, Peng Fan <Peng.Fan@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.wang@freescale.com> >>>> Signed-off-by: Simon Glass <sjg@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.Fan@freescale.com> >> >> I'm picking on -spi/master! any concerns? > > That's fine with me. Applied to u-boot-spi/master thanks!
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
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.wang@freescale.com> Signed-off-by: Simon Glass <sjg@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(-)