On 3/11/21 2:59 PM, Enrico Weigelt, metux IT consult wrote:
On 11.03.21 08:01, Mugil Raj wrote:
Hi,
[ CC'ing Utkarsh, who's got a similar question ]
This is Mugilraj, an undergrad at NIT Trichy, India. I'm applying to
GSoC'21 for the project IIO driver. So, I need help from you guys with
the application process and finding the device to develop a driver.
Since you're not very experienced, I suggest starting with some
simple device like plain ADCs. Several vendors like TI or AD offer
a huge range of ADCs where we no drivers for >
I'd start w/ the simple SPI based devices. It seems they've got quite
some overlap (quite simiar protocols), so parts of that maybe could be
consolidated into some common library code.
They are sometimes similar, but then have subtle differences. Sometimes
hardware designers like to move bits around, just because they can.
For one family (100+ devices) we already have such a library, see
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/iio/adc/ad_sigma_delta.c.
What can make a good target for shared code is single channels converters (both
ADCs and DACs),since there is really only that many ways how to implement that
in hardware.
For simple ADCs, I've also got yet another(more complex) idea:
Create some 'simple-ADC' subsys, which gives a *simple* API for the
*simple* cases that's bridged to iio and hwmon (maybe even other
subsys's). The idea is getting actual hw drivers for those devices very
simple and small, make them usable in IIO as well as hwmon.
Not to forget ALSA. Some ADCs are multi-purpose so that they can be used for
monitoring, but also audio applications.
I did propose such a ADC subsystem maybe 10 years ago. The conclusions back
then was that we shouldn't create a subsystem for every sensor type and instead
use IIO.
An interesting question here, that needs some deeper thoughs, is the
driver instantiation into the actual subsystems.
For example, if some DT says, there's some "ti,adcXYZABC" on the board,
what does that actually mean for us ? Where (eg. in which subsys) shall
it appear ? Is it an IIO or hwmon device ? Shall that decision even be
made only by DT, or do we rely on some other configuration layer ?
Yes, that is a really complicated question. DT is not supposed to describe the
software (sub-)systems that are used.