diff --git a/demos/bsp/boards/embedded_artists/board_ea4357.c b/demos/bsp/boards/embedded_artists/board_ea4357.c index 97e2ff949..0e2854e53 100644 --- a/demos/bsp/boards/embedded_artists/board_ea4357.c +++ b/demos/bsp/boards/embedded_artists/board_ea4357.c @@ -57,6 +57,13 @@ void board_init(void) // USB1 Power: EA4357 channel A U20 is enabled by SJ5 connected to pad 1-2, no more action required + // TODO Device only USB0 + // 1.5Kohm pull-up resistor is needed on the USB DP data signal. GPIO28 (base), P9_5 (LPC4357) controls + scu_pinmux(0x9, 5, MD_PUP|MD_EZI|MD_ZI, FUNC4); // GPIO5[18] + GPIO_SetDir(5, BIT_(18), 1); // output + GPIO_ClearValue(5, BIT_(18)); + + // init I2C and set up MIC2555 to have 15k pull-down on USB1 D+ & D- I2C_Init(LPC_I2C0, 100000); I2C_Cmd(LPC_I2C0, ENABLE); diff --git a/tinyusb/device/dcd.h b/tinyusb/device/dcd.h index c4b98d990..10450dc54 100644 --- a/tinyusb/device/dcd.h +++ b/tinyusb/device/dcd.h @@ -58,8 +58,6 @@ #include "common/common.h" #include "dcd_nxp_romdriver.h" -#define ROM_API ( * (*((USBD_API_T***) 0x1FFF1FF8)) ) // TODO remove rom API dependency - tusb_error_t dcd_init(void) ATTR_WARN_UNUSED_RESULT; tusb_error_t dcd_controller_reset(uint8_t coreid) ATTR_WARN_UNUSED_RESULT; void dcd_controller_connect(uint8_t coreid); diff --git a/tinyusb/device/dcd_nxp_romdriver.c b/tinyusb/device/dcd_nxp_romdriver.c index 2aa9201be..9fa75087d 100644 --- a/tinyusb/device/dcd_nxp_romdriver.c +++ b/tinyusb/device/dcd_nxp_romdriver.c @@ -153,6 +153,7 @@ tusb_error_t dcd_init(void) &membase , &memsize) ); #endif + hal_interrupt_enable(0); ROM_API->hw->Connect(g_hUsb, 1); return TUSB_ERROR_NONE; @@ -172,7 +173,7 @@ tusb_error_t dcd_controller_reset(uint8_t coreid) void dcd_controller_connect(uint8_t coreid) { - ROM_API->hw->Connect(g_hUsb, 1); +// ROM_API->hw->Connect(g_hUsb, 1); } void dcd_isr(uint8_t coreid) diff --git a/tinyusb/device/dcd_nxp_romdriver.h b/tinyusb/device/dcd_nxp_romdriver.h index 616240151..28e7e2989 100644 --- a/tinyusb/device/dcd_nxp_romdriver.h +++ b/tinyusb/device/dcd_nxp_romdriver.h @@ -54,8 +54,10 @@ #if (MCU == MCU_LPC18XX) || (MCU == MCU_LPC43XX) #include "dcd_lpc18xx_lpc43xx.h" + #define ROM_API ( * ((USBD_API_T**) DEVICE_ROM_DRIVER_ADDR) ) #elif (MCU == MCU_LPC13UXX) #include "dcd_lpc13xx.h" + #define ROM_API ( * (*((USBD_API_T***) DEVICE_ROM_DRIVER_ADDR)) ) #else #error forgot something, thach ? #endif diff --git a/tinyusb/hal/hal_lpc43xx.c b/tinyusb/hal/hal_lpc43xx.c index 1284391e5..6b23ca9a2 100644 --- a/tinyusb/hal/hal_lpc43xx.c +++ b/tinyusb/hal/hal_lpc43xx.c @@ -70,8 +70,10 @@ tusb_error_t hal_init(void) LPC_USB0->USBMODE_H = LPC43XX_USBMODE_HOST | (LPC43XX_USBMODE_VBUS_HIGH << 5); #else // TODO OTG // dcd_controller_reset(0); - LPC_USB0->USBMODE_D = LPC43XX_USBMODE_DEVICE; - dcd_controller_connect(0); +// LPC_USB0->USBMODE_D = LPC43XX_USBMODE_DEVICE; +// LPC_USB0->OTGSC = (1<<3) | (1<<0) /*| (1<<16)| (1<<24)| (1<<25)| (1<<26)| (1<<27)| (1<<28)| (1<<29)| (1<<30)*/; +// LPC_USB0->PORTSC1_D |= (1<<24); // force full speed +// dcd_controller_connect(0); #endif hal_interrupt_enable(0); @@ -104,18 +106,18 @@ tusb_error_t hal_init(void) return TUSB_ERROR_NONE; } +#if TUSB_CFG_CONTROLLER0_MODE void USB0_IRQHandler(void) { -#if TUSB_CFG_CONTROLLER0_MODE tusb_isr(0); -#endif } +#endif +#if TUSB_CFG_CONTROLLER1_MODE void USB1_IRQHandler(void) { -#if TUSB_CFG_CONTROLLER1_MODE tusb_isr(1); -#endif } +#endif #endif