On Friday, November 06, 2015 10:30 AM, Ian Abbott wrote: > On 05/11/15 19:03, Hartley Sweeten wrote: >> On Thursday, November 05, 2015 5:43 AM, Ian Abbott wrote: >>> On 04/11/15 16:55, H Hartley Sweeten wrote: >>>> The analog outputs can use an external reference to create the D/A output >>>> range. Add an entry to the comedi_lrange table for it and modify the >>>> (*insn_write) to support it. >>>> >>>> Signed-off-by: H Hartley Sweeten <hsweeten@xxxxxxxxxxxxxxxxxxx> >>>> Cc: Ian Abbott <abbotti@xxxxxxxxx> >>>> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> >>>> --- >>>> drivers/staging/comedi/drivers/adv_pci1710.c | 13 ++++++++----- >>>> 1 file changed, 8 insertions(+), 5 deletions(-) >>>> >>>> diff --git a/drivers/staging/comedi/drivers/adv_pci1710.c b/drivers/staging/comedi/drivers/adv_pci1710.c >>>> index 86ed288..339130b 100644 >>>> --- a/drivers/staging/comedi/drivers/adv_pci1710.c >>>> +++ b/drivers/staging/comedi/drivers/adv_pci1710.c >>>> @@ -65,6 +65,8 @@ >>>> #define PCI171X_CLRFIFO_REG 0x09 /* W: clear FIFO */ >>>> #define PCI171X_DA_REG(x) (0x0a + ((x) * 2)) /* W: D/A register */ >>>> #define PCI171X_DAREF_REG 0x0e /* W: D/A reference control */ >>>> +#define PCI171X_DAREF(c, r) (((r) & 0x3) << ((c) * 2)) >>>> +#define PCI171X_DAREF_MASK(c) PCI171X_DAREF((c), 0x3) >>>> #define PCI171X_DI_REG 0x10 /* R: digital inputs */ >>>> #define PCI171X_DO_REG 0x10 /* W: digital outputs */ >>>> #define PCI171X_TIMER_BASE 0x18 /* R/W: 8254 timer */ >>>> @@ -111,9 +113,10 @@ static const struct comedi_lrange pci1711_ai_range = { >>>> }; >>>> >>>> static const struct comedi_lrange pci171x_ao_range = { >>>> - 2, { >>>> - UNI_RANGE(5), >>>> - UNI_RANGE(10) >>>> + 3, { >>>> + UNI_RANGE(5), /* internal -5V ref */ >>>> + UNI_RANGE(10), /* internal -10V ref */ >>>> + RANGE_ext(0, 1) /* external Vref (+/-10V max) */ >>> >>> Minor niggle: >>> >>> The comment for the external Vref is slightly confusing. The manual I >>> have says: >>> >>> By inputting an external reference voltage: -xV , where |x| <= 10, >>> you will get a output voltage range: 0 to xV. >>> >>> So the external reference voltage is never positive. How about this?: >> > >>> /* external -xV ref, |x| <= 10 */ >> >> Again it appears we have different manuals. > > Indeed! Ian, The link you referenced for the manual in another email also has this manual: http://downloadt.advantech.com/ProductFile/Downloadfile1/1-11P65IR/PCI-1710U.pdf It does not include the register map but has this information about the analog outputs: Page 26: The maximum reference input voltage is +/-10V and maximum output scaling Is +/-10V. Page 32: Output Range Using External Reference 0 ~ +xV @ -xV (-10 <= x <= 10) Based on that, are you ok with the RANGE_ext(0,1) option? Thanks, Hartley _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel