All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2 01/12] spi/mxs: Always set LOCK_CS
@ 2013-04-02 12:19 ` Trent Piepho
  0 siblings, 0 replies; 55+ messages in thread
From: Trent Piepho @ 2013-04-02 12:19 UTC (permalink / raw)
  To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
  Cc: Marek Vasut, Fabio Estevam, Trent Piepho, Shawn Guo

There are two bits which control the CS line in the CTRL0 register:
LOCK_CS and IGNORE_CRC.  The latter would be better named DEASSERT_CS
in SPI mode.

LOCK_CS keeps CS asserted though the entire transfer.  This should
always be set.  The DMA code will always set it, explicitly on the
first segment of the first transfer, and then implicitly on all the
rest by never clearing the bit from the value read from the ctrl0
register.

The only reason to not set LOCK_CS would be to attempt an altered
protocol where CS pulses between each word.  Though don't get your
hopes up if you want to do this, as the hardware doesn't appear to do
this in any sane manner.

The code can be simplified by just setting LOCK_CS once and then not
needing to deal with it in the PIO and DMA transfer functions.

Signed-off-by: Trent Piepho <tpiepho-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>
Cc: Fabio Estevam <fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
Cc: Shawn Guo <shawn.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
---
 drivers/spi/spi-mxs.c |    8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/spi/spi-mxs.c b/drivers/spi/spi-mxs.c
index 22a0af0..9334167 100644
--- a/drivers/spi/spi-mxs.c
+++ b/drivers/spi/spi-mxs.c
@@ -91,6 +91,8 @@ static int mxs_spi_setup_transfer(struct spi_device *dev,
 
 	mxs_ssp_set_clk_rate(ssp, hz);
 
+	writel(BM_SSP_CTRL0_LOCK_CS,
+		ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET);
 	writel(BF_SSP_CTRL1_SSP_MODE(BV_SSP_CTRL1_SSP_MODE__SPI) |
 		     BF_SSP_CTRL1_WORD_LENGTH
 		     (BV_SSP_CTRL1_WORD_LENGTH__EIGHT_BITS) |
@@ -159,8 +161,6 @@ static inline void mxs_spi_enable(struct mxs_spi *spi)
 {
 	struct mxs_ssp *ssp = &spi->ssp;
 
-	writel(BM_SSP_CTRL0_LOCK_CS,
-		ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET);
 	writel(BM_SSP_CTRL0_IGNORE_CRC,
 		ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR);
 }
@@ -169,8 +169,6 @@ static inline void mxs_spi_disable(struct mxs_spi *spi)
 {
 	struct mxs_ssp *ssp = &spi->ssp;
 
-	writel(BM_SSP_CTRL0_LOCK_CS,
-		ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR);
 	writel(BM_SSP_CTRL0_IGNORE_CRC,
 		ssp->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET);
 }
@@ -244,8 +242,6 @@ static int mxs_spi_txrx_dma(struct mxs_spi *spi, int cs,
 	ctrl0 &= ~BM_SSP_CTRL0_XFER_COUNT;
 	ctrl0 |= BM_SSP_CTRL0_DATA_XFER | mxs_spi_cs_to_reg(cs);
 
-	if (*first)
-		ctrl0 |= BM_SSP_CTRL0_LOCK_CS;
 	if (!write)
 		ctrl0 |= BM_SSP_CTRL0_READ;
 
-- 
1.7.10.4


------------------------------------------------------------------------------
Own the Future-Intel(R) Level Up Game Demo Contest 2013
Rise to greatness in Intel's independent game demo contest. Compete 
for recognition, cash, and the chance to get your game on Steam. 
$5K grand prize plus 10 genre and skill prizes. Submit your demo 
by 6/6/13. http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2

^ permalink raw reply related	[flat|nested] 55+ messages in thread

end of thread, other threads:[~2013-07-18  1:08 UTC | newest]

Thread overview: 55+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-02 12:19 [PATCH V2 01/12] spi/mxs: Always set LOCK_CS Trent Piepho
2013-04-02 12:19 ` Trent Piepho
     [not found] ` <1364905195-24286-1-git-send-email-tpiepho-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-04-02 12:19   ` [PATCH V2 02/12] spi/mxs: Remove mxs_spi_enable and mxs_spi_disable Trent Piepho
2013-04-02 12:19     ` Trent Piepho
2013-04-02 12:19   ` [PATCH V2 03/12] spi/mxs: Change flag arguments in txrx functions to bit flags Trent Piepho
2013-04-02 12:19     ` Trent Piepho
     [not found]     ` <1364905195-24286-3-git-send-email-tpiepho-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-04-02 23:24       ` Marek Vasut
2013-04-02 23:24         ` Marek Vasut
2013-04-02 12:19   ` [PATCH V2 04/12] spi/mxs: Fix extra CS pulses and read mode in multi-transfer messages Trent Piepho
2013-04-02 12:19     ` Trent Piepho
2013-04-02 12:19   ` [PATCH V2 05/12] spi/mxs: Fix chip select control bits in DMA mode Trent Piepho
2013-04-02 12:19     ` Trent Piepho
     [not found]     ` <1364905195-24286-5-git-send-email-tpiepho-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-04-02 23:29       ` Marek Vasut
2013-04-02 23:29         ` Marek Vasut
2013-04-02 12:19   ` [PATCH V2 06/12] spi/mxs: Remove full duplex check, spi core already does it Trent Piepho
2013-04-02 12:19     ` Trent Piepho
2013-04-02 12:19   ` [PATCH V2 07/12] spi/mxs: Remove bogus setting of ssp clk rate field Trent Piepho
2013-04-02 12:19     ` Trent Piepho
2013-04-02 12:19   ` [PATCH V2 08/12] spi/mxs: Fix race in setup method Trent Piepho
2013-04-02 12:19     ` Trent Piepho
     [not found]     ` <1364905195-24286-8-git-send-email-tpiepho-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-04-02 23:31       ` Marek Vasut
2013-04-02 23:31         ` Marek Vasut
     [not found]         ` <201304030131.37782.marex-ynQEQJNshbs@public.gmane.org>
2013-04-03  2:12           ` Trent Piepho
2013-04-03  2:12             ` Trent Piepho
2013-04-03  2:27             ` Marek Vasut
2013-04-03  2:27               ` Marek Vasut
     [not found]               ` <201304030427.41297.marex-ynQEQJNshbs@public.gmane.org>
2013-04-03  6:08                 ` Trent Piepho
2013-04-03  6:08                   ` Trent Piepho
     [not found]                   ` <CA+7tXih2r6YFE80y7z7Nj7c0Ytvh+v56-SrbS+VQ7kCW3KBRXA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-03  6:50                     ` Marek Vasut
2013-04-03  6:50                       ` Marek Vasut
     [not found]                       ` <201304030850.31752.marex-ynQEQJNshbs@public.gmane.org>
2013-04-03  9:32                         ` Trent Piepho
2013-04-03  9:32                           ` Trent Piepho
2013-04-02 12:19   ` [PATCH V2 09/12] spi/mxs: Remove check of spi mode bits Trent Piepho
2013-04-02 12:19     ` Trent Piepho
2013-04-02 12:19   ` [PATCH V2 10/12] spi/mxs: Clean up setup_transfer function Trent Piepho
2013-04-02 12:19     ` Trent Piepho
     [not found]     ` <1364905195-24286-10-git-send-email-tpiepho-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-04-02 23:35       ` Marek Vasut
2013-04-02 23:35         ` Marek Vasut
2013-04-02 12:19   ` [PATCH V2 11/12] spi/mxs: Don't set clock for each xfer Trent Piepho
2013-04-02 12:19     ` Trent Piepho
     [not found]     ` <1364905195-24286-11-git-send-email-tpiepho-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-04-02 23:38       ` Marek Vasut
2013-04-02 23:38         ` Marek Vasut
2013-04-02 12:19   ` [PATCH V2 12/12] spi/mxs: Use u32 instead of uint32_t Trent Piepho
2013-04-02 12:19     ` Trent Piepho
2013-04-02 23:18 ` [PATCH V2 01/12] spi/mxs: Always set LOCK_CS Marek Vasut
2013-04-02 23:18   ` Marek Vasut
     [not found]   ` <201304030118.42976.marex-ynQEQJNshbs@public.gmane.org>
2013-07-10 13:49     ` Fabio Estevam
2013-07-10 13:49       ` Fabio Estevam
2013-07-10 15:29       ` Lothar Waßmann
2013-07-10 15:29         ` Lothar Waßmann
     [not found]         ` <20957.32214.721252.361301-VjFSrY7JcPWvSplVBqRQBQ@public.gmane.org>
2013-07-18  1:08           ` Trent Piepho
2013-04-03  1:41 ` Shawn Guo
2013-04-03  1:41   ` Shawn Guo
2013-04-14 18:01 ` Marek Vasut
2013-04-14 18:01   ` Marek Vasut

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.