Device drivers and board support files
Paul Boddie
paul at boddie.org.uk
Tue Jan 26 14:34:19 CET 2016
Hello again,
Emboldened by my recent modest success, and taking a look at the previously-
mentioned MIP32 port of Fiasco.OC and L4Re [*], which doesn't really seem to
have any community involved with it, I wondered whether there might be some
general documentation about adding board support files to Fiasco.OC as well as
writing drivers for L4Re.
[*] https://github.com/MIPS/fiasco-l4re
I've browsed around the L4Re site and have even looked at the TU Dresden
teaching resources, but there appears to be a lot of slideshows and not so
much in the way of concise guidance on such topics. Are there any documents
out there that cover writing the actual code involved?
With regard to board support, I get the feeling that I could possibly get away
with something rather similar to other MIPS-based boards, and if I'm launching
Fiasco.OC from U-Boot, I might not even need to do the basic board setup tasks
(which include things like setting up the DRAM on the SoC concerned). However,
I suspect that I would have to look into things like interrupt controllers for
the various timers that I suppose must be needed by the kernel.
As for driver support, I noticed a previous message that gives an outline of
what should be done:
http://os.inf.tu-dresden.de/pipermail/l4-hackers/2015/007475.html
Here, to be more specific, I imagine that the following things would be
affected:
1. src/l4/pkg/io/config/<board>.devs would need populating with Device
definitions employing those Mmio declarations
2. src/l4/pkg/io/config/vbus-config.vbus might need changing, perhaps to allow
devices to match some bus identifier or other, although I don't completely
follow this (I'm guessing that my driver should obtain a device reference via
the vbus mechanism)
3. looking at the src/l4/pkg/drivers/lcd/src/lcd-omap3.c driver, which
probably references devices in src/l4/pkg/io/io/config/plat-
beagleboard/hw_devices.io, I see that the driver actually obtains a reference
to the "dss" device using l4io_lookup_device, whereas the GPIO and I2C devices
are obtained using l4vbus_get_device_by_hid, but I'm guessing that there is a
distinction between specific and generic devices here
4. in src/l4/pkg/drivers/.../<device>.c the l4io_request_iomem call would
employ the same physical addresses as those mentioned in (1) to access the
device memory regions
I did start looking at the existing LCD drivers, this being something that
I've managed to get to work with bare-metal code on the board concerned, and I
noticed that drivers/lcd seems to mention "arm" a lot, but would I be right in
assuming that none of that code is actually ARM-specific?
Thanks once again for any help you can offer!
Paul
More information about the l4-hackers
mailing list