/**************************************************************************** * boards/arm/stm32/olimex-stm32-p207/src/stm32_appinit.c * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. The * ASF licenses this file to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * ****************************************************************************/ /**************************************************************************** * Included Files ****************************************************************************/ #include #include #include #include #include #include #ifdef CONFIG_USBMONITOR # include #endif #ifdef CONFIG_STM32_OTGFS # include "stm32_usbhost.h" #endif #include "stm32.h" #include "olimex-stm32-p207.h" /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ /* Configuration ************************************************************/ #define HAVE_USBDEV 1 #define HAVE_USBHOST 1 #define HAVE_USBMONITOR 1 /* Can't support USB host or device features if USB OTG FS is not enabled */ #ifndef CONFIG_STM32_OTGFS # undef HAVE_USBDEV # undef HAVE_USBHOST #endif /* Can't support USB device if USB device is not enabled */ #ifndef CONFIG_USBDEV # undef HAVE_USBDEV #endif /* Can't support USB host is USB host is not enabled */ #ifndef CONFIG_STM32_USBHOST # undef CONFIG_USBHOST # undef HAVE_USBHOST #endif /* Check if we should enable the USB monitor before starting NSH */ #ifndef CONFIG_USBMONITOR # undef HAVE_USBMONITOR #endif #ifndef HAVE_USBDEV # undef CONFIG_USBDEV_TRACE #endif #ifndef HAVE_USBHOST # undef CONFIG_USBHOST_TRACE #endif #if !defined(CONFIG_USBDEV_TRACE) && !defined(CONFIG_USBHOST_TRACE) # undef HAVE_USBMONITOR #endif /**************************************************************************** * Public Functions ****************************************************************************/ /**************************************************************************** * Name: board_app_initialize * * Description: * Perform application specific initialization. This function is never * called directly from application code, but only indirectly via the * (non-standard) boardctl() interface using the command BOARDIOC_INIT. * * CONFIG_BOARDCTL=y : * Called from the NSH library * * CONFIG_BOARD_LATE_INITIALIZE=y, CONFIG_NSH_LIBRARY=y, && * CONFIG_BOARDCTL=n : * Called from board_late_initialize(). * * Input Parameters: * arg - The boardctl() argument is passed to the board_app_initialize() * implementation without modification. The argument has no * meaning to NuttX; the meaning of the argument is a contract * between the board-specific initialization logic and the * matching application logic. The value could be such things as a * mode enumeration value, a set of DIP switch switch settings, a * pointer to configuration data read from a file or serial FLASH, * or whatever you would like to do with it. Every implementation * should accept zero/NULL as a default configuration. * * Returned Value: * Zero (OK) is returned on success; a negated errno value is returned on * any failure to indicate the nature of the failure. * ****************************************************************************/ int board_app_initialize(uintptr_t arg) { int ret; #ifdef CONFIG_STM32_CAN_CHARDRIVER /* Initialize CAN and register the CAN driver. */ ret = stm32_can_setup(); if (ret < 0) { syslog(LOG_ERR, "ERROR: stm32_can_setup failed: %d\n", ret); } #endif #ifdef CONFIG_ADC /* Initialize ADC and register the ADC driver. */ ret = stm32_adc_setup(); if (ret < 0) { syslog(LOG_ERR, "ERROR: stm32_adc_setup failed: %d\n", ret); } #endif #ifdef HAVE_USBHOST /* Initialize USB host operation. stm32_usbhost_initialize() starts a * thread will monitor for USB connection and disconnection events. */ ret = stm32_usbhost_initialize(); if (ret != OK) { syslog(LOG_ERR, "ERROR: Failed to initialize USB host: %d\n", ret); return ret; } #endif #ifdef HAVE_USBMONITOR /* Start the USB Monitor */ ret = usbmonitor_start(); if (ret != OK) { syslog(LOG_ERR, "ERROR: Failed to start USB monitor: %d\n", ret); } #endif UNUSED(ret); return OK; }