You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by da...@apache.org on 2020/05/28 12:14:52 UTC
[incubator-nuttx] 03/04: arch/arm/src/samv7/sam_spi_slave.c: Change
for modified spi slave interface
This is an automated email from the ASF dual-hosted git repository.
davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit b2a9a8cf814eae801bd876fdfd01b81ab6d6e29b
Author: Jukka Laitinen <ju...@intel.com>
AuthorDate: Tue May 26 10:42:13 2020 +0300
arch/arm/src/samv7/sam_spi_slave.c: Change for modified spi slave interface
Signed-off-by: Jukka Laitinen <ju...@intel.com>
---
arch/arm/src/samv7/sam_spi_slave.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/arch/arm/src/samv7/sam_spi_slave.c b/arch/arm/src/samv7/sam_spi_slave.c
index 9845ce8..9197756 100644
--- a/arch/arm/src/samv7/sam_spi_slave.c
+++ b/arch/arm/src/samv7/sam_spi_slave.c
@@ -149,7 +149,8 @@ static void spi_bind(struct spi_sctrlr_s *sctrlr,
struct spi_sdev_s *sdev, enum spi_smode_e mode,
int nbits);
static void spi_unbind(struct spi_sctrlr_s *sctrlr);
-static int spi_enqueue(struct spi_sctrlr_s *sctrlr, uint16_t data);
+static int spi_enqueue(struct spi_sctrlr_s *sctrlr,
+ FAR const void *data, size_t nwords);
static bool spi_qfull(struct spi_sctrlr_s *sctrlr);
static void spi_qflush(struct spi_sctrlr_s *sctrlr);
@@ -485,7 +486,8 @@ static int spi_interrupt(int irq, void *context, FAR void *arg)
/* Report the receipt of data to the SPI device driver */
- SPI_SDEV_RECEIVE(priv->sdev, data);
+ SPI_SDEV_RECEIVE(priv->sdev, (const uint16_t *)&data,
+ sizeof(data));
}
/* When a transfer starts, the data shifted out is the data present
@@ -615,7 +617,7 @@ static uint16_t spi_dequeue(struct sam_spidev_s *priv)
ret = priv->outval;
- /* Disable further TXDR/OVRE interrupts until spi_enqueue() is called. */
+ /* Disable further TXDR/OVRE interrupts until spi_enqueue() is called */
regval = (SPI_INT_TDRE | SPI_INT_UNDES);
spi_putreg(priv, regval, SAM_SPI_IDR_OFFSET);
@@ -728,7 +730,9 @@ static void spi_setbits(struct sam_spidev_s *priv, int nbits)
spiinfo("csr0=%08x\n", regval);
- /* Save the selection so the subsequence re-configurations will be faster */
+ /* Save the selection so the subsequence re-configurations will be
+ * faster
+ */
priv->nbits = nbits;
}
@@ -763,6 +767,7 @@ static void spi_bind(struct spi_sctrlr_s *sctrlr,
struct sam_spidev_s *priv = (struct sam_spidev_s *)sctrlr;
uint32_t regval;
int ret;
+ FAR const void *data;
spiinfo("sdev=%p mode=%d nbits=%d\n", sdv, mode, nbits);
@@ -812,7 +817,8 @@ static void spi_bind(struct spi_sctrlr_s *sctrlr,
* be shifted out the SPI clock is detected.
*/
- priv->outval = SPI_SDEV_GETDATA(sdev);
+ SPI_SDEV_GETDATA(sdev, &data);
+ priv->outval = *(const uint16_t *)data;
spi_putreg(priv, priv->outval, SAM_SPI_TDR_OFFSET);
/* Setup to begin normal SPI operation */
@@ -924,7 +930,8 @@ static void spi_unbind(struct spi_sctrlr_s *sctrlr)
*
****************************************************************************/
-static int spi_enqueue(struct spi_sctrlr_s *sctrlr, uint16_t data)
+static int spi_enqueue(struct spi_sctrlr_s *sctrlr, FAR const void *data,
+ size_t nwords)
{
struct sam_spidev_s *priv = (struct sam_spidev_s *)sctrlr;
irqstate_t flags;
@@ -932,7 +939,7 @@ static int spi_enqueue(struct spi_sctrlr_s *sctrlr, uint16_t data)
int next;
int ret;
- spiinfo("data=%04x\n", data);
+ spiinfo("data=%04x\n", *(const uint16_t *)data);
DEBUGASSERT(priv != NULL && priv->sdev != NULL);
/* Get exclusive access to the SPI device */
@@ -966,7 +973,7 @@ static int spi_enqueue(struct spi_sctrlr_s *sctrlr, uint16_t data)
* be overwritten.
*/
- priv->outq[priv->head] = data;
+ priv->outq[priv->head] = *(const uint16_t *)data;
priv->head = next;
ret = OK;