board/freedom-k64f: Add usbdev support with cdcacm example

This commit is contained in:
Brennan Ashton 2021-02-14 16:13:56 -08:00 committed by Xiang Xiao
parent 41bddc8461
commit 9f1017feb3
5 changed files with 115 additions and 15 deletions

View File

@ -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

View File

@ -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"

View File

@ -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 */

View File

@ -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.
*
****************************************************************************/

View File

@ -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"
}