Commit 7c61452a authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: 8255: remove the s->private access macros

The macros CALLBACK_ARG, CALLBACK_FUNC, and subdevpriv all rely
on a a local variable having a specific name. Replace the macros
with local variables wherever they occur.
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a9044d91
...@@ -103,17 +103,14 @@ struct subdev_8255_private { ...@@ -103,17 +103,14 @@ struct subdev_8255_private {
int have_irq; int have_irq;
}; };
#define CALLBACK_ARG (((struct subdev_8255_private *)s->private)->cb_arg)
#define CALLBACK_FUNC (((struct subdev_8255_private *)s->private)->cb_func)
#define subdevpriv ((struct subdev_8255_private *)s->private)
void subdev_8255_interrupt(struct comedi_device *dev, void subdev_8255_interrupt(struct comedi_device *dev,
struct comedi_subdevice *s) struct comedi_subdevice *s)
{ {
struct subdev_8255_private *spriv = s->private;
short d; short d;
d = CALLBACK_FUNC(0, _8255_DATA, 0, CALLBACK_ARG); d = spriv->cb_func(0, _8255_DATA, 0, spriv->cb_arg);
d |= (CALLBACK_FUNC(0, _8255_DATA + 1, 0, CALLBACK_ARG) << 8); d |= (spriv->cb_func(0, _8255_DATA + 1, 0, spriv->cb_arg) << 8);
comedi_buf_put(s->async, d); comedi_buf_put(s->async, d);
s->async->events |= COMEDI_CB_EOS; s->async->events |= COMEDI_CB_EOS;
...@@ -138,30 +135,33 @@ static int subdev_8255_insn(struct comedi_device *dev, ...@@ -138,30 +135,33 @@ static int subdev_8255_insn(struct comedi_device *dev,
struct comedi_subdevice *s, struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data) struct comedi_insn *insn, unsigned int *data)
{ {
struct subdev_8255_private *spriv = s->private;
if (data[0]) { if (data[0]) {
s->state &= ~data[0]; s->state &= ~data[0];
s->state |= (data[0] & data[1]); s->state |= (data[0] & data[1]);
if (data[0] & 0xff) if (data[0] & 0xff)
CALLBACK_FUNC(1, _8255_DATA, s->state & 0xff, spriv->cb_func(1, _8255_DATA, s->state & 0xff,
CALLBACK_ARG); spriv->cb_arg);
if (data[0] & 0xff00) if (data[0] & 0xff00)
CALLBACK_FUNC(1, _8255_DATA + 1, (s->state >> 8) & 0xff, spriv->cb_func(1, _8255_DATA + 1,
CALLBACK_ARG); (s->state >> 8) & 0xff, spriv->cb_arg);
if (data[0] & 0xff0000) if (data[0] & 0xff0000)
CALLBACK_FUNC(1, _8255_DATA + 2, spriv->cb_func(1, _8255_DATA + 2,
(s->state >> 16) & 0xff, CALLBACK_ARG); (s->state >> 16) & 0xff, spriv->cb_arg);
} }
data[1] = CALLBACK_FUNC(0, _8255_DATA, 0, CALLBACK_ARG); data[1] = spriv->cb_func(0, _8255_DATA, 0, spriv->cb_arg);
data[1] |= (CALLBACK_FUNC(0, _8255_DATA + 1, 0, CALLBACK_ARG) << 8); data[1] |= (spriv->cb_func(0, _8255_DATA + 1, 0, spriv->cb_arg) << 8);
data[1] |= (CALLBACK_FUNC(0, _8255_DATA + 2, 0, CALLBACK_ARG) << 16); data[1] |= (spriv->cb_func(0, _8255_DATA + 2, 0, spriv->cb_arg) << 16);
return 2; return 2;
} }
static void do_config(struct comedi_device *dev, struct comedi_subdevice *s) static void do_config(struct comedi_device *dev, struct comedi_subdevice *s)
{ {
struct subdev_8255_private *spriv = s->private;
int config; int config;
config = CR_CW; config = CR_CW;
...@@ -174,7 +174,7 @@ static void do_config(struct comedi_device *dev, struct comedi_subdevice *s) ...@@ -174,7 +174,7 @@ static void do_config(struct comedi_device *dev, struct comedi_subdevice *s)
config |= CR_C_LO_IO; config |= CR_C_LO_IO;
if (!(s->io_bits & 0xf00000)) if (!(s->io_bits & 0xf00000))
config |= CR_C_HI_IO; config |= CR_C_HI_IO;
CALLBACK_FUNC(1, _8255_CR, config, CALLBACK_ARG); spriv->cb_func(1, _8255_CR, config, spriv->cb_arg);
} }
static int subdev_8255_insn_config(struct comedi_device *dev, static int subdev_8255_insn_config(struct comedi_device *dev,
...@@ -310,21 +310,24 @@ int subdev_8255_init(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -310,21 +310,24 @@ int subdev_8255_init(struct comedi_device *dev, struct comedi_subdevice *s,
int (*cb) (int, int, int, unsigned long), int (*cb) (int, int, int, unsigned long),
unsigned long arg) unsigned long arg)
{ {
struct subdev_8255_private *spriv;
s->type = COMEDI_SUBD_DIO; s->type = COMEDI_SUBD_DIO;
s->subdev_flags = SDF_READABLE | SDF_WRITABLE; s->subdev_flags = SDF_READABLE | SDF_WRITABLE;
s->n_chan = 24; s->n_chan = 24;
s->range_table = &range_digital; s->range_table = &range_digital;
s->maxdata = 1; s->maxdata = 1;
s->private = kmalloc(sizeof(struct subdev_8255_private), GFP_KERNEL); spriv = kmalloc(sizeof(*spriv), GFP_KERNEL);
if (!s->private) if (!spriv)
return -ENOMEM; return -ENOMEM;
s->private = spriv;
CALLBACK_ARG = arg; spriv->cb_arg = arg;
if (cb == NULL) if (cb == NULL)
CALLBACK_FUNC = subdev_8255_cb; spriv->cb_func = subdev_8255_cb;
else else
CALLBACK_FUNC = cb; spriv->cb_func = cb;
s->insn_bits = subdev_8255_insn; s->insn_bits = subdev_8255_insn;
s->insn_config = subdev_8255_insn_config; s->insn_config = subdev_8255_insn_config;
...@@ -340,18 +343,20 @@ int subdev_8255_init_irq(struct comedi_device *dev, struct comedi_subdevice *s, ...@@ -340,18 +343,20 @@ int subdev_8255_init_irq(struct comedi_device *dev, struct comedi_subdevice *s,
int (*cb) (int, int, int, unsigned long), int (*cb) (int, int, int, unsigned long),
unsigned long arg) unsigned long arg)
{ {
struct subdev_8255_private *spriv;
int ret; int ret;
ret = subdev_8255_init(dev, s, cb, arg); ret = subdev_8255_init(dev, s, cb, arg);
if (ret < 0) if (ret < 0)
return ret; return ret;
spriv = s->private;
spriv->have_irq = 1;
s->do_cmdtest = subdev_8255_cmdtest; s->do_cmdtest = subdev_8255_cmdtest;
s->do_cmd = subdev_8255_cmd; s->do_cmd = subdev_8255_cmd;
s->cancel = subdev_8255_cancel; s->cancel = subdev_8255_cancel;
subdevpriv->have_irq = 1;
return 0; return 0;
} }
EXPORT_SYMBOL(subdev_8255_init_irq); EXPORT_SYMBOL(subdev_8255_init_irq);
...@@ -412,15 +417,15 @@ static int dev_8255_attach(struct comedi_device *dev, ...@@ -412,15 +417,15 @@ static int dev_8255_attach(struct comedi_device *dev,
static void dev_8255_detach(struct comedi_device *dev) static void dev_8255_detach(struct comedi_device *dev)
{ {
int i;
unsigned long iobase;
struct comedi_subdevice *s; struct comedi_subdevice *s;
struct subdev_8255_private *spriv;
int i;
for (i = 0; i < dev->n_subdevices; i++) { for (i = 0; i < dev->n_subdevices; i++) {
s = dev->subdevices + i; s = dev->subdevices + i;
if (s->type != COMEDI_SUBD_UNUSED) { if (s->type != COMEDI_SUBD_UNUSED) {
iobase = CALLBACK_ARG; spriv = s->private;
release_region(iobase, _8255_SIZE); release_region(spriv->cb_arg, _8255_SIZE);
} }
subdev_8255_cleanup(dev, s); subdev_8255_cleanup(dev, s);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment