aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-davinci/include
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-06-25 20:01:31 -0400
committerKevin Hilman <khilman@deeprootsystems.com>2009-08-26 03:57:00 -0400
commit7a36071e7954836ba437987e5ca4ced174462b28 (patch)
tree921d150b7f2cc677d226daa40a18f3ab9bf6da78 /arch/arm/mach-davinci/include
parentaf5dbaef76cb01995639cef10ca6f5a2b08207e8 (diff)
davinci: dm365 gpio irq support
Support DM365 GPIOs ... primarily by handling non-banked GPIO IRQs: - Flag DM365 chips as using non-banked GPIO interrupts, using a new soc_info field. - Replace the gpio_to_irq() mapping logic. This now uses some runtime infrastructure, keyed off that new soc_info field, which doesn't handle irq_to_gpio(). - Provide a new irq_chip ... GPIO IRQs handled directly by AINTC still need edge triggering managed by the GPIO controller. DM365 chips no longer falsely report 104 GPIO IRQs as they boot. Intelligence about IRQ muxing is missing, so for the moment this only exposes the first eight DM365 GPIOs, which are never muxed. The next eight are muxed, half with Ethernet (which uses most of those pins anyway). Tested on DM355 (10 unbanked IRQs _or_ 104 banked ones) and also on DM365 (16 unbanked ones, only 8 made available). Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-davinci/include')
-rw-r--r--arch/arm/mach-davinci/include/mach/common.h1
-rw-r--r--arch/arm/mach-davinci/include/mach/gpio.h8
2 files changed, 4 insertions, 5 deletions
diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h
index b21393b24d65..1fd3917cae4e 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -63,6 +63,7 @@ struct davinci_soc_info {
63 void __iomem *gpio_base; 63 void __iomem *gpio_base;
64 unsigned gpio_num; 64 unsigned gpio_num;
65 unsigned gpio_irq; 65 unsigned gpio_irq;
66 unsigned gpio_unbanked;
66 struct platform_device *serial_dev; 67 struct platform_device *serial_dev;
67 struct emac_platform_data *emac_pdata; 68 struct emac_platform_data *emac_pdata;
68 dma_addr_t sram_dma; 69 dma_addr_t sram_dma;
diff --git a/arch/arm/mach-davinci/include/mach/gpio.h b/arch/arm/mach-davinci/include/mach/gpio.h
index ae0745568316..ebcc29babeae 100644
--- a/arch/arm/mach-davinci/include/mach/gpio.h
+++ b/arch/arm/mach-davinci/include/mach/gpio.h
@@ -142,15 +142,13 @@ static inline int gpio_cansleep(unsigned gpio)
142 142
143static inline int gpio_to_irq(unsigned gpio) 143static inline int gpio_to_irq(unsigned gpio)
144{ 144{
145 if (gpio >= DAVINCI_N_GPIO) 145 return __gpio_to_irq(gpio);
146 return -EINVAL;
147 return davinci_soc_info.intc_irq_num + gpio;
148} 146}
149 147
150static inline int irq_to_gpio(unsigned irq) 148static inline int irq_to_gpio(unsigned irq)
151{ 149{
152 /* caller guarantees gpio_to_irq() succeeded */ 150 /* don't support the reverse mapping */
153 return irq - davinci_soc_info.intc_irq_num; 151 return -ENOSYS;
154} 152}
155 153
156#endif /* __DAVINCI_GPIO_H */ 154#endif /* __DAVINCI_GPIO_H */