Lines Matching +full:x +full:- +full:axis

1 // SPDX-License-Identifier: GPL-2.0+
5 * Hardware comedi driver for PCI-8164 Adlink card
11 * Description: Driver for the Adlink PCI-8164 4 Axes Motion Control board
12 * Devices: [ADLink] PCI-8164 (adl_pci8164)
24 #define PCI8164_AXIS(x) ((x) * 0x08) argument
35 unsigned long offset = (unsigned long)s->private; in adl_pci8164_insn_read()
36 unsigned int chan = CR_CHAN(insn->chanspec); in adl_pci8164_insn_read()
39 for (i = 0; i < insn->n; i++) in adl_pci8164_insn_read()
40 data[i] = inw(dev->iobase + PCI8164_AXIS(chan) + offset); in adl_pci8164_insn_read()
42 return insn->n; in adl_pci8164_insn_read()
50 unsigned long offset = (unsigned long)s->private; in adl_pci8164_insn_write()
51 unsigned int chan = CR_CHAN(insn->chanspec); in adl_pci8164_insn_write()
54 for (i = 0; i < insn->n; i++) in adl_pci8164_insn_write()
55 outw(data[i], dev->iobase + PCI8164_AXIS(chan) + offset); in adl_pci8164_insn_write()
57 return insn->n; in adl_pci8164_insn_write()
70 dev->iobase = pci_resource_start(pcidev, 2); in adl_pci8164_auto_attach()
76 /* read MSTS register / write CMD register for each axis (channel) */ in adl_pci8164_auto_attach()
77 s = &dev->subdevices[0]; in adl_pci8164_auto_attach()
78 s->type = COMEDI_SUBD_PROC; in adl_pci8164_auto_attach()
79 s->subdev_flags = SDF_READABLE | SDF_WRITABLE; in adl_pci8164_auto_attach()
80 s->n_chan = 4; in adl_pci8164_auto_attach()
81 s->maxdata = 0xffff; in adl_pci8164_auto_attach()
82 s->len_chanlist = 4; in adl_pci8164_auto_attach()
83 s->insn_read = adl_pci8164_insn_read; in adl_pci8164_auto_attach()
84 s->insn_write = adl_pci8164_insn_write; in adl_pci8164_auto_attach()
85 s->private = (void *)PCI8164_CMD_MSTS_REG; in adl_pci8164_auto_attach()
87 /* read SSTS register / write OTP register for each axis (channel) */ in adl_pci8164_auto_attach()
88 s = &dev->subdevices[1]; in adl_pci8164_auto_attach()
89 s->type = COMEDI_SUBD_PROC; in adl_pci8164_auto_attach()
90 s->subdev_flags = SDF_READABLE | SDF_WRITABLE; in adl_pci8164_auto_attach()
91 s->n_chan = 4; in adl_pci8164_auto_attach()
92 s->maxdata = 0xffff; in adl_pci8164_auto_attach()
93 s->len_chanlist = 4; in adl_pci8164_auto_attach()
94 s->insn_read = adl_pci8164_insn_read; in adl_pci8164_auto_attach()
95 s->insn_write = adl_pci8164_insn_write; in adl_pci8164_auto_attach()
96 s->private = (void *)PCI8164_OTP_SSTS_REG; in adl_pci8164_auto_attach()
98 /* read/write BUF0 register for each axis (channel) */ in adl_pci8164_auto_attach()
99 s = &dev->subdevices[2]; in adl_pci8164_auto_attach()
100 s->type = COMEDI_SUBD_PROC; in adl_pci8164_auto_attach()
101 s->subdev_flags = SDF_READABLE | SDF_WRITABLE; in adl_pci8164_auto_attach()
102 s->n_chan = 4; in adl_pci8164_auto_attach()
103 s->maxdata = 0xffff; in adl_pci8164_auto_attach()
104 s->len_chanlist = 4; in adl_pci8164_auto_attach()
105 s->insn_read = adl_pci8164_insn_read; in adl_pci8164_auto_attach()
106 s->insn_write = adl_pci8164_insn_write; in adl_pci8164_auto_attach()
107 s->private = (void *)PCI8164_BUF0_REG; in adl_pci8164_auto_attach()
109 /* read/write BUF1 register for each axis (channel) */ in adl_pci8164_auto_attach()
110 s = &dev->subdevices[3]; in adl_pci8164_auto_attach()
111 s->type = COMEDI_SUBD_PROC; in adl_pci8164_auto_attach()
112 s->subdev_flags = SDF_READABLE | SDF_WRITABLE; in adl_pci8164_auto_attach()
113 s->n_chan = 4; in adl_pci8164_auto_attach()
114 s->maxdata = 0xffff; in adl_pci8164_auto_attach()
115 s->len_chanlist = 4; in adl_pci8164_auto_attach()
116 s->insn_read = adl_pci8164_insn_read; in adl_pci8164_auto_attach()
117 s->insn_write = adl_pci8164_insn_write; in adl_pci8164_auto_attach()
118 s->private = (void *)PCI8164_BUF1_REG; in adl_pci8164_auto_attach()
134 id->driver_data); in adl_pci8164_pci_probe()
152 MODULE_DESCRIPTION("Comedi low-level driver");