public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@gmail.com>
To: avorontsov@ru.mvista.com
Cc: linux-kernel@vger.kernel.org,
	spi-devel-general@lists.sourceforge.net,
	LM Sensors <lm-sensors@lm-sensors.org>
Subject: Re: [spi-devel-general] Accelerometer, Gyros and ADC's etc within the kernel.
Date: Tue, 27 May 2008 18:59:36 +0100	[thread overview]
Message-ID: <483C4C08.5080402@gmail.com> (raw)
In-Reply-To: <20080527164415.GA27584@polina.dev.rtsoft.ru>

Hi Anton
>> Typical requirements within an application include simply polling for 
>> current
>> readings, and using device triggered interrupts to grab data 
>> continuously to a
>> ring buffer, for collection by suitable userspace code.  Obviously it 
>> would be
>> desirable to standardize sysfs controls for various calibration 
>> parameters as
>> much as possible across the various devices.
>>     
>
> Also, I'd mention that most ADC devices could report in "bunched" mode,
> i.e.
>
> 1. Request ADC readings from pins X, Y, Z1, Z2.
> 2. Wait for single IRQ
> 3. Read all the results
>   
Good point. I guess it's going to be a while before we work out an 
anywhere near
exhaustive list of such events that we might want to be able to control.
> At handhelds.org, we've wrote quite good (I think) ADC subsystem,
> that keeps in mind ADC capabilities. It implements two interfaces:
> in-kernel (e.g. for touchscreen drivers), and userspace interface via
> sysfs. I was planning to implement drivers/input/ interface too.
> I always don't find time to clean it up and submit, though.
>   
I know that feeling!
> Here is ADC subsystem itself:
> http://handhelds.org/cgi-bin/cvsweb.cgi/~checkout~/linux/kernel26/drivers/misc/adc/adc.c
> http://handhelds.org/cgi-bin/cvsweb.cgi/~checkout~/linux/kernel26/include/linux/adc.h
> ^ It is in drivers/misc/, but I think better placement would be
>   drivers/adc.
>   
Looking at the code (briefly admittedly, I'll have a closer look 
tomorrow) it looks like a nice simple and
effective interface. 

The question here, is what functionality of the system under discussion 
does it fulfill.  Again we are in the
territory of possibly having multiple drivers for a device depending on 
how it is being used in the kernel.
Not ideal, but may in fact be more maintainable in the long run.

The sysfs interface looks similar to that I was intending to implement, 
but obviously for your application you
don't need any of the buffering support etc and it makes sense to keep 
everything as simple as possible.

Perhaps if we aim to keep in mind the possibility of combining your ADC 
system with a more general
input device system, it may make sense to do so at a later stage. 

Anything I write is certainly going to share a considerable amount of 
functionality and approach with your code.
> Some drivers for this subsystem:
> http://handhelds.org/cgi-bin/cvsweb.cgi/~checkout~/linux/kernel26/drivers/misc/adc/ads7846_adc_ssp.c
> ^ ADC driver for ADS7846 chips (HP iPaq hx4700 and some HTC phones, the
>   driver is using SSP subsystem, switching it to the SPI is still in my enless
>   TODO list).
>   
I'll keep these part in mind, as a the moment adding any component for 
testing involves me getting my soldering iron out
and I hate soldering!

> http://handhelds.org/cgi-bin/cvsweb.cgi/~checkout~/linux/kernel26/drivers/misc/adc/samcop_adc.c
> ^ SAMCOP (HP iPaq H5xxx) ADC driver.
>
> http://handhelds.org/cgi-bin/cvsweb.cgi/~checkout~/linux/kernel26/drivers/misc/adc/tsc2200_adc_ssp.c
> ^ TSC2200 ADC driver (used AFAIK in some HTC phones, or ASUS handhelds).
>
> http://handhelds.org/cgi-bin/cvsweb.cgi/~checkout~/linux/kernel26/drivers/misc/adc/ad7877.c
> ^ AD7877 ADC driver (HTC phones too, IIRC).
>
> Now, The Generic ADC Touchscreen Driver (tested to work quite good with all
> above ADC drivers on appropriate hardware):
> http://handhelds.org/cgi-bin/cvsweb.cgi/~checkout~/linux/kernel26/drivers/input/touchscreen/ts-adc.c
>
> And finally, ADC Battery driver ("backup" batteries in the iPaq devices
> usually report their voltage via ADC chip, the same used by the
> touchscreen).
> http://handhelds.org/cgi-bin/cvsweb.cgi/~checkout~/linux/kernel26/drivers/power/adc_battery.c
>
> p.s.
> I have more recent (for current Linus' tree) code for ADC subsystem, but
> it still needs some love to be submittable.
>   
Thanks.  I'll have a look at the stuff above and pester you if I need a 
more recent version.

Jonathan



      parent reply	other threads:[~2008-05-27 17:59 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-20 10:04 Accelerometer, Gyros and ADC's etc within the kernel Jonathan Cameron
2008-05-20 11:28 ` Jean Delvare
2008-05-20 21:40   ` Hans J. Koch
2008-05-21 10:04     ` Jonathan Cameron
2008-05-21 13:20       ` Jean Delvare
2008-05-21 13:49   ` Dmitry Torokhov
2008-05-21 14:09     ` Henrique de Moraes Holschuh
2008-05-27 17:16     ` [spi-devel-general] " Ben Dooks
2008-05-27 19:01       ` Dmitry Torokhov
2008-05-22  0:52   ` David Brownell
2008-05-22  9:35     ` [spi-devel-general] " Jonathan Cameron
2008-05-26 16:23       ` Jonathan Cameron
2008-06-26 18:01   ` Accelerometer etc subsystem (Update on progress) Jonathan Cameron
2008-06-26 18:26     ` Jonathan Cameron
2008-06-27  2:39     ` Randy Dunlap
2008-06-27  3:29     ` Ben Nizette
2008-06-27  9:45       ` [lm-sensors] " Jonathan Cameron
2008-06-28  8:34         ` Ben Nizette
2008-06-28 15:34           ` Jonathan Cameron
2008-05-20 17:50 ` Accelerometer, Gyros and ADC's etc within the kernel mark gross
2008-05-21  9:40   ` [spi-devel-general] " Jonathan Cameron
2008-05-27 15:43     ` mark gross
2008-05-29 11:57       ` Jonathan Cameron
2008-05-22  0:53   ` David Brownell
2008-05-27 15:56     ` mark gross
2008-05-27 23:42       ` David Brownell
2008-05-27 16:44 ` [spi-devel-general] " Anton Vorontsov
2008-05-27 16:50   ` Ben Dooks
2008-05-27 17:01     ` Anton Vorontsov
2008-05-27 18:00     ` Jonathan Cameron
2008-05-27 18:12       ` Ben Dooks
2008-05-27 17:59   ` Jonathan Cameron [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=483C4C08.5080402@gmail.com \
    --to=jonathan.cameron@gmail.com \
    --cc=avorontsov@ru.mvista.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lm-sensors@lm-sensors.org \
    --cc=spi-devel-general@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox