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 <hswee...@visionengravers.com>
Cc: Ian Abbott <abbo...@mev.co.uk>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
   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 Abbott @ MEV Ltd.    E-mail: <abbo...@mev.co.uk> )=-
-=(                          Web: http://www.mev.co.uk/  )=-
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to