Add enum argument to SPI status method

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1667 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo
2009-03-29 18:53:20 +00:00
parent 04f44cd858
commit f7f7c531e0
4 changed files with 37 additions and 25 deletions
+10 -7
View File
@@ -4,8 +4,6 @@
* Copyright (C) 2008-2009 Gregory Nutt. All rights reserved. * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr> * 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 * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
* are met: * are met:
@@ -90,7 +88,7 @@
static void spi_select(FAR struct spi_dev_s *dev, enum spidev_e devid, boolean selected); 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 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 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_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); 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. * Set the SPI frequency.
* *
* Input Parameters: * Input Parameters:
* frequency: The SPI frequency requested * dev - Device-specific state data
* frequency - The SPI frequency requested
* *
* Returned Value: * Returned Value:
* Returns the actual frequency selected * 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 * Get SPI/MMC status
* *
* Input Parameters: * Input Parameters:
* None * dev - Device-specific state data
* devid - Identifies the device to report status on
* *
* Returned Value: * Returned Value:
* Returns a bitset of status values (see SPI_STATUS_* defines * 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 /* I don't think there is anyway to determine these things on the mcu123.com
* board. * board.
@@ -238,7 +238,8 @@ static ubyte spi_status(FAR struct spi_dev_s *dev)
* Send one byte on SPI * Send one byte on SPI
* *
* Input Parameters: * Input Parameters:
* ch - the byte to send * dev - Device-specific state data
* ch - The byte to send
* *
* Returned Value: * Returned Value:
* response * response
@@ -271,6 +272,7 @@ static ubyte spi_sndbyte(FAR struct spi_dev_s *dev, ubyte ch)
* Send a block of data on SPI * Send a block of data on SPI
* *
* Input Parameters: * Input Parameters:
* dev - Device-specific state data
* buffer - A pointer to the buffer of data to be sent * buffer - A pointer to the buffer of data to be sent
* buflen - the length of data to send from the buffer * 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 * Revice a block of data from SPI
* *
* Input Parameters: * Input Parameters:
* dev - Device-specific state data
* buffer - A pointer to the buffer in which to recieve data * buffer - A pointer to the buffer in which to recieve data
* buflen - the length of data that can be received in the buffer * buflen - the length of data that can be received in the buffer
* *
+11 -8
View File
@@ -1,11 +1,9 @@
/**************************************************************************** /****************************************************************************
* config/olimex-strp711/src/up_spi.c * 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> * 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 * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
* are met: * 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 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 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 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_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); 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. * Set the SPI frequency.
* *
* Input Parameters: * Input Parameters:
* frequency: The SPI frequency requested * dev - Device-specific state data
* frequency - The SPI frequency requested
* *
* Returned Value: * Returned Value:
* Returns the actual frequency selected * 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 * Get SPI/MMC status
* *
* Input Parameters: * Input Parameters:
* None * dev - Device-specific state data
* devid - Identifies the device to report status on
* *
* Returned Value: * Returned Value:
* Returns a bitset of status values (see SPI_STATUS_* defines * 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; ubyte ret = 0;
uint16 reg16 = getreg16(STR71X_GPIO1_PD); 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 * Send one byte on SPI
* *
* Input Parameters: * Input Parameters:
* ch - the byte to send * dev - Device-specific state data
* ch - The byte to send
* *
* Returned Value: * Returned Value:
* response * response
@@ -567,6 +568,7 @@ static ubyte spi_sndbyte(FAR struct spi_dev_s *dev, ubyte ch)
* Send a block of data on SPI * Send a block of data on SPI
* *
* Input Parameters: * Input Parameters:
* dev - Device-specific state data
* buffer - A pointer to the buffer of data to be sent * buffer - A pointer to the buffer of data to be sent
* buflen - the length of data to send from the buffer * 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 * Revice a block of data from SPI
* *
* Input Parameters: * Input Parameters:
* dev - Device-specific state data
* buffer - A pointer to the buffer in which to recieve data * buffer - A pointer to the buffer in which to recieve data
* buflen - the length of data that can be received in the buffer * buflen - the length of data that can be received in the buffer
* *
+3 -3
View File
@@ -576,7 +576,7 @@ static void mmcsd_checkwrprotect(FAR struct mmcsd_slot_s *slot, ubyte *csd)
* reports temporary write protect. * 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_PERMWRITEPROTECT(csd) ||
MMCSD_CSD_TMPWRITEPROTECT(csd)) MMCSD_CSD_TMPWRITEPROTECT(csd))
{ {
@@ -1116,7 +1116,7 @@ static int mmcsd_mediainitialize(FAR struct mmcsd_slot_s *slot)
* interface * interface
*/ */
if ((SPI_STATUS(spi) & SPI_STATUS_PRESENT) == 0) if ((SPI_STATUS(spi, SPIDEV_MMCSD) & SPI_STATUS_PRESENT) == 0)
{ {
fdbg("No card present\n"); fdbg("No card present\n");
slot->state |= MMCSD_SLOTSTATUS_NODISK; slot->state |= MMCSD_SLOTSTATUS_NODISK;
@@ -1296,7 +1296,7 @@ static void mmcsd_mediachanged(void *arg)
/* Check if media was removed or inserted */ /* Check if media was removed or inserted */
slot->state &= ~(MMCSD_SLOTSTATUS_NODISK|MMCSD_SLOTSTATUS_NOTREADY|MMCSD_SLOTSTATUS_MEDIACHGD); 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 */ /* Media is not present */
+13 -7
View File
@@ -77,7 +77,8 @@
* Set the SPI frequency. Required. * Set the SPI frequency. Required.
* *
* Input Parameters: * Input Parameters:
* frequency: The SPI frequency requested * dev - Device-specific state data
* frequency - The SPI frequency requested
* *
* Returned Value: * Returned Value:
* Returns the actual frequency selected * Returns the actual frequency selected
@@ -93,15 +94,16 @@
* Get SPI/MMC status. Optional. * Get SPI/MMC status. Optional.
* *
* Input Parameters: * Input Parameters:
* None * dev - Device-specific state data
* devid - Identifies the device to report status on
* *
* Returned Value: * Returned Value:
* Returns a bitset of status values (see SPI_STATUS_* defines * Returns a bitset of status values (see SPI_STATUS_* defines
* *
****************************************************************************/ ****************************************************************************/
#define SPI_STATUS(d) \ #define SPI_STATUS(d,id) \
((d)->ops->status ? (d)->ops->status(d) : SPI_STATUS_PRESENT) ((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 /* 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 * relationship to SPI other than needed by the SPI MMC/SD interface
@@ -117,7 +119,8 @@
* Send one byte on SPI. Required. * Send one byte on SPI. Required.
* *
* Input Parameters: * Input Parameters:
* ch - the byte to send * dev - Device-specific state data
* ch - The byte to send
* *
* Returned Value: * Returned Value:
* None * None
@@ -133,6 +136,7 @@
* Send a block of data on SPI. Required. * Send a block of data on SPI. Required.
* *
* Input Parameters: * Input Parameters:
* dev - Device-specific state data
* buffer - A pointer to the buffer of data to be sent * buffer - A pointer to the buffer of data to be sent
* buflen - the length of data to send from the buffer * buflen - the length of data to send from the buffer
* *
@@ -150,6 +154,7 @@
* Revice a block of data from SPI. Required. * Revice a block of data from SPI. Required.
* *
* Input Parameters: * Input Parameters:
* dev - Device-specific state data
* buffer - A pointer to the buffer in which to recieve data * buffer - A pointer to the buffer in which to recieve data
* buflen - the length of data that can be received in the buffer * buflen - the length of data that can be received in the buffer
* *
@@ -169,8 +174,9 @@
* Optional * Optional
* *
* Input Parameters: * Input Parameters:
* dev - Device-specific state data
* callback - The funtion to call on the media change * 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: * Returned Value:
* 0 on success; negated errno on failure. * 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); void (*select)(FAR struct spi_dev_s *dev, enum spidev_e devid, boolean selected);
uint32 (*setfrequency)(FAR struct spi_dev_s *dev, uint32 frequency); 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); 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 (*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); void (*recvblock)(FAR struct spi_dev_s *dev, FAR ubyte *buffer, size_t buflen);