diff mbox

[U-Boot] dm: spi: Correct SPI claim/release_bus() methods

Message ID 1429455941-14223-1-git-send-email-sjg@chromium.org
State Accepted
Delegated to: Jagannadha Sutradharudu Teki
Headers show

Commit Message

Simon Glass April 19, 2015, 3:05 p.m. UTC
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(-)

Comments

Peng Fan April 20, 2015, 4:41 a.m. UTC | #1
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.
Jagan Teki April 20, 2015, 5:27 a.m. UTC | #2
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!
Simon Glass April 22, 2015, 8:42 p.m. UTC | #3
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
Jagan Teki April 23, 2015, 9:55 a.m. UTC | #4
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 mbox

Patch

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