public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] sh_spi: Add 4 chip select signals supporting
@ 2012-03-06  5:27 Shimoda, Yoshihiro
  2012-03-21  2:56 ` Nobuhiro Iwamatsu
  0 siblings, 1 reply; 2+ messages in thread
From: Shimoda, Yoshihiro @ 2012-03-06  5:27 UTC (permalink / raw)
  To: u-boot

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

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

* [U-Boot] [PATCH] sh_spi: Add 4 chip select signals supporting
  2012-03-06  5:27 [U-Boot] [PATCH] sh_spi: Add 4 chip select signals supporting Shimoda, Yoshihiro
@ 2012-03-21  2:56 ` Nobuhiro Iwamatsu
  0 siblings, 0 replies; 2+ messages in thread
From: Nobuhiro Iwamatsu @ 2012-03-21  2:56 UTC (permalink / raw)
  To: u-boot

Applied. Thanks,

Nobuhiro

2012/3/6 Shimoda, Yoshihiro <yoshihiro.shimoda.uh@renesas.com>:
> 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
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot



-- 
Nobuhiro Iwamatsu
?? iwamatsu at {nigauri.org / debian.org}
?? GPG ID: 40AD1FA6

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

end of thread, other threads:[~2012-03-21  2:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-06  5:27 [U-Boot] [PATCH] sh_spi: Add 4 chip select signals supporting Shimoda, Yoshihiro
2012-03-21  2:56 ` Nobuhiro Iwamatsu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox