* [U-Boot] [PATCH] dm: spi: Correct SPI claim/release_bus() methods
@ 2015-04-19 15:05 Simon Glass
2015-04-20 4:41 ` Peng Fan
0 siblings, 1 reply; 5+ messages in thread
From: Simon Glass @ 2015-04-19 15:05 UTC (permalink / raw)
To: u-boot
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
--
2.2.0.rc0.207.ga3a616c
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH] dm: spi: Correct SPI claim/release_bus() methods
2015-04-19 15:05 [U-Boot] [PATCH] dm: spi: Correct SPI claim/release_bus() methods Simon Glass
@ 2015-04-20 4:41 ` Peng Fan
2015-04-20 5:27 ` Jagan Teki
0 siblings, 1 reply; 5+ messages in thread
From: Peng Fan @ 2015-04-20 4:41 UTC (permalink / raw)
To: u-boot
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.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH] dm: spi: Correct SPI claim/release_bus() methods
2015-04-20 4:41 ` Peng Fan
@ 2015-04-20 5:27 ` Jagan Teki
2015-04-22 20:42 ` Simon Glass
0 siblings, 1 reply; 5+ messages in thread
From: Jagan Teki @ 2015-04-20 5:27 UTC (permalink / raw)
To: u-boot
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!
--
Jagan.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH] dm: spi: Correct SPI claim/release_bus() methods
2015-04-20 5:27 ` Jagan Teki
@ 2015-04-22 20:42 ` Simon Glass
2015-04-23 9:55 ` Jagan Teki
0 siblings, 1 reply; 5+ messages in thread
From: Simon Glass @ 2015-04-22 20:42 UTC (permalink / raw)
To: u-boot
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
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] [PATCH] dm: spi: Correct SPI claim/release_bus() methods
2015-04-22 20:42 ` Simon Glass
@ 2015-04-23 9:55 ` Jagan Teki
0 siblings, 0 replies; 5+ messages in thread
From: Jagan Teki @ 2015-04-23 9:55 UTC (permalink / raw)
To: u-boot
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!
--
Jagan.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-04-23 9:55 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-19 15:05 [U-Boot] [PATCH] dm: spi: Correct SPI claim/release_bus() methods Simon Glass
2015-04-20 4:41 ` Peng Fan
2015-04-20 5:27 ` Jagan Teki
2015-04-22 20:42 ` Simon Glass
2015-04-23 9:55 ` Jagan Teki
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.