All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shimoda, Yoshihiro <yoshihiro.shimoda.uh@renesas.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] sh_spi: Add 4 chip select signals supporting
Date: Tue, 06 Mar 2012 14:27:13 +0900	[thread overview]
Message-ID: <4F55A031.5000602@renesas.com> (raw)

The module has 4 chip select signals. This patch supports it.

Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
 drivers/spi/sh_spi.c |   19 ++++++++++++++++---
 drivers/spi/sh_spi.h |    4 +++-
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/drivers/spi/sh_spi.c b/drivers/spi/sh_spi.c
index 78c7f1a..e944b23 100644
--- a/drivers/spi/sh_spi.c
+++ b/drivers/spi/sh_spi.c
@@ -1,7 +1,7 @@
 /*
  * SH SPI driver
  *
- * Copyright (C) 2011 Renesas Solutions Corp.
+ * Copyright (C) 2011-2012 Renesas Solutions Corp.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -82,6 +82,19 @@ void spi_init(void)
 {
 }

+static void sh_spi_set_cs(struct sh_spi *ss, unsigned int cs)
+{
+	unsigned long val = 0;
+
+	if (cs & 0x01)
+		val |= SH_SPI_SSS0;
+	if (cs & 0x02)
+		val |= SH_SPI_SSS1;
+
+	sh_spi_clear_bit(SH_SPI_SSS0 | SH_SPI_SSS1, &ss->regs->cr4);
+	sh_spi_set_bit(val, &ss->regs->cr4);
+}
+
 struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
 		unsigned int max_hz, unsigned int mode)
 {
@@ -104,6 +117,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
 	sh_spi_write(0x00, &ss->regs->cr1);
 	/* CR3 init */
 	sh_spi_write(0x00, &ss->regs->cr3);
+	sh_spi_set_cs(ss, cs);

 	clear_fifo(ss);

@@ -242,8 +256,7 @@ int  spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,

 int  spi_cs_is_valid(unsigned int bus, unsigned int cs)
 {
-	/* This driver supports "bus = 0" and "cs = 0" only. */
-	if (!bus && !cs)
+	if (!bus && cs < SH_SPI_NUM_CS)
 		return 1;
 	else
 		return 0;
diff --git a/drivers/spi/sh_spi.h b/drivers/spi/sh_spi.h
index dd8f937..96b4b68 100644
--- a/drivers/spi/sh_spi.h
+++ b/drivers/spi/sh_spi.h
@@ -60,10 +60,12 @@ struct sh_spi_regs {
 #define SH_SPI_TBFI	0x40
 #define SH_SPI_RBEI	0x20
 #define SH_SPI_RBFI	0x10
+#define SH_SPI_SSS1	0x08
 #define SH_SPI_WPABRT	0x04
-#define SH_SPI_SSS	0x01
+#define SH_SPI_SSS0	0x01

 #define SH_SPI_FIFO_SIZE	32
+#define SH_SPI_NUM_CS		4

 struct sh_spi {
 	struct spi_slave	slave;
-- 
1.7.1

             reply	other threads:[~2012-03-06  5:27 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-06  5:27 Shimoda, Yoshihiro [this message]
2012-03-21  2:56 ` [U-Boot] [PATCH] sh_spi: Add 4 chip select signals supporting Nobuhiro Iwamatsu

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=4F55A031.5000602@renesas.com \
    --to=yoshihiro.shimoda.uh@renesas.com \
    --cc=u-boot@lists.denx.de \
    /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.