summaryrefslogtreecommitdiff
path: root/firmware/usbstack/usb_serial.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/usbstack/usb_serial.c')
-rw-r--r--firmware/usbstack/usb_serial.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/firmware/usbstack/usb_serial.c b/firmware/usbstack/usb_serial.c
index 4a80433435..e3ef4f5814 100644
--- a/firmware/usbstack/usb_serial.c
+++ b/firmware/usbstack/usb_serial.c
@@ -19,6 +19,7 @@
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21#include "string.h" 21#include "string.h"
22#include "config.h"
22#include "system.h" 23#include "system.h"
23#include "usb_core.h" 24#include "usb_core.h"
24#include "usb_drv.h" 25#include "usb_drv.h"
@@ -60,6 +61,11 @@ static unsigned char send_buffer[BUFFER_SIZE]
60 USB_DEVBSS_ATTR __attribute__((aligned(32))); 61 USB_DEVBSS_ATTR __attribute__((aligned(32)));
61static unsigned char receive_buffer[32] 62static unsigned char receive_buffer[32]
62 USB_DEVBSS_ATTR __attribute__((aligned(32))); 63 USB_DEVBSS_ATTR __attribute__((aligned(32)));
64#if CONFIG_USBOTG == USBOTG_DESIGNWARE
65/* Aligned transit buffer */
66static unsigned char transit_buffer[32]
67 USB_DEVBSS_ATTR __attribute__((aligned(4)));
68#endif
63 69
64static void sendout(void); 70static void sendout(void);
65 71
@@ -163,8 +169,13 @@ static void sendout(void)
163 if(buffer_transitlength > 0) 169 if(buffer_transitlength > 0)
164 { 170 {
165 buffer_length -= buffer_transitlength; 171 buffer_length -= buffer_transitlength;
172#if CONFIG_USBOTG == USBOTG_DESIGNWARE
173 memcpy(transit_buffer,&send_buffer[buffer_start],buffer_transitlength);
174 usb_drv_send_nonblocking(ep_in,transit_buffer,buffer_transitlength);
175#else
166 usb_drv_send_nonblocking(ep_in, &send_buffer[buffer_start], 176 usb_drv_send_nonblocking(ep_in, &send_buffer[buffer_start],
167 buffer_transitlength); 177 buffer_transitlength);
178#endif
168 } 179 }
169} 180}
170 181