spi: get rid of the separate calls to spi_set_cs_level()

tags/0.1.0
S.J.R. van Schaik 7 years ago
parent 60d316711f
commit 154c33950a
  1. 1
      include/spi.h
  2. 8
      source/core/spi.c
  3. 6
      source/drivers/spi_flash.c
  4. 15
      source/drivers/stm32f0_spi.c

@ -15,6 +15,5 @@ struct spi_dev {
struct spi_dev *spi_probe(void);
void spi_release(struct spi_dev *dev);
int spi_set_cs_level(struct spi_dev *dev, int level);
int spi_tx_rx(struct spi_dev *dev, void *rx_buf, size_t rx_len,
const void *tx_buf, size_t tx_len);

@ -3,14 +3,6 @@
#include <spi.h>
int spi_set_cs_level(struct spi_dev *dev, int level)
{
if (!dev)
return -1;
return dev->ops->set_cs_level(dev, level);
}
int spi_tx_rx(struct spi_dev *dev, void *rx_buf, size_t rx_len,
const void *tx_buf, size_t tx_len)
{

@ -80,9 +80,7 @@ static size_t spi_flash_read(struct flash_dev *dev, uint32_t addr, void *data,
spi_flash_addr(cmd, addr);
spi_set_cs_level(spi_dev, 0);
spi_tx_rx(spi_dev, data, len, cmd, sizeof cmd);
spi_set_cs_level(spi_dev, 1);
return len;
}
@ -99,9 +97,7 @@ static size_t spi_flash_write(struct flash_dev *dev, uint32_t addr,
spi_flash_addr(cmd, addr);
memcpy(cmd + 4, data, len);
spi_set_cs_level(spi_dev, 0);
spi_tx_rx(spi_dev, NULL, 0, cmd, sizeof cmd);
spi_set_cs_level(spi_dev, 1);
spi_flash_write_disable(dev);
@ -118,9 +114,7 @@ static int spi_flash_erase(struct flash_dev *dev, uint32_t addr)
cmd[0] = SPI_FLASH_ERASE_4K;
spi_flash_addr(cmd, addr << dev->log2_block_size);
spi_set_cs_level(spi_dev, 0);
spi_tx_rx(spi_dev, NULL, 0, cmd, sizeof cmd);
spi_set_cs_level(spi_dev, 1);
spi_flash_write_disable(dev);

@ -9,12 +9,10 @@
#include <spi.h>
static int stm32f0_spi_set_cs_level(struct spi_dev *dev, int level);
static int stm32f0_spi_tx_rx(struct spi_dev *dev, void *rx_buf, size_t rx_len,
const void *tx_buf, size_t tx_len);
static struct spi_ops stm32f0_spi_ops = {
.set_cs_level = stm32f0_spi_set_cs_level,
.tx_rx = stm32f0_spi_tx_rx,
};
@ -67,19 +65,6 @@ void spi_release(struct spi_dev *dev)
free(dev);
}
static int stm32f0_spi_set_cs_level(struct spi_dev *dev, int level)
{
(void)dev;
if (level) {
gpio_set(GPIOA, GPIO4);
} else {
gpio_clear(GPIOA, GPIO4);
}
return 0;
}
static int stm32f0_spi_tx_rx(struct spi_dev *dev, void *rx_buf, size_t rx_len,
const void *tx_buf, size_t tx_len)
{

Loading…
Cancel
Save