[U-Boot] [PATCH v2 2/2] ppc4xx: Add SPI helper routines for the 440EPX

Steven A. Falco sfalco at harris.com
Mon Dec 8 22:02:36 CET 2008


This patch adds helper routines needed in support of the 440EPx SPI driver.

Signed-off-by: Steven A. Falco <sfalco at harris.com>
---

Regarding Wolfgang's comments:

The style I saw in the existing code is to have these three functions in
a board-specific file.  That way, the routines can exclude any chip
selects that are not applicable to a specific hardware platform.  Also,
the chip-selects could be on a GPIO expander, in which case the
activate/deactivate routines might have to deal with the GPIO expander
device.

So, following the existing style, I think these routines should not be
part of the generic driver.  Otherwise, we could get into the situation
where many ifdefs would be needed in the generic driver to handle the
board-specific details.

 board/amcc/sequoia/sequoia.c |   20 ++++++++++++++++++++
 include/configs/sequoia.h    |    4 ++++
 2 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/board/amcc/sequoia/sequoia.c b/board/amcc/sequoia/sequoia.c
index d6668e2..cd08a77 100644
--- a/board/amcc/sequoia/sequoia.c
+++ b/board/amcc/sequoia/sequoia.c
@@ -26,6 +26,7 @@
 #include <libfdt.h>
 #include <fdt_support.h>
 #include <ppc4xx.h>
+#include <spi.h>
 #include <asm/gpio.h>
 #include <asm/processor.h>
 #include <asm/io.h>
@@ -513,3 +514,22 @@ int post_hotkeys_pressed(void)
 	return 0;	/* No hotkeys supported */
 }
 #endif /* CONFIG_POST */
+
+#if defined(CONFIG_PPC440EPX_SPI)
+int spi_cs_is_valid(unsigned int bus, unsigned int cs)
+{
+	return bus == 0 && cs >= 0 && cs < 64;
+}
+
+void spi_cs_activate(struct spi_slave *slave)
+{
+	/* Assumes chip-selects are active-low. */
+	gpio_write_bit(slave->cs, 0);
+}
+
+void spi_cs_deactivate(struct spi_slave *slave)
+{
+	gpio_write_bit(slave->cs, 1);
+}
+#endif /* CONFIG_PPC440EPX_SPI */
+
diff --git a/include/configs/sequoia.h b/include/configs/sequoia.h
index 9321bdc..551be98 100644
--- a/include/configs/sequoia.h
+++ b/include/configs/sequoia.h
@@ -236,6 +236,10 @@
 #define CONFIG_SYS_DTT_LOW_TEMP	-30
 #define CONFIG_SYS_DTT_HYSTERESIS	3
 
+/* Define these if you are using the SPI port. */
+#undef CONFIG_HARD_SPI
+#undef CONFIG_PPC440EPX_SPI
+
 /*
  * Default environment variables
  */
-- 
1.6.0.2



More information about the U-Boot mailing list