diff --git a/arch/arm/src/lpc54xx/lpc54_sdmmc.c b/arch/arm/src/lpc54xx/lpc54_sdmmc.c index 9c2e0eef1fe..b5575e28b9b 100644 --- a/arch/arm/src/lpc54xx/lpc54_sdmmc.c +++ b/arch/arm/src/lpc54xx/lpc54_sdmmc.c @@ -680,7 +680,7 @@ static void lpc54_setupints(struct lpc54_dev_s *priv) #else mcinfo("waitmask=%04lx xfrmask=%04lx\n", - (unsigned long)waitmask, (unsigned long)priv->xfrmask); + (unsigned long)priv->waitmask, (unsigned long)priv->xfrmask); #endif /* Enable SDMMC interrupts */ @@ -1671,7 +1671,7 @@ static int lpc54_recvsetup(FAR struct sdio_dev_s *dev, FAR uint8_t *buffer, { blocksize = 64; bytecnt = nbytes; - DEBUGASSERT((nbytes & ~0x3f) == 0); + DEBUGASSERT((nbytes & 0x3f) == 0); } lpc54_putreg(blocksize, LPC54_SDMMC_BLKSIZ); @@ -2423,7 +2423,7 @@ static int lpc54_dmarecvsetup(FAR struct sdio_dev_s *dev, FAR uint8_t *buffer, /* Setup buffer address (chained) */ - g_sdmmc_dmadd[i].des2 = (uint32_t) priv->buffer + (i * MCI_DMADES1_MAXTR); + g_sdmmc_dmadd[i].des2 = (uint32_t)priv->buffer + (i * MCI_DMADES1_MAXTR); /* Setup basic control */ @@ -2436,7 +2436,7 @@ static int lpc54_dmarecvsetup(FAR struct sdio_dev_s *dev, FAR uint8_t *buffer, /* No more data? Then this is the last descriptor */ - if (!buflen) + if (buflen == 0) { ctrl |= MCI_DMADES0_LD; } diff --git a/configs/lpcxpresso-lpc54628/README.txt b/configs/lpcxpresso-lpc54628/README.txt index 71c80ec82c1..01dfb72dfee 100644 --- a/configs/lpcxpresso-lpc54628/README.txt +++ b/configs/lpcxpresso-lpc54628/README.txt @@ -62,9 +62,13 @@ STATUS functional. However, the action of the touchscreen could use some human factors improvements. I imagine that this is a consequence of the polled solution. - 2017-12-29: Brought in Alan Carvalho de Assis' LPC43xx SD/MMC driver from + 2017-12-19: Brought in Alan Carvalho de Assis' LPC43xx SD/MMC driver from https://github.com/Smoothieware/smoothie-nuttx/tree/master/nuttx/arch/arm/src/lpc43xx and adapted it for use by the LPC54xx. Unverified as of this writing. + 2017-12-21: Some things are working with he SDMMC drivers but read DMAs + are non-functional and, hence not usable. The nature of the problem is + this: The DMA appears to complete normally, however, the application + receive buffer is not modified. Nothing is actually received. There is still no support for the Accelerometer, SPIFI, SD card, Ethernet, or USB. There is a partial SPI driver, but no on-board SPI devices to @@ -310,6 +314,33 @@ Configurations configuration. Snappier response my be obtainble with filtering off if desired. + 5. This configuration has been used for testing the SDMMC driver with + these configuration additions: + + CONFIG_EXPERIMENTAL=y + + CONFIG_LPC54_SDMMC=y + CONFIG_LPC54_SDMMC_PWRCTRL=y + CONFIG_LPC54_SDMMC_DMA=y + + CONFIG_SIG_SIGWORK=17 + CONFIG_SCHED_WORKQUEUE=y + CONFIG_SCHED_HPWORK=y + CONFIG_SCHED_HPWORKPRIORITY=224 + CONFIG_SCHED_HPWORKPERIOD=50000 + CONFIG_SCHED_HPWORKSTACKSIZE=2048 + + CONFIG_MMCSD=y + CONFIG_MMCSD_NSLOTS=1 + CONFIG_MMCSD_MULTIBLOCK_DISABLE=y + CONFIG_MMCSD_HAVE_CARDDETECT=y + CONFIG_MMCSD_HAVE_WRITEPROTECT=y + CONFIG_ARCH_HAVE_SDIO=y + CONFIG_SDIO_DMA=y + CONFIG_MMCSD_SDIO=y + + CONFIG_NSH_MMCSDSLOTNO=0 + nxwm: This is a special configuration setup for the NxWM window manager