summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-04-11 18:08:52 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-04-11 18:08:52 +0000
commit43f791fab83155249f86ed7432a60d420b8b9851 (patch)
tree40ef0f96cebc9308369d6d72d0d70ad75907b717
parent43a9fea627eecbc4294079e80be611c2f4f7d7e3 (diff)
downloadnuttx-43f791fab83155249f86ed7432a60d420b8b9851.tar.gz
nuttx-43f791fab83155249f86ed7432a60d420b8b9851.tar.bz2
nuttx-43f791fab83155249f86ed7432a60d420b8b9851.zip
Early debug of SAM3U MCI
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2587 42af7a65-404d-4744-a932-0658087f49c3
-rwxr-xr-xnuttx/arch/arm/src/sam3u/sam3u_hsmci.c27
-rwxr-xr-xnuttx/arch/arm/src/sam3u/sam3u_memorymap.h2
-rwxr-xr-xnuttx/configs/sam3u-ek/src/sam3uek_internal.h2
-rwxr-xr-xnuttx/configs/sam3u-ek/src/up_mmcsd.c27
-rwxr-xr-xnuttx/configs/sam3u-ek/src/up_nsh.c4
5 files changed, 41 insertions, 21 deletions
diff --git a/nuttx/arch/arm/src/sam3u/sam3u_hsmci.c b/nuttx/arch/arm/src/sam3u/sam3u_hsmci.c
index e52129f6a..b774d0d5b 100755
--- a/nuttx/arch/arm/src/sam3u/sam3u_hsmci.c
+++ b/nuttx/arch/arm/src/sam3u/sam3u_hsmci.c
@@ -890,6 +890,10 @@ static void sam3u_endtransfer(struct sam3u_dev_s *priv, sdio_eventset_t wkupeven
sam3u_dmastop(priv->dma);
+ /* Disable the DMA handshaking */
+
+ putreg32(0, SAM3U_HSMCI_DMA);
+
/* Is a thread wait for these data transfer complete events? */
if ((priv->waitevents & wkupevent) != 0)
@@ -1114,10 +1118,6 @@ static void sam3u_reset(FAR struct sdio_dev_s *dev)
sam3u_notransfer(priv);
- /* Disable the MCI peripheral clock */
-
- putreg32((1 << SAM3U_PID_HSMCI), SAM3U_PMC_PCDR);
-
/* Reset data */
priv->waitevents = 0; /* Set of events to be waited for */
@@ -1508,6 +1508,11 @@ static int sam3u_cancel(FAR struct sdio_dev_s *dev)
*/
sam3u_dmastop(priv->dma);
+
+ /* Disable the DMA handshaking */
+
+ putreg32(0, SAM3U_HSMCI_DMA);
+
return OK;
}
@@ -2052,10 +2057,14 @@ static int sam3u_dmarecvsetup(FAR struct sdio_dev_s *dev, FAR uint8_t *buffer,
sam3u_enablexfrints(priv, HSMCI_DMARECV_INTS);
sam3u_dmarxsetup(priv->dma, SAM3U_HSMCI_FIFO, (uint32_t)buffer, buflen);
-
- /* Start the DMA */
+ /* Enable DMA handshaking */
+
+ putreg32(HSMCI_DMA_DMAEN, SAM3U_HSMCI_DMA);
sam3u_sample(priv, SAMPLENDX_BEFORE_ENABLE);
+
+ /* Start the DMA */
+
sam3u_dmastart(priv->dma, sam3u_dmacallback, priv);
sam3u_sample(priv, SAMPLENDX_AFTER_SETUP);
return OK;
@@ -2096,6 +2105,10 @@ static int sam3u_dmasendsetup(FAR struct sdio_dev_s *dev,
/* Configure the TX DMA */
sam3u_dmatxsetup(priv->dma, SAM3U_HSMCI_FIFO, (uint32_t)buffer, buflen);
+
+ /* Enable DMA handshaking */
+
+ putreg32(HSMCI_DMA_DMAEN, SAM3U_HSMCI_DMA);
sam3u_sample(priv, SAMPLENDX_BEFORE_ENABLE);
/* Start the DMA */
@@ -2214,6 +2227,8 @@ FAR struct sdio_dev_s *sdio_initialize(int slotno)
struct sam3u_dev_s *priv = &g_sdiodev;
+ fdbg("slotno: %d\n", slotno);
+
/* Initialize the HSMCI slot structure */
sem_init(&priv->waitsem, 0, 0);
diff --git a/nuttx/arch/arm/src/sam3u/sam3u_memorymap.h b/nuttx/arch/arm/src/sam3u/sam3u_memorymap.h
index 8f48bbb5f..b38864ae5 100755
--- a/nuttx/arch/arm/src/sam3u/sam3u_memorymap.h
+++ b/nuttx/arch/arm/src/sam3u/sam3u_memorymap.h
@@ -1,7 +1,7 @@
/************************************************************************************************
* arch/arm/src/sam3u/sam3u_memorymap.h
*
- * Copyright (C) 2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2009-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
diff --git a/nuttx/configs/sam3u-ek/src/sam3uek_internal.h b/nuttx/configs/sam3u-ek/src/sam3uek_internal.h
index f092cbb02..52fd3dd55 100755
--- a/nuttx/configs/sam3u-ek/src/sam3uek_internal.h
+++ b/nuttx/configs/sam3u-ek/src/sam3uek_internal.h
@@ -119,7 +119,7 @@ extern void weak_function sam3u_usbinitialize(void);
#ifdef CONFIG_SAM3U_HSMCI
extern int weak_function sam3u_hsmciinit(void);
#else
-# define sam3u_boardmciinit()
+# define sam3u_hsmciinit()
#endif
/****************************************************************************
diff --git a/nuttx/configs/sam3u-ek/src/up_mmcsd.c b/nuttx/configs/sam3u-ek/src/up_mmcsd.c
index 45762ee28..2f19c9ced 100755
--- a/nuttx/configs/sam3u-ek/src/up_mmcsd.c
+++ b/nuttx/configs/sam3u-ek/src/up_mmcsd.c
@@ -70,39 +70,42 @@
* Public Functions
************************************************************************************/
-/****************************************************************************
+/************************************************************************************
* Name: sam3u_hsmciinit
*
* Description:
- * Initialize HSMCI support
+ * Initialize HSMCI support. This function is called very early in board
+ * initialization.
*
- ****************************************************************************/
+ ************************************************************************************/
int sam3u_hsmciinit(void)
{
-#if GPIO_MCI_CD
+#ifdef GPIO_MCI_CD
sam3u_configgpio(GPIO_MCI_CD);
#endif
-#if GPIO_MCI_WP
+#ifdef GPIO_MCI_WP
sam3u_configgpio(GPIO_MCI_WP);
#endif
return OK;
}
-/****************************************************************************
+/************************************************************************************
* Name: sam3u_cardinserted
*
* Description:
* Check if a card is inserted into the selected HSMCI slot
*
- ****************************************************************************/
+ ************************************************************************************/
bool sam3u_cardinserted(unsigned char slot)
{
if (slot == 0)
{
#ifdef GPIO_MCI_CD
- return !sam3u_gpioread(GPIO_MCI_CD);
+ bool inserted = sam3u_gpioread(GPIO_MCI_CD);
+ fvdbg("inserted: %s\n", inserted ? "NO" : "YES");
+ return !inserted;
#else
return true;
#endif
@@ -110,20 +113,22 @@ bool sam3u_cardinserted(unsigned char slot)
return false;
}
-/****************************************************************************
+/************************************************************************************
* Name: sam3u_writeprotected
*
* Description:
* Check if a card is inserted into the selected HSMCI slot
*
- ****************************************************************************/
+ ************************************************************************************/
bool sam3u_writeprotected(unsigned char slot)
{
if (slot == 0)
{
#ifdef GPIO_MCI_WP
- return sam3u_gpioread(GPIO_MCI_WP);
+ bool protected = sam3u_gpioread(GPIO_MCI_WP);
+ fvdbg("protected: %s\n", inserted ? "YES" : "NO");
+ return protected;
#else
return false;
#endif
diff --git a/nuttx/configs/sam3u-ek/src/up_nsh.c b/nuttx/configs/sam3u-ek/src/up_nsh.c
index ae1ecb673..cb3665f90 100755
--- a/nuttx/configs/sam3u-ek/src/up_nsh.c
+++ b/nuttx/configs/sam3u-ek/src/up_nsh.c
@@ -100,13 +100,13 @@
#ifdef CONFIG_CPP_HAVE_VARARGS
# ifdef CONFIG_DEBUG
-# define message(...) lib_lowprintf(__VA_ARGS__)
+# define message(...) lib_rawprintf(__VA_ARGS__)
# else
# define message(...) printf(__VA_ARGS__)
# endif
#else
# ifdef CONFIG_DEBUG
-# define message lib_lowprintf
+# define message lib_rawprintf
# else
# define message printf
# endif