[coreboot-gerrit] New patch to review for coreboot: f7973ad armv7/exynos5420: Provide configuration for SPI0~SPI2.

Gabe Black (gabeblack@chromium.org) gerrit at coreboot.org
Tue Jul 9 05:29:43 CEST 2013


Gabe Black (gabeblack at chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3711

-gerrit

commit f7973ad25de023b68af5bad8c948a327712ea39b
Author: Hung-Te Lin <hungte at chromium.org>
Date:   Wed Jun 26 20:17:42 2013 +0800

    armv7/exynos5420: Provide configuration for SPI0~SPI2.
    
    Fill the SPI device parameters for spi_setup_slave on Exynos 5420.
    
    Change-Id: I10b4b9e6cfe46d7bfa34e80e3727c7e7da99ba9d
    Signed-off-by: Hung-Te Lin <hungte at chromium.org>
    Signed-off-by: Gabe Black <gabeblack at chromium.org>
---
 src/cpu/samsung/exynos5420/spi.c | 33 +++++++++++++++++++++++++++++----
 1 file changed, 29 insertions(+), 4 deletions(-)

diff --git a/src/cpu/samsung/exynos5420/spi.c b/src/cpu/samsung/exynos5420/spi.c
index e3029b8..82c3765 100644
--- a/src/cpu/samsung/exynos5420/spi.c
+++ b/src/cpu/samsung/exynos5420/spi.c
@@ -41,6 +41,32 @@ struct exynos_spi_slave {
 	uint8_t frame_header;  /* header byte to detect in half-duplex mode. */
 };
 
+/* TODO(hungte) Move the SPI param list to per-board configuration, probably
+ * Kconfig or mainboard.c */
+static struct exynos_spi_slave exynos_spi_slaves[3] = {
+	// SPI 0
+	{
+		.slave = { .bus = 0, },
+		.regs = samsung_get_base_spi0(),
+	},
+	// SPI 1
+	{
+		.slave = { .bus = 1, .rw = SPI_READ_FLAG, },
+		.regs = samsung_get_base_spi1(),
+		.fifo_size = 64,
+		.half_duplex = 0,
+	},
+	// SPI 2
+	{
+		.slave = { .bus = 2,
+			   .rw = SPI_READ_FLAG | SPI_WRITE_FLAG, },
+		.regs = samsung_get_base_spi2(),
+		.fifo_size = 64,
+		.half_duplex = 1,
+		.frame_header = 0xec,
+	},
+};
+
 static inline struct exynos_spi_slave *to_exynos_spi(struct spi_slave *slave)
 {
 	return container_of(slave, struct exynos_spi_slave, slave);
@@ -54,14 +80,13 @@ void spi_init(void)
 struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
 				  unsigned int max_hz, unsigned int mode)
 {
-	// TODO(hungte) Provide Exynos SPI device setup.
-	return NULL;
+	ASSERT(bus >= 0 && bus < 3);
+	return &(exynos_spi_slaves[bus].slave);
 }
 
 int spi_cs_is_valid(unsigned int bus, unsigned int cs)
 {
-	// TODO(hungte) Detect and check if BUS/CS is valid.
-	return 0;
+	return bus > 0 && bus < 3;
 }
 
 void spi_cs_activate(struct spi_slave *slave)



More information about the coreboot-gerrit mailing list