Lines Matching +full:tri +full:- +full:state

1 // SPDX-License-Identifier: GPL-2.0
4 * Comedi driver for Advantech PCM-3724 Digital I/O board
11 * Description: Advantech PCM-3724
12 * Devices: [Advantech] PCM-3724 (pcm3724)
16 * This is driver for digital I/O boards PCM-3724 with 48 DIO.
23 * [0] - I/O port base address
33 * This board has two standard 8255 devices that provide six 8-bit DIO ports
36 * bidirectional, tri-state line buffer, two additional I/O ports are used
65 if (s->io_bits & 0x0000ff) { in compute_buffer()
71 if (s->io_bits & 0x00ff00) { in compute_buffer()
77 if (s->io_bits & 0xff0000) { in compute_buffer()
89 struct comedi_subdevice *s_dio1 = &dev->subdevices[0]; in do_3724_config()
90 struct comedi_subdevice *s_dio2 = &dev->subdevices[1]; in do_3724_config()
98 if (!(s->io_bits & 0x0000ff)) in do_3724_config()
101 if (!(s->io_bits & 0x00ff00)) in do_3724_config()
104 if (!(s->io_bits & 0xff0000)) in do_3724_config()
111 port_8255_cfg = dev->iobase + I8255_CTRL_REG; in do_3724_config()
113 port_8255_cfg = dev->iobase + I8255_SIZE + I8255_CTRL_REG; in do_3724_config()
115 outb(buffer_config, dev->iobase + PCM3724_DIO_DIR_REG); in do_3724_config()
123 struct priv_pcm3724 *priv = dev->private; in enable_chan()
124 struct comedi_subdevice *s_dio1 = &dev->subdevices[0]; in enable_chan()
132 priv->dio_1 |= mask; in enable_chan()
134 priv->dio_2 |= mask; in enable_chan()
136 if (priv->dio_1 & 0xff0000) in enable_chan()
139 if (priv->dio_1 & 0xff00) in enable_chan()
142 if (priv->dio_1 & 0xff) in enable_chan()
145 if (priv->dio_2 & 0xff0000) in enable_chan()
148 if (priv->dio_2 & 0xff00) in enable_chan()
151 if (priv->dio_2 & 0xff) in enable_chan()
154 outb(gatecfg, dev->iobase + PCM3724_GATE_CTRL_REG); in enable_chan()
163 unsigned int chan = CR_CHAN(insn->chanspec); in subdev_3724_insn_config()
180 do_3724_config(dev, s, insn->chanspec); in subdev_3724_insn_config()
181 enable_chan(dev, s, insn->chanspec); in subdev_3724_insn_config()
183 return insn->n; in subdev_3724_insn_config()
195 return -ENOMEM; in pcm3724_attach()
197 ret = comedi_request_region(dev, it->options[0], 0x10); in pcm3724_attach()
205 for (i = 0; i < dev->n_subdevices; i++) { in pcm3724_attach()
206 s = &dev->subdevices[i]; in pcm3724_attach()
210 s->insn_config = subdev_3724_insn_config; in pcm3724_attach()
224 MODULE_DESCRIPTION("Comedi driver for Advantech PCM-3724 Digital I/O board");