diff options
Diffstat (limited to 'firmware/usbstack/usb_serial.c')
-rw-r--r-- | firmware/usbstack/usb_serial.c | 11 |
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))); |
61 | static unsigned char receive_buffer[32] | 62 | static 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 */ | ||
66 | static unsigned char transit_buffer[32] | ||
67 | USB_DEVBSS_ATTR __attribute__((aligned(4))); | ||
68 | #endif | ||
63 | 69 | ||
64 | static void sendout(void); | 70 | static 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 | ||