/* * Generic GPIO * * Copyright (C) 2011, Broadcom Corporation. All Rights Reserved. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * $Id: gen_gpio.c,v 1.1 2009-10-30 20:51:47 $ */ #include #include #include #include #include #include #define BCM947XX_GENGPIO_DEBUG 0 #if BCM947XX_GENGPIO_DEBUG //#define DBG(x...) printk(KERN_DEBUG x) #define DBG(x...) printk(KERN_ERR x) #else #define DBG(x...) #endif static si_t *gpio_sih; int mask; static int gen_gpio_init(void) { if (!(gpio_sih = si_kattach(SI_OSH))) { DBG("%s: si_kattach failed\n", __FUNCTION__); return -ENODEV; } si_gpiosetcore(gpio_sih); return 0; } static void gen_gpio_exit(void) { si_detach(gpio_sih); } /* GENERIC_GPIO calls */ int gpio_direction_input(unsigned gpio) { int ret; ret = si_gpioouten(gpio_sih, (1<