xref: /dragonfly/sys/bus/gpio/gpio_if.m (revision e98bdfd3)
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# Setup GPIO interrupt handler.
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 *arg;
51	driver_intr_t *handler;
52};
53
54#
55# Remove GPIO interrupt handler.
56#
57METHOD int free_intr {
58	device_t dev;
59	u_int pin;
60};
61
62#
63# XXX Add a method for allocating pins for read/write IO.
64#     Allocating a pin for IO should perform the necessary checks to
65#     make sure that read_/write_pin doesn't trigger an assertion.
66#
67
68#
69# Read pin value, returns 0 or 1.
70#
71METHOD int read_pin {
72	device_t dev;
73	u_int pin;
74};
75
76#
77# Write pin value, value can be either 0 or 1.
78#
79METHOD void write_pin {
80	device_t dev;
81	u_int pin;
82	int value;
83};
84