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