summaryrefslogtreecommitdiff
path: root/nuttx/configs/olimex-lpc1766stk
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-12-30 23:08:46 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2010-12-30 23:08:46 +0000
commit96d6082aedb303a830c5ec6e81be21edc43cde3e (patch)
treed6e6c0bf37e710c8faf58a474a9dd3145df591c6 /nuttx/configs/olimex-lpc1766stk
parent6c576a9a79a65b64ea94d743beb3d008ee004092 (diff)
downloadpx4-nuttx-96d6082aedb303a830c5ec6e81be21edc43cde3e.tar.gz
px4-nuttx-96d6082aedb303a830c5ec6e81be21edc43cde3e.tar.bz2
px4-nuttx-96d6082aedb303a830c5ec6e81be21edc43cde3e.zip
Handling missing RHSC interrupt
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3223 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/configs/olimex-lpc1766stk')
-rwxr-xr-xnuttx/configs/olimex-lpc1766stk/include/board.h23
-rwxr-xr-xnuttx/configs/olimex-lpc1766stk/src/up_nsh.c36
2 files changed, 59 insertions, 0 deletions
diff --git a/nuttx/configs/olimex-lpc1766stk/include/board.h b/nuttx/configs/olimex-lpc1766stk/include/board.h
index 6d6212644..275714da0 100755
--- a/nuttx/configs/olimex-lpc1766stk/include/board.h
+++ b/nuttx/configs/olimex-lpc1766stk/include/board.h
@@ -225,6 +225,29 @@
* P2[9]/USB_CONNECT/RXD2 64 USBD_CONNECT
*/
+#ifdef GPIO_USB_PPWR /* We can only redefine this if they have been defined */
+
+/* The Olimex LPC1766-STK has 10K pull-ups on PPWR and OVRCR and a 100k
+ * pull-down on PWRD so we should make sure that the outputs float.
+ */
+
+# undef GPIO_USB_PPWR
+# define GPIO_USB_PPWR (GPIO_ALT2 | GPIO_FLOAT | GPIO_PORT1 | GPIO_PIN19)
+# undef GPIO_USB_OVRCR
+# define GPIO_USB_OVRCR (GPIO_ALT2 | GPIO_FLOAT | GPIO_PORT1 | GPIO_PIN27)
+# undef GPIO_USB_PWRD
+# define GPIO_USB_PWRD (GPIO_ALT2 | GPIO_FLOAT | GPIO_PORT1 | GPIO_PIN22)
+
+/* In host mode (only) there are also 15K pull-downs on D+ and D- */
+
+# ifdef CONFIG_USBHOST
+# undef GPIO_USB_DP
+# define GPIO_USB_DP (GPIO_ALT1 | GPIO_FLOAT | GPIO_PORT0 | GPIO_PIN29)
+# undef GPIO_USB_DM
+# define GPIO_USB_DM (GPIO_ALT1 | GPIO_FLOAT | GPIO_PORT0 | GPIO_PIN30)
+# endif
+#endif
+
/* Ethernet GPIO PIN SIGNAL NAME
* -------------------------------- ---- --------------
* P1[0]/ENET_TXD0 95 E_TXD0
diff --git a/nuttx/configs/olimex-lpc1766stk/src/up_nsh.c b/nuttx/configs/olimex-lpc1766stk/src/up_nsh.c
index 62b470400..3a3bd4d97 100755
--- a/nuttx/configs/olimex-lpc1766stk/src/up_nsh.c
+++ b/nuttx/configs/olimex-lpc1766stk/src/up_nsh.c
@@ -41,6 +41,7 @@
#include <nuttx/config.h>
#include <stdio.h>
+#include <unistd.h>
#include <debug.h>
#include <errno.h>
@@ -164,6 +165,7 @@ static int nsh_waiter(int argc, char *argv[])
message("nsh_waiter: Running\n");
for (;;)
{
+#ifdef CONFIG_USBHOST_HAVERHSC
/* Wait for the device to change state */
ret = DRVR_WAIT(g_drvr, connected);
@@ -180,6 +182,39 @@ static int nsh_waiter(int argc, char *argv[])
(void)DRVR_ENUMERATE(g_drvr);
}
+#else
+ /* Is the device connected? */
+
+ if (connected)
+ {
+ /* Yes.. wait for the disconnect event */
+
+ ret = DRVR_WAIT(g_drvr, false);
+ DEBUGASSERT(ret == OK);
+
+ connected = false;
+ message("nsh_waiter: Not connected\n");
+ }
+ else
+ {
+ /* Wait a bit */
+
+ sleep(2);
+
+ /* Try to enumerate the device */
+
+ uvdbg("nsh_usbhostinitialize: Enumerate device\n");
+ ret = DRVR_ENUMERATE(g_drvr);
+ if (ret != OK)
+ {
+ uvdbg("nsh_usbhostinitialize: Enumeration failed: %d\n", ret);
+ }
+ else
+ {
+ message("nsh_usbhostinitialize: Connected\n");
+ }
+ }
+#endif
}
/* Keep the compiler from complaining */
@@ -263,6 +298,7 @@ static int nsh_usbhostinitialize(void)
/* First, get an instance of the USB host interface */
+ message("nsh_usbhostinitialize: Initialize USB host\n");
g_drvr = usbhost_initialize(0);
if (g_drvr)
{