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
next prev parent 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: linkBe 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.