mirror of
https://github.com/apache/nuttx.git
synced 2026-06-05 15:58:59 +08:00
SAM MMCSD/SPI related changes
This commit is contained in:
@@ -719,3 +719,9 @@ Configuration sub-directories
|
|||||||
|
|
||||||
Application Configuration -> NSH Library
|
Application Configuration -> NSH Library
|
||||||
CONFIG_NSH_ARCHINIT=y : Board has architecture-specific initialization
|
CONFIG_NSH_ARCHINIT=y : Board has architecture-specific initialization
|
||||||
|
|
||||||
|
NOTE: If you enable the I/O1 this configuration with USART0 as the
|
||||||
|
console and with the I/O1 module in EXT1, you *must* remove UART
|
||||||
|
jumper. Otherwise, you have lookpack on USART0 and NSH will *not*
|
||||||
|
behave very well (since its outgoing prompts also appear as incoming
|
||||||
|
commands).
|
||||||
|
|||||||
@@ -86,7 +86,6 @@
|
|||||||
|
|
||||||
int sam_sdinitialize(int minor)
|
int sam_sdinitialize(int minor)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_MMCSD
|
|
||||||
FAR struct spi_dev_s *spi;
|
FAR struct spi_dev_s *spi;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@@ -118,7 +117,6 @@ int sam_sdinitialize(int minor)
|
|||||||
|
|
||||||
fvdbg("Successfuly bound SPI port %d to MMC/SD slot %d\n",
|
fvdbg("Successfuly bound SPI port %d to MMC/SD slot %d\n",
|
||||||
SAM34_MMCSDSPIPORTNO, SAM34_MMCSDSLOTNO);
|
SAM34_MMCSDSPIPORTNO, SAM34_MMCSDSLOTNO);
|
||||||
#endif
|
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -348,7 +348,10 @@ static void mmcsd_semtake(FAR struct mmcsd_slot_s *slot)
|
|||||||
#ifndef CONFIG_SPI_OWNBUS
|
#ifndef CONFIG_SPI_OWNBUS
|
||||||
(void)SPI_LOCK(slot->spi, true);
|
(void)SPI_LOCK(slot->spi, true);
|
||||||
|
|
||||||
/* Set the frequency, as some other driver could have changed it. */
|
/* Set the frequency, as some other driver could have changed it.
|
||||||
|
* TODO: Also need to restore mode and number-of-bits. Those can also
|
||||||
|
* change from SPI device-to-device.
|
||||||
|
*/
|
||||||
|
|
||||||
SPI_SETFREQUENCY(slot->spi, slot->spispeed);
|
SPI_SETFREQUENCY(slot->spi, slot->spispeed);
|
||||||
#endif
|
#endif
|
||||||
@@ -694,9 +697,9 @@ static void mmcsd_decodecsd(FAR struct mmcsd_slot_s *slot, uint8_t *csd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Store the value for future use */
|
/* Store the value for future use */
|
||||||
|
|
||||||
slot->spispeed = frequency;
|
slot->spispeed = frequency;
|
||||||
|
|
||||||
/* Set the actual SPI frequency as close as possible to that value */
|
/* Set the actual SPI frequency as close as possible to that value */
|
||||||
|
|
||||||
frequency = SPI_SETFREQUENCY(spi, frequency);
|
frequency = SPI_SETFREQUENCY(spi, frequency);
|
||||||
@@ -1253,7 +1256,6 @@ static ssize_t mmcsd_write(FAR struct inode *inode, const unsigned char *buffer,
|
|||||||
size_t nbytes;
|
size_t nbytes;
|
||||||
off_t offset;
|
off_t offset;
|
||||||
uint8_t response;
|
uint8_t response;
|
||||||
int ret;
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
fvdbg("start_sector=%d nsectors=%d\n", start_sector, nsectors);
|
fvdbg("start_sector=%d nsectors=%d\n", start_sector, nsectors);
|
||||||
@@ -1394,7 +1396,7 @@ static ssize_t mmcsd_write(FAR struct inode *inode, const unsigned char *buffer,
|
|||||||
|
|
||||||
/* Wait until the card is no longer busy */
|
/* Wait until the card is no longer busy */
|
||||||
|
|
||||||
ret = mmcsd_waitready(slot);
|
(void)mmcsd_waitready(slot);
|
||||||
SPI_SELECT(spi, SPIDEV_MMCSD, false);
|
SPI_SELECT(spi, SPIDEV_MMCSD, false);
|
||||||
SPI_SEND(spi, 0xff);
|
SPI_SEND(spi, 0xff);
|
||||||
mmcsd_semgive(slot);
|
mmcsd_semgive(slot);
|
||||||
|
|||||||
Reference in New Issue
Block a user