Removed dmasupported() method from the SDIO interface. That is now a bit in the cpapability set.
This commit is contained in:
parent
9ac00a355f
commit
2a4791f4ee
@ -5412,7 +5412,6 @@ int kbd_decode(FAR struct lib_instream_s *stream, FAR struct kbd_getstate_s *sta
|
||||
DMA support:
|
||||
</p>
|
||||
<ul>
|
||||
<p><code>bool (*dmasupported)(FAR struct sdio_dev_s *dev);</code><br>
|
||||
<code>int (*dmarecvsetup)(FAR struct sdio_dev_s *dev, FAR uint8_t *buffer, size_t buflen);</code><br>
|
||||
<code>int (*dmasendsetup)(FAR struct sdio_dev_s *dev, FAR const uint8_t *buffer, size_t buflen);</code></p>
|
||||
</ul>
|
||||
|
@ -328,7 +328,6 @@ static int kinetis_registercallback(FAR struct sdio_dev_s *dev,
|
||||
/* DMA */
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool kinetis_dmasupported(FAR struct sdio_dev_s *dev);
|
||||
static int kinetis_dmarecvsetup(FAR struct sdio_dev_s *dev,
|
||||
FAR uint8_t *buffer, size_t buflen);
|
||||
static int kinetis_dmasendsetup(FAR struct sdio_dev_s *dev,
|
||||
@ -378,7 +377,6 @@ struct kinetis_dev_s g_sdhcdev =
|
||||
.callbackenable = kinetis_callbackenable,
|
||||
.registercallback = kinetis_registercallback,
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
.dmasupported = kinetis_dmasupported,
|
||||
.dmarecvsetup = kinetis_dmarecvsetup,
|
||||
.dmasendsetup = kinetis_dmasendsetup,
|
||||
#endif
|
||||
@ -1329,10 +1327,16 @@ static void kinetis_reset(FAR struct sdio_dev_s *dev)
|
||||
|
||||
static sdio_capset_t kinetis_capabilities(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
sdio_capset_t caps = 0;
|
||||
|
||||
#ifdef CONFIG_KINETIS_SDHC_WIDTH_D1_ONLY
|
||||
return SDIO_CAPS_1BIT_ONLY;
|
||||
#else
|
||||
return 0;
|
||||
caps |= SDIO_CAPS_1BIT_ONLY;
|
||||
#endif
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
caps |= SDIO_CAPS_DMASUPPORTED;
|
||||
#endif
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@ -2550,27 +2554,6 @@ static int kinetis_registercallback(FAR struct sdio_dev_s *dev,
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: kinetis_dmasupported
|
||||
*
|
||||
* Description:
|
||||
* Return true if the hardware can support DMA
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - An instance of the SDIO device interface
|
||||
*
|
||||
* Returned Value:
|
||||
* true if DMA is supported.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool kinetis_dmasupported(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: kinetis_dmarecvsetup
|
||||
*
|
||||
|
@ -396,7 +396,6 @@ static int lpc17_registercallback(FAR struct sdio_dev_s *dev,
|
||||
/* DMA */
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool lpc17_dmasupported(FAR struct sdio_dev_s *dev);
|
||||
static int lpc17_dmarecvsetup(FAR struct sdio_dev_s *dev,
|
||||
FAR uint8_t *buffer, size_t buflen);
|
||||
static int lpc17_dmasendsetup(FAR struct sdio_dev_s *dev,
|
||||
@ -442,7 +441,6 @@ struct lpc17_dev_s g_scard_dev =
|
||||
.callbackenable = lpc17_callbackenable,
|
||||
.registercallback = lpc17_registercallback,
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
.dmasupported = lpc17_dmasupported,
|
||||
.dmarecvsetup = lpc17_dmarecvsetup,
|
||||
.dmasendsetup = lpc17_dmasendsetup,
|
||||
#endif
|
||||
@ -1500,10 +1498,16 @@ static void lpc17_reset(FAR struct sdio_dev_s *dev)
|
||||
|
||||
static sdio_capset_t lpc17_capabilities(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
sdio_capset_t caps = 0;
|
||||
|
||||
#ifdef CONFIG_LPC17_SDCARD_WIDTH_D1_ONLY
|
||||
return SDIO_CAPS_1BIT_ONLY;
|
||||
#else
|
||||
return 0;
|
||||
caps |= SDIO_CAPS_1BIT_ONLY;
|
||||
#endif
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
caps |= SDIO_CAPS_DMASUPPORTED;
|
||||
#endif
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@ -2409,27 +2413,6 @@ static int lpc17_registercallback(FAR struct sdio_dev_s *dev,
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: lpc17_dmasupported
|
||||
*
|
||||
* Description:
|
||||
* Return true if the hardware can support DMA
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - An instance of the SD card device interface
|
||||
*
|
||||
* Returned Value:
|
||||
* true if DMA is supported.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool lpc17_dmasupported(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: lpc17_dmarecvsetup
|
||||
*
|
||||
|
@ -464,6 +464,7 @@ static int sam_interrupt(int irq, void *context);
|
||||
/* Initialization/setup */
|
||||
|
||||
static void sam_reset(FAR struct sdio_dev_s *dev);
|
||||
static sdio_capset_t sam_capabilities(FAR struct sdio_dev_s *dev);
|
||||
static sdio_statset_t sam_status(FAR struct sdio_dev_s *dev);
|
||||
static void sam_widebus(FAR struct sdio_dev_s *dev, bool enable);
|
||||
static void sam_clock(FAR struct sdio_dev_s *dev,
|
||||
@ -499,12 +500,11 @@ static int sam_registercallback(FAR struct sdio_dev_s *dev,
|
||||
/* DMA */
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool sam_dmasupported(FAR struct sdio_dev_s *dev);
|
||||
#endif
|
||||
static int sam_dmarecvsetup(FAR struct sdio_dev_s *dev,
|
||||
FAR uint8_t *buffer, size_t buflen);
|
||||
static int sam_dmasendsetup(FAR struct sdio_dev_s *dev,
|
||||
FAR const uint8_t *buffer, size_t buflen);
|
||||
#endif
|
||||
|
||||
/* Initialization/uninitialization/reset ************************************/
|
||||
|
||||
@ -519,7 +519,7 @@ struct sam_dev_s g_sdiodev =
|
||||
.dev =
|
||||
{
|
||||
.reset = sam_reset,
|
||||
.capabilities = NULL,
|
||||
.capabilities = sam_capabilities,
|
||||
.status = sam_status,
|
||||
.widebus = sam_widebus,
|
||||
.clock = sam_clock,
|
||||
@ -542,7 +542,6 @@ struct sam_dev_s g_sdiodev =
|
||||
.callbackenable = sam_callbackenable,
|
||||
.registercallback = sam_registercallback,
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
.dmasupported = sam_dmasupported,
|
||||
.dmarecvsetup = sam_dmarecvsetup,
|
||||
.dmasendsetup = sam_dmasendsetup,
|
||||
#endif
|
||||
@ -1457,6 +1456,31 @@ static void sam_reset(FAR struct sdio_dev_s *dev)
|
||||
leave_critical_section(flags);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_capabilities
|
||||
*
|
||||
* Description:
|
||||
* Get capabilities (and limitations) of the SDIO driver (optional)
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - Device-specific state data
|
||||
*
|
||||
* Returned Value:
|
||||
* Returns a bitset of status values (see SDIO_CAPS_* defines)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static sdio_capset_t sam_capabilities(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
sdio_capset_t caps = 0;
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
caps |= SDIO_CAPS_DMASUPPORTED;
|
||||
#endif
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_status
|
||||
*
|
||||
@ -2395,27 +2419,6 @@ static int sam_registercallback(FAR struct sdio_dev_s *dev,
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_dmasupported
|
||||
*
|
||||
* Description:
|
||||
* Return true if the hardware can support DMA
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - An instance of the SDIO device interface
|
||||
*
|
||||
* Returned Value:
|
||||
* true if DMA is supported.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool sam_dmasupported(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_dmarecvsetup
|
||||
*
|
||||
|
@ -547,6 +547,7 @@ static int sam_hsmci2_interrupt(int irq, void *context);
|
||||
/* Initialization/setup */
|
||||
|
||||
static void sam_reset(FAR struct sdio_dev_s *dev);
|
||||
static sdio_capset_t sam_capabilities(FAR struct sdio_dev_s *dev);
|
||||
static sdio_statset_t sam_status(FAR struct sdio_dev_s *dev);
|
||||
static void sam_widebus(FAR struct sdio_dev_s *dev, bool enable);
|
||||
static void sam_clock(FAR struct sdio_dev_s *dev,
|
||||
@ -586,8 +587,6 @@ static int sam_registercallback(FAR struct sdio_dev_s *dev,
|
||||
/* DMA */
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool sam_dmasupported(FAR struct sdio_dev_s *dev);
|
||||
#endif
|
||||
#ifndef HSCMI_NORXDMA
|
||||
static int sam_dmarecvsetup(FAR struct sdio_dev_s *dev,
|
||||
FAR uint8_t *buffer, size_t buflen);
|
||||
@ -596,6 +595,7 @@ static int sam_dmarecvsetup(FAR struct sdio_dev_s *dev,
|
||||
static int sam_dmasendsetup(FAR struct sdio_dev_s *dev,
|
||||
FAR const uint8_t *buffer, size_t buflen);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Initialization/uninitialization/reset ************************************/
|
||||
|
||||
@ -609,7 +609,7 @@ static void sam_callback(void *arg);
|
||||
static const struct sdio_dev_s g_callbacks =
|
||||
{
|
||||
.reset = sam_reset,
|
||||
.capabilities = NULL,
|
||||
.capabilities = sam_capabilities,
|
||||
.status = sam_status,
|
||||
.widebus = sam_widebus,
|
||||
.clock = sam_clock,
|
||||
@ -632,7 +632,6 @@ static const struct sdio_dev_s g_callbacks =
|
||||
.callbackenable = sam_callbackenable,
|
||||
.registercallback = sam_registercallback,
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
.dmasupported = sam_dmasupported,
|
||||
#ifndef HSCMI_NORXDMA
|
||||
.dmarecvsetup = sam_dmarecvsetup,
|
||||
#else
|
||||
@ -1775,6 +1774,31 @@ static void sam_reset(FAR struct sdio_dev_s *dev)
|
||||
leave_critical_section(flags);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_capabilities
|
||||
*
|
||||
* Description:
|
||||
* Get capabilities (and limitations) of the SDIO driver (optional)
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - Device-specific state data
|
||||
*
|
||||
* Returned Value:
|
||||
* Returns a bitset of status values (see SDIO_CAPS_* defines)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static sdio_capset_t sam_capabilities(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
sdio_capset_t caps = 0;
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
caps |= SDIO_CAPS_DMASUPPORTED;
|
||||
#endif
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_status
|
||||
*
|
||||
@ -2863,27 +2887,6 @@ static int sam_registercallback(FAR struct sdio_dev_s *dev,
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_dmasupported
|
||||
*
|
||||
* Description:
|
||||
* Return true if the hardware can support DMA
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - An instance of the SDIO device interface
|
||||
*
|
||||
* Returned Value:
|
||||
* true if DMA is supported.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool sam_dmasupported(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_dmarecvsetup
|
||||
*
|
||||
|
@ -478,6 +478,7 @@ static int sam_hsmci1_interrupt(int irq, void *context);
|
||||
/* Initialization/setup */
|
||||
|
||||
static void sam_reset(FAR struct sdio_dev_s *dev);
|
||||
static sdio_capset_t sam_capabilities(FAR struct sdio_dev_s *dev);
|
||||
static sdio_statset_t sam_status(FAR struct sdio_dev_s *dev);
|
||||
static void sam_widebus(FAR struct sdio_dev_s *dev, bool enable);
|
||||
static void sam_clock(FAR struct sdio_dev_s *dev,
|
||||
@ -517,8 +518,6 @@ static int sam_registercallback(FAR struct sdio_dev_s *dev,
|
||||
/* DMA */
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool sam_dmasupported(FAR struct sdio_dev_s *dev);
|
||||
#endif
|
||||
#ifndef HSCMI_NORXDMA
|
||||
static int sam_dmarecvsetup(FAR struct sdio_dev_s *dev,
|
||||
FAR uint8_t *buffer, size_t buflen);
|
||||
@ -527,6 +526,7 @@ static int sam_dmarecvsetup(FAR struct sdio_dev_s *dev,
|
||||
static int sam_dmasendsetup(FAR struct sdio_dev_s *dev,
|
||||
FAR const uint8_t *buffer, size_t buflen);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Initialization/uninitialization/reset ************************************/
|
||||
|
||||
@ -540,7 +540,7 @@ static void sam_callback(void *arg);
|
||||
static const struct sdio_dev_s g_callbacks =
|
||||
{
|
||||
.reset = sam_reset,
|
||||
.capabilities = NULL,
|
||||
.capabilities = sam_capabilities,
|
||||
.status = sam_status,
|
||||
.widebus = sam_widebus,
|
||||
.clock = sam_clock,
|
||||
@ -563,7 +563,6 @@ static const struct sdio_dev_s g_callbacks =
|
||||
.callbackenable = sam_callbackenable,
|
||||
.registercallback = sam_registercallback,
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
.dmasupported = sam_dmasupported,
|
||||
#ifndef HSCMI_NORXDMA
|
||||
.dmarecvsetup = sam_dmarecvsetup,
|
||||
#else
|
||||
@ -1749,6 +1748,31 @@ static void sam_reset(FAR struct sdio_dev_s *dev)
|
||||
leave_critical_section(flags);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_capabilities
|
||||
*
|
||||
* Description:
|
||||
* Get capabilities (and limitations) of the SDIO driver (optional)
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - Device-specific state data
|
||||
*
|
||||
* Returned Value:
|
||||
* Returns a bitset of status values (see SDIO_CAPS_* defines)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static sdio_capset_t sam_capabilities(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
sdio_capset_t caps = 0;
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
caps |= SDIO_CAPS_DMASUPPORTED;
|
||||
#endif
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_status
|
||||
*
|
||||
@ -2898,27 +2922,6 @@ static int sam_registercallback(FAR struct sdio_dev_s *dev,
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_dmasupported
|
||||
*
|
||||
* Description:
|
||||
* Return true if the hardware can support DMA
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - An instance of the SDIO device interface
|
||||
*
|
||||
* Returned Value:
|
||||
* true if DMA is supported.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool sam_dmasupported(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_dmarecvsetup
|
||||
*
|
||||
|
@ -466,7 +466,6 @@ static int stm32_registercallback(FAR struct sdio_dev_s *dev,
|
||||
/* DMA */
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool stm32_dmasupported(FAR struct sdio_dev_s *dev);
|
||||
#ifdef CONFIG_SDIO_PREFLIGHT
|
||||
static int stm32_dmapreflight(FAR struct sdio_dev_s *dev,
|
||||
FAR const uint8_t *buffer, size_t buflen);
|
||||
@ -519,7 +518,6 @@ struct stm32_dev_s g_sdiodev =
|
||||
.callbackenable = stm32_callbackenable,
|
||||
.registercallback = stm32_registercallback,
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
.dmasupported = stm32_dmasupported,
|
||||
#ifdef CONFIG_SDIO_PREFLIGHT
|
||||
.dmapreflight = stm32_dmapreflight,
|
||||
#endif
|
||||
@ -1620,10 +1618,16 @@ static void stm32_reset(FAR struct sdio_dev_s *dev)
|
||||
|
||||
static sdio_capset_t stm32_capabilities(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
sdio_capset_t caps = 0;
|
||||
|
||||
#ifdef CONFIG_STM32_SDIO_WIDTH_D1_ONLY
|
||||
return SDIO_CAPS_1BIT_ONLY;
|
||||
caps |= SDIO_CAPS_1BIT_ONLY;
|
||||
#else
|
||||
return 0;
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
caps |= SDIO_CAPS_DMASUPPORTED;
|
||||
#endif
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@ -2557,27 +2561,6 @@ static int stm32_registercallback(FAR struct sdio_dev_s *dev,
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: stm32_dmasupported
|
||||
*
|
||||
* Description:
|
||||
* Return true if the hardware can support DMA
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - An instance of the SDIO device interface
|
||||
*
|
||||
* Returned Value:
|
||||
* true if DMA is supported.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
static bool stm32_dmasupported(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: stm32_dmapreflight
|
||||
*
|
||||
|
@ -495,6 +495,7 @@ static int stm32_lock(FAR struct sdio_dev_s *dev, bool lock);
|
||||
/* Initialization/setup */
|
||||
|
||||
static void stm32_reset(FAR struct sdio_dev_s *dev);
|
||||
static sdio_capset_t stm32_capabilities(FAR struct sdio_dev_s *dev);
|
||||
static sdio_statset_t stm32_status(FAR struct sdio_dev_s *dev);
|
||||
static void stm32_widebus(FAR struct sdio_dev_s *dev, bool enable);
|
||||
static void stm32_clock(FAR struct sdio_dev_s *dev,
|
||||
@ -535,7 +536,6 @@ static int stm32_registercallback(FAR struct sdio_dev_s *dev,
|
||||
/* DMA */
|
||||
|
||||
#ifdef CONFIG_STM32F7_SDMMC_DMA
|
||||
static bool stm32_dmasupported(FAR struct sdio_dev_s *dev);
|
||||
#ifdef CONFIG_SDIO_PREFLIGHT
|
||||
static int stm32_dmapreflight(FAR struct sdio_dev_s *dev,
|
||||
FAR const uint8_t *buffer, size_t buflen);
|
||||
@ -563,7 +563,7 @@ struct stm32_dev_s g_sdmmcdev1 =
|
||||
.lock = stm32_lock,
|
||||
#endif
|
||||
.reset = stm32_reset,
|
||||
.capabilities = NULL,
|
||||
.capabilities = stm32_capabilities,
|
||||
.status = stm32_status,
|
||||
.widebus = stm32_widebus,
|
||||
.clock = stm32_clock,
|
||||
@ -588,7 +588,6 @@ struct stm32_dev_s g_sdmmcdev1 =
|
||||
.callbackenable = stm32_callbackenable,
|
||||
.registercallback = stm32_registercallback,
|
||||
#ifdef CONFIG_STM32F7_SDMMC_DMA
|
||||
.dmasupported = stm32_dmasupported,
|
||||
#ifdef CONFIG_SDIO_PREFLIGHT
|
||||
.dmapreflight = stm32_dmapreflight,
|
||||
#endif
|
||||
@ -620,7 +619,7 @@ struct stm32_dev_s g_sdmmcdev2 =
|
||||
.lock = stm32_lock,
|
||||
#endif
|
||||
.reset = stm32_reset,
|
||||
.capabilities = NULL,
|
||||
.capabilities = stm32_capabilities,
|
||||
.status = stm32_status,
|
||||
.widebus = stm32_widebus,
|
||||
.clock = stm32_clock,
|
||||
@ -645,7 +644,6 @@ struct stm32_dev_s g_sdmmcdev2 =
|
||||
.callbackenable = stm32_callbackenable,
|
||||
.registercallback = stm32_registercallback,
|
||||
#ifdef CONFIG_STM32F7_SDMMC_DMA
|
||||
.dmasupported = stm32_dmasupported,
|
||||
#ifdef CONFIG_SDIO_PREFLIGHT
|
||||
.dmapreflight = stm32_dmapreflight,
|
||||
#endif
|
||||
@ -1854,6 +1852,31 @@ static void stm32_reset(FAR struct sdio_dev_s *dev)
|
||||
sdmmc_getreg32(priv, STM32_SDMMC_POWER_OFFSET));
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: stm32_capabilities
|
||||
*
|
||||
* Description:
|
||||
* Get capabilities (and limitations) of the SDIO driver (optional)
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - Device-specific state data
|
||||
*
|
||||
* Returned Value:
|
||||
* Returns a bitset of status values (see SDIO_CAPS_* defines)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static sdio_capset_t stm32_capabilities(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
sdio_capset_t caps = 0;
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
caps |= SDIO_CAPS_DMASUPPORTED;
|
||||
#endif
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: stm32_status
|
||||
*
|
||||
@ -2805,27 +2828,6 @@ static int stm32_registercallback(FAR struct sdio_dev_s *dev,
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: stm32_dmasupported
|
||||
*
|
||||
* Description:
|
||||
* Return true if the hardware can support DMA
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - An instance of the SDIO device interface
|
||||
*
|
||||
* Returned Value:
|
||||
* true if DMA is supported.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_STM32F7_SDMMC_DMA
|
||||
static bool stm32_dmasupported(FAR struct sdio_dev_s *dev)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: stm32_dmapreflight
|
||||
*
|
||||
|
@ -1305,7 +1305,7 @@ static ssize_t mmcsd_readsingle(FAR struct mmcsd_state_s *priv,
|
||||
* will be able to before we commit the card to the operation.
|
||||
*/
|
||||
|
||||
if (priv->dma)
|
||||
if ((priv->caps & SDIO_CAPS_DMASUPPORTED) != 0)
|
||||
{
|
||||
ret = SDIO_DMAPREFLIGHT(priv->dev, buffer, priv->blocksize);
|
||||
|
||||
@ -1361,7 +1361,7 @@ static ssize_t mmcsd_readsingle(FAR struct mmcsd_state_s *priv,
|
||||
SDIOWAIT_TRANSFERDONE | SDIOWAIT_TIMEOUT | SDIOWAIT_ERROR);
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
if (priv->dma)
|
||||
if ((priv->caps & SDIO_CAPS_DMASUPPORTED) != 0)
|
||||
{
|
||||
ret = SDIO_DMARECVSETUP(priv->dev, buffer, priv->blocksize);
|
||||
if (ret != OK)
|
||||
@ -1439,7 +1439,7 @@ static ssize_t mmcsd_readmultiple(FAR struct mmcsd_state_s *priv,
|
||||
* will be able to before we commit the card to the operation.
|
||||
*/
|
||||
|
||||
if (priv->dma)
|
||||
if ((priv->caps & SDIO_CAPS_DMASUPPORTED) != 0)
|
||||
{
|
||||
ret = SDIO_DMAPREFLIGHT(priv->dev, buffer, priv->blocksize);
|
||||
|
||||
@ -1496,7 +1496,7 @@ static ssize_t mmcsd_readmultiple(FAR struct mmcsd_state_s *priv,
|
||||
SDIOWAIT_TRANSFERDONE | SDIOWAIT_TIMEOUT | SDIOWAIT_ERROR);
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
if (priv->dma)
|
||||
if ((priv->caps & SDIO_CAPS_DMASUPPORTED) != 0)
|
||||
{
|
||||
ret = SDIO_DMARECVSETUP(priv->dev, buffer, nbytes);
|
||||
if (ret != OK)
|
||||
@ -1645,7 +1645,7 @@ static ssize_t mmcsd_writesingle(FAR struct mmcsd_state_s *priv,
|
||||
* will be able to before we commit the card to the operation.
|
||||
*/
|
||||
|
||||
if (priv->dma)
|
||||
if ((priv->caps & SDIO_CAPS_DMASUPPORTED) != 0)
|
||||
{
|
||||
ret = SDIO_DMAPREFLIGHT(priv->dev, buffer, priv->blocksize);
|
||||
|
||||
@ -1709,8 +1709,9 @@ static ssize_t mmcsd_writesingle(FAR struct mmcsd_state_s *priv,
|
||||
SDIO_BLOCKSETUP(priv->dev, priv->blocksize, 1);
|
||||
SDIO_WAITENABLE(priv->dev,
|
||||
SDIOWAIT_TRANSFERDONE | SDIOWAIT_TIMEOUT | SDIOWAIT_ERROR);
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
if (priv->dma)
|
||||
if ((priv->caps & SDIO_CAPS_DMASUPPORTED) != 0)
|
||||
{
|
||||
ret = SDIO_DMASENDSETUP(priv->dev, buffer, priv->blocksize);
|
||||
if (ret != OK)
|
||||
@ -1788,7 +1789,7 @@ static ssize_t mmcsd_writemultiple(FAR struct mmcsd_state_s *priv,
|
||||
* will be able to before we commit the card to the operation.
|
||||
*/
|
||||
|
||||
if (priv->dma)
|
||||
if ((priv->caps & SDIO_CAPS_DMASUPPORTED) != 0)
|
||||
{
|
||||
ret = SDIO_DMAPREFLIGHT(priv->dev, buffer, priv->blocksize);
|
||||
|
||||
@ -1872,8 +1873,9 @@ static ssize_t mmcsd_writemultiple(FAR struct mmcsd_state_s *priv,
|
||||
SDIO_BLOCKSETUP(priv->dev, priv->blocksize, nblocks);
|
||||
SDIO_WAITENABLE(priv->dev,
|
||||
SDIOWAIT_TRANSFERDONE | SDIOWAIT_TIMEOUT | SDIOWAIT_ERROR);
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
if (priv->dma)
|
||||
if ((priv->caps & SDIO_CAPS_DMASUPPORTED) != 0)
|
||||
{
|
||||
ret = SDIO_DMASENDSETUP(priv->dev, buffer, nbytes);
|
||||
if (ret != OK)
|
||||
@ -3130,13 +3132,7 @@ static int mmcsd_hwinitialize(FAR struct mmcsd_state_s *priv)
|
||||
/* Get the capabilities of the SDIO driver */
|
||||
|
||||
priv->caps = SDIO_CAPABILITIES(priv->dev);
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
/* Does this architecture support DMA with the MMC/SD device? */
|
||||
|
||||
priv->dma = SDIO_DMASUPPORTED(priv->dev);
|
||||
finfo("DMA supported: %d\n", priv->dma);
|
||||
#endif
|
||||
finfo("DMA supported: %d\n", (priv->caps & SDIO_CAPS_DMASUPPORTED) != 0);
|
||||
|
||||
/* Attach and prepare MMC/SD interrupts */
|
||||
|
||||
|
@ -362,7 +362,6 @@
|
||||
|
||||
#define SDIO_RESET(dev) ((dev)->reset(dev))
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Name: SDIO_CAPABILITIES
|
||||
*
|
||||
@ -377,12 +376,12 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#define SDIO_CAPABILITIES(dev) \
|
||||
(((dev)->status != NULL) ? (dev)->capabilities(dev) : 0)
|
||||
#define SDIO_CAPABILITIES(dev) ((dev)->capabilities(dev))
|
||||
|
||||
/* SDIO capability bits */
|
||||
|
||||
#define SDIO_CAPS_1BIT_ONLY 0x01 /* Bit 0=1: Supports only 1-bit operation */
|
||||
#define SDIO_CAPS_DMASUPPORTED 0x02 /* Bit 1=1: Supports DMA data transfers */
|
||||
|
||||
/****************************************************************************
|
||||
* Name: SDIO_STATUS
|
||||
@ -727,26 +726,6 @@
|
||||
# define SDIO_REGISTERCALLBACK(d,c,a) ((d)->registercallback(d,c,a))
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: SDIO_DMASUPPORTED
|
||||
*
|
||||
* Description:
|
||||
* Return true if the hardware can support DMA
|
||||
*
|
||||
* Input Parameters:
|
||||
* dev - An instance of the SDIO device interface
|
||||
*
|
||||
* Returned Value:
|
||||
* true if DMA is supported.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
# define SDIO_DMASUPPORTED(dev) ((dev)->dmasupported(dev))
|
||||
#else
|
||||
# define SDIO_DMASUPPORTED(dev) (false)
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Name: SDIO_DMAPREFLIGHT
|
||||
*
|
||||
@ -923,7 +902,6 @@ struct sdio_dev_s
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_SDIO_DMA
|
||||
bool (*dmasupported)(FAR struct sdio_dev_s *dev);
|
||||
#ifdef CONFIG_SDIO_PREFLIGHT
|
||||
int (*dmapreflight)(FAR struct sdio_dev_s *dev,
|
||||
FAR const uint8_t *buffer, size_t buflen);
|
||||
|
Loading…
x
Reference in New Issue
Block a user