[alsa-devel] Serial MIDI driver for PL011 - as found on BCM2835 hardware

Takashi Iwai tiwai at suse.de
Wed Oct 22 08:51:38 CEST 2014


At Wed, 22 Oct 2014 09:24:35 +1100,
Kim Taylor wrote:
> 
> On Tue, 2014-10-21 at 09:20 +0200, Daniel Mack wrote:
> > Hi,
> > 
> > Thanks for sharing this!
> > 
> > On 10/21/2014 01:40 AM, Kim Taylor wrote:
> > > I've written a driver for raw MIDI using the PL011. It is obviously
> > > based on the snd-serial-u16550 module, with a couple of improvements:
> > >
> > >  - I've implemented a drain() callback.
> > > 
> > >  - I've also implemented a half duplex mode based on a timer callback
> > > which was necessary for reliable communication with my eMagic Unitor 8
> > > hardware. (Testing with a serial link to other hardware shows that the
> > > full duplex mode is also working.)
> > 
> > So I guess you could patch the existing driver to make it work for your
> > use case, right? I haven't looked at the code in detail, but from what
> > you describe, that should be possible.
> 
> I'm not sure about that. As it uses a different UART chip, there is a
> new probe() function, it uses memory mapped I/O, instead of i386
> inb/outb, it gathers information from the ARM AMBA bus...
> 
> The only things that would remain unchanged are the output_trigger() and
> output_write() functions. One possibility might be to abstract out all
> read/write operations using function pointers, however, I believe that
> the new driver is different enough to constitute a new module.
> 
> Or maybe there should be a third module (for example snd-serial-core,
> containing any common functions, exporting them to both
> snd-serial-u16550 and snd-serial-pl011?

Yes, that sounds good.  Of course, it depends on the volume they can
share.  If there are so few, no big merit to split to modules.  Let's
see.


Takashi


More information about the Alsa-devel mailing list