2 .\" Copyright (c) 2014 Rui Paulo
3 .\" All rights reserved.
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
8 .\" 1. Redistributions of source code must retain the above copyright
9 .\" notice, this list of conditions and the following disclaimer.
10 .\" 2. Redistributions in binary form must reproduce the above copyright
11 .\" notice, this list of conditions and the following disclaimer in the
12 .\" documentation and/or other materials provided with the distribution.
14 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 .Nd "library to handle GPIO pins"
40 .Fn gpio_open "unsigned int unit"
42 .Fn gpio_open_device "const char *device"
44 .Fn gpio_close "gpio_handle_t handle"
46 .Fn gpio_pin_list "gpio_handle_t handle, gpio_config_t **pcfgs"
48 .Fn gpio_pin_config "gpio_handle_t handle, gpio_config *cfg"
50 .Fn gpio_pin_set_flags "gpio_handle_t handle, gpio_config_t *cfg"
52 .Fn gpio_pin_get "gpio_handle_t handle, gpio_pin_t pin"
54 .Fn gpio_pin_set "gpio_handle_t handle, gpio_pin_t pin, gpio_value_t value"
56 .Fn gpio_pin_toggle "gpio_handle_t handle, gpio_pin_t pin"
58 .Fn gpio_pin_low "gpio_handle_t handle, gpio_pin_t pin"
60 .Fn gpio_pin_high "gpio_handle_t handle, gpio_pin_t pin"
62 .Fn gpio_pin_input "gpio_handle_t handle, gpio_pin_t pin"
64 .Fn gpio_pin_output "gpio_handle_t handle, gpio_pin_t pin"
66 .Fn gpio_pin_opendrain "gpio_handle_t handle, gpio_pin_t pin"
68 .Fn gpio_pin_pushpull "gpio_handle_t handle, gpio_pin_t pin"
70 .Fn gpio_pin_tristate "gpio_handle_t handle, gpio_pin_t pin"
72 .Fn gpio_pin_pullup "gpio_handle_t handle, gpio_pin_t pin"
74 .Fn gpio_pin_pulldown "gpio_handle_t handle, gpio_pin_t pin"
76 .Fn gpio_pin_invin "gpio_handle_t handle, gpio_pin_t pin"
78 .Fn gpio_pin_invout "gpio_handle_t handle, gpio_pin_t pin"
80 .Fn gpio_pin_pulsate "gpio_handle_t handle, gpio_pin_t pin"
84 library provides an interface to configure GPIO pins.
85 The library operates with a
87 opaque type which can be created with
90 .Fn gpio_open_device .
91 When no more GPIO operations are needed, this handle can be destroyed
95 To get a list of all available pins, one can call
97 This function takes a pointer to a
99 which is dynamically allocated.
100 This pointer should be freed with
102 when it's no longer necessary.
106 retrieves the current configuration of a pin.
107 The pin number should be passed in via the
109 variable which is part of the
114 .Fn gpio_pin_set_flags
115 configures a pin with the flags passed in by the
118 The pin number should also be passed in through the
121 All other structure members will be ignored by this function.
122 The list of flags can be found in
123 .Pa /usr/include/sys/gpio.h .
125 The get or set the state of a GPIO pin, the functions
129 are available, respectively.
130 To toggle the state, use
131 .Fn gpio_pin_toggle .
142 .Fn gpio_pin_output ,
143 .Fn gpio_pin_opendrain ,
144 .Fn gpio_pin_pushpull ,
145 .Fn gpio_pin_tristate ,
146 .Fn gpio_pin_pullup ,
147 .Fn gpio_pin_pulldown ,
153 .Fn gpio_pin_set_flags .
155 The following example shows how to configure pin 16 as output and then
161 gpio_handle_t handle;
163 handle = gpio_open(0);
164 if (handle == GPIO_HANDLE_INVALID)
165 err(1, "gpio_open failed");
166 gpio_pin_output(handle, 16);
167 gpio_pin_high(handle, 16);
171 The following example shows how to get a configuration of a pin:
176 gpio_pin_config(handle, &cfg);
179 The structure will contain the name of the pin and its flags.
186 library first appeared in
191 library was implemented by
192 .An Rui Paulo Aq Mt rpaulo@FreeBSD.org .