Lines Matching refs:priv

140 #define USE_PORTS(priv) ((priv)->minor <= GPIO_MINOR_B)  argument
146 struct gpio_private *priv = file->private_data; in gpio_poll() local
152 poll_wait(file, &priv->alarm_wq, wait); in gpio_poll()
153 if (priv->minor == GPIO_MINOR_A) { in gpio_poll()
159 tmp = ~data & priv->highalarm & 0xFF; in gpio_poll()
164 } else if (priv->minor == GPIO_MINOR_B) in gpio_poll()
166 else if (priv->minor == GPIO_MINOR_G) in gpio_poll()
173 if ((data & priv->highalarm) || in gpio_poll()
174 (~data & priv->lowalarm)) { in gpio_poll()
187 struct gpio_private *priv; in etrax_gpio_wake_up_check() local
193 priv = alarmlist; in etrax_gpio_wake_up_check()
194 while (priv) { in etrax_gpio_wake_up_check()
195 if (USE_PORTS(priv)) in etrax_gpio_wake_up_check()
196 data = *priv->port; in etrax_gpio_wake_up_check()
197 else if (priv->minor == GPIO_MINOR_G) in etrax_gpio_wake_up_check()
200 if ((data & priv->highalarm) || in etrax_gpio_wake_up_check()
201 (~data & priv->lowalarm)) { in etrax_gpio_wake_up_check()
202 DP(printk("etrax_gpio_wake_up_check %i\n",priv->minor)); in etrax_gpio_wake_up_check()
203 wake_up_interruptible(&priv->alarm_wq); in etrax_gpio_wake_up_check()
206 priv = priv->next; in etrax_gpio_wake_up_check()
248 static void gpio_write_bit(struct gpio_private *priv, in gpio_write_bit() argument
251 *priv->port = *priv->shadow &= ~(priv->clk_mask); in gpio_write_bit()
253 *priv->port = *priv->shadow |= priv->data_mask; in gpio_write_bit()
255 *priv->port = *priv->shadow &= ~(priv->data_mask); in gpio_write_bit()
258 *priv->port = *priv->shadow |= priv->clk_mask; in gpio_write_bit()
261 static void gpio_write_byte(struct gpio_private *priv, unsigned char data) in gpio_write_byte() argument
265 if (priv->write_msb) in gpio_write_byte()
267 gpio_write_bit(priv, data, i); in gpio_write_byte()
270 gpio_write_bit(priv, data, i); in gpio_write_byte()
276 struct gpio_private *priv = file->private_data; in gpio_write() local
280 if (priv->minor != GPIO_MINOR_A && priv->minor != GPIO_MINOR_B) in gpio_write()
290 if (priv->clk_mask == 0 || priv->data_mask == 0) { in gpio_write()
297 count, priv->data_mask, priv->clk_mask, priv->write_msb)); in gpio_write()
300 gpio_write_byte(priv, *buf++); in gpio_write()
312 struct gpio_private *priv; in gpio_open() local
319 priv = kzalloc(sizeof(struct gpio_private), GFP_KERNEL); in gpio_open()
321 if (!priv) in gpio_open()
324 priv->minor = p; in gpio_open()
328 if (USE_PORTS(priv)) { /* A and B */ in gpio_open()
329 priv->port = ports[p]; in gpio_open()
330 priv->shadow = shads[p]; in gpio_open()
331 priv->dir = dir[p]; in gpio_open()
332 priv->dir_shadow = dir_shadow[p]; in gpio_open()
333 priv->changeable_dir = changeable_dir[p]; in gpio_open()
334 priv->changeable_bits = changeable_bits[p]; in gpio_open()
336 priv->port = NULL; in gpio_open()
337 priv->shadow = NULL; in gpio_open()
338 priv->dir = NULL; in gpio_open()
339 priv->dir_shadow = NULL; in gpio_open()
340 priv->changeable_dir = 0; in gpio_open()
341 priv->changeable_bits = 0; in gpio_open()
344 priv->highalarm = 0; in gpio_open()
345 priv->lowalarm = 0; in gpio_open()
346 priv->clk_mask = 0; in gpio_open()
347 priv->data_mask = 0; in gpio_open()
348 init_waitqueue_head(&priv->alarm_wq); in gpio_open()
350 filp->private_data = priv; in gpio_open()
354 priv->next = alarmlist; in gpio_open()
355 alarmlist = priv; in gpio_open()
402 unsigned long inline setget_input(struct gpio_private *priv, unsigned long arg) in setget_input() argument
406 if (USE_PORTS(priv)) { in setget_input()
407 *priv->dir = *priv->dir_shadow &= in setget_input()
408 ~((unsigned char)arg & priv->changeable_dir); in setget_input()
409 return ~(*priv->dir_shadow) & 0xFF; /* Only 8 bits */ in setget_input()
412 if (priv->minor != GPIO_MINOR_G) in setget_input()
453 unsigned long inline setget_output(struct gpio_private *priv, unsigned long arg) in setget_output() argument
455 if (USE_PORTS(priv)) { in setget_output()
456 *priv->dir = *priv->dir_shadow |= in setget_output()
457 ((unsigned char)arg & priv->changeable_dir); in setget_output()
458 return *priv->dir_shadow; in setget_output()
460 if (priv->minor != GPIO_MINOR_G) in setget_output()
508 struct gpio_private *priv = file->private_data; in gpio_ioctl() local
516 if (USE_PORTS(priv)) { in gpio_ioctl()
517 ret = *priv->port; in gpio_ioctl()
518 } else if (priv->minor == GPIO_MINOR_G) { in gpio_ioctl()
528 if (USE_PORTS(priv)) { in gpio_ioctl()
529 *priv->port = *priv->shadow |= in gpio_ioctl()
530 ((unsigned char)arg & priv->changeable_bits); in gpio_ioctl()
531 } else if (priv->minor == GPIO_MINOR_G) { in gpio_ioctl()
540 if (USE_PORTS(priv)) { in gpio_ioctl()
541 *priv->port = *priv->shadow &= in gpio_ioctl()
542 ~((unsigned char)arg & priv->changeable_bits); in gpio_ioctl()
543 } else if (priv->minor == GPIO_MINOR_G) { in gpio_ioctl()
551 priv->highalarm |= arg; in gpio_ioctl()
558 priv->lowalarm |= arg; in gpio_ioctl()
565 priv->highalarm &= ~arg; in gpio_ioctl()
566 priv->lowalarm &= ~arg; in gpio_ioctl()
587 if (USE_PORTS(priv)) { in gpio_ioctl()
588 ret = *priv->dir_shadow; in gpio_ioctl()
589 } else if (priv->minor == GPIO_MINOR_G) { in gpio_ioctl()
602 ret = setget_input(priv, arg) & 0x7FFFFFFF; in gpio_ioctl()
610 ret = setget_output(priv, arg) & 0x7FFFFFFF; in gpio_ioctl()
629 priv->clk_mask = arg & 0xFF; in gpio_ioctl()
630 priv->data_mask = (arg >> 8) & 0xFF; in gpio_ioctl()
631 priv->write_msb = (arg >> 16) & 0x01; in gpio_ioctl()
635 if (!((priv->clk_mask & priv->changeable_bits) && in gpio_ioctl()
636 (priv->data_mask & priv->changeable_bits) && in gpio_ioctl()
637 (priv->clk_mask & *priv->dir_shadow) && in gpio_ioctl()
638 (priv->data_mask & *priv->dir_shadow))) in gpio_ioctl()
640 priv->clk_mask = 0; in gpio_ioctl()
641 priv->data_mask = 0; in gpio_ioctl()
649 if (USE_PORTS(priv)) { in gpio_ioctl()
650 val = *priv->port; in gpio_ioctl()
651 } else if (priv->minor == GPIO_MINOR_G) { in gpio_ioctl()
661 if (USE_PORTS(priv)) { in gpio_ioctl()
662 val = *priv->shadow; in gpio_ioctl()
663 } else if (priv->minor == GPIO_MINOR_G) { in gpio_ioctl()
680 val = setget_input(priv, val); in gpio_ioctl()
694 val = setget_output(priv, val); in gpio_ioctl()
701 if (priv->minor == GPIO_MINOR_LEDS) in gpio_ioctl()