Merge remote-tracking branch 'origin/master' into netiob
This commit is contained in:
commit
f684e7a805
@ -7569,3 +7569,11 @@
|
||||
devif/devif.h (2014-6-28).
|
||||
* net/devif: Rename many functions in net/devif from uip_* to devif_*
|
||||
(2014-6-28).
|
||||
* configs/sama5d4-ek/src/nsh: The SAMA5D4-EK NSH configuration now
|
||||
supports the RTC by default (2014-6-29).
|
||||
* arch/arm/src/sama5/Kconfig and sam_hsmci.c: Add configuration to
|
||||
assign an XDMAC channel to an HSMCI (2014-6029).
|
||||
* Various fixes for networking and tiny webserver from Max (2014-6-29).
|
||||
* SAMA5: Various fixes related to DMA in order to get the HSMCI
|
||||
driver to build for the SAMA5D4 (2014-6-29).
|
||||
* SAMA5D4-EK: Fix HSMCI card-detect pin selection (2014-6-29).
|
||||
|
@ -319,12 +319,12 @@
|
||||
#ifdef CONFIG_SAMA5_ADC_DMA
|
||||
# define DMA_FLAGS \
|
||||
DMACH_FLAG_FIFOCFG_LARGEST | \
|
||||
((SAM_IRQ_ADC << DMACH_FLAG_PERIPHPID_SHIFT) | DMACH_FLAG_PERIPHAHB_AHB_IF2 | \
|
||||
DMACH_FLAG_PERIPHPID(SAM_IRQ_ADC) | DMACH_FLAG_PERIPHAHB_AHB_IF2 | \
|
||||
DMACH_FLAG_PERIPHH2SEL | DMACH_FLAG_PERIPHISPERIPH | \
|
||||
DMACH_FLAG_PERIPHWIDTH_16BITS | DMACH_FLAG_PERIPHCHUNKSIZE_1 | \
|
||||
((0x3f) << DMACH_FLAG_MEMPID_SHIFT) | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMPID_MAX | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMWIDTH_16BITS | DMACH_FLAG_MEMINCREMENT | \
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1)
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1 | DMACH_FLAG_MEMBURST_4)
|
||||
#endif
|
||||
|
||||
/* Pick an unused channel number */
|
||||
|
@ -100,7 +100,8 @@
|
||||
|
||||
# define DMACH_FLAG_PERIPHPID_SHIFT (2) /* Bits 1-7: Peripheral PID */
|
||||
# define DMACH_FLAG_PERIPHPID_MASK (0x3f << DMACH_FLAG_PERIPHPID_SHIFT)
|
||||
# define DMACH_FLAG_PERIPHPID(n) ((uint32_t) << DMACH_FLAG_PERIPHPID_SHIFT)
|
||||
# define DMACH_FLAG_PERIPHPID(n) ((uint32_t)(n) << DMACH_FLAG_PERIPHPID_SHIFT)
|
||||
# define DMACH_FLAG_PERIPHPID_MAX DMACH_FLAG_PERIPHPID_MASK
|
||||
# define DMACH_FLAG_PERIPHH2SEL (1 << 8) /* Bits 8: HW handshaking */
|
||||
# define DMACH_FLAG_PERIPHISPERIPH (1 << 9) /* Bits 9: 0=memory; 1=peripheral */
|
||||
# define DMACH_FLAG_PERIPHAHB_SHIFT (10) /* Bits 10-11: Peripheral ABH layer number */
|
||||
@ -138,6 +139,7 @@
|
||||
# define DMACH_FLAG_MEMPID_SHIFT (17) /* Bits 17-22: Memory PID */
|
||||
# define DMACH_FLAG_MEMPID_MASK (0x3f << DMACH_FLAG_MEMPID_SHIFT)
|
||||
# define DMACH_FLAG_MEMPID(n) ((uint32_t)(n) << DMACH_FLAG_MEMPID_SHIFT)
|
||||
# define DMACH_FLAG_MEMPID_MAX DMACH_FLAG_MEMPID_MASK
|
||||
# define DMACH_FLAG_MEMH2SEL (1 << 23) /* Bits 23: HW handshaking */
|
||||
# define DMACH_FLAG_MEMISPERIPH (1 << 24) /* Bits 24: 0=memory; 1=peripheral */
|
||||
# define DMACH_FLAG_MEMAHB_SHIFT (25) /* Bits 25-26: Peripheral ABH layer number */
|
||||
@ -199,7 +201,8 @@
|
||||
|
||||
# define DMACH_FLAG_PERIPHPID_SHIFT (0) /* Bits 0-7: Peripheral PID */
|
||||
# define DMACH_FLAG_PERIPHPID_MASK (0x7f << DMACH_FLAG_PERIPHPID_SHIFT)
|
||||
# define DMACH_FLAG_PERIPHPID(n) ((uint32_t) << DMACH_FLAG_PERIPHPID_SHIFT)
|
||||
# define DMACH_FLAG_PERIPHPID(n) ((uint32_t)(n) << DMACH_FLAG_PERIPHPID_SHIFT)
|
||||
# define DMACH_FLAG_PERIPHPID_MAX DMACH_FLAG_PERIPHPID_MASK
|
||||
# define DMACH_FLAG_PERIPHH2SEL (0) /* No HW handshaking */
|
||||
# define DMACH_FLAG_PERIPHISPERIPH (1 << 7) /* Bit 7: 0=memory; 1=peripheral */
|
||||
# define DMACH_FLAG_PERIPHAHB_MASK (1 << 8) /* Bit 8: Peripheral ABH layer 1 */
|
||||
@ -234,6 +237,7 @@
|
||||
*/
|
||||
|
||||
# define DMACH_FLAG_MEMPID(n) (0) /* No memory peripheral identifier */
|
||||
# define DMACH_FLAG_MEMPID_MAX (0)
|
||||
# define DMACH_FLAG_MEMH2SEL (0) /* No HW handshaking */
|
||||
# define DMACH_FLAG_MEMISPERIPH (0) /* No peripheral-to-peripheral */
|
||||
# define DMACH_FLAG_MEMAHB_MASK (1 << 16) /* Bit 16: Memory ABH layer 1 */
|
||||
|
@ -100,6 +100,11 @@
|
||||
# error "HSMCI2 support requires CONFIG_SAMA5_DMAC1"
|
||||
# endif
|
||||
|
||||
/* System Bus Interfaces */
|
||||
|
||||
# define HSMCI_SYSBUS_IF DMACH_FLAG_PERIPHAHB_AHB_IF2
|
||||
# define MEMORY_SYSBUS_IF DMACH_FLAG_MEMAHB_AHB_IF0
|
||||
|
||||
#elif defined(ATSAMA5D4)
|
||||
/* The SAMA5D3 has two HSMCI blocks: HSMCI0-1. They can be driven
|
||||
* either by XDMAC0 (secure) or XDMAC1 (unsecure).
|
||||
@ -125,6 +130,18 @@
|
||||
# error No valid DMA configuration for HSMCI1
|
||||
# endif
|
||||
|
||||
/* System Bus Interfaces
|
||||
*
|
||||
* HSMCI0 is on H32MX, APB1; HSMCI1 is on H32MX, APB0. Both are
|
||||
* accessible on MATRIX IF1.
|
||||
*
|
||||
* Memory is available on either port 5 (IF0 for both XDMAC0 and 1) or
|
||||
* port 6 (IF1 for both XDMAC0 and 1).
|
||||
*/
|
||||
|
||||
# define HSMCI_SYSBUS_IF DMACH_FLAG_PERIPHAHB_AHB_IF1
|
||||
# define MEMORY_SYSBUS_IF DMACH_FLAG_MEMAHB_AHB_IF0
|
||||
|
||||
#else
|
||||
# error Unrecognized SAMA5 architecture
|
||||
#endif
|
||||
@ -193,22 +210,22 @@
|
||||
|
||||
#ifdef HSCMI_FIFODMA
|
||||
# define DMA_FLAGS(pid) \
|
||||
(((pid) << DMACH_FLAG_PERIPHPID_SHIFT) | DMACH_FLAG_PERIPHAHB_AHB_IF2 | \
|
||||
(DMACH_FLAG_PERIPHPID(pid) | HSMCI_SYSBUS_IF | \
|
||||
DMACH_FLAG_PERIPHH2SEL | DMACH_FLAG_PERIPHISPERIPH | \
|
||||
DMACH_FLAG_PERIPHWIDTH_32BITS | DMACH_FLAG_PERIPHINCREMENT | \
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 | \
|
||||
((0x3f) << DMACH_FLAG_MEMPID_SHIFT) | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMPID_MAX | MEMORY_SYSBUS_IF | \
|
||||
DMACH_FLAG_MEMWIDTH_32BITS | DMACH_FLAG_MEMINCREMENT | \
|
||||
DMACH_FLAG_MEMCHUNKSIZE_4)
|
||||
DMACH_FLAG_MEMCHUNKSIZE_4 | DMACH_FLAG_MEMBURST_4)
|
||||
|
||||
#else
|
||||
# define DMA_FLAGS(pid) \
|
||||
(((pid) << DMACH_FLAG_PERIPHPID_SHIFT) | DMACH_FLAG_PERIPHAHB_AHB_IF2 | \
|
||||
(DMACH_FLAG_PERIPHPID(pid) | HSMCI_SYSBUS_IF | \
|
||||
DMACH_FLAG_PERIPHH2SEL | DMACH_FLAG_PERIPHISPERIPH | \
|
||||
DMACH_FLAG_PERIPHWIDTH_32BITS | DMACH_FLAG_PERIPHCHUNKSIZE_1 | \
|
||||
((0x3f) << DMACH_FLAG_MEMPID_SHIFT) | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMPID_MAX | MEMORY_SYSBUS_IF | \
|
||||
DMACH_FLAG_MEMWIDTH_32BITS | DMACH_FLAG_MEMINCREMENT | \
|
||||
DMACH_FLAG_MEMCHUNKSIZE_4)
|
||||
DMACH_FLAG_MEMCHUNKSIZE_4 | DMACH_FLAG_MEMBURST_4)
|
||||
|
||||
#endif
|
||||
|
||||
@ -1172,7 +1189,7 @@ static void sam_cmddump(struct sam_dev_s *priv)
|
||||
{
|
||||
sam_hsmcidump(priv, &priv->cmdsamples[SAMPLENDX_AFTER_CMDR],
|
||||
"After command setup");
|
||||
sam_hsmcidump(priv, &g_cmdsamples[SAMPLENDX_AT_WAKEUP],
|
||||
sam_hsmcidump(priv, &priv->cmdsamples[SAMPLENDX_AT_WAKEUP],
|
||||
"After wakeup");
|
||||
#ifdef CONFIG_SAMA5_HSMCI_XFRDEBUG
|
||||
priv->cmdinitialized = false;
|
||||
|
@ -109,28 +109,28 @@
|
||||
|
||||
#define NFCSRAM_DMA_FLAGS \
|
||||
DMACH_FLAG_FIFOCFG_LARGEST | \
|
||||
(((0x3f) << DMACH_FLAG_PERIPHPID_SHIFT) | DMACH_FLAG_PERIPHAHB_AHB_IF0 | \
|
||||
(DMACH_FLAG_PERIPHPID_MAX | DMACH_FLAG_PERIPHAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_PERIPHWIDTH_32BITS | DMACH_FLAG_PERIPHINCREMENT | \
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 | \
|
||||
((0x3f) << DMACH_FLAG_MEMPID_SHIFT) | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMPID_MAX | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMWIDTH_32BITS | DMACH_FLAG_MEMINCREMENT | \
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1)
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1 | DMACH_FLAG_MEMBURST_4)
|
||||
|
||||
#define NAND_DMA_FLAGS8 \
|
||||
DMACH_FLAG_FIFOCFG_LARGEST | \
|
||||
(((0x3f) << DMACH_FLAG_PERIPHPID_SHIFT) | DMACH_FLAG_PERIPHAHB_AHB_IF0 | \
|
||||
(DMACH_FLAG_PERIPHPID_MAX | DMACH_FLAG_PERIPHAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_PERIPHWIDTH_8BITS | DMACH_FLAG_PERIPHCHUNKSIZE_1 | \
|
||||
((0x3f) << DMACH_FLAG_MEMPID_SHIFT) | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMPID_MAX | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMWIDTH_8BITS | DMACH_FLAG_MEMINCREMENT | \
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1)
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1 | DMACH_FLAG_MEMBURST_4)
|
||||
|
||||
#define NAND_DMA_FLAGS16 \
|
||||
DMACH_FLAG_FIFOCFG_LARGEST | \
|
||||
(((0x3f) << DMACH_FLAG_PERIPHPID_SHIFT) | DMACH_FLAG_PERIPHAHB_AHB_IF0 | \
|
||||
(DMACH_FLAG_PERIPHPID_MAX | DMACH_FLAG_PERIPHAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_PERIPHWIDTH_16BITS | DMACH_FLAG_PERIPHCHUNKSIZE_1 | \
|
||||
((0x3f) << DMACH_FLAG_MEMPID_SHIFT) | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMPID_MAX | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMWIDTH_16BITS | DMACH_FLAG_MEMINCREMENT | \
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1)
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1 | DMACH_FLAG_MEMBURST_4)
|
||||
|
||||
/****************************************************************************
|
||||
* Private Types
|
||||
|
@ -1436,14 +1436,12 @@ static void spi_exchange(struct spi_dev_s *dev, const void *txbuffer,
|
||||
* provided on the SPI bus.
|
||||
*/
|
||||
|
||||
rxflags = DMACH_FLAG_FIFOCFG_LARGEST |
|
||||
((uint32_t)spi->pid << DMACH_FLAG_PERIPHPID_SHIFT) |
|
||||
rxflags = DMACH_FLAG_FIFOCFG_LARGEST | DMACH_FLAG_PERIPHPID(spi->pid) |
|
||||
DMACH_FLAG_PERIPHH2SEL | DMACH_FLAG_PERIPHISPERIPH |
|
||||
DMACH_FLAG_PERIPHAHB_AHB_IF2 | DMACH_FLAG_PERIPHWIDTH_8BITS |
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 |
|
||||
((uint32_t)(0x3f) << DMACH_FLAG_MEMPID_SHIFT) |
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 | DMACH_FLAG_MEMPID_MAX |
|
||||
DMACH_FLAG_MEMAHB_AHB_IF0 | DMACH_FLAG_MEMWIDTH_8BITS |
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1;
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1 | DMACH_FLAG_MEMBURST_4;
|
||||
|
||||
if (!rxbuffer)
|
||||
{
|
||||
@ -1460,14 +1458,12 @@ static void spi_exchange(struct spi_dev_s *dev, const void *txbuffer,
|
||||
rxflags |= DMACH_FLAG_MEMINCREMENT;
|
||||
}
|
||||
|
||||
txflags = DMACH_FLAG_FIFOCFG_LARGEST |
|
||||
((uint32_t)spi->pid << DMACH_FLAG_PERIPHPID_SHIFT) |
|
||||
txflags = DMACH_FLAG_FIFOCFG_LARGEST | DMACH_FLAG_PERIPHPID(spi->pid) |
|
||||
DMACH_FLAG_PERIPHH2SEL | DMACH_FLAG_PERIPHISPERIPH |
|
||||
DMACH_FLAG_PERIPHAHB_AHB_IF2 | DMACH_FLAG_PERIPHWIDTH_8BITS |
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 |
|
||||
((uint32_t)(0x3f) << DMACH_FLAG_MEMPID_SHIFT) |
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 | DMACH_FLAG_MEMPID_MAX |
|
||||
DMACH_FLAG_MEMAHB_AHB_IF0 | DMACH_FLAG_MEMWIDTH_8BITS |
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1;
|
||||
DMACH_FLAG_MEMCHUNKSIZE_1 | DMACH_FLAG_MEMBURST_4;
|
||||
|
||||
if (!txbuffer)
|
||||
{
|
||||
|
@ -186,31 +186,29 @@
|
||||
|
||||
/* DMA configuration */
|
||||
|
||||
#define DMA_PID(pid) ((pid) << DMACH_FLAG_PERIPHPID_SHIFT)
|
||||
|
||||
#define DMA8_FLAGS \
|
||||
(DMACH_FLAG_PERIPHAHB_AHB_IF2 | DMACH_FLAG_PERIPHH2SEL | \
|
||||
DMACH_FLAG_PERIPHISPERIPH | DMACH_FLAG_PERIPHWIDTH_8BITS | \
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 | \
|
||||
((0x3f) << DMACH_FLAG_MEMPID_SHIFT) | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMWIDTH_16BITS | DMACH_FLAG_MEMINCREMENT | \
|
||||
DMACH_FLAG_MEMCHUNKSIZE_4)
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 | DMACH_FLAG_MEMPID_MAX | \
|
||||
DMACH_FLAG_MEMAHB_AHB_IF0 | DMACH_FLAG_MEMWIDTH_16BITS | \
|
||||
DMACH_FLAG_MEMINCREMENT | DMACH_FLAG_MEMCHUNKSIZE_4| \
|
||||
DMACH_FLAG_MEMBURST_4)
|
||||
|
||||
#define DMA16_FLAGS \
|
||||
(DMACH_FLAG_PERIPHAHB_AHB_IF2 | DMACH_FLAG_PERIPHH2SEL | \
|
||||
DMACH_FLAG_PERIPHISPERIPH | DMACH_FLAG_PERIPHWIDTH_16BITS | \
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 | \
|
||||
((0x3f) << DMACH_FLAG_MEMPID_SHIFT) | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMWIDTH_16BITS | DMACH_FLAG_MEMINCREMENT | \
|
||||
DMACH_FLAG_MEMCHUNKSIZE_4)
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 | DMACH_FLAG_MEMPID_MAX | \
|
||||
DMACH_FLAG_MEMAHB_AHB_IF0 | DMACH_FLAG_MEMWIDTH_16BITS | \
|
||||
DMACH_FLAG_MEMINCREMENT | DMACH_FLAG_MEMCHUNKSIZE_4 | \
|
||||
DMACH_FLAG_MEMBURST_4)
|
||||
|
||||
#define DMA32_FLAGS \
|
||||
(DMACH_FLAG_PERIPHAHB_AHB_IF2 | DMACH_FLAG_PERIPHH2SEL | \
|
||||
DMACH_FLAG_PERIPHISPERIPH | DMACH_FLAG_PERIPHWIDTH_32BITS | \
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 | \
|
||||
((0x3f) << DMACH_FLAG_MEMPID_SHIFT) | DMACH_FLAG_MEMAHB_AHB_IF0 | \
|
||||
DMACH_FLAG_MEMWIDTH_32BITS | DMACH_FLAG_MEMINCREMENT | \
|
||||
DMACH_FLAG_MEMCHUNKSIZE_4)
|
||||
DMACH_FLAG_PERIPHCHUNKSIZE_1 | DMACH_FLAG_MEMPID_MAX | \
|
||||
DMACH_FLAG_MEMAHB_AHB_IF0 | DMACH_FLAG_MEMWIDTH_32BITS | \
|
||||
DMACH_FLAG_MEMINCREMENT | DMACH_FLAG_MEMCHUNKSIZE_4 | \
|
||||
DMACH_FLAG_MEMBURST_4)
|
||||
|
||||
/* DMA timeout. The value is not critical; we just don't want the system to
|
||||
* hang in the event that a DMA does not finish. This is set to
|
||||
@ -2658,20 +2656,20 @@ static void ssc_clocking(struct sam_ssc_s *priv)
|
||||
|
||||
static int ssc_dma_flags(struct sam_ssc_s *priv, uint32_t *dmaflags)
|
||||
{
|
||||
uint32_t regval;
|
||||
uint32_t flags;
|
||||
|
||||
switch (priv->datalen)
|
||||
{
|
||||
case 8:
|
||||
regval = DMA8_FLAGS;
|
||||
flags = DMA8_FLAGS;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
regval = DMA16_FLAGS;
|
||||
flags = DMA16_FLAGS;
|
||||
break;
|
||||
|
||||
case 32:
|
||||
regval = DMA32_FLAGS;
|
||||
flags = DMA32_FLAGS;
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -2679,7 +2677,7 @@ static int ssc_dma_flags(struct sam_ssc_s *priv, uint32_t *dmaflags)
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
*dmaflags = (regval | DMA_PID(priv->pid));
|
||||
*dmaflags = (flags | DMACH_FLAG_PERIPHPID(priv->pid));
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
@ -1707,7 +1707,7 @@ static inline int sam_multiple(struct sam_xdmach_s *xdmach)
|
||||
*/
|
||||
|
||||
if ((xdmach->cc & XDMACH_CC_TYPE) == 0 ||
|
||||
(xdmach->cc & XDMACH_CC_TYPE) != 0)
|
||||
(xdmach->cc & XDMACH_CC_DSYNC) != 0)
|
||||
{
|
||||
regval |= XDMACH_CNDC_NDSUP;
|
||||
}
|
||||
@ -1989,7 +1989,7 @@ void weak_function up_dmainitialize(void)
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: sam_xdmachannel
|
||||
* Name: sam_dmachannel
|
||||
*
|
||||
* Allocate a DMA channel. This function sets aside a DMA channel then
|
||||
* gives the caller exclusive access to the DMA channel.
|
||||
@ -2005,7 +2005,7 @@ void weak_function up_dmainitialize(void)
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
DMA_HANDLE sam_xdmachannel(uint8_t dmacno, uint32_t chflags)
|
||||
DMA_HANDLE sam_dmachannel(uint8_t dmacno, uint32_t chflags)
|
||||
{
|
||||
struct sam_xdmac_s *xdmac;
|
||||
struct sam_xdmach_s *xdmach;
|
||||
@ -2086,14 +2086,14 @@ DMA_HANDLE sam_xdmachannel(uint8_t dmacno, uint32_t chflags)
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: sam_xdmaconfig
|
||||
* Name: sam_dmaconfig
|
||||
*
|
||||
* Description:
|
||||
* There are two channel usage models: (1) The channel is allocated and configured
|
||||
* in one step. This is the typical case where a DMA channel performs a constant
|
||||
* role. The alternative is (2) where the DMA channel is reconfigured on the fly.
|
||||
* In this case, the chflags provided to sam_xdmachannel are not used and
|
||||
* sam_xdmaconfig() is called before each DMA to configure the DMA channel
|
||||
* In this case, the chflags provided to sam_dmachannel are not used and
|
||||
* sam_dmaconfig() is called before each DMA to configure the DMA channel
|
||||
* appropriately.
|
||||
*
|
||||
* Returned Value:
|
||||
@ -2101,7 +2101,7 @@ DMA_HANDLE sam_xdmachannel(uint8_t dmacno, uint32_t chflags)
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
void sam_xdmaconfig(DMA_HANDLE handle, uint32_t chflags)
|
||||
void sam_dmaconfig(DMA_HANDLE handle, uint32_t chflags)
|
||||
{
|
||||
struct sam_xdmach_s *xdmach = (struct sam_xdmach_s *)handle;
|
||||
|
||||
@ -2126,7 +2126,7 @@ void sam_xdmaconfig(DMA_HANDLE handle, uint32_t chflags)
|
||||
*
|
||||
* Description:
|
||||
* Release a DMA channel. NOTE: The 'handle' used in this argument must
|
||||
* NEVER be used again until sam_xdmachannel() is called again to re-gain
|
||||
* NEVER be used again until sam_dmachannel() is called again to re-gain
|
||||
* a valid handle.
|
||||
*
|
||||
* Returned Value:
|
||||
@ -2390,7 +2390,7 @@ void sam_dmastop(DMA_HANDLE handle)
|
||||
* Sample DMA register contents
|
||||
*
|
||||
* Assumptions:
|
||||
* - DMA handle allocated by sam_xdmachannel()
|
||||
* - DMA handle allocated by sam_dmachannel()
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
@ -2444,7 +2444,7 @@ void sam_dmasample(DMA_HANDLE handle, struct sam_dmaregs_s *regs)
|
||||
* Dump previously sampled DMA register contents
|
||||
*
|
||||
* Assumptions:
|
||||
* - DMA handle allocated by sam_xdmachannel()
|
||||
* - DMA handle allocated by sam_dmachannel()
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
|
@ -997,7 +997,7 @@ PIO Usage
|
||||
PE11/A11/TCLK2 USBB_EN5V_PE11 EN5V_USBB
|
||||
PE12/A12/TIOA1/PWMH2 USBC_EN5V_PE12 EN5V_USBC
|
||||
PE13/A13/TIOB1/PWML2 PB_USER1_PE13 PB_USER1
|
||||
PE14/A14/TCLK1/PWMH3 MCI1_CD_PE14 MCI1_CD
|
||||
PE14/A14/TCLK1/PWMH3 MCI1_CD_PE14 MCI1_CD ???
|
||||
PE15/A15/SCK3/TIOA0 MCI1_PWR_PE15 MCI1_PWR
|
||||
PE16/A16/RXD3/TIOB0 DBGU_RXD3_PE16 DBGU_RXD3 (See JP19)
|
||||
PE17/A17/TXD3/TCLK0 DBGU_TXD3_PE17 DBGU_TXD3 (See JP20)
|
||||
@ -1456,13 +1456,13 @@ HSMCI Card Slots
|
||||
HSMCI1
|
||||
------
|
||||
The microSD connects vi HSMCI1. The card detect discrete is available on
|
||||
PE14 (pulled high). NOTE that PE15 must be controlled to provide power
|
||||
PE6 (pulled high). NOTE that PE15 must be controlled to provide power
|
||||
to the HSMCI1 slot (the HSMCI0 slot is always powered).
|
||||
|
||||
------------------------------ ------------------- -------------------------
|
||||
SAMA5D4 PIO SIGNAL USAGE
|
||||
------------------------------ ------------------- -------------------------
|
||||
PE14/A14/TCLK1/PWMH3 MCI1_CD_PE14 MCI1_CD
|
||||
PE14/A14/TCLK1/PWMH3 MCI1_CD_PE14 MCI1_CD ???
|
||||
PE15/A15/SCK3/TIOA0 MCI1_PWR_PE15 MCI1_PWR
|
||||
PE18/A18/TIOA5/MCI1_CK PE18 MCI1_CK, EXP
|
||||
PE19/A19/TIOB5/MCI1_CDA PE19 MCI1_CDA, EXP
|
||||
@ -1485,12 +1485,11 @@ HSMCI Card Slots
|
||||
System Type->ATSAMA5 Peripheral Support
|
||||
CONFIG_SAMA5_HSMCI0=y : Enable HSMCI0 support
|
||||
CONFIG_SAMA5_HSMCI1=y : Enable HSMCI1 support
|
||||
CONFIG_SAMA5_XDMAC0=y : XDMAC0 is needed by HSMCI0 <- REVISIT
|
||||
CONFIG_SAMA5_XDMAC1=y : XDMAC1 is needed by HSMCI1 <- REVISIT
|
||||
CONFIG_SAMA5_XDMAC1=y : XDMAC1 is needed by HSMCI0/1
|
||||
|
||||
System Type
|
||||
CONFIG_SAMA5_PIO_IRQ=y : PIO interrupts needed
|
||||
CONFIG_SAMA5_PIOD_IRQ=y : Card detect pins are on PIOD
|
||||
CONFIG_SAMA5_PIOE_IRQ=y : Card detect pins are on PE5 and PE6
|
||||
|
||||
Device Drivers -> MMC/SD Driver Support
|
||||
CONFIG_MMCSD=y : Enable MMC/SD support
|
||||
@ -2858,19 +2857,18 @@ SAMA4D4-EK Configuration Options
|
||||
CONFIG_SAMA5_TWI2 - Two-Wire Interface 2
|
||||
CONFIG_SAMA5_HSMCI0 - High Speed Multimedia Card Interface 0
|
||||
CONFIG_SAMA5_HSMCI1 - High Speed Multimedia Card Interface 1
|
||||
CONFIG_SAMA5_HSMCI2 - High Speed Multimedia Card Interface 2
|
||||
CONFIG_SAMA5_SPI0 - Serial Peripheral Interface 0
|
||||
CONFIG_SAMA5_SPI1 - Serial Peripheral Interface 1
|
||||
CONFIG_SAMA5_TC0 - Timer Counter 0 (ch. 0, 1, 2)
|
||||
CONFIG_SAMA5_TC1 - Timer Counter 1 (ch. 3, 4, 5)
|
||||
CONFIG_SAMA5_PWM - Pulse Width Modulation Controller
|
||||
CONFIG_SAMA5_ADC - Touch Screen ADC Controller
|
||||
CONFIG_SAMA5_DMAC0 - DMA Controller 0
|
||||
CONFIG_SAMA5_DMAC1 - DMA Controller 1
|
||||
CONFIG_SAMA5_XDMAC0 - XDMA Controller 0
|
||||
CONFIG_SAMA5_XDMAC1 - XDMA Controller 1
|
||||
CONFIG_SAMA5_UHPHS - USB Host High Speed
|
||||
CONFIG_SAMA5_UDPHS - USB Device High Speed
|
||||
CONFIG_SAMA5_GMAC - Gigabit Ethernet MAC
|
||||
CONFIG_SAMA5_EMAC0 - Ethernet MAC 0
|
||||
CONFIG_SAMA5_EMAC0 - Ethernet MAC 0 (GMAC0)
|
||||
CONFIG_SAMA5_EMAC1 - Ethernet MAC 1 (GMAC1)
|
||||
CONFIG_SAMA5_LCDC - LCD Controller
|
||||
CONFIG_SAMA5_ISI - Image Sensor Interface
|
||||
CONFIG_SAMA5_SSC0 - Synchronous Serial Controller 0
|
||||
@ -3094,9 +3092,11 @@ Configurations
|
||||
This is a little program to help debug of code in DRAM. It does the
|
||||
following:
|
||||
|
||||
- It configures DRAM,
|
||||
- It loads and Intel HEX file into DRAM over the terminal port,
|
||||
- Waits for you to break in with GDB.
|
||||
- Sets the clocking so that the SAMA5 is running at 528MHz.
|
||||
- Configures DRAM,
|
||||
- Loads and Intel HEX file into DRAM over the terminal port,
|
||||
- Waits for you to break in with GDB (or optionally starts the
|
||||
newly loaded program).
|
||||
|
||||
At that point, you can set the PC and begin executing from SDRAM under
|
||||
debug control. See the section entitled "Creating and Using
|
||||
@ -3330,16 +3330,20 @@ Configurations
|
||||
will need to install a battery in the battery holder (J12) and close
|
||||
the jumper, JP13.
|
||||
|
||||
8. The SAMA5D4-EK includes for an AT25 serial DataFlash. Support for that
|
||||
serial FLASH can be enabled by modifying the NuttX configuration as
|
||||
described above in the paragraph entitled "AT25 Serial FLASH".
|
||||
8. Support for HSMCI0 and HSMCI1 is built-in by default. The SAMA4D4-EK
|
||||
provides a two SD memory card slots: (1) a full size SD card slot
|
||||
(J10), and (2) a microSD memory card slot (J11). The full size SD
|
||||
card slot connects via HSMCI0; the microSD connects vi HSMCI1.
|
||||
Support for both SD slots can be enabled with the settings provided
|
||||
in the paragraph entitled "HSMCI Card Slots" above.
|
||||
|
||||
9. Enabling HSMCI support. The SAMA4D4-EK provides a two SD memory
|
||||
card slots: (1) a full size SD card slot (J10), and (2) a microSD
|
||||
memory card slot (J11). The full size SD card slot connects via HSMCI0;
|
||||
the microSD connects vi HSMCI1. Support for both SD slots can be enabled
|
||||
with the settings provided in the paragraph entitled "HSMCI Card Slots"
|
||||
above.
|
||||
NOTE: For now I am boot off the microSD slot so, unless are booting
|
||||
in a different manner, this HSMCI1 slot may not be useful to you.
|
||||
|
||||
9. The SAMA5D4-EK includes for an AT25 serial DataFlash. That support is
|
||||
NOT enabled in this configuration. Support for that serial FLASH can
|
||||
be enabled by modifying the NuttX configuration as described above in
|
||||
the paragraph entitled "AT25 Serial FLASH".
|
||||
|
||||
10. Support the USB low-, high- and full-speed OHCI host driver can be enabled
|
||||
by changing the NuttX configuration file as described in the section
|
||||
|
@ -59,12 +59,12 @@
|
||||
* ------------------------------ ------------------- -------------------------
|
||||
*
|
||||
* The microSD connects vi HSMCI1. The card detect discrete is available on
|
||||
* PE14 (pulled high):
|
||||
* PE6 (pulled high):
|
||||
*
|
||||
* ------------------------------ ------------------- -------------------------
|
||||
* SAMA5D4 PIO SIGNAL USAGE
|
||||
* ------------------------------ ------------------- -------------------------
|
||||
* PE14/A14/TCLK1/PWMH3 MCI1_CD_PE14 MCI1_CD
|
||||
* PE14/A14/TCLK1/PWMH3 MCI1_CD_PE14 MCI1_CD ???
|
||||
* PE15/A15/SCK3/TIOA0 MCI1_PWR_PE15 MCI1_PWR
|
||||
* PE18/A18/TIOA5/MCI1_CK PE18 MCI1_CK, EXP
|
||||
* PE19/A19/TIOB5/MCI1_CDA PE19 MCI1_CDA, EXP
|
||||
|
@ -77,10 +77,10 @@
|
||||
# undef HAVE_HSMCI
|
||||
#endif
|
||||
|
||||
/* We need PIO interrupts on PIOD to support card detect interrupts */
|
||||
/* We need PIO interrupts on PIOE to support card detect interrupts */
|
||||
|
||||
#if defined(HAVE_HSMCI) && !defined(CONFIG_SAMA5_PIOD_IRQ)
|
||||
# warning PIOD interrupts not enabled. No MMC/SD support.
|
||||
#if defined(HAVE_HSMCI) && !defined(CONFIG_SAMA5_PIOE_IRQ)
|
||||
# warning PIOE interrupts not enabled. No MMC/SD support.
|
||||
# undef HAVE_HSMCI
|
||||
#endif
|
||||
|
||||
@ -346,13 +346,13 @@
|
||||
#define IRQ_MCI0_CD SAM_IRQ_PE5
|
||||
|
||||
/* The microSD connects vi HSMCI1. The card detect discrete is available on
|
||||
* PE14 (pulled high) NOTE that PE15 must be controlled to provide power
|
||||
* PE6 (pulled high) NOTE that PE15 must be controlled to provide power
|
||||
* to the HSMCI1 slot (the HSMCI0 slot is always powered).
|
||||
*
|
||||
* ------------------------------ ------------------- -------------------------
|
||||
* SAMA5D4 PIO SIGNAL USAGE
|
||||
* ------------------------------ ------------------- -------------------------
|
||||
* PE14/A14/TCLK1/PWMH3 MCI1_CD_PE14 MCI1_CD
|
||||
* PE14/A14/TCLK1/PWMH3 MCI1_CD_PE14 MCI1_CD ???
|
||||
* PE15/A15/SCK3/TIOA0 MCI1_PWR_PE15 MCI1_PWR
|
||||
* PE18/A18/TIOA5/MCI1_CK PE18 MCI1_CK, EXP
|
||||
* PE19/A19/TIOB5/MCI1_CDA PE19 MCI1_CDA, EXP
|
||||
@ -365,8 +365,8 @@
|
||||
*/
|
||||
|
||||
#define PIO_MCI1_CD (PIO_INPUT | PIO_CFG_DEFAULT | PIO_CFG_DEGLITCH | \
|
||||
PIO_INT_BOTHEDGES | PIO_PORT_PIOE | PIO_PIN14)
|
||||
#define IRQ_MCI1_CD SAM_IRQ_PE14
|
||||
PIO_INT_BOTHEDGES | PIO_PORT_PIOE | PIO_PIN6)
|
||||
#define IRQ_MCI1_CD SAM_IRQ_PE6
|
||||
|
||||
#define IRQ_MCI1_PWR (PIO_OUTPUT | PIO_CFG_DEFAULT | PIO_OUTPUT_SET | \
|
||||
PIO_PORT_PIOE | PIO_PIN15)
|
||||
|
Loading…
x
Reference in New Issue
Block a user