Annotation of sys/dev/gpio/gpiovar.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: gpiovar.h,v 1.3 2006/01/14 12:33:49 grange Exp $ */
2:
3: /*
4: * Copyright (c) 2004, 2006 Alexander Yurchenko <grange@openbsd.org>
5: *
6: * Permission to use, copy, modify, and distribute this software for any
7: * purpose with or without fee is hereby granted, provided that the above
8: * copyright notice and this permission notice appear in all copies.
9: *
10: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16: * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17: */
18:
19: #ifndef _DEV_GPIO_GPIOVAR_H_
20: #define _DEV_GPIO_GPIOVAR_H_
21:
22: /* GPIO controller description */
23: typedef struct gpio_chipset_tag {
24: void *gp_cookie;
25:
26: int (*gp_pin_read)(void *, int);
27: void (*gp_pin_write)(void *, int, int);
28: void (*gp_pin_ctl)(void *, int, int);
29: } *gpio_chipset_tag_t;
30:
31: /* GPIO pin description */
32: typedef struct gpio_pin {
33: int pin_num; /* number */
34: int pin_caps; /* capabilities */
35: int pin_flags; /* current configuration */
36: int pin_state; /* current state */
37: int pin_mapped; /* is mapped */
38: } gpio_pin_t;
39:
40: /* Attach GPIO framework to the controller */
41: struct gpiobus_attach_args {
42: const char *gba_name; /* bus name */
43: gpio_chipset_tag_t gba_gc; /* underlying controller */
44: gpio_pin_t *gba_pins; /* pins array */
45: int gba_npins; /* total number of pins */
46: };
47:
48: int gpiobus_print(void *, const char *);
49:
50: /* GPIO framework private methods */
51: #define gpiobus_pin_read(gc, pin) \
52: ((gc)->gp_pin_read((gc)->gp_cookie, (pin)))
53: #define gpiobus_pin_write(gc, pin, value) \
54: ((gc)->gp_pin_write((gc)->gp_cookie, (pin), (value)))
55: #define gpiobus_pin_ctl(gc, pin, flags) \
56: ((gc)->gp_pin_ctl((gc)->gp_cookie, (pin), (flags)))
57:
58: /* Attach devices connected to the GPIO pins */
59: struct gpio_attach_args {
60: void * ga_gpio;
61: int ga_offset;
62: u_int32_t ga_mask;
63: };
64:
65: /* GPIO pin map */
66: struct gpio_pinmap {
67: int * pm_map; /* pin map */
68: int pm_size; /* map size */
69: };
70:
71: int gpio_pin_map(void *, int, u_int32_t, struct gpio_pinmap *);
72: void gpio_pin_unmap(void *, struct gpio_pinmap *);
73: int gpio_pin_read(void *, struct gpio_pinmap *, int);
74: void gpio_pin_write(void *, struct gpio_pinmap *, int, int);
75: void gpio_pin_ctl(void *, struct gpio_pinmap *, int, int);
76: int gpio_pin_caps(void *, struct gpio_pinmap *, int);
77:
78: int gpio_npins(u_int32_t);
79:
80: #endif /* !_DEV_GPIO_GPIOVAR_H_ */
CVSweb