diff options
author | Rafaël Carré <rafael.carre@gmail.com> | 2011-12-19 23:10:41 +0000 |
---|---|---|
committer | Rafaël Carré <rafael.carre@gmail.com> | 2011-12-19 23:10:41 +0000 |
commit | 74516e06e79cd7c789395d790b79f8dc6e847f50 (patch) | |
tree | 96e681cfdebf9d8e342eac36289e9f55f865a3d8 /firmware/target | |
parent | 02fad29a0783e1ed7d234ee5c940d95dde1b9148 (diff) | |
download | rockbox-74516e06e79cd7c789395d790b79f8dc6e847f50.tar.gz rockbox-74516e06e79cd7c789395d790b79f8dc6e847f50.zip |
usb-drv-as3525v2: revert part of r31243
assigning a partially initialized structure (through casting) will
initialize members unspecified in the initialization
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31372 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target')
-rw-r--r-- | firmware/target/arm/as3525/usb-drv-as3525v2.c | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/firmware/target/arm/as3525/usb-drv-as3525v2.c b/firmware/target/arm/as3525/usb-drv-as3525v2.c index c0542d5c45..a96d0d1596 100644 --- a/firmware/target/arm/as3525/usb-drv-as3525v2.c +++ b/firmware/target/arm/as3525/usb-drv-as3525v2.c | |||
@@ -116,13 +116,12 @@ static void reset_endpoints(void) | |||
116 | for (unsigned i = 0; i < num_eps(dir == DIR_OUT); i++) | 116 | for (unsigned i = 0; i < num_eps(dir == DIR_OUT); i++) |
117 | { | 117 | { |
118 | int ep = ((dir == DIR_IN) ? in_ep_list : out_ep_list)[i]; | 118 | int ep = ((dir == DIR_IN) ? in_ep_list : out_ep_list)[i]; |
119 | endpoints[ep][out] = (struct usb_endpoint) { | 119 | struct usb_endpoint *endpoint = &endpoints[ep][out]; |
120 | .active = false, | 120 | endpoint->active = false; |
121 | .busy = false, | 121 | endpoint->busy = false; |
122 | .status = -1, | 122 | endpoint->status = -1; |
123 | .done = false, | 123 | endpoint->done = false; |
124 | }; | 124 | semaphore_release(&endpoint->complete); |
125 | semaphore_release(&endpoints[ep][out].complete); | ||
126 | 125 | ||
127 | if (i != 0) | 126 | if (i != 0) |
128 | DEPCTL(ep, out) = DEPCTL_setd0pid; | 127 | DEPCTL(ep, out) = DEPCTL_setd0pid; |
@@ -149,12 +148,11 @@ static void cancel_all_transfers(bool cancel_ep0) | |||
149 | for (unsigned i = !!cancel_ep0; i < num_eps(dir == DIR_OUT); i++) | 148 | for (unsigned i = !!cancel_ep0; i < num_eps(dir == DIR_OUT); i++) |
150 | { | 149 | { |
151 | int ep = ((dir == DIR_IN) ? in_ep_list : out_ep_list)[i]; | 150 | int ep = ((dir == DIR_IN) ? in_ep_list : out_ep_list)[i]; |
152 | endpoints[ep][dir == DIR_OUT] = (struct usb_endpoint) { | 151 | struct usb_endpoint *endpoint = &endpoints[ep][dir == DIR_OUT]; |
153 | .status = -1, | 152 | endpoint->status = -1; |
154 | .busy = false, | 153 | endpoint->busy = false; |
155 | .done = false, | 154 | endpoint->done = false; |
156 | }; | 155 | semaphore_release(&endpoint->complete); |
157 | semaphore_release(&endpoints[ep][dir == DIR_OUT].complete); | ||
158 | DEPCTL(ep, dir) = (DEPCTL(ep, dir) & ~DEPCTL_usbactep); | 156 | DEPCTL(ep, dir) = (DEPCTL(ep, dir) & ~DEPCTL_usbactep); |
159 | } | 157 | } |
160 | 158 | ||
@@ -429,11 +427,10 @@ static void usb_drv_transfer(int ep, void *ptr, int len, bool out) | |||
429 | /* disable interrupts to avoid any race */ | 427 | /* disable interrupts to avoid any race */ |
430 | int oldlevel = disable_irq_save(); | 428 | int oldlevel = disable_irq_save(); |
431 | 429 | ||
432 | endpoints[ep][out ? DIR_OUT : DIR_IN] = (struct usb_endpoint) { | 430 | struct usb_endpoint *endpoint = &endpoints[ep][out ? DIR_OUT : DIR_IN]; |
433 | .busy = true, | 431 | endpoint->busy = true; |
434 | .len = len, | 432 | endpoint->len = len; |
435 | .status = -1, | 433 | endpoint->status = -1; |
436 | }; | ||
437 | 434 | ||
438 | if (out) | 435 | if (out) |
439 | DEPCTL(ep, out) &= ~DEPCTL_naksts; | 436 | DEPCTL(ep, out) &= ~DEPCTL_naksts; |