* [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