Switch from GPLv2 to GPLv2+
[fw/altos] / src / cc1111 / ao_usb.c
index 2141eda8dd9bba1b52412fe27cd3d4ffbf1bc7f1..7d363c08fe92ef86cdff5eec64745c43bbbf104f 100644 (file)
@@ -3,7 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -274,7 +275,7 @@ ao_usb_ep0_setup(void)
                        ao_usb_ep0_in_len = ao_usb_setup.length;
                ao_usb_ep0_flush();
        } else if (ao_usb_ep0_out_len) {
-               
+
                /* Receiving data from the host
                 */
                ao_usb_ep0_state = AO_USB_EP0_DATA_OUT;
@@ -448,6 +449,9 @@ ao_usb_enable(void)
        USBCIF = 0;
        USBOIF = 0;
        USBIIF = 0;
+#if HAS_USB_PULLUP
+       ao_gpio_set(AO_USB_PULLUP_PORT, AO_USB_PULLUP_PIN, AO_USB_PULLUP, 0);
+#endif
 }
 
 void
@@ -459,6 +463,10 @@ ao_usb_disable(void)
        USBCIE = 0;
        IEN2 &= ~IEN2_USBIE;
 
+#if HAS_USB_PULLUP
+       ao_gpio_set(AO_USB_PULLUP_PORT, AO_USB_PULLUP_PIN, AO_USB_PULLUP, 0);
+#endif
+
        /* Clear any pending interrupts */
        USBCIF = 0;
        USBOIF = 0;
@@ -471,6 +479,9 @@ ao_usb_disable(void)
 void
 ao_usb_init(void)
 {
+#if HAS_USB_PULLUP
+       ao_enable_output(AO_USB_PULLUP_PORT, AO_USB_PULLUP_PIN, AO_USB_PULLUP, 0);
+#endif
        ao_usb_enable();
 
        ao_add_task(&ao_usb_task, ao_usb_ep0, "usb");