diff --git a/arch/arm/src/kinetis/kinetis_usbdev.c b/arch/arm/src/kinetis/kinetis_usbdev.c index 2a2a4de2553..cd760991286 100644 --- a/arch/arm/src/kinetis/kinetis_usbdev.c +++ b/arch/arm/src/kinetis/kinetis_usbdev.c @@ -3317,7 +3317,7 @@ static int khci_epconfigure(struct usbdev_ep_s *ep, const struct usb_epdesc_s *d if (!ep || !desc) { usbtrace(TRACE_DEVERROR(KHCI_TRACEERR_INVALIDPARMS), 0); - uerr("ERROR: ep=%p desc=%p\n"); + uerr("ERROR: ep=%p desc=%p\n", ep, desc); return -EINVAL; } #endif diff --git a/boards/arm/kinetis/freedom-k64f/configs/cdcacm/defconfig b/boards/arm/kinetis/freedom-k64f/configs/cdcacm/defconfig new file mode 100644 index 00000000000..6c678fe816c --- /dev/null +++ b/boards/arm/kinetis/freedom-k64f/configs/cdcacm/defconfig @@ -0,0 +1,69 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_FPU is not set +# CONFIG_MMCSD_MMCSUPPORT is not set +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="freedom-k64f" +CONFIG_ARCH_BOARD_FREEDOM_K64F=y +CONFIG_ARCH_CHIP="kinetis" +CONFIG_ARCH_CHIP_KINETIS=y +CONFIG_ARCH_CHIP_MK64FN1M0VLL12=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=10016 +CONFIG_BUILTIN=y +CONFIG_CDCACM=y +CONFIG_DEBUG_NOOPT=y +CONFIG_DISABLE_ENVIRON=y +CONFIG_DISABLE_MQUEUE=y +CONFIG_DISABLE_POSIX_TIMERS=y +CONFIG_EXAMPLES_PWM=y +CONFIG_FAT_LCNAMES=y +CONFIG_FAT_LFN=y +CONFIG_FS_FAT=y +CONFIG_FS_PROCFS=y +CONFIG_FS_PROCFS_REGISTER=y +CONFIG_INTELHEX_BINARY=y +CONFIG_KINETIS_FTM0=y +CONFIG_KINETIS_FTM0_CHANNEL=2 +CONFIG_KINETIS_FTM0_PWM=y +CONFIG_KINETIS_GPIOIRQ=y +CONFIG_KINETIS_PORTEINTS=y +CONFIG_KINETIS_SDHC=y +CONFIG_KINETIS_UART0=y +CONFIG_KINETIS_USBOTG=y +CONFIG_MAX_TASKS=16 +CONFIG_MMCSD=y +CONFIG_MMCSD_MULTIBLOCK_DISABLE=y +CONFIG_MMCSD_SDIO=y +CONFIG_MOTOROLA_SREC=y +CONFIG_NFILE_DESCRIPTORS=8 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_DISABLE_IFUPDOWN=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_PWM=y +CONFIG_RAM_SIZE=131072 +CONFIG_RAM_START=0x1fff0000 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_START_DAY=25 +CONFIG_START_MONTH=3 +CONFIG_START_YEAR=2013 +CONFIG_SYSTEM_CDCACM=y +CONFIG_SYSTEM_NSH=y +CONFIG_TASK_NAME_SIZE=0 +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USBDEV=y +CONFIG_USBDEV_DUALSPEED=y +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/kinetis/freedom-k64f/include/board.h b/boards/arm/kinetis/freedom-k64f/include/board.h index 745556381d5..17e09e85de9 100644 --- a/boards/arm/kinetis/freedom-k64f/include/board.h +++ b/boards/arm/kinetis/freedom-k64f/include/board.h @@ -102,6 +102,27 @@ #define BOARD_FLEXBUS_FREQ (BOARD_MCG_FREQ / BOARD_OUTDIV3) #define BOARD_FLASHCLK_FREQ (BOARD_MCG_FREQ / BOARD_OUTDIV4) +/* Use BOARD_MCG_FREQ as the output SIM_SOPT2 MUX selected by + * SIM_SOPT2[PLLFLLSEL] + */ + +#define BOARD_SOPT2_PLLFLLSEL SIM_SOPT2_PLLFLLSEL_MCGPLLCLK +#define BOARD_SOPT2_FREQ BOARD_MCG_FREQ + +/* Divider output clock = Divider input clock * ((USBFRAC+1) / (USBDIV+1)) + * SIM_CLKDIV2_FREQ = BOARD_SOPT2_FREQ * ((USBFRAC+1) / (USBDIV+1)) + * SIM_CLKDIV2_FREQ = BOARD_SOPT2_FREQ / (USBDIV+1)* (USBFRAC+1) + * 48MHz = 120MHz / (4 + 1) * (1 + 1) + */ + +#if (BOARD_SOPT2_FREQ == 120000000L) +# define BOARD_SIM_CLKDIV2_USBFRAC 2 +# define BOARD_SIM_CLKDIV2_USBDIV 5 +# define BOARD_SIM_CLKDIV2_FREQ (BOARD_SOPT2_FREQ / \ + BOARD_SIM_CLKDIV2_USBDIV * \ + BOARD_SIM_CLKDIV2_USBFRAC) +#endif + /* SDHC clocking ************************************************************/ /* SDCLK configurations corresponding to various modes of operation. @@ -152,6 +173,15 @@ # define BOARD_SDHC_SD4MODE_DIVISOR SDHC_SYSCTL_DVS_DIV(3) #endif +/* Use the output of SIM_SOPT2[PLLFLLSEL] as the USB clock source */ + +#define BOARD_USB_CLKSRC SIM_SOPT2_USBSRC +#define BOARD_USB_FREQ BOARD_SIM_CLKDIV2_FREQ + +/* Allow USBOTG-FS Controller to Read from FLASH */ + +#define BOARD_USB_FLASHACCESS + /* PWM Configuration */ /* FTM0 Channels */ diff --git a/boards/arm/kinetis/freedom-k64f/src/k64_boot.c b/boards/arm/kinetis/freedom-k64f/src/k64_boot.c index ca2db16b027..6e3a5d4083e 100644 --- a/boards/arm/kinetis/freedom-k64f/src/k64_boot.c +++ b/boards/arm/kinetis/freedom-k64f/src/k64_boot.c @@ -60,13 +60,14 @@ * memory has been configured and mapped but before any devices have been * initialized. * - *****************************************************************************/ + ****************************************************************************/ void kinetis_boardinitialize(void) { #if defined(CONFIG_KINETIS_SPI1) || defined(CONFIG_KINETIS_SPI2) /* Configure SPI chip selects if 1) SPI is not disabled, and 2) - * the weak function k64_spidev_initialize() has been brought into the link. + * the weak function k64_spidev_initialize() has been brought into the + * link. */ if (k64_spidev_initialize) @@ -75,7 +76,7 @@ void kinetis_boardinitialize(void) } #endif -#if defined(CONFIG_USBDEV) && defined(CONFIG_KINETIS_USB) +#if defined(CONFIG_USBDEV) && defined(CONFIG_KINETIS_USBOTG) /* Initialize USB is 1) USBDEV is selected, 2) the USB controller is not * disabled, and 3) the weak function k64_usbinitialize() has been brought * into the build. @@ -100,10 +101,11 @@ void kinetis_boardinitialize(void) * Description: * If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional * initialization call will be performed in the boot-up sequence to a - * function called board_late_initialize(). board_late_initialize() will be - * called immediately after up_intitialize() is called and just before the - * initial application is started. This additional initialization phase - * may be used, for example, to initialize board-specific device drivers. + * function called board_late_initialize(). board_late_initialize() will + * be called immediately after up_intitialize() is called and just before + * the initial application is started. This additional initialization + * phase may be used, for example, to initialize board-specific device + * drivers. * ****************************************************************************/ diff --git a/boards/arm/kinetis/freedom-k64f/src/k64_usbdev.c b/boards/arm/kinetis/freedom-k64f/src/k64_usbdev.c index b03d27f02cd..81e259fa36e 100644 --- a/boards/arm/kinetis/freedom-k64f/src/k64_usbdev.c +++ b/boards/arm/kinetis/freedom-k64f/src/k64_usbdev.c @@ -60,31 +60,31 @@ * * Description: * Called to setup USB-related GPIO pins for the FREEDOM-K64F board. + * There is not really anything that needs to be done here for this + * board as it has dedicated USB pins. * ****************************************************************************/ void k64_usbinitialize(void) { -# warning "Missing logic" } -/***************************************************************************** +/**************************************************************************** * Name: kinetis_usbpullup * * Description: * If USB is supported and the board supports a pullup via GPIO (for USB * software connect and disconnect), then the board software must provide * kinetis_usbpullup. - * See include/nuttx/usb/usbdev.h for additional description of this method. - * Alternatively, if no pull-up GPIO the following EXTERN can be redefined - * to be NULL. + * See include/nuttx/usb/usbdev.h for additional description of this + * method. Alternatively, if no pull-up GPIO the following EXTERN can be + * redefined to be NULL. * ****************************************************************************/ int kinetis_usbpullup(FAR struct usbdev_s *dev, bool enable) { usbtrace(TRACE_DEVPULLUP, (uint16_t)enable); -# warning "Missing logic" return OK; } @@ -103,5 +103,4 @@ int kinetis_usbpullup(FAR struct usbdev_s *dev, bool enable) void kinetis_usbsuspend(FAR struct usbdev_s *dev, bool resume) { uinfo("resume: %d\n", resume); -#warning "Missing logic" }