aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/avr/gpio.c4
-rw-r--r--src/avr/gpio.h1
-rw-r--r--src/generic/gpio.h1
-rw-r--r--src/linux/gpio.h1
-rw-r--r--src/linux/spidev.c5
-rw-r--r--src/sam3x8e/gpio.h1
-rw-r--r--src/sam3x8e/spi.c5
-rw-r--r--src/simulator/gpio.c4
-rw-r--r--src/spicmds.c2
-rw-r--r--src/stm32f1/gpio.c5
-rw-r--r--src/stm32f1/gpio.h1
11 files changed, 30 insertions, 0 deletions
diff --git a/src/avr/gpio.c b/src/avr/gpio.c
index a6b7aa41..fdb18562 100644
--- a/src/avr/gpio.c
+++ b/src/avr/gpio.c
@@ -438,6 +438,10 @@ spi_setup(uint32_t bus, uint8_t mode, uint32_t rate)
return config;
}
+void spi_prepare(struct spi_config config)
+{
+}
+
void
spi_transfer(struct spi_config config, uint8_t receive_data
, uint8_t len, uint8_t *data)
diff --git a/src/avr/gpio.h b/src/avr/gpio.h
index 515e4c9a..2f769cb9 100644
--- a/src/avr/gpio.h
+++ b/src/avr/gpio.h
@@ -39,6 +39,7 @@ struct spi_config {
uint8_t spcr, spsr;
};
struct spi_config spi_setup(uint32_t bus, uint8_t mode, uint32_t rate);
+void spi_prepare(struct spi_config config);
void spi_transfer(struct spi_config config, uint8_t receive_data
, uint8_t len, uint8_t *data);
diff --git a/src/generic/gpio.h b/src/generic/gpio.h
index e6ef1280..11f2f394 100644
--- a/src/generic/gpio.h
+++ b/src/generic/gpio.h
@@ -35,6 +35,7 @@ struct spi_config {
uint32_t cfg;
};
struct spi_config spi_setup(uint32_t bus, uint8_t mode, uint32_t rate);
+void spi_prepare(struct spi_config config);
void spi_transfer(struct spi_config config, uint8_t receive_data
, uint8_t len, uint8_t *data);
diff --git a/src/linux/gpio.h b/src/linux/gpio.h
index b18e5d3d..8d878597 100644
--- a/src/linux/gpio.h
+++ b/src/linux/gpio.h
@@ -23,6 +23,7 @@ struct spi_config {
int fd;
};
struct spi_config spi_setup(uint32_t bus, uint8_t mode, uint32_t rate);
+void spi_prepare(struct spi_config config);
void spi_transfer(struct spi_config config, uint8_t receive_data
, uint8_t len, uint8_t *data);
diff --git a/src/linux/spidev.c b/src/linux/spidev.c
index cb511205..2d6f55ac 100644
--- a/src/linux/spidev.c
+++ b/src/linux/spidev.c
@@ -57,6 +57,11 @@ spi_setup(uint32_t bus, uint8_t mode, uint32_t rate)
}
void
+spi_prepare(struct spi_config config)
+{
+}
+
+void
spi_transfer(struct spi_config config, uint8_t receive_data
, uint8_t len, uint8_t *data)
{
diff --git a/src/sam3x8e/gpio.h b/src/sam3x8e/gpio.h
index e7016665..d40eec21 100644
--- a/src/sam3x8e/gpio.h
+++ b/src/sam3x8e/gpio.h
@@ -33,6 +33,7 @@ struct spi_config {
uint32_t cfg;
};
struct spi_config spi_setup(uint32_t bus, uint8_t mode, uint32_t rate);
+void spi_prepare(struct spi_config config);
void spi_transfer(struct spi_config config, uint8_t receive_data
, uint8_t len, uint8_t *data);
diff --git a/src/sam3x8e/spi.c b/src/sam3x8e/spi.c
index 3bbf6548..c1137318 100644
--- a/src/sam3x8e/spi.c
+++ b/src/sam3x8e/spi.c
@@ -96,6 +96,11 @@ spi_setup(uint32_t bus, uint8_t mode, uint32_t rate)
}
void
+spi_prepare(struct spi_config config)
+{
+}
+
+void
spi_transfer(struct spi_config config, uint8_t receive_data
, uint8_t len, uint8_t *data)
{
diff --git a/src/simulator/gpio.c b/src/simulator/gpio.c
index 327c05ce..095fc384 100644
--- a/src/simulator/gpio.c
+++ b/src/simulator/gpio.c
@@ -44,6 +44,10 @@ spi_setup(uint32_t bus, uint8_t mode, uint32_t rate)
return (struct spi_config){ };
}
void
+spi_prepare(struct spi_config config)
+{
+}
+void
spi_transfer(struct spi_config config, uint8_t receive_data
, uint8_t len, uint8_t *data)
{
diff --git a/src/spicmds.c b/src/spicmds.c
index f87972a0..3c9c2928 100644
--- a/src/spicmds.c
+++ b/src/spicmds.c
@@ -58,10 +58,12 @@ spidev_transfer(struct spidev_s *spi, uint8_t receive_data
, uint8_t data_len, uint8_t *data)
{
if (spi->flags & SF_HAVE_PIN) {
+ spi_prepare(spi->spi_config);
gpio_out_write(spi->pin, 0);
spi_transfer(spi->spi_config, receive_data, data_len, data);
gpio_out_write(spi->pin, 1);
} else {
+ spi_prepare(spi->spi_config);
spi_transfer(spi->spi_config, receive_data, data_len, data);
}
}
diff --git a/src/stm32f1/gpio.c b/src/stm32f1/gpio.c
index ed507496..832febd8 100644
--- a/src/stm32f1/gpio.c
+++ b/src/stm32f1/gpio.c
@@ -301,6 +301,11 @@ spi_setup(uint32_t bus, uint8_t mode, uint32_t rate)
}
void
+spi_prepare(struct spi_config config)
+{
+}
+
+void
spi_transfer(struct spi_config config, uint8_t receive_data,
uint8_t len, uint8_t *data)
{
diff --git a/src/stm32f1/gpio.h b/src/stm32f1/gpio.h
index 8c2a00ca..c5f0775e 100644
--- a/src/stm32f1/gpio.h
+++ b/src/stm32f1/gpio.h
@@ -34,6 +34,7 @@ struct spi_config {
SPI_TypeDef config;
};
struct spi_config spi_setup(uint32_t bus, uint8_t mode, uint32_t rate);
+void spi_prepare(struct spi_config config);
void spi_transfer(struct spi_config config, uint8_t receive_data,
uint8_t len, uint8_t *data);