summaryrefslogtreecommitdiff
path: root/tinyusb
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-06-04 13:36:18 +0700
committerhathach <[email protected]>2013-06-04 13:36:18 +0700
commit3394b4beaa4f52461a68b837b33383af49dbff37 (patch)
treec2dd9503a087088cb25d0344ccba3b2804eafdf9 /tinyusb
parent4239e1390e9f85b8c117277e4ed79dabe22b2e1f (diff)
re-create ngx4330.h
remove some rom driver dependency on upper layer introduce CAP_DEVICE_ROMDRIVER to overwrite TUSB_CFG_DEVICE_USE_ROM_DRIVER within the lib add support for lpc175x_6x - able to build and blink led on lpcxpresso1769 with device (without any class enabled)
Diffstat (limited to 'tinyusb')
-rw-r--r--tinyusb/class/hid_device.c10
-rw-r--r--tinyusb/class/hid_device.h3
-rw-r--r--tinyusb/device/dcd.h1
-rw-r--r--tinyusb/device/dcd_lpc175x_6x.c13
-rw-r--r--tinyusb/device/dcd_nxp_romdriver.c4
-rw-r--r--tinyusb/hal/hal.h2
-rw-r--r--tinyusb/hal/hal_lpc11uxx.c2
-rw-r--r--tinyusb/hal/hal_lpc13uxx.c2
-rw-r--r--tinyusb/hal/hal_lpc175x_6x.c81
-rw-r--r--tinyusb/hal/hal_lpc175x_6x.h73
-rw-r--r--tinyusb/mcu_capacity.h4
-rw-r--r--tinyusb/tusb_option.h6
12 files changed, 188 insertions, 13 deletions
diff --git a/tinyusb/class/hid_device.c b/tinyusb/class/hid_device.c
index f666b3519..94ec6df68 100644
--- a/tinyusb/class/hid_device.c
+++ b/tinyusb/class/hid_device.c
@@ -48,6 +48,10 @@
#include "hid_device.h"
#include "tusb_descriptors.h"
+#if defined(CAP_DEVICE_ROMDRIVER) && TUSB_CFG_DEVICE_USE_ROM_DRIVER
+#include "device/dcd_nxp_romdriver.h" // TODO remove rom driver dependency
+#endif
+
//--------------------------------------------------------------------+
// MACRO CONSTANT TYPEDEF
//--------------------------------------------------------------------+
@@ -125,14 +129,14 @@ tusb_error_t tusbd_hid_mouse_send_report(tusb_mouse_report_t *p_mouse_report)
//--------------------------------------------------------------------+
// CLASS-USBH API (don't require to verify parameters)
//--------------------------------------------------------------------+
-tusb_error_t hidd_configured(USBD_HANDLE_T hUsb)
+tusb_error_t hidd_configured(void)
{
#if TUSB_CFG_DEVICE_HID_KEYBOARD
- ROM_API->hw->WriteEP(hUsb , HID_KEYBOARD_EP_IN , (uint8_t* ) &hid_keyboard_report , sizeof(tusb_keyboard_report_t) ); // initial packet for IN endpoint , will not work if omitted
+ ROM_API->hw->WriteEP(romdriver_hdl , HID_KEYBOARD_EP_IN , (uint8_t* ) &hid_keyboard_report , sizeof(tusb_keyboard_report_t) ); // initial packet for IN endpoint , will not work if omitted
#endif
#if TUSB_CFG_DEVICE_HID_MOUSE
- ROM_API->hw->WriteEP(hUsb , HID_MOUSE_EP_IN , (uint8_t* ) &hid_mouse_report , sizeof(tusb_mouse_report_t) ); // initial packet for IN endpoint, will not work if omitted
+ ROM_API->hw->WriteEP(romdriver_hdl , HID_MOUSE_EP_IN , (uint8_t* ) &hid_mouse_report , sizeof(tusb_mouse_report_t) ); // initial packet for IN endpoint, will not work if omitted
#endif
return TUSB_ERROR_NONE;
diff --git a/tinyusb/class/hid_device.h b/tinyusb/class/hid_device.h
index b4d980286..5712a9254 100644
--- a/tinyusb/class/hid_device.h
+++ b/tinyusb/class/hid_device.h
@@ -64,10 +64,9 @@ tusb_error_t tusbd_hid_mouse_send_report(tusb_mouse_report_t *p_mouse_report);
// USBD-CLASS DRIVER API
//--------------------------------------------------------------------+
#ifdef _TINY_USB_SOURCE_FILE_
-#include "device/romdriver/mw_usbd_rom_api.h" // TODO remove rom driver dependency
tusb_error_t hidd_init(tusb_descriptor_interface_t const * p_interface_desc, uint16_t *p_length);
-tusb_error_t hidd_configured(USBD_HANDLE_T hUsb);
+tusb_error_t hidd_configured(void);
#endif
diff --git a/tinyusb/device/dcd.h b/tinyusb/device/dcd.h
index 10450dc54..be139b713 100644
--- a/tinyusb/device/dcd.h
+++ b/tinyusb/device/dcd.h
@@ -56,7 +56,6 @@
#endif
#include "common/common.h"
-#include "dcd_nxp_romdriver.h"
tusb_error_t dcd_init(void) ATTR_WARN_UNUSED_RESULT;
tusb_error_t dcd_controller_reset(uint8_t coreid) ATTR_WARN_UNUSED_RESULT;
diff --git a/tinyusb/device/dcd_lpc175x_6x.c b/tinyusb/device/dcd_lpc175x_6x.c
index 8d7717e56..47b7a7043 100644
--- a/tinyusb/device/dcd_lpc175x_6x.c
+++ b/tinyusb/device/dcd_lpc175x_6x.c
@@ -59,5 +59,18 @@
//--------------------------------------------------------------------+
// IMPLEMENTATION
//--------------------------------------------------------------------+
+void dcd_isr(uint8_t coreid)
+{
+}
+
+tusb_error_t dcd_init(void)
+{
+ return TUSB_ERROR_NONE;
+}
+
+void dcd_controller_connect(uint8_t coreid)
+{
+
+}
#endif
diff --git a/tinyusb/device/dcd_nxp_romdriver.c b/tinyusb/device/dcd_nxp_romdriver.c
index c0fcd64c0..ccb69cf3c 100644
--- a/tinyusb/device/dcd_nxp_romdriver.c
+++ b/tinyusb/device/dcd_nxp_romdriver.c
@@ -38,7 +38,7 @@
#include "tusb_option.h"
-#if MODE_DEVICE_SUPPORTED && TUSB_CFG_DEVICE_USE_ROM_DRIVER
+#if MODE_DEVICE_SUPPORTED && (defined(CAP_DEVICE_ROMDRIVER) && TUSB_CFG_DEVICE_USE_ROM_DRIVER)
#define _TINY_USB_SOURCE_FILE_
@@ -82,7 +82,7 @@ ErrorCode_t USB_Configure_Event (USBD_HANDLE_T hUsb)
usbd_info.state = TUSB_DEVICE_STATE_CONFIGURED;
#if DEVICE_CLASS_HID
- ASSERT( TUSB_ERROR_NONE == hidd_configured(hUsb), ERR_FAILED );
+ ASSERT( TUSB_ERROR_NONE == hidd_configured(), ERR_FAILED );
#endif
#if TUSB_CFG_DEVICE_CDC
diff --git a/tinyusb/hal/hal.h b/tinyusb/hal/hal.h
index 98c1c7e46..6817baf3a 100644
--- a/tinyusb/hal/hal.h
+++ b/tinyusb/hal/hal.h
@@ -65,6 +65,8 @@
#include "hal_lpc13uxx.h"
#elif MCU == MCU_LPC43XX
#include "hal_lpc43xx.h"
+#elif MCU == MCU_LPC175X_6X
+ #include "hal_lpc175x_6x.h"
#else
#error MCU is not defined or supported yet
#endif
diff --git a/tinyusb/hal/hal_lpc11uxx.c b/tinyusb/hal/hal_lpc11uxx.c
index a6e3312c4..4395a705c 100644
--- a/tinyusb/hal/hal_lpc11uxx.c
+++ b/tinyusb/hal/hal_lpc11uxx.c
@@ -41,7 +41,7 @@
#if MCU == MCU_LPC11UXX
-tusb_error_t hal_init()
+tusb_error_t hal_init(void)
{
// TODO remove magic number
/* Enable AHB clock to the USB block and USB RAM. */
diff --git a/tinyusb/hal/hal_lpc13uxx.c b/tinyusb/hal/hal_lpc13uxx.c
index 6f8d72fff..29128eec4 100644
--- a/tinyusb/hal/hal_lpc13uxx.c
+++ b/tinyusb/hal/hal_lpc13uxx.c
@@ -41,7 +41,7 @@
#if MCU == MCU_LPC13UXX
-tusb_error_t hal_init()
+tusb_error_t hal_init(void)
{
// TODO remove magic number
/* Enable AHB clock to the USB block and USB RAM. */
diff --git a/tinyusb/hal/hal_lpc175x_6x.c b/tinyusb/hal/hal_lpc175x_6x.c
new file mode 100644
index 000000000..82ba772d1
--- /dev/null
+++ b/tinyusb/hal/hal_lpc175x_6x.c
@@ -0,0 +1,81 @@
+/**************************************************************************/
+/*!
+ @file hal_lpc175x_6x.c
+ @author hathach (tinyusb.org)
+
+ @section LICENSE
+
+ Software License Agreement (BSD License)
+
+ Copyright (c) 2013, hathach (tinyusb.org)
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the copyright holders nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This file is part of the tinyusb stack.
+*/
+/**************************************************************************/
+
+#include "tusb_option.h"
+
+#if MCU == MCU_LPC175X_6X
+
+//--------------------------------------------------------------------+
+// INCLUDE
+//--------------------------------------------------------------------+
+#include "common/common.h"
+#include "hal.h"
+
+//--------------------------------------------------------------------+
+// IMPLEMENTATION
+//--------------------------------------------------------------------+
+tusb_error_t hal_init(void)
+{
+ // TODO remove magic number
+ /* Enable AHB clock to the USB block and USB RAM. */
+// LPC_SYSCON->SYSAHBCLKCTRL |= ((0x1<<14) | (0x1<<27));
+
+ LPC_PINCON->PINSEL1 &= ~((3<<26)|(3<<28)); /* P0.29 D+, P0.30 D- */
+ LPC_PINCON->PINSEL1 |= ((1<<26)|(1<<28)); /* PINSEL1 26.27, 28.29 = 01 */
+
+// LPC_PINCON->PINSEL3 &= ~(3<<6); TODO HOST
+// LPC_PINCON->PINSEL3 |= (2<<6);
+
+ LPC_SC->PCONP |= (1UL<<31); /* USB PCLK -> enable USB Per.*/
+
+ // DEVICE mode
+ LPC_USB->USBClkCtrl = 0x12; /* Dev, PortSel, AHB clock enable */
+ while ((LPC_USB->USBClkSt & 0x12) != 0x12);
+
+ /* Pull-down is needed, or internally, VBUS will be floating. This is to
+ address the wrong status in VBUSDebouncing bit in CmdStatus register. */
+
+return TUSB_ERROR_NONE;
+}
+
+void USB_IRQHandler(void)
+{
+ tusb_isr(0);
+}
+
+#endif
diff --git a/tinyusb/hal/hal_lpc175x_6x.h b/tinyusb/hal/hal_lpc175x_6x.h
new file mode 100644
index 000000000..e57048e14
--- /dev/null
+++ b/tinyusb/hal/hal_lpc175x_6x.h
@@ -0,0 +1,73 @@
+/**************************************************************************/
+/*!
+ @file hal_lpc175x_6x.h
+ @author hathach (tinyusb.org)
+
+ @section LICENSE
+
+ Software License Agreement (BSD License)
+
+ Copyright (c) 2013, hathach (tinyusb.org)
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the copyright holders nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This file is part of the tinyusb stack.
+*/
+/**************************************************************************/
+
+/** \ingroup TBD
+ * \defgroup TBD
+ * \brief TBD
+ *
+ * @{
+ */
+
+#ifndef _TUSB_HAL_LPC175X_6X_H_
+#define _TUSB_HAL_LPC175X_6X_H_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#include "LPC17xx.h"
+
+static inline void hal_interrupt_enable(uint8_t controller_id)
+{
+ (void) controller_id; // discard compiler's warning
+ NVIC_EnableIRQ(USB_IRQn);
+}
+
+static inline void hal_interrupt_disable(uint8_t controller_id)
+{
+ (void) controller_id; // discard compiler's warning
+ NVIC_DisableIRQ(USB_IRQn);
+}
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* _TUSB_HAL_LPC175X_6X_H_ */
+
+/** @} */
diff --git a/tinyusb/mcu_capacity.h b/tinyusb/mcu_capacity.h
index 7865b5870..dd5ea01e8 100644
--- a/tinyusb/mcu_capacity.h
+++ b/tinyusb/mcu_capacity.h
@@ -72,6 +72,10 @@
#define CAP_MODE_HOST
#endif
+#if MCU == MCU_LPC43XX || MCU == MCU_LPC18XX || MCU == MCU_LPC11UXX || MCU == MCU_LPC13UXX
+ #define CAP_DEVICE_ROMDRIVER
+#endif
+
//--------------------------------------------------------------------+
// Validation
//--------------------------------------------------------------------+
diff --git a/tinyusb/tusb_option.h b/tinyusb/tusb_option.h
index add373a1f..f2e693b9a 100644
--- a/tinyusb/tusb_option.h
+++ b/tinyusb/tusb_option.h
@@ -155,11 +155,11 @@
//--------------------------------------------------------------------+
// DEVICE OPTIONS
-//--------------------------------------------------------------------+
+//------------------------- -------------------------------------------+
#if MODE_DEVICE_SUPPORTED
-#if !TUSB_CFG_DEVICE_USE_ROM_DRIVER
- #error only rom driver is supported now
+#if defined(CAP_DEVICE_ROMDRIVER) && !TUSB_CFG_DEVICE_USE_ROM_DRIVER
+ #error only rom driver for these mcu are supported now
#endif
#define DEVICE_CLASS_HID ( TUSB_CFG_DEVICE_HID_KEYBOARD + TUSB_CFG_DEVICE_HID_MOUSE + TUSB_CFG_DEVICE_HID_GENERIC )