BestComm BD tasks, buffer done flag question
Roman Fietze
roman.fietze at telemotive.de
Fri Mar 19 19:15:47 EST 2010
Hello,
I'm using Grant's platform SCLPC/BestComm driver to transfer data from
an FPGA (to disk). Very often I get a negative result from
bcom_buffer_done because BCOM_BD_READY is not set.
When searching for a solution I found this mail from Rob Broersen
talking about a similar promlem in the MPC5200's FEC interrupt
handler:
http://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg16324.html
When I now do something ugly like
if (!bcom_buffer_done(lpbfifo->bcom_cur_task))
mdelay(1);
/* retry */
if (!bcom_buffer_done(lpbfifo->bcom_cur_task)) {
ERROR!!!
return IRQ_HANDLED;
}
HANDLE BD
in the ISR I always succeed, even in the cases where the first check
fails and I call the mdelay. Before that I very often ran into the
ERROR!!! case and my transfer "failed".
Is there a better solution? Does the FEC interrupt handler really work
fine as it is right now? I ask, because when I assume that there would
be just one active DB (as it always is with the SCLPC platform driver)
this one would evt. stall if there wasn't a second interrupt causing
the loop to handle it in this second interrupt.
Roman
--
Roman Fietze Telemotive AG Büro Mühlhausen
Breitwiesen 73347 Mühlhausen
Tel.: +49(0)7335/18493-45 http://www.telemotive.de
More information about the Linuxppc-dev
mailing list