Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=30f0b40844e5add7ad879e2f5939ff498f72f3e6
Commit:     30f0b40844e5add7ad879e2f5939ff498f72f3e6
Parent:     37c2f779a4eabf7c6a39e6f9ded0ec3471ed5995
Author:     eric miao <[EMAIL PROTECTED]>
AuthorDate: Wed Aug 29 10:18:47 2007 +0100
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Fri Oct 12 21:15:32 2007 +0100

    [ARM] 4559/1: pxa: make PXA_LAST_GPIO a run-time variable
    
    This definition produces processor specific code in generic function
    pxa_gpio_mode(), thus creating inconsistencies for support of pxa25x
    and pxa27x in a single zImage.
    
    As David Brownell suggests, make it a run-time variable and initialize
    at run-time according to the number of GPIOs on the processor. For now
    the initialization happens in pxa_init_irq_gpio(),  since there is
    already a parameter for that, besides, this is and MUST be earlier
    than any subsequent calls to pxa_gpio_mode().
    
    Signed-off-by: eric miao <[EMAIL PROTECTED]>
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
---
 arch/arm/mach-pxa/generic.c     |    3 ++-
 arch/arm/mach-pxa/generic.h     |    1 +
 arch/arm/mach-pxa/irq.c         |    2 ++
 include/asm-arm/arch-pxa/irqs.h |    6 ------
 4 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c
index 1c5413f..eed95ea 100644
--- a/arch/arm/mach-pxa/generic.c
+++ b/arch/arm/mach-pxa/generic.c
@@ -71,6 +71,7 @@ EXPORT_SYMBOL(get_memclk_frequency_10khz);
 /*
  * Handy function to set GPIO alternate functions
  */
+int pxa_last_gpio;
 
 int pxa_gpio_mode(int gpio_mode)
 {
@@ -79,7 +80,7 @@ int pxa_gpio_mode(int gpio_mode)
        int fn = (gpio_mode & GPIO_MD_MASK_FN) >> 8;
        int gafr;
 
-       if (gpio > PXA_LAST_GPIO)
+       if (gpio > pxa_last_gpio)
                return -EINVAL;
 
        local_irq_save(flags);
diff --git a/arch/arm/mach-pxa/generic.h b/arch/arm/mach-pxa/generic.h
index 5b11741..25bd9bf 100644
--- a/arch/arm/mach-pxa/generic.h
+++ b/arch/arm/mach-pxa/generic.h
@@ -20,6 +20,7 @@ extern void __init pxa27x_init_irq(void);
 extern void __init pxa_map_io(void);
 
 extern unsigned int get_clk_frequency_khz(int info);
+extern int pxa_last_gpio;
 
 #define SET_BANK(__nr,__start,__size) \
        mi->bank[__nr].start = (__start), \
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c
index ae2ae08..3d95442 100644
--- a/arch/arm/mach-pxa/irq.c
+++ b/arch/arm/mach-pxa/irq.c
@@ -349,6 +349,8 @@ void __init pxa_init_irq_gpio(int gpio_nr)
 {
        int irq, i;
 
+       pxa_last_gpio = gpio_nr - 1;
+
        /* clear all GPIO edge detects */
        for (i = 0; i < gpio_nr; i += 32) {
                GFER(i) = 0;
diff --git a/include/asm-arm/arch-pxa/irqs.h b/include/asm-arm/arch-pxa/irqs.h
index a07fe0f..1bcc763 100644
--- a/include/asm-arm/arch-pxa/irqs.h
+++ b/include/asm-arm/arch-pxa/irqs.h
@@ -66,12 +66,6 @@
 #define IRQ_TO_GPIO_2_x(i)     ((i) - PXA_GPIO_IRQ_BASE)
 #define IRQ_TO_GPIO(i) (((i) < IRQ_GPIO(2)) ? ((i) - IRQ_GPIO0) : 
IRQ_TO_GPIO_2_x(i))
 
-#if defined(CONFIG_PXA25x)
-#define PXA_LAST_GPIO  84
-#elif defined(CONFIG_PXA27x)
-#define PXA_LAST_GPIO  127
-#endif
-
 /*
  * The next 16 interrupts are for board specific purposes.  Since
  * the kernel can only run on one machine at a time, we can re-use
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to