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