diff options
| author | Lennert Buytenhek <buytenh@wantstofly.org> | 2005-06-24 15:54:35 -0400 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-06-24 15:54:35 -0400 |
| commit | c4982887cacf2122bc256e901598b58caf4a34be (patch) | |
| tree | 12f3ddeb179f6b6f4cc956b83c726ee9208e542a /include/asm-arm/arch-ixp2000 | |
| parent | c6b56949de86694d837750a0a89c766b9871e81c (diff) | |
[PATCH] ARM: 2744/1: ixp2000 gpio irq support
Patch from Lennert Buytenhek
This patch cleans up the ixp2000 gpio irq code and implements the
set_irq_type method for gpio irqs so that users can select for which
events (falling edge/rising edge/level low/level high) on the gpio
pin they want the corresponding gpio irq to be triggered.
Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: Deepak Saxena
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/asm-arm/arch-ixp2000')
| -rw-r--r-- | include/asm-arm/arch-ixp2000/gpio.h | 31 | ||||
| -rw-r--r-- | include/asm-arm/arch-ixp2000/platform.h | 22 |
2 files changed, 13 insertions, 40 deletions
diff --git a/include/asm-arm/arch-ixp2000/gpio.h b/include/asm-arm/arch-ixp2000/gpio.h index 84634af5cc..03cbbe1fd9 100644 --- a/include/asm-arm/arch-ixp2000/gpio.h +++ b/include/asm-arm/arch-ixp2000/gpio.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * include/asm-arm/arch-ixp2000/ixp2000-gpio.h | 2 | * include/asm-arm/arch-ixp2000/gpio.h |
| 3 | * | 3 | * |
| 4 | * Copyright (C) 2002 Intel Corporation. | 4 | * Copyright (C) 2002 Intel Corporation. |
| 5 | * | 5 | * |
| @@ -16,26 +16,18 @@ | |||
| 16 | * Use this instead of directly setting the GPIO registers. | 16 | * Use this instead of directly setting the GPIO registers. |
| 17 | * GPIOs may also be used as GPIOs (e.g. for emulating i2c/smb) | 17 | * GPIOs may also be used as GPIOs (e.g. for emulating i2c/smb) |
| 18 | */ | 18 | */ |
| 19 | #ifndef _ASM_ARCH_IXP2000_GPIO_H_ | 19 | #ifndef __ASM_ARCH_GPIO_H |
| 20 | #define _ASM_ARCH_IXP2000_GPIO_H_ | 20 | #define __ASM_ARCH_GPIO_H |
| 21 | 21 | ||
| 22 | #ifndef __ASSEMBLY__ | 22 | #ifndef __ASSEMBLY__ |
| 23 | #define GPIO_OUT 0x0 | 23 | |
| 24 | #define GPIO_IN 0x80 | 24 | #define GPIO_IN 0 |
| 25 | #define GPIO_OUT 1 | ||
| 25 | 26 | ||
| 26 | #define IXP2000_GPIO_LOW 0 | 27 | #define IXP2000_GPIO_LOW 0 |
| 27 | #define IXP2000_GPIO_HIGH 1 | 28 | #define IXP2000_GPIO_HIGH 1 |
| 28 | 29 | ||
| 29 | #define GPIO_NO_EDGES 0 | 30 | extern void gpio_line_config(int line, int direction); |
| 30 | #define GPIO_FALLING_EDGE 1 | ||
| 31 | #define GPIO_RISING_EDGE 2 | ||
| 32 | #define GPIO_BOTH_EDGES 3 | ||
| 33 | #define GPIO_LEVEL_LOW 4 | ||
| 34 | #define GPIO_LEVEL_HIGH 8 | ||
| 35 | |||
| 36 | extern void set_GPIO_IRQ_edge(int gpio_nr, int edge); | ||
| 37 | extern void set_GPIO_IRQ_level(int gpio_nr, int level); | ||
| 38 | extern void gpio_line_config(int line, int style); | ||
| 39 | 31 | ||
| 40 | static inline int gpio_line_get(int line) | 32 | static inline int gpio_line_get(int line) |
| 41 | { | 33 | { |
| @@ -45,11 +37,12 @@ static inline int gpio_line_get(int line) | |||
| 45 | static inline void gpio_line_set(int line, int value) | 37 | static inline void gpio_line_set(int line, int value) |
| 46 | { | 38 | { |
| 47 | if (value == IXP2000_GPIO_HIGH) { | 39 | if (value == IXP2000_GPIO_HIGH) { |
| 48 | ixp_reg_write(IXP2000_GPIO_POSR, BIT(line)); | 40 | ixp2000_reg_write(IXP2000_GPIO_POSR, 1 << line); |
| 49 | } else if (value == IXP2000_GPIO_LOW) | 41 | } else if (value == IXP2000_GPIO_LOW) { |
| 50 | ixp_reg_write(IXP2000_GPIO_POCR, BIT(line)); | 42 | ixp2000_reg_write(IXP2000_GPIO_POCR, 1 << line); |
| 43 | } | ||
| 51 | } | 44 | } |
| 52 | 45 | ||
| 53 | #endif /* !__ASSEMBLY__ */ | 46 | #endif /* !__ASSEMBLY__ */ |
| 54 | #endif /* ASM_ARCH_IXP2000_GPIO_H_ */ | ||
| 55 | 47 | ||
| 48 | #endif /* ASM_ARCH_IXP2000_GPIO_H_ */ | ||
diff --git a/include/asm-arm/arch-ixp2000/platform.h b/include/asm-arm/arch-ixp2000/platform.h index 901bba6d02..52ded516ea 100644 --- a/include/asm-arm/arch-ixp2000/platform.h +++ b/include/asm-arm/arch-ixp2000/platform.h | |||
| @@ -138,30 +138,10 @@ struct ixp2000_flash_data { | |||
| 138 | unsigned long (*bank_setup)(unsigned long); | 138 | unsigned long (*bank_setup)(unsigned long); |
| 139 | }; | 139 | }; |
| 140 | 140 | ||
| 141 | /* | ||
| 142 | * GPIO helper functions | ||
| 143 | */ | ||
| 144 | #define GPIO_IN 0 | ||
| 145 | #define GPIO_OUT 1 | ||
| 146 | |||
| 147 | extern void gpio_line_config(int line, int style); | ||
| 148 | |||
| 149 | static inline int gpio_line_get(int line) | ||
| 150 | { | ||
| 151 | return (((*IXP2000_GPIO_PLR) >> line) & 1); | ||
| 152 | } | ||
| 153 | |||
| 154 | static inline void gpio_line_set(int line, int value) | ||
| 155 | { | ||
| 156 | if (value) | ||
| 157 | ixp2000_reg_write(IXP2000_GPIO_POSR, (1 << line)); | ||
| 158 | else | ||
| 159 | ixp2000_reg_write(IXP2000_GPIO_POCR, (1 << line)); | ||
| 160 | } | ||
| 161 | |||
| 162 | struct ixp2000_i2c_pins { | 141 | struct ixp2000_i2c_pins { |
| 163 | unsigned long sda_pin; | 142 | unsigned long sda_pin; |
| 164 | unsigned long scl_pin; | 143 | unsigned long scl_pin; |
| 165 | }; | 144 | }; |
| 166 | 145 | ||
| 146 | |||
| 167 | #endif /* !__ASSEMBLY__ */ | 147 | #endif /* !__ASSEMBLY__ */ |
