ar71xx_gpiovar.h revision 256281
197403Sobrien/*- 297403Sobrien * Copyright (c) 2009, Oleksandr Tymoshenko <gonzo@FreeBSD.org> 3110614Skan * Copyright (c) 2009, Luiz Otavio O Souza. 497403Sobrien * All rights reserved. 597403Sobrien * 697403Sobrien * Redistribution and use in source and binary forms, with or without 797403Sobrien * modification, are permitted provided that the following conditions 897403Sobrien * are met: 997403Sobrien * 1. Redistributions of source code must retain the above copyright 1097403Sobrien * notice unmodified, this list of conditions, and the following 1197403Sobrien * disclaimer. 1297403Sobrien * 2. Redistributions in binary form must reproduce the above copyright 1397403Sobrien * notice, this list of conditions and the following disclaimer in the 1497403Sobrien * documentation and/or other materials provided with the distribution. 1597403Sobrien * 1697403Sobrien * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1797403Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1897403Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1997403Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2097403Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2197403Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22169691Skan * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2397403Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2497403Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25132720Skan * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2697403Sobrien * SUCH DAMAGE. 27132720Skan * 28169691Skan * $FreeBSD: stable/10/sys/mips/atheros/ar71xx_gpiovar.h 255335 2013-09-06 23:47:50Z loos $ 29132720Skan * 30132720Skan */ 31169691Skan 3297403Sobrien#ifndef __AR71XX_GPIOVAR_H__ 33169691Skan#define __AR71XX_GPIOVAR_H__ 34169691Skan 3597403Sobrien#define GPIO_LOCK(_sc) mtx_lock(&(_sc)->gpio_mtx) 3697403Sobrien#define GPIO_UNLOCK(_sc) mtx_unlock(&(_sc)->gpio_mtx) 37117397Skan#define GPIO_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->gpio_mtx, MA_OWNED) 38117397Skan 39132720Skan/* 40169691Skan * register space access macros 4197403Sobrien */ 4297403Sobrien#define GPIO_WRITE(sc, reg, val) do { \ 4397403Sobrien bus_write_4(sc->gpio_mem_res, (reg), (val)); \ 44117397Skan } while (0) 45117397Skan 46132720Skan#define GPIO_READ(sc, reg) bus_read_4(sc->gpio_mem_res, (reg)) 47169691Skan 4897403Sobrien#define GPIO_SET_BITS(sc, reg, bits) \ 4997403Sobrien GPIO_WRITE(sc, reg, GPIO_READ(sc, (reg)) | (bits)) 5097403Sobrien 51117397Skan#define GPIO_CLEAR_BITS(sc, reg, bits) \ 52117397Skan GPIO_WRITE(sc, reg, GPIO_READ(sc, (reg)) & ~(bits)) 53132720Skan 54169691Skan#define AR71XX_GPIO_PINS 12 5597403Sobrien#define AR724X_GPIO_PINS 18 5697403Sobrien#define AR91XX_GPIO_PINS 22 5797403Sobrien 5897403Sobrienstruct ar71xx_gpio_softc { 59132720Skan device_t dev; 60132720Skan struct mtx gpio_mtx; 61132720Skan struct resource *gpio_mem_res; 62132720Skan int gpio_mem_rid; 6397403Sobrien struct resource *gpio_irq_res; 6497403Sobrien int gpio_irq_rid; 6597403Sobrien void *gpio_ih; 6697403Sobrien int gpio_npins; 6797403Sobrien struct gpio_pin *gpio_pins; 6897403Sobrien}; 6997403Sobrien 7097403Sobrien#endif /* __AR71XX_GPIOVAR_H__ */ 7197403Sobrien