lossage. On the Alpha, we force the buffers to be allocated through the SGMAP
so that the PCI bus addresses are low enough.
At least it's only one line of code...
Also fix some typos and add more debugging printf()s.
This would work on the Alpha, but the card I have appears to have the upper
address bits chopped off, and the ring buffer gets mapped using the DGMAP,
which uses the upper bits. Boom.
* Use the trigger interface.
* Permit different encodings for record and playback.
* Set AUDIO_PROP_INDEPENDENT.
* Fix the mmap(2) hole again.
* Use 16-bit mode for a-law and u-law playback.
the lazy-transmit-interrupt logic, fixing a few minor logic problems.
Now unable to reproduce the lockup problem described in PR #6767. Changing
PR's state to "feedback".
like the SMC83C100 EPIC/100 driver:
* Rather than using pointers to the head and tail of the transmit and
receive rings, use wrapping indexes into arrays. This is a little more
obvious when reading the code.
* More cleanly separate the hardware descriptor from the software descriptor.
* bus_dma it everywhere.
* Implement interrupt pacing and avoid a potential race in the transmit
loop.
Now this looks more or less like the Rhine driver I was working on when
this driver was committed :-) Update copyright notice to reflect that.
on the 8 port card Simon Gerraty has. In general, cards which have
this lots of ports also have a separate interrupt status register, but
this change is just to talk to the various ports independently. It works,
but it's not optimal. (XXX still need a good name for the card in the
comments, and to update the manual page.)
has the same 4-byte alignment requirement that the transmit side does. This
causes the packet payload to be misaligned. So, on systems which require
strict alignment, we must copy the incoming frame to a new packet buffer,
suitably aligned.