From 227126f75fc4c2a96bd1bbf7345cbc263e77a907 Mon Sep 17 00:00:00 2001 From: patacongo Date: Mon, 27 Aug 2012 22:27:03 +0000 Subject: [PATCH] Some STM32 USB OTG FS driver fixes git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5059 42af7a65-404d-4744-a932-0658087f49c3 --- ChangeLog | 2 ++ arch/arm/src/stm32/stm32_otgfshost.c | 21 ++++++++++++++++++--- configs/stm3220g-eval/dhcpd/defconfig | 2 +- configs/stm3220g-eval/nettest/defconfig | 2 +- configs/stm3220g-eval/nsh/defconfig | 2 +- configs/stm3220g-eval/nsh2/defconfig | 2 +- configs/stm3220g-eval/nxwm/defconfig | 2 +- configs/stm3220g-eval/ostest/defconfig | 2 +- configs/stm3220g-eval/telnetd/defconfig | 2 +- fs/romfs/fs_romfsutil.c | 2 +- 10 files changed, 28 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 192af9dc35..eff224f79a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3200,4 +3200,6 @@ OFF, there are more NAKs occuring in more places than before and this reveals a variety of errors. This check in improves NAK robustness for control transfers but does not resolve all of the issues. + * configs/stm3220g-eval/*/defconfig: Calibrated delay loop. It had + never been calibrated was was way off. diff --git a/arch/arm/src/stm32/stm32_otgfshost.c b/arch/arm/src/stm32/stm32_otgfshost.c index 61f2640d4e..ce0e9036e5 100644 --- a/arch/arm/src/stm32/stm32_otgfshost.c +++ b/arch/arm/src/stm32/stm32_otgfshost.c @@ -48,6 +48,10 @@ #include #include +#if !defined(CONFIG_DEBUG_VERBOSE) && !defined(CONFIG_DEBUG_USB) +# include +#endif + #include #include #include @@ -1888,7 +1892,7 @@ static void stm32_gint_connected(FAR struct stm32_usbhost_s *priv) if (!priv->connected) { /* Yes.. then now we are connected */ - + ullvdbg("Connected\n"); priv->connected = true; DEBUGASSERT(priv->smstate == SMSTATE_DETACHED); @@ -3595,8 +3599,19 @@ static int stm32_transfer(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep, } } + /* There is a bug in the code at present. With debug OFF, this driver + * overruns the typical FLASH device and there are many problems with + * NAKS sticking a big delay here allows the driver to work but with + * very poor performance when debug is off. + */ + +#if !defined(CONFIG_DEBUG_VERBOSE) && !defined(CONFIG_DEBUG_USB) +#warning "REVISIT this delay" + usleep(100*1000); +#endif + /* Start the transfer */ - + stm32_transfer_start(priv, chidx); /* Wait for the transfer to complete and get the result */ @@ -3696,7 +3711,7 @@ static void stm32_portreset(FAR struct stm32_usbhost_s *priv) * Flush the selected Tx FIFO. * * Input Parameters: - * priv -- USB host driver private data structure. + * txfnum -- USB host driver private data structure. * * Returned Value: * None. diff --git a/configs/stm3220g-eval/dhcpd/defconfig b/configs/stm3220g-eval/dhcpd/defconfig index 27b6180071..7a211ddc9d 100644 --- a/configs/stm3220g-eval/dhcpd/defconfig +++ b/configs/stm3220g-eval/dhcpd/defconfig @@ -75,7 +75,7 @@ CONFIG_ARCH_CHIP="stm32" CONFIG_ARCH_CHIP_STM32F207IG=y CONFIG_ARCH_BOARD="stm3220g-eval" CONFIG_ARCH_BOARD_STM3220G_EVAL=y -CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BOARD_LOOPSPERMSEC=10926 CONFIG_DRAM_SIZE=0x00030000 CONFIG_DRAM_START=0x20000000 CONFIG_ARCH_IRQPRIO=y diff --git a/configs/stm3220g-eval/nettest/defconfig b/configs/stm3220g-eval/nettest/defconfig index 1c5889e902..ade4bbe97f 100644 --- a/configs/stm3220g-eval/nettest/defconfig +++ b/configs/stm3220g-eval/nettest/defconfig @@ -75,7 +75,7 @@ CONFIG_ARCH_CHIP="stm32" CONFIG_ARCH_CHIP_STM32F207IG=y CONFIG_ARCH_BOARD="stm3220g-eval" CONFIG_ARCH_BOARD_STM3220G_EVAL=y -CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BOARD_LOOPSPERMSEC=10926 CONFIG_DRAM_SIZE=0x00030000 CONFIG_DRAM_START=0x20000000 CONFIG_ARCH_IRQPRIO=y diff --git a/configs/stm3220g-eval/nsh/defconfig b/configs/stm3220g-eval/nsh/defconfig index 1fe4816063..58b47b3d7c 100644 --- a/configs/stm3220g-eval/nsh/defconfig +++ b/configs/stm3220g-eval/nsh/defconfig @@ -75,7 +75,7 @@ CONFIG_ARCH_CHIP="stm32" CONFIG_ARCH_CHIP_STM32F207IG=y CONFIG_ARCH_BOARD="stm3220g-eval" CONFIG_ARCH_BOARD_STM3220G_EVAL=y -CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BOARD_LOOPSPERMSEC=10926 CONFIG_DRAM_SIZE=0x00030000 CONFIG_DRAM_START=0x20000000 CONFIG_ARCH_IRQPRIO=y diff --git a/configs/stm3220g-eval/nsh2/defconfig b/configs/stm3220g-eval/nsh2/defconfig index 0b157f91f6..13f7292576 100644 --- a/configs/stm3220g-eval/nsh2/defconfig +++ b/configs/stm3220g-eval/nsh2/defconfig @@ -76,7 +76,7 @@ CONFIG_ARCH_CHIP="stm32" CONFIG_ARCH_CHIP_STM32F207IG=y CONFIG_ARCH_BOARD="stm3220g-eval" CONFIG_ARCH_BOARD_STM3220G_EVAL=y -CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BOARD_LOOPSPERMSEC=10926 CONFIG_DRAM_SIZE=0x00030000 CONFIG_DRAM_START=0x20000000 CONFIG_ARCH_IRQPRIO=y diff --git a/configs/stm3220g-eval/nxwm/defconfig b/configs/stm3220g-eval/nxwm/defconfig index fec79bd9fc..8d97997457 100644 --- a/configs/stm3220g-eval/nxwm/defconfig +++ b/configs/stm3220g-eval/nxwm/defconfig @@ -75,7 +75,7 @@ CONFIG_ARCH_CHIP="stm32" CONFIG_ARCH_CHIP_STM32F207IG=y CONFIG_ARCH_BOARD="stm3220g-eval" CONFIG_ARCH_BOARD_STM3220G_EVAL=y -CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BOARD_LOOPSPERMSEC=10926 CONFIG_DRAM_SIZE=0x00030000 CONFIG_DRAM_START=0x20000000 CONFIG_ARCH_IRQPRIO=y diff --git a/configs/stm3220g-eval/ostest/defconfig b/configs/stm3220g-eval/ostest/defconfig index 5d1d0e5e43..0cb5f37f00 100644 --- a/configs/stm3220g-eval/ostest/defconfig +++ b/configs/stm3220g-eval/ostest/defconfig @@ -75,7 +75,7 @@ CONFIG_ARCH_CHIP="stm32" CONFIG_ARCH_CHIP_STM32F207IG=y CONFIG_ARCH_BOARD="stm3220g-eval" CONFIG_ARCH_BOARD_STM3220G_EVAL=y -CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BOARD_LOOPSPERMSEC=10926 CONFIG_DRAM_SIZE=0x00030000 CONFIG_DRAM_START=0x20000000 CONFIG_ARCH_IRQPRIO=y diff --git a/configs/stm3220g-eval/telnetd/defconfig b/configs/stm3220g-eval/telnetd/defconfig index 5b0157c412..d8b3608873 100644 --- a/configs/stm3220g-eval/telnetd/defconfig +++ b/configs/stm3220g-eval/telnetd/defconfig @@ -75,7 +75,7 @@ CONFIG_ARCH_CHIP="stm32" CONFIG_ARCH_CHIP_STM32F207IG=y CONFIG_ARCH_BOARD="stm3220g-eval" CONFIG_ARCH_BOARD_STM3220G_EVAL=y -CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BOARD_LOOPSPERMSEC=10926 CONFIG_DRAM_SIZE=0x00030000 CONFIG_DRAM_START=0x20000000 CONFIG_ARCH_IRQPRIO=y diff --git a/fs/romfs/fs_romfsutil.c b/fs/romfs/fs_romfsutil.c index ec009da89d..cb3f9f9ace 100644 --- a/fs/romfs/fs_romfsutil.c +++ b/fs/romfs/fs_romfsutil.c @@ -351,7 +351,7 @@ static inline int romfs_searchdir(struct romfs_mountpt_s *rm, } while (next != 0); - /* There is nothing in this directoy with that name */ + /* There is nothing in this directory with that name */ return -ENOENT; }