[PATCH 15/22] staging: comedi: adv_pci1710: tidy up analog output subdev_flags
Ian Abbott
abbotti at mev.co.uk
Fri Nov 6 17:28:43 UTC 2015
On 05/11/15 18:56, Hartley Sweeten wrote:
> On Thursday, November 05, 2015 6:01 AM, Ian Abbott wrote:
>> On 04/11/15 16:55, H Hartley Sweeten wrote:
>>> The SDF_GROUND and SDF_COMMON flags are not needed for the analog output
>>> subdevice. Just remove them.
>>>
>>> Signed-off-by: H Hartley Sweeten <hsweeten at visionengravers.com>
>>> Cc: Ian Abbott <abbotti at mev.co.uk>
>>> Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
>>> ---
>>> drivers/staging/comedi/drivers/adv_pci1710.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/staging/comedi/drivers/adv_pci1710.c b/drivers/staging/comedi/drivers/adv_pci1710.c
>>> index 339130b..0511f26 100644
>>> --- a/drivers/staging/comedi/drivers/adv_pci1710.c
>>> +++ b/drivers/staging/comedi/drivers/adv_pci1710.c
>>> @@ -817,7 +817,7 @@ static int pci1710_auto_attach(struct comedi_device *dev,
>>> if (board->has_ao) {
>>> s = &dev->subdevices[subdev];
>>> s->type = COMEDI_SUBD_AO;
>>> - s->subdev_flags = SDF_WRITABLE | SDF_GROUND | SDF_COMMON;
>>> + s->subdev_flags = SDF_WRITABLE;
>>> s->n_chan = 2;
>>> s->maxdata = 0x0fff;
>>> s->range_table = &pci171x_ao_range;
>>>
>>
>> The signal connector has separate pins for AIGND, AOGND and DGND,
>> although ultimately they are referenced to the same voltage. I'd just
>> leave the SDF_GROUND and SDF_COMMON flags set, same as for the analog
>> input subdevice.
>
> They just don't make any sense here. The SDF_* aref flags are used with the
> analog input subdevices to specify which AREF_* options are supported. The
> AREF_* options are then used to program the hardware for the desired
> analog aref.
>
> The connector does have the separate pins for the analog input, analog output
> and digital grounds but, like you said, they all go to a common reference. The
> user might specify a AREF_* selection but it doesn't actually do anything.
>
> If the analog aref is not programmable I think it's a bit overkill to specify
> the SDF_* aref in the subdev_flags. If anything just the SDF_GROUND should
> be specified which is the default aref (AREF_GROUND = 0x00).
Most drivers' AO subdevices seem to set include SDF_GROUND and/or
SDF_COMMON. I think analog subdevices should specify some sort of
reference for information purposes.
The AI subdevice also sets both SDF_GROUND and SDF_COMMON, and SDF_DIFF
if it supports differential.
> For the analog inputs, the user's manual for the PCI-1710/1710HG show a
> couple wiring options
> 1) Single-ended (AI[x] to AIGND)
> 2) Differential - ground reference (AI[x] to AI[x+1]. AI[x+1] to GND)
> 3) Differential - AIGND reference (AI[x] to AI[x+1]. pull-down resistors to AIGND)
>
> Again, these are wiring options not programmable options. I feel that
> the subdev_flags should either not specify an SDF_* aref option or just
> specify the SDF_GROUND option.
I don't mind removing SDF_COMMON, but in that case it should be removed
from the AI subdevice as well, as ultimately the AI and AO share a
common ground reference.
--
-=( Ian Abbott @ MEV Ltd. E-mail: <abbotti at mev.co.uk> )=-
-=( Web: http://www.mev.co.uk/ )=-
More information about the devel
mailing list