linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: James Getzendanner <James.Getzendanner-9geRo0GdX4k6efY3Smnssodd74u8MsAO@public.gmane.org>
To: "uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org"
	<uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org>
Cc: "spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org"
	<spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: [PATCH] Clear control bits in drivers/spi/spi_bfin5xx.c as necessary
Date: Fri, 18 Dec 2009 02:29:53 -0500	[thread overview]
Message-ID: <DA80C3E6C10BE94E8FCACEB239C2FEE46645317E77@EXVS01.olin.edu> (raw)

From: Andy Getzendanner <james.getzendanner-9geRo0GdX4k6efY3Smnssodd74u8MsAO@public.gmane.org>

This patch corrects the behavior of bfin_spi_setup() to clear bits LSBF,
CPHA, and CPOL in the SPI control register when required by the desired
SPI configuration.  The patch also modifies bfin_spi_setup() to
set/clear the SIZE bit as appropriate.
Signed-off-by: Andy Getzendanner <james.getzendanner-9geRo0GdX4k6efY3Smnssodd74u8MsAO@public.gmane.org>
---
The control bits LSBF, CPHA, and CPOL are set by bfin_spi_setup() when
appropriate, but the function appears to assume they are clear at entry
and leaves them untouched when the desired configuration calls for them
to be clear.  The SIZE bit is never set or cleared.
bfin_spi_setup() is triggered in response to an ioctl which calls for
the SPI configuration to be changed, but the settings controlled by
LSBF, CPHA, and CPOL cannot be changed away from the setting implied by
the value 1.  Additionally, the word length setting (controlled by SIZE)
is not set correctly.
The patch has been tested against 2.6.30.4 (it applies against 2.6.32.1)
and observed to correct the behavior of the affected ioctl.
Please CC me at james.getzendanner-9geRo0GdX4k6efY3Smnssodd74u8MsAO@public.gmane.org in any replies as I
am not on the list.
--- linux-2.6.32.1/drivers/spi/spi_bfin5xx.c.orig	2009-12-14 12:47:25.000000000 -0500
+++ linux-2.6.32.1/drivers/spi/spi_bfin5xx.c	2009-12-18 00:27:10.000000000 -0500
@@ -1051,10 +1051,16 @@ static int bfin_spi_setup(struct spi_dev
 	/* translate common spi framework into our register */
 	if (spi->mode & SPI_CPOL)
 		chip->ctl_reg |= CPOL;
+	else
+		chip->ctl_reg &= ~CPOL;
 	if (spi->mode & SPI_CPHA)
 		chip->ctl_reg |= CPHA;
+	else
+		chip->ctl_reg &= ~CPHA;
 	if (spi->mode & SPI_LSB_FIRST)
 		chip->ctl_reg |= LSBF;
+	else
+		chip->ctl_reg &= ~LSBF;
 	/* we dont support running in slave mode (yet?) */
 	chip->ctl_reg |= MSTR;
 
@@ -1106,6 +1112,7 @@ static int bfin_spi_setup(struct spi_dev
 			bfin_spi_u8_cs_chg_writer : bfin_spi_u8_writer;
 		chip->duplex = chip->cs_change_per_word ?
 			bfin_spi_u8_cs_chg_duplex : bfin_spi_u8_duplex;
+		chip->ctl_reg &= ~SIZE;
 		break;
 
 	case 16:
@@ -1117,6 +1124,7 @@ static int bfin_spi_setup(struct spi_dev
 			bfin_spi_u16_cs_chg_writer : bfin_spi_u16_writer;
 		chip->duplex = chip->cs_change_per_word ?
 			bfin_spi_u16_cs_chg_duplex : bfin_spi_u16_duplex;
+		chip->ctl_reg |= SIZE;
 		break;
 
 	default:

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 

             reply	other threads:[~2009-12-18  7:29 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-18  7:29 James Getzendanner [this message]
     [not found] ` <DA80C3E6C10BE94E8FCACEB239C2FEE46645317E77-64WhM8za9n95vsLK/AIMcA@public.gmane.org>
2009-12-18 13:14   ` [Uclinux-dist-devel] [PATCH] Clear control bits in drivers/spi/spi_bfin5xx.c as necessary Mike Frysinger
     [not found]     ` <8bd0f97a0912180514k42f32162jc850f4b4abbc3f7a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-12-18 17:34       ` Mike Frysinger
     [not found]         ` <8bd0f97a0912180934s3d2c70b7uf65d09dc016c1faa-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-19 16:12           ` Grant Likely
     [not found]             ` <fa686aa41001190812l28cf29fs5471c1022d25deee-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-19 17:29               ` Mike Frysinger
     [not found]                 ` <8bd0f97a1001190929w78624e95pa3f32e5147c2617e-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-19 17:46                   ` Grant Likely

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=DA80C3E6C10BE94E8FCACEB239C2FEE46645317E77@EXVS01.olin.edu \
    --to=james.getzendanner-9gero0gdx4k6efy3smnssodd74u8msao@public.gmane.org \
    --cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    --cc=uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).