xref: /dragonfly/sys/bus/gpio/gpio_if.m (revision 65cc0652)
1#-
2# Copyright (c) 2016 The DragonFly Project.  All rights reserved.
3#
4# This code is derived from software contributed to The DragonFly Project
5# by Imre Vadász <imre@vdsz.com>
6#
7# Redistribution and use in source and binary forms, with or without
8# modification, are permitted provided that the following conditions
9# are met:
10#
11# 1. Redistributions of source code must retain the above copyright
12#    notice, this list of conditions and the following disclaimer.
13# 2. Redistributions in binary form must reproduce the above copyright
14#    notice, this list of conditions and the following disclaimer in
15#    the documentation and/or other materials provided with the
16#    distribution.
17# 3. Neither the name of The DragonFly Project nor the names of its
18#    contributors may be used to endorse or promote products derived
19#    from this software without specific, prior written permission.
20#
21# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24# FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
25# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26# INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
27# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
31# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32# SUCH DAMAGE.
33#
34
35#include <sys/bus.h>
36
37INTERFACE gpio;
38
39#
40# Allocate GPIO interrupt.
41# XXX trigger, polarity and termination constants are currently used from
42#     sys/contrib/dev/acpica/source/include/acrestyp.h
43#
44METHOD int alloc_intr {
45	device_t dev;
46	u_int pin;
47	int trigger;
48	int polarity;
49	int termination;
50	void **cookiep;
51};
52
53#
54# Deallocate GPIO interrupt.
55#
56METHOD void free_intr {
57	device_t dev;
58	void *cookie;
59};
60
61#
62# Setup GPIO interrupt.
63#
64METHOD void setup_intr {
65	device_t dev;
66	void *cookie;
67	void *arg;
68	driver_intr_t *handler;
69};
70
71#
72# Disable GPIO interrupt.
73#
74METHOD void teardown_intr {
75	device_t dev;
76	void *cookie;
77};
78
79#
80# Reserve IO pin
81#
82METHOD int alloc_io_pin {
83	device_t dev;
84	u_int pin;
85	int flags;
86	void **cookiep;
87};
88
89#
90# Release IO pin
91#
92METHOD int release_io_pin {
93	device_t dev;
94	void *cookie;
95};
96
97#
98# Read pin value, returns 0 or 1.
99#
100METHOD int read_pin {
101	device_t dev;
102	void *cookie;
103};
104
105#
106# Write pin value, value can be either 0 or 1.
107#
108METHOD void write_pin {
109	device_t dev;
110	void *cookie;
111	int value;
112};
113