All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joachim  Eastwood <manabian@gmail.com>
To: Wenyou Yang <wenyou.yang@atmel.com>
Cc: richard.genoud@gmail.com, JM.Lin@atmel.com,
	nicolas.ferre@atmel.com, grant.likely@secretlab.ca,
	spi-devel-general@lists.sourceforge.net, plagnioj@jcrosoft.com,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH Resend v5 02/16] spi/spi-atmel: detect the capabilities of SPI core by reading the VERSION register.
Date: Wed, 27 Feb 2013 20:41:02 +0100	[thread overview]
Message-ID: <CAGhQ9Vwh1Y=_ShuAB+6mfS9SLed-6UthUHk3fdJoVKDcmP6edA@mail.gmail.com> (raw)
In-Reply-To: <1361925520-11981-1-git-send-email-wenyou.yang@atmel.com>

On 27 February 2013 01:38, Wenyou Yang <wenyou.yang@atmel.com> wrote:
> The "has_dma_support" needed for future use with dmaengine driver.
>
> Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
> Cc: spi-devel-general@lists.sourceforge.net
> Cc: linux-kernel@vger.kernel.org
> ---
>  drivers/spi/spi-atmel.c |   70 ++++++++++++++++++++++++++++++++++++++---------
>  1 file changed, 57 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c
> index 5bf3786..a8e091b 100644
> --- a/drivers/spi/spi-atmel.c
> +++ b/drivers/spi/spi-atmel.c
> @@ -39,6 +39,7 @@
>  #define SPI_CSR1                               0x0034
>  #define SPI_CSR2                               0x0038
>  #define SPI_CSR3                               0x003c
> +#define SPI_VERSION                            0x00fc
>  #define SPI_RPR                                        0x0100
>  #define SPI_RCR                                        0x0104
>  #define SPI_TPR                                        0x0108
> @@ -71,6 +72,8 @@
>  #define SPI_FDIV_SIZE                          1
>  #define SPI_MODFDIS_OFFSET                     4
>  #define SPI_MODFDIS_SIZE                       1
> +#define SPI_WDRBT_OFFSET                       5
> +#define SPI_WDRBT_SIZE                         1
>  #define SPI_LLB_OFFSET                         7
>  #define SPI_LLB_SIZE                           1
>  #define SPI_PCS_OFFSET                         16
> @@ -180,6 +183,11 @@
>  #define spi_writel(port,reg,value) \
>         __raw_writel((value), (port)->regs + SPI_##reg)
>
> +struct atmel_spi_caps {
> +       bool    is_spi2;
> +       bool    has_wdrbt;
> +       bool    has_dma_support;
> +};
>
>  /*
>   * The core SPI transfer engine just talks to a register bank to set up
> @@ -204,6 +212,8 @@ struct atmel_spi {
>
>         void                    *buffer;
>         dma_addr_t              buffer_dma;
> +
> +       struct atmel_spi_caps   caps;
>  };
>
>  /* Controller-specific per-slave state */
> @@ -222,14 +232,10 @@ struct atmel_spi_device {
>   *  - SPI_SR.TXEMPTY, SPI_SR.NSSR (and corresponding irqs)
>   *  - SPI_CSRx.CSAAT
>   *  - SPI_CSRx.SBCR allows faster clocking
> - *
> - * We can determine the controller version by reading the VERSION
> - * register, but I haven't checked that it exists on all chips, and
> - * this is cheaper anyway.
>   */
> -static bool atmel_spi_is_v2(void)
> +static bool atmel_spi_is_v2(struct atmel_spi *as)
>  {
> -       return !cpu_is_at91rm9200();
> +       return as->caps.is_spi2;
>  }

Since you are removing cpu_is_at91rm9200() you might want to remove
the mach/cpu.h include as well.

Regarding the includes. I think asm/{io.h, gpio.h} should be converted
to linux/{io.h, gpio.h}. In it's own patch, though.

<snip>

> @@ -910,6 +921,32 @@ static void atmel_spi_cleanup(struct spi_device *spi)
>         kfree(asd);
>  }
>
> +static inline unsigned int atmel_get_version(struct atmel_spi *as)
> +{
> +       return spi_readl(as, VERSION) & 0x00000fff;
> +}
> +
> +static void __init atmel_get_caps(struct atmel_spi *as)
> +{
> +       unsigned int version;
> +
> +       version = atmel_get_version(as);
> +       dev_info(&as->pdev->dev, "version: 0x%x\n", version);
> +
> +       as->caps.is_spi2 = false;
> +       as->caps.has_wdrbt = false;
> +       as->caps.has_dma_support = false;
> +
> +       if (version > 0x121)
> +               as->caps.is_spi2 = true;
> +
> +       if (version >= 0x210)
> +               as->caps.has_wdrbt = true;
> +
> +       if (version >= 0x212)
> +               as->caps.has_dma_support = true;
> +}

This could be just written as: as->caps.has_dma_support = (version >= 0x212);
or using a conditional.

It would save some lines.

regards
Joachim Eastwood

WARNING: multiple messages have this Message-ID (diff)
From: manabian@gmail.com (Joachim Eastwood)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH Resend v5 02/16] spi/spi-atmel: detect the capabilities of SPI core by reading the VERSION register.
Date: Wed, 27 Feb 2013 20:41:02 +0100	[thread overview]
Message-ID: <CAGhQ9Vwh1Y=_ShuAB+6mfS9SLed-6UthUHk3fdJoVKDcmP6edA@mail.gmail.com> (raw)
In-Reply-To: <1361925520-11981-1-git-send-email-wenyou.yang@atmel.com>

On 27 February 2013 01:38, Wenyou Yang <wenyou.yang@atmel.com> wrote:
> The "has_dma_support" needed for future use with dmaengine driver.
>
> Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
> Cc: spi-devel-general at lists.sourceforge.net
> Cc: linux-kernel at vger.kernel.org
> ---
>  drivers/spi/spi-atmel.c |   70 ++++++++++++++++++++++++++++++++++++++---------
>  1 file changed, 57 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c
> index 5bf3786..a8e091b 100644
> --- a/drivers/spi/spi-atmel.c
> +++ b/drivers/spi/spi-atmel.c
> @@ -39,6 +39,7 @@
>  #define SPI_CSR1                               0x0034
>  #define SPI_CSR2                               0x0038
>  #define SPI_CSR3                               0x003c
> +#define SPI_VERSION                            0x00fc
>  #define SPI_RPR                                        0x0100
>  #define SPI_RCR                                        0x0104
>  #define SPI_TPR                                        0x0108
> @@ -71,6 +72,8 @@
>  #define SPI_FDIV_SIZE                          1
>  #define SPI_MODFDIS_OFFSET                     4
>  #define SPI_MODFDIS_SIZE                       1
> +#define SPI_WDRBT_OFFSET                       5
> +#define SPI_WDRBT_SIZE                         1
>  #define SPI_LLB_OFFSET                         7
>  #define SPI_LLB_SIZE                           1
>  #define SPI_PCS_OFFSET                         16
> @@ -180,6 +183,11 @@
>  #define spi_writel(port,reg,value) \
>         __raw_writel((value), (port)->regs + SPI_##reg)
>
> +struct atmel_spi_caps {
> +       bool    is_spi2;
> +       bool    has_wdrbt;
> +       bool    has_dma_support;
> +};
>
>  /*
>   * The core SPI transfer engine just talks to a register bank to set up
> @@ -204,6 +212,8 @@ struct atmel_spi {
>
>         void                    *buffer;
>         dma_addr_t              buffer_dma;
> +
> +       struct atmel_spi_caps   caps;
>  };
>
>  /* Controller-specific per-slave state */
> @@ -222,14 +232,10 @@ struct atmel_spi_device {
>   *  - SPI_SR.TXEMPTY, SPI_SR.NSSR (and corresponding irqs)
>   *  - SPI_CSRx.CSAAT
>   *  - SPI_CSRx.SBCR allows faster clocking
> - *
> - * We can determine the controller version by reading the VERSION
> - * register, but I haven't checked that it exists on all chips, and
> - * this is cheaper anyway.
>   */
> -static bool atmel_spi_is_v2(void)
> +static bool atmel_spi_is_v2(struct atmel_spi *as)
>  {
> -       return !cpu_is_at91rm9200();
> +       return as->caps.is_spi2;
>  }

Since you are removing cpu_is_at91rm9200() you might want to remove
the mach/cpu.h include as well.

Regarding the includes. I think asm/{io.h, gpio.h} should be converted
to linux/{io.h, gpio.h}. In it's own patch, though.

<snip>

> @@ -910,6 +921,32 @@ static void atmel_spi_cleanup(struct spi_device *spi)
>         kfree(asd);
>  }
>
> +static inline unsigned int atmel_get_version(struct atmel_spi *as)
> +{
> +       return spi_readl(as, VERSION) & 0x00000fff;
> +}
> +
> +static void __init atmel_get_caps(struct atmel_spi *as)
> +{
> +       unsigned int version;
> +
> +       version = atmel_get_version(as);
> +       dev_info(&as->pdev->dev, "version: 0x%x\n", version);
> +
> +       as->caps.is_spi2 = false;
> +       as->caps.has_wdrbt = false;
> +       as->caps.has_dma_support = false;
> +
> +       if (version > 0x121)
> +               as->caps.is_spi2 = true;
> +
> +       if (version >= 0x210)
> +               as->caps.has_wdrbt = true;
> +
> +       if (version >= 0x212)
> +               as->caps.has_dma_support = true;
> +}

This could be just written as: as->caps.has_dma_support = (version >= 0x212);
or using a conditional.

It would save some lines.

regards
Joachim Eastwood

  reply	other threads:[~2013-02-27 19:41 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-27  0:34 [PATCH Resend v5 00/16] spi/spi-atmel: add dmaengine support for atmel spi controller and to test the device tree support Wenyou Yang
2013-02-27  0:37 ` [PATCH Resend v5 01/16] spi/spi-atmel: fix master->num_chipselect wrongly set Wenyou Yang
2013-02-27  0:37   ` Wenyou Yang
2013-02-27  0:38 ` [PATCH Resend v5 02/16] spi/spi-atmel: detect the capabilities of SPI core by reading the VERSION register Wenyou Yang
2013-02-27  0:38   ` Wenyou Yang
2013-02-27  0:38   ` Wenyou Yang
2013-02-27 19:41   ` Joachim Eastwood [this message]
2013-02-27 19:41     ` Joachim Eastwood
2013-02-28  2:29     ` Yang, Wenyou
2013-02-28  2:29       ` Yang, Wenyou
2013-02-27  0:39 ` [PATCH Resend v5 03/16] spi/spi-atmel: add support transfer on CS1,2,3, not only on CS0 Wenyou Yang
2013-02-27  0:39   ` [PATCH Resend v5 03/16] spi/spi-atmel: add support transfer on CS1, 2, 3, " Wenyou Yang
2013-02-27  0:40 ` [PATCH Resend v5 04/16] spi/spi-atmel: add physical base address Wenyou Yang
2013-02-27  0:40   ` Wenyou Yang
2013-02-27  0:41 ` [PATCH Resend v5 05/16] spi/spi-atmel: call unmapping on transfers buffers Wenyou Yang
2013-02-27  0:41   ` Wenyou Yang
2013-02-27  0:42 ` [PATCH Resend v5 06/16] spi/spi-atmel: status information passed through controller data Wenyou Yang
2013-02-27  0:42   ` Wenyou Yang
2013-02-27  0:42 ` [PATCH Resend v5 07/16] spi/spi-atmel: add flag to controller data for lock operations Wenyou Yang
2013-02-27  0:42   ` Wenyou Yang
2013-02-27  0:43 ` [PATCH Resend v5 08/16] spi/spi-atmel: add dmaengine support Wenyou Yang
2013-02-27  0:43   ` Wenyou Yang
2013-02-27  0:44 ` [PATCH Resend v5 09/16] spi/spi-atmel: fix spi-atmel driver to adapt to slave_config changes Wenyou Yang
2013-02-27  0:44   ` Wenyou Yang
2013-02-27  0:45 ` [PATCH Resend v5 10/16] spi/spi-atmel: correct 16 bits transfers using PIO Wenyou Yang
2013-02-27  0:45   ` Wenyou Yang
2013-02-27  0:46 ` [PATCH Resend v5 11/16] spi/spi-atmel: correct 16 bits transfers with DMA Wenyou Yang
2013-02-27  0:46   ` Wenyou Yang
2013-02-27  0:47 ` [PATCH Resend v5 12/16] spi/spi-atmel: add pinctrl support for atmel spi Wenyou Yang
2013-02-27  0:47   ` Wenyou Yang
2013-02-27 19:26   ` Joachim Eastwood
2013-02-27 19:26     ` Joachim Eastwood
2013-02-27  0:47 ` [PATCH Resend v5 13/16] ARM: at91: add clocks for spi dt entries Wenyou Yang
2013-02-27  0:47   ` Wenyou Yang
2013-02-27  0:48 ` [PATCH Resend v5 14/16] ARM: dts: add spi nodes for atmel SoC Wenyou Yang
2013-02-27  0:48   ` Wenyou Yang
2013-02-27  0:49 ` [PATCH Resend v5 15/16] ARM: dts: add spi nodes for the atmel boards Wenyou Yang
2013-02-27  0:49   ` Wenyou Yang
2013-02-27  0:49 ` [PATCH Resend v5 16/16] ARM: dts: add pinctrl property for spi node for atmel SoC Wenyou Yang
2013-02-27  0:49   ` Wenyou Yang
2013-02-27 17:51 ` [PATCH Resend v5 00/16] spi/spi-atmel: add dmaengine support for atmel spi controller and to test the device tree support Robert Nelson
2013-02-28  2:16   ` Yang, Wenyou
2013-03-18 15:15     ` Douglas Gilbert
2013-02-27 19:47 ` Joachim Eastwood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAGhQ9Vwh1Y=_ShuAB+6mfS9SLed-6UthUHk3fdJoVKDcmP6edA@mail.gmail.com' \
    --to=manabian@gmail.com \
    --cc=JM.Lin@atmel.com \
    --cc=grant.likely@secretlab.ca \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=nicolas.ferre@atmel.com \
    --cc=plagnioj@jcrosoft.com \
    --cc=richard.genoud@gmail.com \
    --cc=spi-devel-general@lists.sourceforge.net \
    --cc=wenyou.yang@atmel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.