diff options
| author | Haojian Zhuang <haojian.zhuang@gmail.com> | 2010-01-25 06:03:54 -0500 |
|---|---|---|
| committer | Eric Miao <eric.y.miao@gmail.com> | 2010-03-01 18:40:56 -0500 |
| commit | 16144bfb83bb8319c07c18b57eac15368708d02c (patch) | |
| tree | 3544731005719bd1b2f9ba70efcb2233cf9437cf | |
| parent | 247b4592f385622774de877f568fc30eb37dc831 (diff) | |
[ARM] mmp2: add gpio initialization
Signed-off-by: Haojian Zhuang <haojian.zhuang@marvell.com>
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
| -rw-r--r-- | arch/arm/mach-mmp/common.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-mmp/irq-mmp2.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-mmp/mmp2.c | 23 |
3 files changed, 25 insertions, 1 deletions
diff --git a/arch/arm/mach-mmp/common.h b/arch/arm/mach-mmp/common.h index 85bf12451433..18c037f8bb0a 100644 --- a/arch/arm/mach-mmp/common.h +++ b/arch/arm/mach-mmp/common.h | |||
| @@ -9,6 +9,7 @@ extern struct sys_timer pxa910_timer; | |||
| 9 | extern struct sys_timer mmp2_timer; | 9 | extern struct sys_timer mmp2_timer; |
| 10 | extern void __init pxa168_init_irq(void); | 10 | extern void __init pxa168_init_irq(void); |
| 11 | extern void __init pxa910_init_irq(void); | 11 | extern void __init pxa910_init_irq(void); |
| 12 | extern void __init mmp2_init_icu(void); | ||
| 12 | extern void __init mmp2_init_irq(void); | 13 | extern void __init mmp2_init_irq(void); |
| 13 | 14 | ||
| 14 | extern void __init icu_init_irq(void); | 15 | extern void __init icu_init_irq(void); |
diff --git a/arch/arm/mach-mmp/irq-mmp2.c b/arch/arm/mach-mmp/irq-mmp2.c index ddebde84231a..3ae1c543707c 100644 --- a/arch/arm/mach-mmp/irq-mmp2.c +++ b/arch/arm/mach-mmp/irq-mmp2.c | |||
| @@ -104,7 +104,7 @@ static void init_mux_irq(struct irq_chip *chip, int start, int num) | |||
| 104 | } | 104 | } |
| 105 | } | 105 | } |
| 106 | 106 | ||
| 107 | void __init mmp2_init_irq(void) | 107 | void __init mmp2_init_icu(void) |
| 108 | { | 108 | { |
| 109 | int irq; | 109 | int irq; |
| 110 | 110 | ||
diff --git a/arch/arm/mach-mmp/mmp2.c b/arch/arm/mach-mmp/mmp2.c index 561194d3bb43..0f1c441cc898 100644 --- a/arch/arm/mach-mmp/mmp2.c +++ b/arch/arm/mach-mmp/mmp2.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <mach/cputype.h> | 21 | #include <mach/cputype.h> |
| 22 | #include <mach/irqs.h> | 22 | #include <mach/irqs.h> |
| 23 | #include <mach/mfp.h> | 23 | #include <mach/mfp.h> |
| 24 | #include <mach/gpio.h> | ||
| 24 | #include <mach/devices.h> | 25 | #include <mach/devices.h> |
| 25 | 26 | ||
| 26 | #include "common.h" | 27 | #include "common.h" |
| @@ -28,12 +29,34 @@ | |||
| 28 | 29 | ||
| 29 | #define MFPR_VIRT_BASE (APB_VIRT_BASE + 0x1e000) | 30 | #define MFPR_VIRT_BASE (APB_VIRT_BASE + 0x1e000) |
| 30 | 31 | ||
| 32 | #define APMASK(i) (GPIO_REGS_VIRT + BANK_OFF(i) + 0x9c) | ||
| 33 | |||
| 31 | static struct mfp_addr_map mmp2_addr_map[] __initdata = { | 34 | static struct mfp_addr_map mmp2_addr_map[] __initdata = { |
| 32 | MFP_ADDR(PMIC_INT, 0x2c4), | 35 | MFP_ADDR(PMIC_INT, 0x2c4), |
| 33 | 36 | ||
| 34 | MFP_ADDR_END, | 37 | MFP_ADDR_END, |
| 35 | }; | 38 | }; |
| 36 | 39 | ||
| 40 | static void __init mmp2_init_gpio(void) | ||
| 41 | { | ||
| 42 | int i; | ||
| 43 | |||
| 44 | /* enable GPIO clock */ | ||
| 45 | __raw_writel(APBC_APBCLK | APBC_FNCLK, APBC_MMP2_GPIO); | ||
| 46 | |||
| 47 | /* unmask GPIO edge detection for all 6 banks -- APMASKx */ | ||
| 48 | for (i = 0; i < 6; i++) | ||
| 49 | __raw_writel(0xffffffff, APMASK(i)); | ||
| 50 | |||
| 51 | pxa_init_gpio(IRQ_MMP2_GPIO, 0, 167, NULL); | ||
| 52 | } | ||
| 53 | |||
| 54 | void __init mmp2_init_irq(void) | ||
| 55 | { | ||
| 56 | mmp2_init_icu(); | ||
| 57 | mmp2_init_gpio(); | ||
| 58 | } | ||
| 59 | |||
| 37 | /* APB peripheral clocks */ | 60 | /* APB peripheral clocks */ |
| 38 | static APBC_CLK(uart1, MMP2_UART1, 1, 26000000); | 61 | static APBC_CLK(uart1, MMP2_UART1, 1, 26000000); |
| 39 | static APBC_CLK(uart2, MMP2_UART2, 1, 26000000); | 62 | static APBC_CLK(uart2, MMP2_UART2, 1, 26000000); |
