This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Re: AT91SAM7S USB corruption
- From: "oliver munz @ s p e a g" <munz at speag dot ch>
- To: erantimus at gmail dot com
- Cc: ecos-discuss at ecos dot sourceware dot org
- Date: Thu, 11 Feb 2010 14:23:27 +0100
- Subject: [ECOS] Re: AT91SAM7S USB corruption
- Reply-to: munz at speag dot ch
There is an error in the rx-endpoint-interrupt-handling:
In the "usbs_at91_endpoint_dsr (cyg_uint8 epn)" replace:
pep->buffer_size = (cyg_uint32) * ppbegin - (cyg_uint32) pep->buffer;
if (pep->buffer_size && pep->complete_fn) {
if (!pep->halted) {
(*pep->complete_fn) (pep->complete_data, pep->buffer_size);
} else {
(*pep->complete_fn) (pep->complete_data, -EAGAIN);
}
}
usbs_at91_endpoint_interrupt_enable (epn, false);
with this:
pep->buffer_size = (cyg_uint32) * ppbegin - (cyg_uint32) pep->buffer;
if (!pep->halted) {
(*pep->complete_fn) (pep->complete_data, pep->buffer_size);
} else {
(*pep->complete_fn) (pep->complete_data, -EAGAIN);
}
usbs_at91_endpoint_interrupt_enable (epn, false);
I will sometime make a diff...
Regards
Oliver
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss