From 746d61742f25b5ba4b2e486ab8f7961c7a1f928f Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 2 Mar 2018 18:24:22 +0700 Subject: renaming to hal_mcu --- demos/device/device_os_none/.cproject | 12 +- hw/mcu/nxp/lpc11uxx/hal_mcu/hal_lpc11uxx.c | 81 ++++++++++++++ hw/mcu/nxp/lpc11uxx/hal_mcu/hal_mcu.h | 53 +++++++++ hw/mcu/nxp/lpc11uxx/usb/hal_lpc11uxx.c | 81 -------------- hw/mcu/nxp/lpc11uxx/usb/hal_mcu.h | 53 --------- hw/mcu/nxp/lpc13uxx/hal_mcu/hal_lpc13uxx.c | 83 ++++++++++++++ hw/mcu/nxp/lpc13uxx/hal_mcu/hal_mcu.h | 54 +++++++++ hw/mcu/nxp/lpc13uxx/usb/hal_lpc13uxx.c | 83 -------------- hw/mcu/nxp/lpc13uxx/usb/hal_mcu.h | 54 --------- hw/mcu/nxp/lpc175x_6x/hal_mcu/hal_lpc175x_6x.c | 108 ++++++++++++++++++ hw/mcu/nxp/lpc175x_6x/hal_mcu/hal_mcu.h | 55 ++++++++++ hw/mcu/nxp/lpc175x_6x/usb/hal_lpc175x_6x.c | 108 ------------------ hw/mcu/nxp/lpc175x_6x/usb/hal_mcu.h | 55 ---------- hw/mcu/nxp/lpc43xx/hal_mcu/hal_lpc43xx.c | 146 +++++++++++++++++++++++++ hw/mcu/nxp/lpc43xx/hal_mcu/hal_mcu.h | 56 ++++++++++ hw/mcu/nxp/lpc43xx/usb/hal_lpc43xx.c | 146 ------------------------- hw/mcu/nxp/lpc43xx/usb/hal_mcu.h | 56 ---------- 17 files changed, 642 insertions(+), 642 deletions(-) create mode 100644 hw/mcu/nxp/lpc11uxx/hal_mcu/hal_lpc11uxx.c create mode 100644 hw/mcu/nxp/lpc11uxx/hal_mcu/hal_mcu.h delete mode 100644 hw/mcu/nxp/lpc11uxx/usb/hal_lpc11uxx.c delete mode 100644 hw/mcu/nxp/lpc11uxx/usb/hal_mcu.h create mode 100644 hw/mcu/nxp/lpc13uxx/hal_mcu/hal_lpc13uxx.c create mode 100644 hw/mcu/nxp/lpc13uxx/hal_mcu/hal_mcu.h delete mode 100644 hw/mcu/nxp/lpc13uxx/usb/hal_lpc13uxx.c delete mode 100644 hw/mcu/nxp/lpc13uxx/usb/hal_mcu.h create mode 100644 hw/mcu/nxp/lpc175x_6x/hal_mcu/hal_lpc175x_6x.c create mode 100644 hw/mcu/nxp/lpc175x_6x/hal_mcu/hal_mcu.h delete mode 100644 hw/mcu/nxp/lpc175x_6x/usb/hal_lpc175x_6x.c delete mode 100644 hw/mcu/nxp/lpc175x_6x/usb/hal_mcu.h create mode 100644 hw/mcu/nxp/lpc43xx/hal_mcu/hal_lpc43xx.c create mode 100644 hw/mcu/nxp/lpc43xx/hal_mcu/hal_mcu.h delete mode 100644 hw/mcu/nxp/lpc43xx/usb/hal_lpc43xx.c delete mode 100644 hw/mcu/nxp/lpc43xx/usb/hal_mcu.h diff --git a/demos/device/device_os_none/.cproject b/demos/device/device_os_none/.cproject index 7789f9a3d..5f1d07668 100644 --- a/demos/device/device_os_none/.cproject +++ b/demos/device/device_os_none/.cproject @@ -86,7 +86,7 @@ - + @@ -180,7 +180,7 @@ - + @@ -284,7 +284,7 @@ - + @@ -377,7 +377,7 @@ - + @@ -474,7 +474,7 @@ - + @@ -567,7 +567,7 @@ - + diff --git a/hw/mcu/nxp/lpc11uxx/hal_mcu/hal_lpc11uxx.c b/hw/mcu/nxp/lpc11uxx/hal_mcu/hal_lpc11uxx.c new file mode 100644 index 000000000..066679a27 --- /dev/null +++ b/hw/mcu/nxp/lpc11uxx/hal_mcu/hal_lpc11uxx.c @@ -0,0 +1,81 @@ +/**************************************************************************/ +/*! + @file hal_lpc11uxx.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 "common/common.h" +#include "hal.h" + +#if TUSB_CFG_MCU == MCU_LPC11UXX + +void hal_usb_int_enable(uint8_t coreid) +{ + (void) coreid; // discard compiler's warning + NVIC_EnableIRQ(USB_IRQn); +} + +void hal_usb_int_disable(uint8_t coreid) +{ + (void) coreid; // discard compiler's warning + NVIC_DisableIRQ(USB_IRQn); +} + +bool 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_SYSCON->PDRUNCFG &= ~( BIT_(8) | BIT_(10) ); // enable USB PLL & USB transceiver + + /* Pull-down is needed, or internally, VBUS will be floating. This is to + address the wrong status in VBUSDebouncing bit in CmdStatus register. */ + // set PIO0_3 as USB_VBUS + LPC_IOCON->PIO0_3 &= ~0x1F; + LPC_IOCON->PIO0_3 |= (0x01<<0) | (1 << 3); /* Secondary function VBUS */ + + // set PIO0_6 as usb connect + LPC_IOCON->PIO0_6 &= ~0x07; + LPC_IOCON->PIO0_6 |= (0x01<<0); /* Secondary function SoftConn */ + + return true; +} + +void USB_IRQHandler(void) +{ + tusb_isr(0); +} + +#endif diff --git a/hw/mcu/nxp/lpc11uxx/hal_mcu/hal_mcu.h b/hw/mcu/nxp/lpc11uxx/hal_mcu/hal_mcu.h new file mode 100644 index 000000000..7e17fe53a --- /dev/null +++ b/hw/mcu/nxp/lpc11uxx/hal_mcu/hal_mcu.h @@ -0,0 +1,53 @@ +/**************************************************************************/ +/*! + @file hal_lpc11uxx.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. +*/ +/**************************************************************************/ + +#ifndef _TUSB_HAL_MCU_H_ +#define _TUSB_HAL_MCU_H_ + +#include "LPC11Uxx.h" + +#ifdef __cplusplus + extern "C" { +#endif + + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_HAL_MCU_H_ */ diff --git a/hw/mcu/nxp/lpc11uxx/usb/hal_lpc11uxx.c b/hw/mcu/nxp/lpc11uxx/usb/hal_lpc11uxx.c deleted file mode 100644 index 066679a27..000000000 --- a/hw/mcu/nxp/lpc11uxx/usb/hal_lpc11uxx.c +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************/ -/*! - @file hal_lpc11uxx.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 "common/common.h" -#include "hal.h" - -#if TUSB_CFG_MCU == MCU_LPC11UXX - -void hal_usb_int_enable(uint8_t coreid) -{ - (void) coreid; // discard compiler's warning - NVIC_EnableIRQ(USB_IRQn); -} - -void hal_usb_int_disable(uint8_t coreid) -{ - (void) coreid; // discard compiler's warning - NVIC_DisableIRQ(USB_IRQn); -} - -bool 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_SYSCON->PDRUNCFG &= ~( BIT_(8) | BIT_(10) ); // enable USB PLL & USB transceiver - - /* Pull-down is needed, or internally, VBUS will be floating. This is to - address the wrong status in VBUSDebouncing bit in CmdStatus register. */ - // set PIO0_3 as USB_VBUS - LPC_IOCON->PIO0_3 &= ~0x1F; - LPC_IOCON->PIO0_3 |= (0x01<<0) | (1 << 3); /* Secondary function VBUS */ - - // set PIO0_6 as usb connect - LPC_IOCON->PIO0_6 &= ~0x07; - LPC_IOCON->PIO0_6 |= (0x01<<0); /* Secondary function SoftConn */ - - return true; -} - -void USB_IRQHandler(void) -{ - tusb_isr(0); -} - -#endif diff --git a/hw/mcu/nxp/lpc11uxx/usb/hal_mcu.h b/hw/mcu/nxp/lpc11uxx/usb/hal_mcu.h deleted file mode 100644 index 7e17fe53a..000000000 --- a/hw/mcu/nxp/lpc11uxx/usb/hal_mcu.h +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************/ -/*! - @file hal_lpc11uxx.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. -*/ -/**************************************************************************/ - -#ifndef _TUSB_HAL_MCU_H_ -#define _TUSB_HAL_MCU_H_ - -#include "LPC11Uxx.h" - -#ifdef __cplusplus - extern "C" { -#endif - - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_HAL_MCU_H_ */ diff --git a/hw/mcu/nxp/lpc13uxx/hal_mcu/hal_lpc13uxx.c b/hw/mcu/nxp/lpc13uxx/hal_mcu/hal_lpc13uxx.c new file mode 100644 index 000000000..9de859e6f --- /dev/null +++ b/hw/mcu/nxp/lpc13uxx/hal_mcu/hal_lpc13uxx.c @@ -0,0 +1,83 @@ +/**************************************************************************/ +/*! + @file hal_lpc13uxx.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 "common/common.h" +#include "hal.h" + +#if TUSB_CFG_MCU == MCU_LPC13UXX + +void hal_usb_int_enable(uint8_t coreid) +{ + (void) coreid; // discard compiler's warning + NVIC_EnableIRQ(USB_IRQ_IRQn); +} + +void hal_usb_int_disable(uint8_t coreid) +{ + (void) coreid; // discard compiler's warning + NVIC_DisableIRQ(USB_IRQ_IRQn); +} + +bool hal_init(void) +{ + // TODO remove magic number + LPC_SYSCON->SYSAHBCLKCTRL |= ((0x1<<14) | (0x1<<27)); /* Enable AHB clock to the USB block and USB RAM. */ + LPC_SYSCON->PDRUNCFG &= ~( BIT_(8) | BIT_(10) ); // enable USB PLL & USB transceiver + + /* Pull-down is needed, or internally, VBUS will be floating. This is to + address the wrong status in VBUSDebouncing bit in CmdStatus register. */ + // set PIO0_3 as USB_VBUS + LPC_IOCON->PIO0_3 &= ~0x1F; + LPC_IOCON->PIO0_3 |= (0x01<<0) | (1 << 3); /* Secondary function VBUS */ + + // set PIO0_6 as usb connect + LPC_IOCON->PIO0_6 &= ~0x07; + LPC_IOCON->PIO0_6 |= (0x01<<0); /* Secondary function SoftConn */ + + return true; +} + +void USB_IRQHandler(void) +{ + tusb_isr(0); +} + + + + +#endif diff --git a/hw/mcu/nxp/lpc13uxx/hal_mcu/hal_mcu.h b/hw/mcu/nxp/lpc13uxx/hal_mcu/hal_mcu.h new file mode 100644 index 000000000..e38b48199 --- /dev/null +++ b/hw/mcu/nxp/lpc13uxx/hal_mcu/hal_mcu.h @@ -0,0 +1,54 @@ +/**************************************************************************/ +/*! + @file hal_lpc13uxx.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. +*/ +/**************************************************************************/ + +#ifndef _TUSB_HAL_MCU_H_ +#define _TUSB_HAL_MCU_H_ + +#include "LPC13Uxx.h" + +#ifdef __cplusplus + extern "C" { +#endif + + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_HAL_MCU_H_ */ + diff --git a/hw/mcu/nxp/lpc13uxx/usb/hal_lpc13uxx.c b/hw/mcu/nxp/lpc13uxx/usb/hal_lpc13uxx.c deleted file mode 100644 index 9de859e6f..000000000 --- a/hw/mcu/nxp/lpc13uxx/usb/hal_lpc13uxx.c +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************/ -/*! - @file hal_lpc13uxx.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 "common/common.h" -#include "hal.h" - -#if TUSB_CFG_MCU == MCU_LPC13UXX - -void hal_usb_int_enable(uint8_t coreid) -{ - (void) coreid; // discard compiler's warning - NVIC_EnableIRQ(USB_IRQ_IRQn); -} - -void hal_usb_int_disable(uint8_t coreid) -{ - (void) coreid; // discard compiler's warning - NVIC_DisableIRQ(USB_IRQ_IRQn); -} - -bool hal_init(void) -{ - // TODO remove magic number - LPC_SYSCON->SYSAHBCLKCTRL |= ((0x1<<14) | (0x1<<27)); /* Enable AHB clock to the USB block and USB RAM. */ - LPC_SYSCON->PDRUNCFG &= ~( BIT_(8) | BIT_(10) ); // enable USB PLL & USB transceiver - - /* Pull-down is needed, or internally, VBUS will be floating. This is to - address the wrong status in VBUSDebouncing bit in CmdStatus register. */ - // set PIO0_3 as USB_VBUS - LPC_IOCON->PIO0_3 &= ~0x1F; - LPC_IOCON->PIO0_3 |= (0x01<<0) | (1 << 3); /* Secondary function VBUS */ - - // set PIO0_6 as usb connect - LPC_IOCON->PIO0_6 &= ~0x07; - LPC_IOCON->PIO0_6 |= (0x01<<0); /* Secondary function SoftConn */ - - return true; -} - -void USB_IRQHandler(void) -{ - tusb_isr(0); -} - - - - -#endif diff --git a/hw/mcu/nxp/lpc13uxx/usb/hal_mcu.h b/hw/mcu/nxp/lpc13uxx/usb/hal_mcu.h deleted file mode 100644 index e38b48199..000000000 --- a/hw/mcu/nxp/lpc13uxx/usb/hal_mcu.h +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************/ -/*! - @file hal_lpc13uxx.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. -*/ -/**************************************************************************/ - -#ifndef _TUSB_HAL_MCU_H_ -#define _TUSB_HAL_MCU_H_ - -#include "LPC13Uxx.h" - -#ifdef __cplusplus - extern "C" { -#endif - - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_HAL_MCU_H_ */ - diff --git a/hw/mcu/nxp/lpc175x_6x/hal_mcu/hal_lpc175x_6x.c b/hw/mcu/nxp/lpc175x_6x/hal_mcu/hal_lpc175x_6x.c new file mode 100644 index 000000000..3463a70db --- /dev/null +++ b/hw/mcu/nxp/lpc175x_6x/hal_mcu/hal_lpc175x_6x.c @@ -0,0 +1,108 @@ +/**************************************************************************/ +/*! + @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 "common/common.h" +#include "hal.h" + +#if TUSB_CFG_MCU == MCU_LPC175X_6X + +void hal_usb_int_enable(uint8_t coreid) +{ + (void) coreid; // discard compiler's warning + NVIC_EnableIRQ(USB_IRQn); +} + +void hal_usb_int_disable(uint8_t coreid) +{ + (void) coreid; // discard compiler's warning + NVIC_DisableIRQ(USB_IRQn); +} + +//--------------------------------------------------------------------+ +// IMPLEMENTATION +//--------------------------------------------------------------------+ +bool hal_init(void) +{ + enum { + USBCLK_DEVCIE = 0x12, // AHB + Device + USBCLK_HOST = 0x19, // AHB + Host + OTG (!) + + PCONP_PCUSB = BIT_(31) + }; + + LPC_SC->PCONP |= PCONP_PCUSB; // enable USB Peripherals + + //------------- user manual 11.13 usb device controller initialization -------------// + PINSEL_ConfigPin( &(PINSEL_CFG_Type) { .Portnum = 0, .Pinnum = 29, .Funcnum = 1} ); // P0.29 as D+ + PINSEL_ConfigPin( &(PINSEL_CFG_Type) { .Portnum = 0, .Pinnum = 30, .Funcnum = 1} ); // P0.30 as D- + +#if MODE_HOST_SUPPORTED + PINSEL_ConfigPin( &(PINSEL_CFG_Type) { .Portnum = 1, .Pinnum = 22, .Funcnum = 2} ); // P1.22 as USB_PWRD + PINSEL_ConfigPin( &(PINSEL_CFG_Type) { .Portnum = 1, .Pinnum = 19, .Funcnum = 2} ); // P1.19 as USB_PPWR + + LPC_USB->USBClkCtrl = USBCLK_HOST; + while ((LPC_USB->USBClkSt & USBCLK_HOST) != USBCLK_HOST); + LPC_USB->OTGStCtrl = 0x3; +#endif + +#if MODE_DEVICE_SUPPORTED + LPC_PINCON->PINSEL4 = bit_set_range(LPC_PINCON->PINSEL4, 18, 19, BIN8(01)); // P2_9 as USB Connect + + // P1_30 as VBUS, ignore if it is already in VBUS mode + if ( !(!BIT_TEST_(LPC_PINCON->PINSEL3, 28) && BIT_TEST_(LPC_PINCON->PINSEL3, 29)) ) + { + // some board like lpcxpresso1769 does not connect VBUS signal to pin P1_30, this allow those board to overwrite + // by always pulling P1_30 to high + PINSEL_ConfigPin( &(PINSEL_CFG_Type) { + .Portnum = 1, .Pinnum = 30, + .Funcnum = 2, .Pinmode = PINSEL_PINMODE_PULLDOWN} ); + } + + LPC_USB->USBClkCtrl = USBCLK_DEVCIE; + while ((LPC_USB->USBClkSt & USBCLK_DEVCIE) != USBCLK_DEVCIE); +#endif + + return true; +} + +void USB_IRQHandler(void) +{ + tusb_isr(0); +} + +#endif diff --git a/hw/mcu/nxp/lpc175x_6x/hal_mcu/hal_mcu.h b/hw/mcu/nxp/lpc175x_6x/hal_mcu/hal_mcu.h new file mode 100644 index 000000000..be1e71671 --- /dev/null +++ b/hw/mcu/nxp/lpc175x_6x/hal_mcu/hal_mcu.h @@ -0,0 +1,55 @@ +/**************************************************************************/ +/*! + @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. +*/ +/**************************************************************************/ + +#ifndef _TUSB_HAL_MCU_H_ +#define _TUSB_HAL_MCU_H_ + +#include "LPC17xx.h" +#include "lpc17xx_pinsel.h" + +#ifdef __cplusplus + extern "C" { +#endif + + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_HAL_MCU_H_ */ + diff --git a/hw/mcu/nxp/lpc175x_6x/usb/hal_lpc175x_6x.c b/hw/mcu/nxp/lpc175x_6x/usb/hal_lpc175x_6x.c deleted file mode 100644 index 3463a70db..000000000 --- a/hw/mcu/nxp/lpc175x_6x/usb/hal_lpc175x_6x.c +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************/ -/*! - @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 "common/common.h" -#include "hal.h" - -#if TUSB_CFG_MCU == MCU_LPC175X_6X - -void hal_usb_int_enable(uint8_t coreid) -{ - (void) coreid; // discard compiler's warning - NVIC_EnableIRQ(USB_IRQn); -} - -void hal_usb_int_disable(uint8_t coreid) -{ - (void) coreid; // discard compiler's warning - NVIC_DisableIRQ(USB_IRQn); -} - -//--------------------------------------------------------------------+ -// IMPLEMENTATION -//--------------------------------------------------------------------+ -bool hal_init(void) -{ - enum { - USBCLK_DEVCIE = 0x12, // AHB + Device - USBCLK_HOST = 0x19, // AHB + Host + OTG (!) - - PCONP_PCUSB = BIT_(31) - }; - - LPC_SC->PCONP |= PCONP_PCUSB; // enable USB Peripherals - - //------------- user manual 11.13 usb device controller initialization -------------// - PINSEL_ConfigPin( &(PINSEL_CFG_Type) { .Portnum = 0, .Pinnum = 29, .Funcnum = 1} ); // P0.29 as D+ - PINSEL_ConfigPin( &(PINSEL_CFG_Type) { .Portnum = 0, .Pinnum = 30, .Funcnum = 1} ); // P0.30 as D- - -#if MODE_HOST_SUPPORTED - PINSEL_ConfigPin( &(PINSEL_CFG_Type) { .Portnum = 1, .Pinnum = 22, .Funcnum = 2} ); // P1.22 as USB_PWRD - PINSEL_ConfigPin( &(PINSEL_CFG_Type) { .Portnum = 1, .Pinnum = 19, .Funcnum = 2} ); // P1.19 as USB_PPWR - - LPC_USB->USBClkCtrl = USBCLK_HOST; - while ((LPC_USB->USBClkSt & USBCLK_HOST) != USBCLK_HOST); - LPC_USB->OTGStCtrl = 0x3; -#endif - -#if MODE_DEVICE_SUPPORTED - LPC_PINCON->PINSEL4 = bit_set_range(LPC_PINCON->PINSEL4, 18, 19, BIN8(01)); // P2_9 as USB Connect - - // P1_30 as VBUS, ignore if it is already in VBUS mode - if ( !(!BIT_TEST_(LPC_PINCON->PINSEL3, 28) && BIT_TEST_(LPC_PINCON->PINSEL3, 29)) ) - { - // some board like lpcxpresso1769 does not connect VBUS signal to pin P1_30, this allow those board to overwrite - // by always pulling P1_30 to high - PINSEL_ConfigPin( &(PINSEL_CFG_Type) { - .Portnum = 1, .Pinnum = 30, - .Funcnum = 2, .Pinmode = PINSEL_PINMODE_PULLDOWN} ); - } - - LPC_USB->USBClkCtrl = USBCLK_DEVCIE; - while ((LPC_USB->USBClkSt & USBCLK_DEVCIE) != USBCLK_DEVCIE); -#endif - - return true; -} - -void USB_IRQHandler(void) -{ - tusb_isr(0); -} - -#endif diff --git a/hw/mcu/nxp/lpc175x_6x/usb/hal_mcu.h b/hw/mcu/nxp/lpc175x_6x/usb/hal_mcu.h deleted file mode 100644 index be1e71671..000000000 --- a/hw/mcu/nxp/lpc175x_6x/usb/hal_mcu.h +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************/ -/*! - @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. -*/ -/**************************************************************************/ - -#ifndef _TUSB_HAL_MCU_H_ -#define _TUSB_HAL_MCU_H_ - -#include "LPC17xx.h" -#include "lpc17xx_pinsel.h" - -#ifdef __cplusplus - extern "C" { -#endif - - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_HAL_MCU_H_ */ - diff --git a/hw/mcu/nxp/lpc43xx/hal_mcu/hal_lpc43xx.c b/hw/mcu/nxp/lpc43xx/hal_mcu/hal_lpc43xx.c new file mode 100644 index 000000000..0199934fa --- /dev/null +++ b/hw/mcu/nxp/lpc43xx/hal_mcu/hal_lpc43xx.c @@ -0,0 +1,146 @@ +/**************************************************************************/ +/*! + @file hal_lpc43xx.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 "common/common.h" +#include "hal/hal.h" + +#if TUSB_CFG_MCU == MCU_LPC43XX + +#include "LPC43xx.h" +#include "lpc43xx_cgu.h" +#include "lpc43xx_scu.h" + +enum { + LPC43XX_USBMODE_DEVICE = 2, + LPC43XX_USBMODE_HOST = 3 +}; + +enum { + LPC43XX_USBMODE_VBUS_LOW = 0, + LPC43XX_USBMODE_VBUS_HIGH = 1 +}; + +void hal_usb_int_enable(uint8_t coreid) +{ + NVIC_EnableIRQ(coreid ? USB1_IRQn : USB0_IRQn); +} + +void hal_usb_int_disable(uint8_t coreid) +{ + NVIC_DisableIRQ(coreid ? USB1_IRQn : USB0_IRQn); +} + + +static void hal_controller_reset(uint8_t coreid) +{ // TODO timeout expired to prevent trap + volatile uint32_t * p_reg_usbcmd; + + p_reg_usbcmd = (coreid ? &LPC_USB1->USBCMD_D : &LPC_USB0->USBCMD_D); +// NXP chip powered with non-host mode --> sts bit is not correctly reflected + (*p_reg_usbcmd) |= BIT_(1); + +// timeout_timer_t timeout; +// timeout_set(&timeout, 2); // should not take longer the time to stop controller + while( ((*p_reg_usbcmd) & BIT_(1)) /*&& !timeout_expired(&timeout)*/) {} +// +// return timeout_expired(&timeout) ? TUSB_ERROR_OSAL_TIMEOUT : TUSB_ERROR_NONE; +} + +bool hal_init(void) +{ + LPC_CREG->CREG0 &= ~(1<<5); /* Turn on the phy */ + + //------------- USB0 -------------// +#if TUSB_CFG_CONTROLLER_0_MODE + CGU_EnableEntity(CGU_CLKSRC_PLL0, DISABLE); /* Disable PLL first */ + VERIFY( CGU_ERROR_SUCCESS == CGU_SetPLL0()); /* the usb core require output clock = 480MHz */ + CGU_EntityConnect(CGU_CLKSRC_XTAL_OSC, CGU_CLKSRC_PLL0); + CGU_EnableEntity(CGU_CLKSRC_PLL0, ENABLE); /* Enable PLL after all setting is done */ + + // reset controller & set role + hal_controller_reset(0); + + #if TUSB_CFG_CONTROLLER_0_MODE & TUSB_MODE_HOST + LPC_USB0->USBMODE_H = LPC43XX_USBMODE_HOST | (LPC43XX_USBMODE_VBUS_HIGH << 5); + #else // TODO OTG + 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)*/; + #if TUSB_CFG_DEVICE_FULLSPEED // TODO for easy testing + LPC_USB0->PORTSC1_D |= (1<<24); // force full speed + #endif + #endif +#endif + + //------------- USB1 -------------// +#if TUSB_CFG_CONTROLLER_1_MODE + // Host require to config P2_5, TODO confirm whether device mode require P2_5 or not + scu_pinmux(0x2, 5, MD_PLN | MD_EZI | MD_ZI, FUNC2); // USB1_VBUS monitor presence, must be high for bus reset occur + + /* connect CLK_USB1 to 60 MHz clock */ + CGU_EntityConnect(CGU_CLKSRC_PLL1, CGU_BASE_USB1); /* FIXME Run base BASE_USB1_CLK clock from PLL1 (assume PLL1 is 60 MHz, no division required) */ + LPC_SCU->SFSUSB = (TUSB_CFG_CONTROLLER_1_MODE & TUSB_MODE_HOST) ? 0x16 : 0x12; // enable USB1 with on-chip FS PHY + + hal_controller_reset(1); + + #if TUSB_CFG_CONTROLLER_1_MODE & TUSB_MODE_HOST + LPC_USB1->USBMODE_H = LPC43XX_USBMODE_HOST | (LPC43XX_USBMODE_VBUS_HIGH << 5); + #else // TODO OTG + LPC_USB1->USBMODE_D = LPC43XX_USBMODE_DEVICE; + #endif + + LPC_USB1->PORTSC1_D |= (1<<24); // TODO abstract, force port to fullspeed +#endif + + return true; +} + +#if TUSB_CFG_CONTROLLER_0_MODE +void USB0_IRQHandler(void) +{ + tusb_isr(0); +} +#endif + +#if TUSB_CFG_CONTROLLER_1_MODE +void USB1_IRQHandler(void) +{ + tusb_isr(1); +} +#endif + +#endif diff --git a/hw/mcu/nxp/lpc43xx/hal_mcu/hal_mcu.h b/hw/mcu/nxp/lpc43xx/hal_mcu/hal_mcu.h new file mode 100644 index 000000000..f4de45b3e --- /dev/null +++ b/hw/mcu/nxp/lpc43xx/hal_mcu/hal_mcu.h @@ -0,0 +1,56 @@ +/**************************************************************************/ +/*! + @file hal_lpc43xx.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. +*/ +/**************************************************************************/ + +#ifndef _TUSB_HAL_MCU_H_ +#define _TUSB_HAL_MCU_H_ + +#include "LPC43xx.h" +#include "lpc43xx_cgu.h" + +#ifdef __cplusplus + extern "C" { +#endif + + + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_HAL_MCU_H_ */ + diff --git a/hw/mcu/nxp/lpc43xx/usb/hal_lpc43xx.c b/hw/mcu/nxp/lpc43xx/usb/hal_lpc43xx.c deleted file mode 100644 index 0199934fa..000000000 --- a/hw/mcu/nxp/lpc43xx/usb/hal_lpc43xx.c +++ /dev/null @@ -1,146 +0,0 @@ -/**************************************************************************/ -/*! - @file hal_lpc43xx.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 "common/common.h" -#include "hal/hal.h" - -#if TUSB_CFG_MCU == MCU_LPC43XX - -#include "LPC43xx.h" -#include "lpc43xx_cgu.h" -#include "lpc43xx_scu.h" - -enum { - LPC43XX_USBMODE_DEVICE = 2, - LPC43XX_USBMODE_HOST = 3 -}; - -enum { - LPC43XX_USBMODE_VBUS_LOW = 0, - LPC43XX_USBMODE_VBUS_HIGH = 1 -}; - -void hal_usb_int_enable(uint8_t coreid) -{ - NVIC_EnableIRQ(coreid ? USB1_IRQn : USB0_IRQn); -} - -void hal_usb_int_disable(uint8_t coreid) -{ - NVIC_DisableIRQ(coreid ? USB1_IRQn : USB0_IRQn); -} - - -static void hal_controller_reset(uint8_t coreid) -{ // TODO timeout expired to prevent trap - volatile uint32_t * p_reg_usbcmd; - - p_reg_usbcmd = (coreid ? &LPC_USB1->USBCMD_D : &LPC_USB0->USBCMD_D); -// NXP chip powered with non-host mode --> sts bit is not correctly reflected - (*p_reg_usbcmd) |= BIT_(1); - -// timeout_timer_t timeout; -// timeout_set(&timeout, 2); // should not take longer the time to stop controller - while( ((*p_reg_usbcmd) & BIT_(1)) /*&& !timeout_expired(&timeout)*/) {} -// -// return timeout_expired(&timeout) ? TUSB_ERROR_OSAL_TIMEOUT : TUSB_ERROR_NONE; -} - -bool hal_init(void) -{ - LPC_CREG->CREG0 &= ~(1<<5); /* Turn on the phy */ - - //------------- USB0 -------------// -#if TUSB_CFG_CONTROLLER_0_MODE - CGU_EnableEntity(CGU_CLKSRC_PLL0, DISABLE); /* Disable PLL first */ - VERIFY( CGU_ERROR_SUCCESS == CGU_SetPLL0()); /* the usb core require output clock = 480MHz */ - CGU_EntityConnect(CGU_CLKSRC_XTAL_OSC, CGU_CLKSRC_PLL0); - CGU_EnableEntity(CGU_CLKSRC_PLL0, ENABLE); /* Enable PLL after all setting is done */ - - // reset controller & set role - hal_controller_reset(0); - - #if TUSB_CFG_CONTROLLER_0_MODE & TUSB_MODE_HOST - LPC_USB0->USBMODE_H = LPC43XX_USBMODE_HOST | (LPC43XX_USBMODE_VBUS_HIGH << 5); - #else // TODO OTG - 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)*/; - #if TUSB_CFG_DEVICE_FULLSPEED // TODO for easy testing - LPC_USB0->PORTSC1_D |= (1<<24); // force full speed - #endif - #endif -#endif - - //------------- USB1 -------------// -#if TUSB_CFG_CONTROLLER_1_MODE - // Host require to config P2_5, TODO confirm whether device mode require P2_5 or not - scu_pinmux(0x2, 5, MD_PLN | MD_EZI | MD_ZI, FUNC2); // USB1_VBUS monitor presence, must be high for bus reset occur - - /* connect CLK_USB1 to 60 MHz clock */ - CGU_EntityConnect(CGU_CLKSRC_PLL1, CGU_BASE_USB1); /* FIXME Run base BASE_USB1_CLK clock from PLL1 (assume PLL1 is 60 MHz, no division required) */ - LPC_SCU->SFSUSB = (TUSB_CFG_CONTROLLER_1_MODE & TUSB_MODE_HOST) ? 0x16 : 0x12; // enable USB1 with on-chip FS PHY - - hal_controller_reset(1); - - #if TUSB_CFG_CONTROLLER_1_MODE & TUSB_MODE_HOST - LPC_USB1->USBMODE_H = LPC43XX_USBMODE_HOST | (LPC43XX_USBMODE_VBUS_HIGH << 5); - #else // TODO OTG - LPC_USB1->USBMODE_D = LPC43XX_USBMODE_DEVICE; - #endif - - LPC_USB1->PORTSC1_D |= (1<<24); // TODO abstract, force port to fullspeed -#endif - - return true; -} - -#if TUSB_CFG_CONTROLLER_0_MODE -void USB0_IRQHandler(void) -{ - tusb_isr(0); -} -#endif - -#if TUSB_CFG_CONTROLLER_1_MODE -void USB1_IRQHandler(void) -{ - tusb_isr(1); -} -#endif - -#endif diff --git a/hw/mcu/nxp/lpc43xx/usb/hal_mcu.h b/hw/mcu/nxp/lpc43xx/usb/hal_mcu.h deleted file mode 100644 index f4de45b3e..000000000 --- a/hw/mcu/nxp/lpc43xx/usb/hal_mcu.h +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************/ -/*! - @file hal_lpc43xx.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. -*/ -/**************************************************************************/ - -#ifndef _TUSB_HAL_MCU_H_ -#define _TUSB_HAL_MCU_H_ - -#include "LPC43xx.h" -#include "lpc43xx_cgu.h" - -#ifdef __cplusplus - extern "C" { -#endif - - - -#ifdef __cplusplus - } -#endif - -#endif /* _TUSB_HAL_MCU_H_ */ - -- cgit v1.3.1