Both I and Paolo are engineers (BEng) in embedded systems. I had made 2 (kernel space) drivers before (not in the kernel tree), and Paolo had done "ARM7TDMI and DSP speech codecs programming before, ... and RasPi has a DSP" <-- I'm quoting a tweet from Paolo.
The device drivers are the missing ones from http://elinux.org/RPi_Low-leve.....er_support
- The Foundation will not include a GPIO driver in the initial release, standard Linux GPIO drivers should work with minimal modification.
- The Foundation will not include an SPI driver in the initial release, we hope the community might write one.
- The Foundation will not include an I²C driver in the initial release, we hope the community might provide one, standard Linux I²C drivers should work with minimal modification.
We will make the kernel space device drivers mentioned in the above list, except the first. If GPIO is done via polling everything from the above list will be made.
We can, of course, not release anything before we have a Pi to test the drivers on.
I'm writing on a more detailed Readme file, which is to be released on this projects GitHub page.
I will post a link to the repository at GitHub as soon as i have just a little bit to show: Readme file, userland documentation (how to use device drivers from programs/software libraries), and of course the kernel source code and example userland (C) source code, including kernel source code for the alpha (=unstable, for daredevils only) device drivers.
Note that SPI and (high-speed) I²C makes it possible to have audio/mic input for the Pi via a 16-bit stereo ADC chip and some custom electronics.
The device driver could, if instructed to do so, redirect raw audio capture from a specific SPI port (SPI1 or SPI2) or I²C device to Linux's sound subsystem. Any desktop should then discover the new sound device via the X11 server (or in the near future: Wayland). Programs are also capable of discovering the audio device.
If anyone is working on SPI and I²C kernel space device drivers for the Pi, i would like to know about it.
And now 3 question to the reader. Thanks to anyone in advance for any useful answer.
I have to ask this question about the GPIO and the Pi:
Does it use polling or does it use the hardware-interrupt support from the BCM2835?
If polling is used, then there is a room for optimization (read: Use hardware-interrupt + a tiny kernel space driver + a UIO driver).
How do you make layered device drivers in the Linux kernel? How to depend on some lower level device driver? Post links if you know anything. Thanks.
Does there exists a UART/low-level serial port device driver for the BCM2835. I had seen some bcm2708 stuff in the RasPi kernel tree via https://github.com/simoncadman/Raspberry-Pi-Kernel-Patch/tree/3.2/arch/arm/mach-bcm2708
Does the BCM2835 and the BCM2708 shares some of the same on-chip peripherals? If yes, which?
What is you opinion about these device drivers?
Would you use SPI, and I²C in you own DIY hardware project together with a Pi?