From 25f6cee73ba1a8a1f75456a352bcb864fcad92b7 Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 18 Jan 2013 11:49:51 +0700 Subject: add DEVICE_ROM_DRIVER_ADDR macro in hal to point to rom driver add add TUSB_ATTR_RAM_SECTION in tinyusb_config.h to abtract usb ram placement to application remove power_api.h (mcu dependency) --- tinyusb/class/cdc.c | 2 +- tinyusb/device/dcd.c | 3 +- tinyusb/device/dcd.h | 5 +- tinyusb/device/romdriver/mw_usbd_rom_api.h | 1 - tinyusb/device/romdriver/power_api.h | 88 ------------------------------ tinyusb/hal/hal_lpc11uxx.h | 3 + tinyusb/hal/hal_lpc13uxx.h | 1 + tinyusb/hal/hal_lpc43xx.h | 7 +-- tinyusb/tusb_option.h | 14 ++++- 9 files changed, 22 insertions(+), 102 deletions(-) delete mode 100644 tinyusb/device/romdriver/power_api.h (limited to 'tinyusb') diff --git a/tinyusb/class/cdc.c b/tinyusb/class/cdc.c index 5fc1cd5fd..0c59b0186 100644 --- a/tinyusb/class/cdc.c +++ b/tinyusb/class/cdc.c @@ -320,7 +320,7 @@ TUSB_Error_t tusb_cdc_configured(USBD_HANDLE_T hUsb) fifo_init (&ffTX, qBuffer[0], CDC_BUFFER_SIZE, false, USB0_IRQn); // TODO USB1 TX is non-overwritable fifo_init (&ffRX, qBuffer[1], CDC_BUFFER_SIZE, true, USB0_IRQn); // RX is overwritable #else - #error No MCU defined" // TODO asbtract MCU + #error No MCU defined // TODO asbtract MCU #endif return tERROR_NONE; diff --git a/tinyusb/device/dcd.c b/tinyusb/device/dcd.c index de9e4f07d..3fabf0e51 100644 --- a/tinyusb/device/dcd.c +++ b/tinyusb/device/dcd.c @@ -41,11 +41,10 @@ // TODO refractor later #include "descriptors.h" -#include // TODO dcd abstract later #define USB_ROM_SIZE (1024*2) -uint8_t usb_RomDriver_buffer[USB_ROM_SIZE] ATTR_ALIGNED(2048) __DATA(RAM2); +uint8_t usb_RomDriver_buffer[USB_ROM_SIZE] ATTR_ALIGNED(2048) TUSB_ATTR_RAM_SECTION; USBD_HANDLE_T g_hUsb; static volatile bool isConfigured = false; diff --git a/tinyusb/device/dcd.h b/tinyusb/device/dcd.h index 65eb80da4..89eb3fef4 100644 --- a/tinyusb/device/dcd.h +++ b/tinyusb/device/dcd.h @@ -58,9 +58,8 @@ #include "common/common.h" #ifdef DEVICE_ROMDRIVER -#include "romdriver/mw_usbd_rom_api.h" -#include "romdriver/power_api.h" -#define USBD_API ((*(ROM **)(0x1FFF1FF8))->pUSBD) // TODO HAL + #include "romdriver/mw_usbd_rom_api.h" + #define USBD_API ((USBD_API_T*) DEVICE_ROM_DRIVER_ADDR) #endif diff --git a/tinyusb/device/romdriver/mw_usbd_rom_api.h b/tinyusb/device/romdriver/mw_usbd_rom_api.h index aa18838fe..4ece16f2b 100644 --- a/tinyusb/device/romdriver/mw_usbd_rom_api.h +++ b/tinyusb/device/romdriver/mw_usbd_rom_api.h @@ -39,7 +39,6 @@ #include "mw_usbd_dfuuser.h" #include "mw_usbd_hiduser.h" #include "mw_usbd_cdcuser.h" -//#include "power_api.h" /** \brief Main USBD API functions structure. * \ingroup Group_USBD diff --git a/tinyusb/device/romdriver/power_api.h b/tinyusb/device/romdriver/power_api.h deleted file mode 100644 index f95021774..000000000 --- a/tinyusb/device/romdriver/power_api.h +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** - * $Id:: power_api.h 6249 2011-01-25 19:23:47Z usb01267 $ - * Project: NXP LPC13Uxx software example - * - * Description: - * Power API Header File for NXP LPC13Uxx Device Series - * - **************************************************************************** - * Software that is described herein is for illustrative purposes only - * which provides customers with programming information regarding the - * products. This software is supplied "AS IS" without any warranties. - * NXP Semiconductors assumes no responsibility or liability for the - * use of the software, conveys no license or title under any patent, - * copyright, or mask work right to the product. NXP Semiconductors - * reserves the right to make changes in the software without - * notification. NXP Semiconductors also make no representation or - * warranty that such application will be suitable for the specified - * use without further testing or modification. -****************************************************************************/ -#ifndef __LPC13UXX_POWER_API_H__ -#define __LPC13UXX_POWER_API_H__ - -#ifdef __cplusplus - extern "C" { -#endif - -#define PWRROMD_PRESENT - -#define USBROMD_PRESENT - -#ifdef USBROMD_PRESENT -#include "mw_usbd_rom_api.h" -#endif - -typedef struct _PWRD { - void (*set_pll)(unsigned int cmd[], unsigned int resp[]); - void (*set_power)(unsigned int cmd[], unsigned int resp[]); -} PWRD; - -typedef struct _ROM { -#ifdef USBROMD_PRESENT - const USBD_API_T * pUSBD; -#else - const unsigned p_usbd; -#endif /* USBROMD_PRESENT */ - const unsigned p_clib; - const unsigned p_cand; -#ifdef PWRROMD_PRESENT - const PWRD * pPWRD; -#else - const unsigned p_pwrd; -#endif /* PWRROMD_PRESENT */ - const unsigned p_dev1; - const unsigned p_dev2; - const unsigned p_dev3; - const unsigned p_dev4; -} ROM; - -//PLL setup related definitions -#define CPU_FREQ_EQU 0 //main PLL freq must be equal to the specified -#define CPU_FREQ_LTE 1 //main PLL freq must be less than or equal the specified -#define CPU_FREQ_GTE 2 //main PLL freq must be greater than or equal the specified -#define CPU_FREQ_APPROX 3 //main PLL freq must be as close as possible the specified - -#define PLL_CMD_SUCCESS 0 //PLL setup successfully found -#define PLL_INVALID_FREQ 1 //specified freq out of range (either input or output) -#define PLL_INVALID_MODE 2 //invalid mode (see above for valid) specified -#define PLL_FREQ_NOT_FOUND 3 //specified freq not found under specified conditions -#define PLL_NOT_LOCKED 4 //PLL not locked => no changes to the PLL setup - -//power setup elated definitions -#define PARAM_DEFAULT 0 //default power settings (voltage regulator, flash interface) -#define PARAM_CPU_PERFORMANCE 1 //setup for maximum CPU performance (higher current, more computation) -#define PARAM_EFFICIENCY 2 //balanced setting (power vs CPU performance) -#define PARAM_LOW_CURRENT 3 //lowest active current, lowest CPU performance - -#define PARAM_CMD_SUCCESS 0 //power setting successfully found -#define PARAM_INVALID_FREQ 1 //specified freq out of range (=0 or > 50 MHz) -#define PARAM_INVALID_MODE 2 //specified mode not valid (see above for valid) - -#define MAX_CLOCK_KHZ_PARAM 50000 - -#ifdef __cplusplus -} -#endif - -#endif /* __LPC13UXX_POWER_API_H__ */ - diff --git a/tinyusb/hal/hal_lpc11uxx.h b/tinyusb/hal/hal_lpc11uxx.h index 3d44d8742..35d600e25 100644 --- a/tinyusb/hal/hal_lpc11uxx.h +++ b/tinyusb/hal/hal_lpc11uxx.h @@ -55,6 +55,9 @@ #define DEVICE_ROMDRIVER #define DEVICE_ROM_REG_BASE LPC_USB_BASE +#define DEVICE_ROM_DRIVER_ADDR 0x1FFF1FF8 + + #ifdef __cplusplus extern "C" { diff --git a/tinyusb/hal/hal_lpc13uxx.h b/tinyusb/hal/hal_lpc13uxx.h index b24d774b6..78e71c9a1 100644 --- a/tinyusb/hal/hal_lpc13uxx.h +++ b/tinyusb/hal/hal_lpc13uxx.h @@ -55,6 +55,7 @@ #define DEVICE_ROMDRIVER #define DEVICE_ROM_REG_BASE LPC_USB_BASE +#define DEVICE_ROM_DRIVER_ADDR 0x1FFF1FF8 #ifdef __cplusplus extern "C" { diff --git a/tinyusb/hal/hal_lpc43xx.h b/tinyusb/hal/hal_lpc43xx.h index 6fba59dfb..d2be81906 100644 --- a/tinyusb/hal/hal_lpc43xx.h +++ b/tinyusb/hal/hal_lpc43xx.h @@ -60,17 +60,16 @@ #define DEVICE_ROMDRIVER #define DEVICE_ROM_REG_BASE LPC_USB0_BASE // TODO USB1 +#define DEVICE_ROM_DRIVER_ADDR 0x1040011C static inline void hal_interrupt_enable() { - // TODO support multiple controller later - NVIC_EnableIRQ(USB0_IRQn); + NVIC_EnableIRQ(USB0_IRQn); // TODO USB1 } static inline void hal_interrupt_disable() { - // TODO support multiple controller later - NVIC_DisableIRQ(USB0_IRQn); + NVIC_DisableIRQ(USB0_IRQn); // TODO USB1 } #ifdef __cplusplus diff --git a/tinyusb/tusb_option.h b/tinyusb/tusb_option.h index 250f83307..0d321f08e 100644 --- a/tinyusb/tusb_option.h +++ b/tinyusb/tusb_option.h @@ -55,12 +55,13 @@ /// define this symbol will make tinyusb look for external configure file #ifndef _TEST_ // TODO allow configurable name -#include "tusb_config.h" + #include "tusb_config.h" #endif -/// 0: no debug infor 3: most debug infor provided +/// 0: no debug information 3: most debug information provided #ifndef TUSB_CFG_DEBUG -#define TUSB_CFG_DEBUG 3 + #define TUSB_CFG_DEBUG 3 + #warning TUSB_CFG_DEBUG is not defined, default value is 3 #endif /// Enable Host Support @@ -69,6 +70,13 @@ /// Enable Device Support //#define TUSB_CFG_DEVICE +/// USB RAM Section Placement, MCU's usb controller often has limited access to specific RAM region. This will be used to declare internal variables as follow: +/// uint8_t tinyusb_data[10] TUSB_ATTR_RAM_SECTION; +/// if your mcu's usb controller has no such limit, define TUSB_ATTR_RAM_SECTION as empty macro. +#ifndef TUSB_ATTR_RAM_SECTION + #error TUSB_ATTR_RAM_SECTION is not defined, needed to place data in accessible RAM for usb controller +#endif + #define DEVICE_CLASS_HID ( (defined TUSB_CFG_DEVICE_HID_KEYBOARD) || (defined TUSB_CFG_DEVICE_HID_MOUSE) ) #define HOST_EHCI -- cgit v1.3.1