summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nuttx/configs/mcu123-lpc214x/src/up_spi.c17
-rw-r--r--nuttx/configs/olimex-strp711/src/up_spi.c19
-rw-r--r--nuttx/drivers/mmcsd/mmcsd_spi.c6
-rw-r--r--nuttx/include/nuttx/spi.h20
4 files changed, 37 insertions, 25 deletions
diff --git a/nuttx/configs/mcu123-lpc214x/src/up_spi.c b/nuttx/configs/mcu123-lpc214x/src/up_spi.c
index f517939c4..210f3d736 100644
--- a/nuttx/configs/mcu123-lpc214x/src/up_spi.c
+++ b/nuttx/configs/mcu123-lpc214x/src/up_spi.c
@@ -4,8 +4,6 @@
* Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
- * This logic emulates the Prolific PL2303 serial/USB converter
- *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -90,7 +88,7 @@
static void spi_select(FAR struct spi_dev_s *dev, enum spidev_e devid, boolean selected);
static uint32 spi_setfrequency(FAR struct spi_dev_s *dev, uint32 frequency);
-static ubyte spi_status(FAR struct spi_dev_s *dev);
+static ubyte spi_status(FAR struct spi_dev_s *dev, enum spidev_e devid);
static ubyte spi_sndbyte(FAR struct spi_dev_s *dev, ubyte ch);
static void spi_sndblock(FAR struct spi_dev_s *dev, FAR const ubyte *buffer, size_t buflen);
static void spi_recvblock(FAR struct spi_dev_s *dev, FAR ubyte *buffer, size_t buflen);
@@ -183,7 +181,8 @@ static void spi_select(FAR struct spi_dev_s *dev, enum spidev_e devid, boolean s
* Set the SPI frequency.
*
* Input Parameters:
- * frequency: The SPI frequency requested
+ * dev - Device-specific state data
+ * frequency - The SPI frequency requested
*
* Returned Value:
* Returns the actual frequency selected
@@ -215,14 +214,15 @@ static uint32 spi_setfrequency(FAR struct spi_dev_s *dev, uint32 frequency)
* Get SPI/MMC status
*
* Input Parameters:
- * None
+ * dev - Device-specific state data
+ * devid - Identifies the device to report status on
*
* Returned Value:
* Returns a bitset of status values (see SPI_STATUS_* defines
*
****************************************************************************/
-static ubyte spi_status(FAR struct spi_dev_s *dev)
+static ubyte spi_status(FAR struct spi_dev_s *dev, enum spidev_e devid)
{
/* I don't think there is anyway to determine these things on the mcu123.com
* board.
@@ -238,7 +238,8 @@ static ubyte spi_status(FAR struct spi_dev_s *dev)
* Send one byte on SPI
*
* Input Parameters:
- * ch - the byte to send
+ * dev - Device-specific state data
+ * ch - The byte to send
*
* Returned Value:
* response
@@ -271,6 +272,7 @@ static ubyte spi_sndbyte(FAR struct spi_dev_s *dev, ubyte ch)
* Send a block of data on SPI
*
* Input Parameters:
+ * dev - Device-specific state data
* buffer - A pointer to the buffer of data to be sent
* buflen - the length of data to send from the buffer
*
@@ -335,6 +337,7 @@ static void spi_sndblock(FAR struct spi_dev_s *dev, FAR const ubyte *buffer, siz
* Revice a block of data from SPI
*
* Input Parameters:
+ * dev - Device-specific state data
* buffer - A pointer to the buffer in which to recieve data
* buflen - the length of data that can be received in the buffer
*
diff --git a/nuttx/configs/olimex-strp711/src/up_spi.c b/nuttx/configs/olimex-strp711/src/up_spi.c
index b30b426fd..c7cfa0a27 100644
--- a/nuttx/configs/olimex-strp711/src/up_spi.c
+++ b/nuttx/configs/olimex-strp711/src/up_spi.c
@@ -1,11 +1,9 @@
/****************************************************************************
* config/olimex-strp711/src/up_spi.c
*
- * Copyright (C) 2008 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
- * This logic emulates the Prolific PL2303 serial/USB converter
- *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
@@ -267,7 +265,7 @@ static inline void spi_putreg(FAR struct str71x_spidev_s *priv, ubyte offset,
static void spi_select(FAR struct spi_dev_s *dev, enum spidev_e devid, boolean selected);
static uint32 spi_setfrequency(FAR struct spi_dev_s *dev, uint32 frequency);
-static ubyte spi_status(FAR struct spi_dev_s *dev);
+static ubyte spi_status(FAR struct spi_dev_s *dev, enum spidev_e devid);
static ubyte spi_sndbyte(FAR struct spi_dev_s *dev, ubyte ch);
static void spi_sndblock(FAR struct spi_dev_s *dev, FAR const ubyte *buffer, size_t buflen);
static void spi_recvblock(FAR struct spi_dev_s *dev, FAR ubyte *buffer, size_t buflen);
@@ -431,7 +429,8 @@ static void spi_select(FAR struct spi_dev_s *dev, enum spidev_e devid, boolean s
* Set the SPI frequency.
*
* Input Parameters:
- * frequency: The SPI frequency requested
+ * dev - Device-specific state data
+ * frequency - The SPI frequency requested
*
* Returned Value:
* Returns the actual frequency selected
@@ -492,14 +491,15 @@ static uint32 spi_setfrequency(FAR struct spi_dev_s *dev, uint32 frequency)
* Get SPI/MMC status
*
* Input Parameters:
- * None
+ * dev - Device-specific state data
+ * devid - Identifies the device to report status on
*
* Returned Value:
* Returns a bitset of status values (see SPI_STATUS_* defines
*
****************************************************************************/
-static ubyte spi_status(FAR struct spi_dev_s *dev)
+static ubyte spi_status(FAR struct spi_dev_s *dev, enum spidev_e devid)
{
ubyte ret = 0;
uint16 reg16 = getreg16(STR71X_GPIO1_PD);
@@ -524,7 +524,8 @@ static ubyte spi_status(FAR struct spi_dev_s *dev)
* Send one byte on SPI
*
* Input Parameters:
- * ch - the byte to send
+ * dev - Device-specific state data
+ * ch - The byte to send
*
* Returned Value:
* response
@@ -567,6 +568,7 @@ static ubyte spi_sndbyte(FAR struct spi_dev_s *dev, ubyte ch)
* Send a block of data on SPI
*
* Input Parameters:
+ * dev - Device-specific state data
* buffer - A pointer to the buffer of data to be sent
* buflen - the length of data to send from the buffer
*
@@ -634,6 +636,7 @@ static void spi_sndblock(FAR struct spi_dev_s *dev, FAR const ubyte *buffer, siz
* Revice a block of data from SPI
*
* Input Parameters:
+ * dev - Device-specific state data
* buffer - A pointer to the buffer in which to recieve data
* buflen - the length of data that can be received in the buffer
*
diff --git a/nuttx/drivers/mmcsd/mmcsd_spi.c b/nuttx/drivers/mmcsd/mmcsd_spi.c
index fea4548ca..b081401cb 100644
--- a/nuttx/drivers/mmcsd/mmcsd_spi.c
+++ b/nuttx/drivers/mmcsd/mmcsd_spi.c
@@ -576,7 +576,7 @@ static void mmcsd_checkwrprotect(FAR struct mmcsd_slot_s *slot, ubyte *csd)
* reports temporary write protect.
*/
- if ((SPI_STATUS(spi) & SPI_STATUS_WRPROTECTED) != 0 ||
+ if ((SPI_STATUS(spi, SPIDEV_MMCSD) & SPI_STATUS_WRPROTECTED) != 0 ||
MMCSD_CSD_PERMWRITEPROTECT(csd) ||
MMCSD_CSD_TMPWRITEPROTECT(csd))
{
@@ -1116,7 +1116,7 @@ static int mmcsd_mediainitialize(FAR struct mmcsd_slot_s *slot)
* interface
*/
- if ((SPI_STATUS(spi) & SPI_STATUS_PRESENT) == 0)
+ if ((SPI_STATUS(spi, SPIDEV_MMCSD) & SPI_STATUS_PRESENT) == 0)
{
fdbg("No card present\n");
slot->state |= MMCSD_SLOTSTATUS_NODISK;
@@ -1296,7 +1296,7 @@ static void mmcsd_mediachanged(void *arg)
/* Check if media was removed or inserted */
slot->state &= ~(MMCSD_SLOTSTATUS_NODISK|MMCSD_SLOTSTATUS_NOTREADY|MMCSD_SLOTSTATUS_MEDIACHGD);
- if ((SPI_STATUS(spi) & SPI_STATUS_PRESENT) == 0)
+ if ((SPI_STATUS(spi, SPIDEV_MMCSD) & SPI_STATUS_PRESENT) == 0)
{
/* Media is not present */
diff --git a/nuttx/include/nuttx/spi.h b/nuttx/include/nuttx/spi.h
index f3dfa82a7..e07ca6123 100644
--- a/nuttx/include/nuttx/spi.h
+++ b/nuttx/include/nuttx/spi.h
@@ -77,7 +77,8 @@
* Set the SPI frequency. Required.
*
* Input Parameters:
- * frequency: The SPI frequency requested
+ * dev - Device-specific state data
+ * frequency - The SPI frequency requested
*
* Returned Value:
* Returns the actual frequency selected
@@ -93,15 +94,16 @@
* Get SPI/MMC status. Optional.
*
* Input Parameters:
- * None
+ * dev - Device-specific state data
+ * devid - Identifies the device to report status on
*
* Returned Value:
* Returns a bitset of status values (see SPI_STATUS_* defines
*
****************************************************************************/
-#define SPI_STATUS(d) \
- ((d)->ops->status ? (d)->ops->status(d) : SPI_STATUS_PRESENT)
+#define SPI_STATUS(d,id) \
+ ((d)->ops->status ? (d)->ops->status(d, id) : SPI_STATUS_PRESENT)
/* SPI status bits -- Some dedicated for SPI MMC/SD support and may have no
* relationship to SPI other than needed by the SPI MMC/SD interface
@@ -117,7 +119,8 @@
* Send one byte on SPI. Required.
*
* Input Parameters:
- * ch - the byte to send
+ * dev - Device-specific state data
+ * ch - The byte to send
*
* Returned Value:
* None
@@ -133,6 +136,7 @@
* Send a block of data on SPI. Required.
*
* Input Parameters:
+ * dev - Device-specific state data
* buffer - A pointer to the buffer of data to be sent
* buflen - the length of data to send from the buffer
*
@@ -150,6 +154,7 @@
* Revice a block of data from SPI. Required.
*
* Input Parameters:
+ * dev - Device-specific state data
* buffer - A pointer to the buffer in which to recieve data
* buflen - the length of data that can be received in the buffer
*
@@ -169,8 +174,9 @@
* Optional
*
* Input Parameters:
+ * dev - Device-specific state data
* callback - The funtion to call on the media change
- * arg - A caller provided value to return with the callback
+ * arg - A caller provided value to return with the callback
*
* Returned Value:
* 0 on success; negated errno on failure.
@@ -206,7 +212,7 @@ struct spi_ops_s
{
void (*select)(FAR struct spi_dev_s *dev, enum spidev_e devid, boolean selected);
uint32 (*setfrequency)(FAR struct spi_dev_s *dev, uint32 frequency);
- ubyte (*status)(FAR struct spi_dev_s *dev);
+ ubyte (*status)(FAR struct spi_dev_s *dev, enum spidev_e devid);
ubyte (*sndbyte)(FAR struct spi_dev_s *dev, ubyte ch);
void (*sndblock)(FAR struct spi_dev_s *dev, FAR const ubyte *buffer, size_t buflen);
void (*recvblock)(FAR struct spi_dev_s *dev, FAR ubyte *buffer, size_t buflen);