diff --git a/hardware/arduino/sam/cores/arduino/USB/CDC.cpp b/hardware/arduino/sam/cores/arduino/USB/CDC.cpp index 5c451a5c0..134e9f901 100644 --- a/hardware/arduino/sam/cores/arduino/USB/CDC.cpp +++ b/hardware/arduino/sam/cores/arduino/USB/CDC.cpp @@ -21,6 +21,7 @@ #define CDC_SERIAL_BUFFER_SIZE 64 +/* For information purpose only since RTS is not always handled by the terminal application */ #define CDC_LINESTATE_DTR 0x01 // Data Terminal Ready #define CDC_LINESTATE_RTS 0x02 // Ready to Send @@ -209,7 +210,7 @@ size_t Serial_::write(uint8_t c) // TODO - ZE - check behavior on different OSes and test what happens if an // open connection isn't broken cleanly (cable is yanked out, host dies // or locks up, or host virtual serial port hangs) - if (_usbLineInfo.lineState == CDC_LINESTATE_READY) + if (_usbLineInfo.lineState > 0) { int r = USBD_Send(CDC_TX,&c,1); @@ -238,7 +239,7 @@ Serial_::operator bool() { bool result = false; - if (_usbLineInfo.lineState == CDC_LINESTATE_READY) + if (_usbLineInfo.lineState > 0) { result = true; } diff --git a/hardware/arduino/sam/cores/arduino/USB/HID.cpp b/hardware/arduino/sam/cores/arduino/USB/HID.cpp index 2a4e73b8c..27b9f9c1e 100644 --- a/hardware/arduino/sam/cores/arduino/USB/HID.cpp +++ b/hardware/arduino/sam/cores/arduino/USB/HID.cpp @@ -502,9 +502,12 @@ void Keyboard_::releaseAll(void) size_t Keyboard_::write(uint8_t c) { - uint8_t p = press(c); // Keydown - uint8_t r = release(c); // Keyup - return (p); // just return the result of press() since release() almost always returns 1 + uint8_t p = 0; + + p = press(c); // Keydown + release(c); // Keyup + + return (p); // Just return the result of press() since release() almost always returns 1 } #endif diff --git a/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp b/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp index 51bc6b92f..77eaee104 100644 --- a/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp +++ b/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp @@ -1,5 +1,5 @@ -/* Copyright (c) 2010, Peter Barrett -** +// Copyright (c) 2010, Peter Barrett +/* ** Permission to use, copy, modify, and/or distribute this software for ** any purpose with or without fee is hereby granted, provided that the ** above copyright notice and this permission notice appear in all copies. @@ -18,8 +18,8 @@ #include "USBAPI.h" #include -#define TRACE_CORE(x) x -//#define TRACE_CORE(x) +//#define TRACE_CORE(x) x +#define TRACE_CORE(x) static const uint32_t EndPoints[] = { @@ -44,11 +44,11 @@ volatile uint8_t RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse * //================================================================== //================================================================== -extern const uint16_t STRING_LANGUAGE[] ; -extern const uint16_t STRING_IPRODUCT[] ; -extern const uint16_t STRING_IMANUFACTURER[] ; -extern const DeviceDescriptor USB_DeviceDescriptor ; -extern const DeviceDescriptor USB_DeviceDescriptorA ; +extern const uint16_t STRING_LANGUAGE[]; +extern const uint16_t STRING_IPRODUCT[]; +extern const uint16_t STRING_IMANUFACTURER[]; +extern const DeviceDescriptor USB_DeviceDescriptor; +extern const DeviceDescriptor USB_DeviceDescriptorA; const uint16_t STRING_LANGUAGE[2] = { (3<<8) | (2+2), @@ -86,8 +86,6 @@ const DeviceDescriptor USB_DeviceDescriptor = const DeviceDescriptor USB_DeviceDescriptorA = D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); - - //================================================================== //================================================================== @@ -233,11 +231,11 @@ int USBD_SendControl(uint8_t flags, const void* d, uint32_t len) // TODO int USBD_RecvControl(void* d, uint32_t len) { - UDD_WaitOUT() ; - UDD_Recv(EP0, (uint8_t*)d, len ) ; - UDD_ClearOUT() ; + UDD_WaitOUT(); + UDD_Recv(EP0, (uint8_t*)d, len); + UDD_ClearOUT(); - return len ; + return len; } // Handle CLASS_INTERFACE requests @@ -248,20 +246,20 @@ bool USBD_ClassInterfaceRequest(Setup& setup) TRACE_CORE(printf("=> USBD_ClassInterfaceRequest\r\n");) #ifdef CDC_ENABLED - if ( CDC_ACM_INTERFACE == i ) + if (CDC_ACM_INTERFACE == i) { return CDC_Setup(setup); } #endif #ifdef HID_ENABLED - if ( HID_INTERFACE == i ) + if (HID_INTERFACE == i) { return HID_Setup(setup); } #endif - return false ; + return false; } int USBD_SendInterfaces(void) @@ -270,11 +268,11 @@ int USBD_SendInterfaces(void) uint8_t interfaces = 0; #ifdef CDC_ENABLED - total = CDC_GetInterface(&interfaces) ; + total = CDC_GetInterface(&interfaces); #endif #ifdef HID_ENABLED - total += HID_GetInterface(&interfaces) ; + total += HID_GetInterface(&interfaces); #endif total = total; // Get rid of compiler warning @@ -314,7 +312,7 @@ static bool USBD_SendDescriptor(Setup& setup) uint8_t desc_length = 0; const uint8_t* desc_addr = 0; - if ( USB_CONFIGURATION_DESCRIPTOR_TYPE == t ) + if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) { TRACE_CORE(printf("=> USBD_SendDescriptor : USB_CONFIGURATION_DESCRIPTOR_TYPE length=%d\r\n", setup.wLength);) return USBD_SendConfiguration(setup.wLength); @@ -322,17 +320,17 @@ static bool USBD_SendDescriptor(Setup& setup) USBD_InitControl(setup.wLength); #ifdef HID_ENABLED - if ( HID_REPORT_DESCRIPTOR_TYPE == t ) + if (HID_REPORT_DESCRIPTOR_TYPE == t) { TRACE_CORE(puts("=> USBD_SendDescriptor : HID_REPORT_DESCRIPTOR_TYPE\r\n");) - return HID_GetDescriptor( t ) ; + return HID_GetDescriptor(t); } #endif if (USB_DEVICE_DESCRIPTOR_TYPE == t) { TRACE_CORE(puts("=> USBD_SendDescriptor : USB_DEVICE_DESCRIPTOR_TYPE\r\n");) - if ( setup.wLength == 8 ) + if (setup.wLength == 8) { _cdcComposite = 1; } @@ -351,17 +349,17 @@ static bool USBD_SendDescriptor(Setup& setup) return false; } - if ( desc_addr == 0 ) + if (desc_addr == 0) { - return false ; + return false; } - if ( desc_length == 0 ) + if (desc_length == 0) { desc_length = *desc_addr; } - TRACE_CORE(printf("=> USBD_SendDescriptor : desc_addr=%x desc_length=%d\r\n", desc_addr, desc_length);) + TRACE_CORE(printf("=> USBD_SendDescriptor : desc_addr=%p desc_length=%d\r\n", desc_addr, desc_length);) USBD_SendControl(0, desc_addr, desc_length); return true; @@ -397,7 +395,7 @@ static void USB_ISR(void) while (USBD_Available(CDC_RX)) Serial.accept(); - udd_ack_fifocon(CDC_RX) ; + udd_ack_fifocon(CDC_RX); } #endif @@ -405,12 +403,12 @@ static void USB_ISR(void) if (Is_udd_endpoint_interrupt(0)) { - if ( !UDD_ReceivedSetupInt() ) + if (!UDD_ReceivedSetupInt()) { return; } - Setup setup ; + Setup setup; UDD_Recv(EP0, (uint8_t*)&setup, 8); UDD_ClearSetupInt(); @@ -426,7 +424,7 @@ static void USB_ISR(void) UDD_ClearIN(); } - bool ok = true ; + bool ok = true; if (REQUEST_STANDARD == (requestType & REQUEST_TYPE)) { // Standard Requests @@ -544,36 +542,36 @@ USB_::USB_() { UDD_SetStack(&USB_ISR); - if ( UDD_Init() == 0UL ) + if (UDD_Init() == 0UL) { - _usbInitialized=1UL ; + _usbInitialized=1UL; } } bool USB_::attach(void) { - if ( _usbInitialized != 0UL ) + if (_usbInitialized != 0UL) { - UDD_Attach() ; + UDD_Attach(); _usbConfiguration = 0; return true; } else { - return false ; + return false; } } bool USB_::detach(void) { - if ( _usbInitialized != 0UL ) + if (_usbInitialized != 0UL) { - UDD_Detach() ; - return true ; + UDD_Detach(); + return true; } else { - return false ; + return false; } } diff --git a/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp.old b/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp.old deleted file mode 100644 index 34c4372f3..000000000 --- a/hardware/arduino/sam/cores/arduino/USB/USBCore.cpp.old +++ /dev/null @@ -1,672 +0,0 @@ - - -/* Copyright (c) 2010, Peter Barrett -** -** Permission to use, copy, modify, and/or distribute this software for -** any purpose with or without fee is hereby granted, provided that the -** above copyright notice and this permission notice appear in all copies. -** -** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL -** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED -** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR -** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES -** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -** SOFTWARE. -*/ - -#include "Platform.h" -#include "USBAPI.h" -#include "USBDesc.h" - -#if defined(USBCON) - -#define EP_TYPE_CONTROL 0x00 -#define EP_TYPE_BULK_IN 0x81 -#define EP_TYPE_BULK_OUT 0x80 -#define EP_TYPE_INTERRUPT_IN 0xC1 -#define EP_TYPE_INTERRUPT_OUT 0xC0 -#define EP_TYPE_ISOCHRONOUS_IN 0x41 -#define EP_TYPE_ISOCHRONOUS_OUT 0x40 - -/** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ -#define TX_RX_LED_PULSE_MS 100 -volatile u8 TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ -volatile u8 RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ - -//================================================================== -//================================================================== - -extern const u16 STRING_LANGUAGE[] PROGMEM; -extern const u16 STRING_IPRODUCT[] PROGMEM; -extern const u16 STRING_IMANUFACTURER[] PROGMEM; -extern const DeviceDescriptor USB_DeviceDescriptor PROGMEM; -extern const DeviceDescriptor USB_DeviceDescriptorA PROGMEM; - -const u16 STRING_LANGUAGE[2] = { - (3<<8) | (2+2), - 0x0409 // English -}; - -const u16 STRING_IPRODUCT[17] = { - (3<<8) | (2+2*16), -#if USB_PID == 0x8034 - 'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o' -#else - 'U','S','B',' ','I','O',' ','B','O','A','R','D',' ',' ',' ',' ' -#endif -}; - -const u16 STRING_IMANUFACTURER[12] = { - (3<<8) | (2+2*11), -#if USB_VID == 0x2341 - 'A','r','d','u','i','n','o',' ','L','L','C' -#else - 'U','n','k','n','o','w','n',' ',' ',' ',' ' -#endif -}; - -#ifdef CDC_ENABLED -#define DEVICE_CLASS 0x02 -#else -#define DEVICE_CLASS 0x00 -#endif - -// DEVICE DESCRIPTOR -const DeviceDescriptor USB_DeviceDescriptor = - D_DEVICE(0x00,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); - -const DeviceDescriptor USB_DeviceDescriptorA = - D_DEVICE(DEVICE_CLASS,0x00,0x00,64,USB_VID,USB_PID,0x100,IMANUFACTURER,IPRODUCT,0,1); - -//================================================================== -//================================================================== - -volatile u8 _usbConfiguration = 0; - -static inline void WaitIN(void) -{ - while (!(UEINTX & (1< len) - n = len; - len -= n; - { - LockEP lock(ep); - if (ep & TRANSFER_ZERO) - { - while (n--) - Send8(0); - } - else if (ep & TRANSFER_PGM) - { - while (n--) - Send8(pgm_read_byte(data++)); - } - else - { - while (n--) - Send8(*data++); - } - if (!ReadWriteAllowed() || ((len == 0) && (ep & TRANSFER_RELEASE))) // Release full buffer - ReleaseTX(); - } - } - TXLED1; // light the TX LED - TxLEDPulse = TX_RX_LED_PULSE_MS; - return r; -} - -extern const u8 _initEndpoints[] PROGMEM; -const u8 _initEndpoints[] = -{ - 0, - -#ifdef CDC_ENABLED - EP_TYPE_INTERRUPT_IN, // CDC_ENDPOINT_ACM - EP_TYPE_BULK_OUT, // CDC_ENDPOINT_OUT - EP_TYPE_BULK_IN, // CDC_ENDPOINT_IN -#endif - -#ifdef HID_ENABLED - EP_TYPE_INTERRUPT_IN // HID_ENDPOINT_INT -#endif -}; - -#define EP_SINGLE_64 0x32 // EP0 -#define EP_DOUBLE_64 0x36 // Other endpoints - -static -void InitEP(u8 index, u8 type, u8 size) -{ - UENUM = index; - UECONX = 1; - UECFG0X = type; - UECFG1X = size; -} - -static -void InitEndpoints() -{ - for (u8 i = 1; i < sizeof(_initEndpoints); i++) - { - UENUM = i; - UECONX = 1; - UECFG0X = pgm_read_byte(_initEndpoints+i); - UECFG1X = EP_DOUBLE_64; - } - UERST = 0x7E; // And reset them - UERST = 0; -} - -// Handle CLASS_INTERFACE requests -static -bool ClassInterfaceRequest(Setup& setup) -{ - u8 i = setup.wIndex; - -#ifdef CDC_ENABLED - if (CDC_ACM_INTERFACE == i) - return CDC_Setup(setup); -#endif - -#ifdef HID_ENABLED - if (HID_INTERFACE == i) - return HID_Setup(setup); -#endif - return false; -} - -int _cmark; -int _cend; -void InitControl(int end) -{ - SetEP(0); - _cmark = 0; - _cend = end; -} - -static -bool SendControl(u8 d) -{ - if (_cmark < _cend) - { - if (!WaitForINOrOUT()) - return false; - Send8(d); - if (!((_cmark + 1) & 0x3F)) - ClearIN(); // Fifo is full, release this packet - } - _cmark++; - return true; -}; - -// Clipped by _cmark/_cend -int USB_SendControl(u8 flags, const void* d, int len) -{ - int sent = len; - const u8* data = (const u8*)d; - bool pgm = flags & TRANSFER_PGM; - while (len--) - { - u8 c = pgm ? pgm_read_byte(data++) : *data++; - if (!SendControl(c)) - return -1; - } - return sent; -} - -// Does not timeout or cross fifo boundaries -// Will only work for transfers <= 64 bytes -// TODO -int USB_RecvControl(void* d, int len) -{ - WaitOUT(); - Recv((u8*)d,len); - ClearOUT(); - return len; -} - -int SendInterfaces() -{ - int total = 0; - u8 interfaces = 0; - -#ifdef CDC_ENABLED - total = CDC_GetInterface(&interfaces); -#endif - -#ifdef HID_ENABLED - total += HID_GetInterface(&interfaces); -#endif - - return interfaces; -} - -// Construct a dynamic configuration descriptor -// This really needs dynamic endpoint allocation etc -// TODO -static -bool SendConfiguration(int maxlen) -{ - // Count and measure interfaces - InitControl(0); - int interfaces = SendInterfaces(); - ConfigDescriptor config = D_CONFIG(_cmark + sizeof(ConfigDescriptor),interfaces); - - // Now send them - InitControl(maxlen); - USB_SendControl(0,&config,sizeof(ConfigDescriptor)); - SendInterfaces(); - return true; -} - -u8 _cdcComposite = 0; - -static -bool SendDescriptor(Setup& setup) -{ - u8 t = setup.wValueH; - if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) - return SendConfiguration(setup.wLength); - - InitControl(setup.wLength); -#ifdef HID_ENABLED - if (HID_REPORT_DESCRIPTOR_TYPE == t) - return HID_GetDescriptor(t); -#endif - - u8 desc_length = 0; - const u8* desc_addr = 0; - if (USB_DEVICE_DESCRIPTOR_TYPE == t) - { - if (setup.wLength == 8) - _cdcComposite = 1; - desc_addr = _cdcComposite ? (const u8*)&USB_DeviceDescriptorA : (const u8*)&USB_DeviceDescriptor; - } - else if (USB_STRING_DESCRIPTOR_TYPE == t) - { - if (setup.wValueL == 0) - desc_addr = (const u8*)&STRING_LANGUAGE; - else if (setup.wValueL == IPRODUCT) - desc_addr = (const u8*)&STRING_IPRODUCT; - else if (setup.wValueL == IMANUFACTURER) - desc_addr = (const u8*)&STRING_IMANUFACTURER; - else - return false; - } - - if (desc_addr == 0) - return false; - if (desc_length == 0) - desc_length = pgm_read_byte(desc_addr); - - USB_SendControl(TRANSFER_PGM,desc_addr,desc_length); - return true; -} - -// Endpoint 0 interrupt -ISR(USB_COM_vect) -{ - SetEP(0); - if (!ReceivedSetupInt()) - return; - - Setup setup; - Recv((u8*)&setup,8); - ClearSetupInt(); - - u8 requestType = setup.bmRequestType; - if (requestType & REQUEST_DEVICETOHOST) - WaitIN(); - else - ClearIN(); - - bool ok = true; - if (REQUEST_STANDARD == (requestType & REQUEST_TYPE)) - { - // Standard Requests - u8 r = setup.bRequest; - if (GET_STATUS == r) - { - Send8(0); // TODO - Send8(0); - } - else if (CLEAR_FEATURE == r) - { - } - else if (SET_FEATURE == r) - { - } - else if (SET_ADDRESS == r) - { - WaitIN(); - UDADDR = setup.wValueL | (1< 0) diff --git a/hardware/arduino/sam/system/libsam/include/USB_device.h b/hardware/arduino/sam/system/libsam/include/USB_device.h index 8c64d43d1..5beffac7b 100644 --- a/hardware/arduino/sam/system/libsam/include/USB_device.h +++ b/hardware/arduino/sam/system/libsam/include/USB_device.h @@ -32,49 +32,35 @@ #include -extern void UDD_WaitIN(void) ; -extern void UDD_WaitOUT(void) ; -extern void UDD_ClearIN(void) ; -extern void UDD_ClearOUT(void) ; -extern uint32_t UDD_WaitForINOrOUT(void) ; - -extern void UDD_ClearRxFlag( unsigned char bEndpoint ) ; - - +extern void UDD_WaitIN(void); +extern void UDD_WaitOUT(void); +extern void UDD_ClearIN(void); +extern void UDD_ClearOUT(void); +extern uint32_t UDD_WaitForINOrOUT(void); +extern void UDD_ClearRxFlag(unsigned char bEndpoint); extern uint32_t UDD_ReceivedSetupInt(void); extern void UDD_ClearSetupInt(void); - -extern uint32_t UDD_ReadWriteAllowed(uint32_t ep) ; - - -extern uint32_t UDD_FifoByteCount(uint32_t ep) ; -extern uint8_t UDD_FifoFree(void) ; - -extern void UDD_ReleaseRX(uint32_t ep) ; -extern void UDD_ReleaseTX(uint32_t ep) ; -extern uint8_t UDD_FrameNumber(void) ; - -extern uint8_t UDD_GetConfiguration(void) ; - - - +extern uint32_t UDD_ReadWriteAllowed(uint32_t ep); +extern uint32_t UDD_FifoByteCount(uint32_t ep); +extern uint8_t UDD_FifoFree(void); +extern void UDD_ReleaseRX(uint32_t ep); +extern void UDD_ReleaseTX(uint32_t ep); +extern uint8_t UDD_FrameNumber(void); +extern uint8_t UDD_GetConfiguration(void); extern uint32_t UDD_Send(uint32_t ep, const void* data, uint32_t len); extern void UDD_Send8(uint32_t ep, uint8_t data ); extern uint8_t UDD_Recv8(uint32_t ep); extern void UDD_Recv(uint32_t ep, uint8_t* data, uint32_t len); - - extern void UDD_InitEndpoints(const uint32_t* eps_table, const uint32_t ul_eps_table_size); - -extern void UDD_InitControl(int end) ; - -extern uint32_t UDD_Init(void) ; +extern void UDD_InitControl(int end); +extern uint32_t UDD_Init(void); extern void UDD_InitEP( uint32_t ul_ep, uint32_t ul_ep_cfg ); -extern void UDD_Attach(void) ; -extern void UDD_Detach(void) ; +extern void UDD_Attach(void); +extern void UDD_Detach(void); + extern void UDD_SetStack(void (*pf_isr)(void)); extern void UDD_SetAddress(uint32_t addr); extern void UDD_Stall(void); @@ -91,8 +77,8 @@ typedef unsigned char Bool; //!< Boolean. typedef unsigned char bool; //!< Boolean. #endif #endif -typedef int8_t S8 ; //!< 8-bit signed integer. -typedef uint8_t U8 ; //!< 8-bit unsigned integer. +typedef int8_t S8; //!< 8-bit signed integer. +typedef uint8_t U8; //!< 8-bit unsigned integer. typedef int16_t S16; //!< 16-bit signed integer. typedef uint16_t U16; //!< 16-bit unsigned integer. typedef uint16_t le16_t; diff --git a/hardware/arduino/sam/system/libsam/source/uotghs_device.c b/hardware/arduino/sam/system/libsam/source/uotghs_device.c index cf439a5d0..23e815ccb 100644 --- a/hardware/arduino/sam/system/libsam/source/uotghs_device.c +++ b/hardware/arduino/sam/system/libsam/source/uotghs_device.c @@ -32,8 +32,8 @@ #if SAM3XA_SERIES -#define TRACE_UOTGHS_DEVICE(x) x -//#define TRACE_UOTGHS_DEVICE(x) +//#define TRACE_UOTGHS_DEVICE(x) x +#define TRACE_UOTGHS_DEVICE(x) extern void (*gpf_isr)(void); diff --git a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a index ef35d08c6..8e44d6a63 100644 Binary files a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a and b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a differ diff --git a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt index d4f904640..86c0b679d 100644 --- a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt +++ b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt @@ -376,12 +376,10 @@ uotghs_device.o: 00000000 T UDD_WaitOUT U g_interrupt_enabled U gpf_isr - U iprintf U pmc_enable_periph_clk U pmc_enable_udpck U pmc_enable_upll_clock U pmc_switch_udpck_to_upllck - U puts 00000000 b ul_recv_fifo_ptr 00000000 b ul_send_fifo_ptr