Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: 7841/1: sa1100: remove complex GPIO interface

The SA1100 was implementing its own variants of gpio_get_value()
and gpio_set_value() and only selectively falling back to
gpiolib for extended (EGPIO) handling. However the driver in
gpio/gpio-sa1100.c already handles the same functionality for
these lines, yet remain unused.

The only upside would be things like a timing-critical hotpath
on bit-banged GPIO, but that kind of things does not seem to
happen on these GPIOs, so it is not worth having the extra
complexity.

Tested with some buttons on the Compaq iPAQ H3630.

Cc: Kristoffer Ericson <kristoffer.ericson@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

authored by

Linus Walleij and committed by
Russell King
40ca061b 9a48aa4c

+3 -57
-1
arch/arm/Kconfig
··· 692 692 select GENERIC_CLOCKEVENTS 693 693 select HAVE_IDE 694 694 select ISA 695 - select NEED_MACH_GPIO_H 696 695 select NEED_MACH_MEMORY_H 697 696 select SPARSE_IRQ 698 697 help
-55
arch/arm/mach-sa1100/include/mach/gpio.h
··· 1 - /* 2 - * arch/arm/mach-sa1100/include/mach/gpio.h 3 - * 4 - * SA1100 GPIO wrappers for arch-neutral GPIO calls 5 - * 6 - * Written by Philipp Zabel <philipp.zabel@gmail.com> 7 - * 8 - * This program is free software; you can redistribute it and/or modify 9 - * it under the terms of the GNU General Public License as published by 10 - * the Free Software Foundation; either version 2 of the License, or 11 - * (at your option) any later version. 12 - * 13 - * This program is distributed in the hope that it will be useful, 14 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 - * GNU General Public License for more details. 17 - * 18 - * You should have received a copy of the GNU General Public License 19 - * along with this program; if not, write to the Free Software 20 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 - * 22 - */ 23 - 24 - #ifndef __ASM_ARCH_SA1100_GPIO_H 25 - #define __ASM_ARCH_SA1100_GPIO_H 26 - 27 - #include <linux/io.h> 28 - #include <mach/hardware.h> 29 - #include <asm/irq.h> 30 - #include <asm-generic/gpio.h> 31 - 32 - #define __ARM_GPIOLIB_COMPLEX 33 - 34 - static inline int gpio_get_value(unsigned gpio) 35 - { 36 - if (__builtin_constant_p(gpio) && (gpio <= GPIO_MAX)) 37 - return GPLR & GPIO_GPIO(gpio); 38 - else 39 - return __gpio_get_value(gpio); 40 - } 41 - 42 - static inline void gpio_set_value(unsigned gpio, int value) 43 - { 44 - if (__builtin_constant_p(gpio) && (gpio <= GPIO_MAX)) 45 - if (value) 46 - GPSR = GPIO_GPIO(gpio); 47 - else 48 - GPCR = GPIO_GPIO(gpio); 49 - else 50 - __gpio_set_value(gpio, value); 51 - } 52 - 53 - #define gpio_cansleep __gpio_cansleep 54 - 55 - #endif
+2
arch/arm/mach-sa1100/include/mach/h3xxx.h
··· 13 13 #ifndef _INCLUDE_H3XXX_H_ 14 14 #define _INCLUDE_H3XXX_H_ 15 15 16 + #include "hardware.h" /* Gives GPIO_MAX */ 17 + 16 18 /* Physical memory regions corresponding to chip selects */ 17 19 #define H3600_EGPIO_PHYS (SA1100_CS5_PHYS + 0x01000000) 18 20 #define H3600_BANK_2_PHYS SA1100_CS2_PHYS
+1 -1
drivers/gpio/gpio-sa1100.c
··· 10 10 #include <linux/gpio.h> 11 11 #include <linux/init.h> 12 12 #include <linux/module.h> 13 - 13 + #include <linux/io.h> 14 14 #include <mach/hardware.h> 15 15 #include <mach/irqs.h> 16 16