/* * carl9170 firmware - used by the ar9170 wireless device * * GPIO interrupt service * * Copyright (c) 2000-2005 ZyDAS Technology Corporation * Copyright (c) 2007-2009 Atheros Communications, Inc. * Copyright 2009 Johannes Berg * Copyright 2009-2011 Christian Lamparter * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "carl9170.h" #include "gpio.h" #ifdef CONFIG_CARL9170FW_GPIO_INTERRUPT void gpio_timer(void) { uint32_t cur; cur = get(AR9170_GPIO_REG_PORT_DATA) & CARL9170_GPIO_MASK; if (cur != fw.cached_gpio_state.gpio) { fw.cached_gpio_state.gpio = cur; send_cmd_to_host(sizeof(struct carl9170_gpio), CARL9170_RSP_GPIO, 0x00, (uint8_t *)&fw.cached_gpio_state); # ifdef CONFIG_CARL9170FW_WATCHDOG_BUTTON for (;;) { /* * Loop forever... Until the watchdog triggers. */ } # endif /* CONFIG_CARL9170FW_WATCHDOG_BUTTON */ } } #endif /* CONFIG_CARL9170FW_GPIO_INTERRUPT */