From 1e2deecd9d8c6fd690c54f24e902cc7d2bab0521 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Thu, 27 Mar 2014 21:26:46 -0700 Subject: [PATCH] spi: Eliminate the spi_cs_activate and spi_cs_deactivate functions. They were only used internal to the SPI drivers and, according to the comment next to their prototypes, were for when the SPI controller doesn't control the chip select line directly and needs some help. BUG=None TEST=Built for link, falco, and rambi. Built and booted on peach_pit and nyan. BRANCH=None Change-Id: If4622819a4437490797d305786e2436e2e70c42b Signed-off-by: Gabe Black Reviewed-on: https://chromium-review.googlesource.com/192048 Reviewed-by: Gabe Black Tested-by: Gabe Black Commit-Queue: Gabe Black --- src/include/spi-generic.h | 18 ------------------ src/soc/intel/baytrail/spi.c | 10 ---------- src/soc/nvidia/tegra124/spi.c | 24 +++++++----------------- src/soc/samsung/exynos5420/spi.c | 16 +++------------- src/southbridge/amd/agesa/hudson/spi.c | 8 -------- src/southbridge/amd/cimx/sb800/spi.c | 8 -------- src/southbridge/intel/bd82x6x/spi.c | 10 ---------- src/southbridge/intel/lynxpoint/spi.c | 10 ---------- 8 files changed, 10 insertions(+), 94 deletions(-) diff --git a/src/include/spi-generic.h b/src/include/spi-generic.h index a6eafec371..f6d4bed045 100644 --- a/src/include/spi-generic.h +++ b/src/include/spi-generic.h @@ -124,24 +124,6 @@ void spi_release_bus(struct spi_slave *slave); int spi_xfer(struct spi_slave *slave, const void *dout, unsigned int bitsout, void *din, unsigned int bitsin); -/*----------------------------------------------------------------------- - * Activate a SPI chipselect. - * This function is provided by the board code when using a driver - * that can't control its chipselects automatically (e.g. - * common/soft_spi.c). When called, it should activate the chip select - * to the device identified by "slave". - */ -void spi_cs_activate(struct spi_slave *slave); - -/*----------------------------------------------------------------------- - * Deactivate a SPI chipselect. - * This function is provided by the board code when using a driver - * that can't control its chipselects automatically (e.g. - * common/soft_spi.c). When called, it should deactivate the chip - * select to the device identified by "slave". - */ -void spi_cs_deactivate(struct spi_slave *slave); - /*----------------------------------------------------------------------- * Write 8 bits, then read 8 bits. * slave: The SPI slave we're communicating with diff --git a/src/soc/intel/baytrail/spi.c b/src/soc/intel/baytrail/spi.c index db1cee8145..61856006d5 100644 --- a/src/soc/intel/baytrail/spi.c +++ b/src/soc/intel/baytrail/spi.c @@ -327,16 +327,6 @@ void spi_release_bus(struct spi_slave *slave) /* Handled by ICH automatically. */ } -void spi_cs_activate(struct spi_slave *slave) -{ - /* Handled by ICH automatically. */ -} - -void spi_cs_deactivate(struct spi_slave *slave) -{ - /* Handled by ICH automatically. */ -} - typedef struct spi_transaction { const uint8_t *out; uint32_t bytesout; diff --git a/src/soc/nvidia/tegra124/spi.c b/src/soc/nvidia/tegra124/spi.c index 8071bd5e87..2b5d2d781b 100644 --- a/src/soc/nvidia/tegra124/spi.c +++ b/src/soc/nvidia/tegra124/spi.c @@ -212,11 +212,13 @@ static unsigned int tegra_spi_speed(unsigned int bus) return 50000000; } -void spi_cs_activate(struct spi_slave *slave) +int spi_claim_bus(struct spi_slave *slave) { struct tegra_spi_regs *regs = to_tegra_spi(slave->bus)->regs; u32 val; + tegra_spi_init(slave->bus); + val = read32(®s->command1); /* select appropriate chip-select line */ @@ -230,9 +232,10 @@ void spi_cs_activate(struct spi_slave *slave) val |= SPI_CMD1_CS_SW_VAL; write32(val, ®s->command1); + return 0; } -void spi_cs_deactivate(struct spi_slave *slave) +void spi_release_bus(struct spi_slave *slave) { struct tegra_spi_regs *regs = to_tegra_spi(slave->bus)->regs; u32 val; @@ -846,8 +849,7 @@ static size_t tegra_spi_cbfs_read(struct cbfs_media *media, void *dest, spi_read_cmd[2] = (offset >> 8) & 0xff; spi_read_cmd[3] = offset & 0xff; - /* assert /CS */ - spi_cs_activate(spi->slave); + spi_claim_bus(spi->slave); if (spi_xfer(spi->slave, spi_read_cmd, read_cmd_bytes * 8, NULL, 0) < 0) { @@ -870,7 +872,7 @@ static size_t tegra_spi_cbfs_read(struct cbfs_media *media, void *dest, tegra_spi_cbfs_read_exit: /* de-assert /CS */ - spi_cs_deactivate(spi->slave); + spi_release_bus(spi->slave); return (ret < 0) ? 0 : ret; } @@ -931,15 +933,3 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs) return &channel->slave; } - -int spi_claim_bus(struct spi_slave *slave) -{ - tegra_spi_init(slave->bus); - spi_cs_activate(slave); - return 0; -} - -void spi_release_bus(struct spi_slave *slave) -{ - spi_cs_deactivate(slave); -} diff --git a/src/soc/samsung/exynos5420/spi.c b/src/soc/samsung/exynos5420/spi.c index 31b10fb311..0bbd7779bc 100644 --- a/src/soc/samsung/exynos5420/spi.c +++ b/src/soc/samsung/exynos5420/spi.c @@ -133,22 +133,11 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs) return &eslave->slave; } -void spi_cs_activate(struct spi_slave *slave) +int spi_claim_bus(struct spi_slave *slave) { struct exynos_spi *regs = to_exynos_spi(slave)->regs; // TODO(hungte) Add some delay if too many transactions happen at once. clrbits_le32(®s->cs_reg, SPI_SLAVE_SIG_INACT); -} - -void spi_cs_deactivate(struct spi_slave *slave) -{ - struct exynos_spi *regs = to_exynos_spi(slave)->regs; - setbits_le32(®s->cs_reg, SPI_SLAVE_SIG_INACT); -} - -int spi_claim_bus(struct spi_slave *slave) -{ - spi_cs_activate(slave); return 0; } @@ -233,7 +222,8 @@ int spi_xfer(struct spi_slave *slave, const void *dout, unsigned int bitsout, void spi_release_bus(struct spi_slave *slave) { - spi_cs_deactivate(slave); + struct exynos_spi *regs = to_exynos_spi(slave)->regs; + setbits_le32(®s->cs_reg, SPI_SLAVE_SIG_INACT); } static int exynos_spi_read(struct spi_slave *slave, void *dest, uint32_t len, diff --git a/src/southbridge/amd/agesa/hudson/spi.c b/src/southbridge/amd/agesa/hudson/spi.c index bcdb517412..051c0bdeb1 100644 --- a/src/southbridge/amd/agesa/hudson/spi.c +++ b/src/southbridge/amd/agesa/hudson/spi.c @@ -124,14 +124,6 @@ void spi_release_bus(struct spi_slave *slave) #endif } -void spi_cs_activate(struct spi_slave *slave) -{ -} - -void spi_cs_deactivate(struct spi_slave *slave) -{ -} - struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs) { struct spi_slave *slave = malloc(sizeof(*slave)); diff --git a/src/southbridge/amd/cimx/sb800/spi.c b/src/southbridge/amd/cimx/sb800/spi.c index fb363847f7..c3c5ee16d2 100644 --- a/src/southbridge/amd/cimx/sb800/spi.c +++ b/src/southbridge/amd/cimx/sb800/spi.c @@ -156,14 +156,6 @@ void spi_release_bus(struct spi_slave *slave) #endif } -void spi_cs_activate(struct spi_slave *slave) -{ -} - -void spi_cs_deactivate(struct spi_slave *slave) -{ -} - struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs) { struct spi_slave *slave = malloc(sizeof(*slave)); diff --git a/src/southbridge/intel/bd82x6x/spi.c b/src/southbridge/intel/bd82x6x/spi.c index 9513e0dc84..bb72fcd03c 100644 --- a/src/southbridge/intel/bd82x6x/spi.c +++ b/src/southbridge/intel/bd82x6x/spi.c @@ -418,16 +418,6 @@ void spi_release_bus(struct spi_slave *slave) /* Handled by ICH automatically. */ } -void spi_cs_activate(struct spi_slave *slave) -{ - /* Handled by ICH automatically. */ -} - -void spi_cs_deactivate(struct spi_slave *slave) -{ - /* Handled by ICH automatically. */ -} - typedef struct spi_transaction { const uint8_t *out; uint32_t bytesout; diff --git a/src/southbridge/intel/lynxpoint/spi.c b/src/southbridge/intel/lynxpoint/spi.c index 2af8b0511c..5a5680f793 100644 --- a/src/southbridge/intel/lynxpoint/spi.c +++ b/src/southbridge/intel/lynxpoint/spi.c @@ -330,16 +330,6 @@ void spi_release_bus(struct spi_slave *slave) /* Handled by ICH automatically. */ } -void spi_cs_activate(struct spi_slave *slave) -{ - /* Handled by ICH automatically. */ -} - -void spi_cs_deactivate(struct spi_slave *slave) -{ - /* Handled by ICH automatically. */ -} - typedef struct spi_transaction { const uint8_t *out; uint32_t bytesout;