diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-17 22:08:06 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-17 22:08:06 -0400 |
commit | 411f5c7a502769ccc0377c5ba36cb0b283847ba8 (patch) | |
tree | 2c3a29671e3f923de48c55f94194849264a7bf53 /arch/arm/mach-dove | |
parent | 6d7ed21d17e640b120b902a314143e5ef4917a70 (diff) | |
parent | 9ced9f03d12d7539e86b0bff5bc750153c976c34 (diff) |
Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm: (289 commits)
davinci: DM644x EVM: register MUSB device earlier
davinci: add spi devices on tnetv107x evm
davinci: add ssp config for tnetv107x evm board
davinci: add tnetv107x ssp platform device
spi: add ti-ssp spi master driver
mfd: add driver for sequencer serial port
ARM: EXYNOS4: Implement Clock gating for System MMU
ARM: EXYNOS4: Enhancement of System MMU driver
ARM: EXYNOS4: Add support for gpio interrupts
ARM: S5P: Add function to register gpio interrupt bank data
ARM: S5P: Cleanup S5P gpio interrupt code
ARM: EXYNOS4: Add missing GPYx banks
ARM: S3C64XX: Fix section mismatch from cpufreq init
ARM: EXYNOS4: Add keypad device to the SMDKV310
ARM: EXYNOS4: Update clocks for keypad
ARM: EXYNOS4: Update keypad base address
ARM: EXYNOS4: Add keypad device helpers
ARM: EXYNOS4: Add support for SATA on ARMLEX4210
plat-nomadik: make GPIO interrupts work with cpuidle ApSleep
mach-u300: define a dummy filter function for coh901318
...
Fix up various conflicts in
- arch/arm/mach-exynos4/cpufreq.c
- arch/arm/mach-mxs/gpio.c
- drivers/net/Kconfig
- drivers/tty/serial/Kconfig
- drivers/tty/serial/Makefile
- drivers/usb/gadget/fsl_mxc_udc.c
- drivers/video/Kconfig
Diffstat (limited to 'arch/arm/mach-dove')
-rw-r--r-- | arch/arm/mach-dove/cm-a510.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-dove/common.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-dove/common.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-dove/dove-db-setup.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-dove/include/mach/bridge-regs.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-dove/include/mach/dove.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-dove/include/mach/gpio.h | 42 | ||||
-rw-r--r-- | arch/arm/mach-dove/include/mach/irqs.h | 7 | ||||
-rw-r--r-- | arch/arm/mach-dove/irq.c | 30 |
9 files changed, 27 insertions, 70 deletions
diff --git a/arch/arm/mach-dove/cm-a510.c b/arch/arm/mach-dove/cm-a510.c index 96e0e94e5fa9..03e11f9dca97 100644 --- a/arch/arm/mach-dove/cm-a510.c +++ b/arch/arm/mach-dove/cm-a510.c | |||
@@ -90,6 +90,7 @@ MACHINE_START(CM_A510, "Compulab CM-A510 Board") | |||
90 | .boot_params = 0x00000100, | 90 | .boot_params = 0x00000100, |
91 | .init_machine = cm_a510_init, | 91 | .init_machine = cm_a510_init, |
92 | .map_io = dove_map_io, | 92 | .map_io = dove_map_io, |
93 | .init_early = dove_init_early, | ||
93 | .init_irq = dove_init_irq, | 94 | .init_irq = dove_init_irq, |
94 | .timer = &dove_timer, | 95 | .timer = &dove_timer, |
95 | MACHINE_END | 96 | MACHINE_END |
diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c index fe627aba6da7..e06a88f1f81d 100644 --- a/arch/arm/mach-dove/common.c +++ b/arch/arm/mach-dove/common.c | |||
@@ -532,6 +532,11 @@ void __init dove_i2c_init(void) | |||
532 | /***************************************************************************** | 532 | /***************************************************************************** |
533 | * Time handling | 533 | * Time handling |
534 | ****************************************************************************/ | 534 | ****************************************************************************/ |
535 | void __init dove_init_early(void) | ||
536 | { | ||
537 | orion_time_set_base(TIMER_VIRT_BASE); | ||
538 | } | ||
539 | |||
535 | static int get_tclk(void) | 540 | static int get_tclk(void) |
536 | { | 541 | { |
537 | /* use DOVE_RESET_SAMPLE_HI/LO to detect tclk */ | 542 | /* use DOVE_RESET_SAMPLE_HI/LO to detect tclk */ |
@@ -540,7 +545,8 @@ static int get_tclk(void) | |||
540 | 545 | ||
541 | static void dove_timer_init(void) | 546 | static void dove_timer_init(void) |
542 | { | 547 | { |
543 | orion_time_init(IRQ_DOVE_BRIDGE, get_tclk()); | 548 | orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR, |
549 | IRQ_DOVE_BRIDGE, get_tclk()); | ||
544 | } | 550 | } |
545 | 551 | ||
546 | struct sys_timer dove_timer = { | 552 | struct sys_timer dove_timer = { |
diff --git a/arch/arm/mach-dove/common.h b/arch/arm/mach-dove/common.h index a51517c3fe76..6a2046e44706 100644 --- a/arch/arm/mach-dove/common.h +++ b/arch/arm/mach-dove/common.h | |||
@@ -22,6 +22,7 @@ extern struct mbus_dram_target_info dove_mbus_dram_info; | |||
22 | */ | 22 | */ |
23 | void dove_map_io(void); | 23 | void dove_map_io(void); |
24 | void dove_init(void); | 24 | void dove_init(void); |
25 | void dove_init_early(void); | ||
25 | void dove_init_irq(void); | 26 | void dove_init_irq(void); |
26 | void dove_setup_cpu_mbus(void); | 27 | void dove_setup_cpu_mbus(void); |
27 | void dove_ge00_init(struct mv643xx_eth_platform_data *eth_data); | 28 | void dove_ge00_init(struct mv643xx_eth_platform_data *eth_data); |
diff --git a/arch/arm/mach-dove/dove-db-setup.c b/arch/arm/mach-dove/dove-db-setup.c index 95925aa76dd9..2ac34ecfa745 100644 --- a/arch/arm/mach-dove/dove-db-setup.c +++ b/arch/arm/mach-dove/dove-db-setup.c | |||
@@ -97,6 +97,7 @@ MACHINE_START(DOVE_DB, "Marvell DB-MV88AP510-BP Development Board") | |||
97 | .boot_params = 0x00000100, | 97 | .boot_params = 0x00000100, |
98 | .init_machine = dove_db_init, | 98 | .init_machine = dove_db_init, |
99 | .map_io = dove_map_io, | 99 | .map_io = dove_map_io, |
100 | .init_early = dove_init_early, | ||
100 | .init_irq = dove_init_irq, | 101 | .init_irq = dove_init_irq, |
101 | .timer = &dove_timer, | 102 | .timer = &dove_timer, |
102 | MACHINE_END | 103 | MACHINE_END |
diff --git a/arch/arm/mach-dove/include/mach/bridge-regs.h b/arch/arm/mach-dove/include/mach/bridge-regs.h index 214a4c31f069..226949dc4ac0 100644 --- a/arch/arm/mach-dove/include/mach/bridge-regs.h +++ b/arch/arm/mach-dove/include/mach/bridge-regs.h | |||
@@ -26,10 +26,6 @@ | |||
26 | #define SYSTEM_SOFT_RESET (BRIDGE_VIRT_BASE | 0x010c) | 26 | #define SYSTEM_SOFT_RESET (BRIDGE_VIRT_BASE | 0x010c) |
27 | #define SOFT_RESET 0x00000001 | 27 | #define SOFT_RESET 0x00000001 |
28 | 28 | ||
29 | #define BRIDGE_CAUSE (BRIDGE_VIRT_BASE | 0x0110) | ||
30 | #define BRIDGE_MASK (BRIDGE_VIRT_BASE | 0x0114) | ||
31 | #define BRIDGE_INT_TIMER0 0x0002 | ||
32 | #define BRIDGE_INT_TIMER1 0x0004 | ||
33 | #define BRIDGE_INT_TIMER1_CLR (~0x0004) | 29 | #define BRIDGE_INT_TIMER1_CLR (~0x0004) |
34 | 30 | ||
35 | #define IRQ_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0200) | 31 | #define IRQ_VIRT_BASE (BRIDGE_VIRT_BASE | 0x0200) |
diff --git a/arch/arm/mach-dove/include/mach/dove.h b/arch/arm/mach-dove/include/mach/dove.h index 27b414578f2e..e5fcdd3f5bf5 100644 --- a/arch/arm/mach-dove/include/mach/dove.h +++ b/arch/arm/mach-dove/include/mach/dove.h | |||
@@ -130,7 +130,8 @@ | |||
130 | #define DOVE_PMU_MPP_GENERAL_CTRL (DOVE_MPP_VIRT_BASE + 0x10) | 130 | #define DOVE_PMU_MPP_GENERAL_CTRL (DOVE_MPP_VIRT_BASE + 0x10) |
131 | #define DOVE_RESET_SAMPLE_LO (DOVE_MPP_VIRT_BASE | 0x014) | 131 | #define DOVE_RESET_SAMPLE_LO (DOVE_MPP_VIRT_BASE | 0x014) |
132 | #define DOVE_RESET_SAMPLE_HI (DOVE_MPP_VIRT_BASE | 0x018) | 132 | #define DOVE_RESET_SAMPLE_HI (DOVE_MPP_VIRT_BASE | 0x018) |
133 | #define DOVE_GPIO_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xd0400) | 133 | #define DOVE_GPIO_LO_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xd0400) |
134 | #define DOVE_GPIO_HI_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xd0420) | ||
134 | #define DOVE_GPIO2_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xe8400) | 135 | #define DOVE_GPIO2_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xe8400) |
135 | #define DOVE_MPP_GENERAL_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xe803c) | 136 | #define DOVE_MPP_GENERAL_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE | 0xe803c) |
136 | #define DOVE_AU1_SPDIFO_GPIO_EN (1 << 1) | 137 | #define DOVE_AU1_SPDIFO_GPIO_EN (1 << 1) |
diff --git a/arch/arm/mach-dove/include/mach/gpio.h b/arch/arm/mach-dove/include/mach/gpio.h index 340bb7af529d..e7e5101e35a5 100644 --- a/arch/arm/mach-dove/include/mach/gpio.h +++ b/arch/arm/mach-dove/include/mach/gpio.h | |||
@@ -6,46 +6,4 @@ | |||
6 | * warranty of any kind, whether express or implied. | 6 | * warranty of any kind, whether express or implied. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #ifndef __ASM_ARCH_GPIO_H | ||
10 | #define __ASM_ARCH_GPIO_H | ||
11 | |||
12 | #include <asm/errno.h> | ||
13 | #include <mach/irqs.h> | ||
14 | #include <plat/gpio.h> | 9 | #include <plat/gpio.h> |
15 | #include <asm-generic/gpio.h> /* cansleep wrappers */ | ||
16 | |||
17 | #define GPIO_MAX 72 | ||
18 | |||
19 | #define GPIO_BASE_LO (DOVE_GPIO_VIRT_BASE + 0x00) | ||
20 | #define GPIO_BASE_HI (DOVE_GPIO_VIRT_BASE + 0x20) | ||
21 | |||
22 | #define GPIO_BASE(pin) ((pin < 32) ? GPIO_BASE_LO : \ | ||
23 | ((pin < 64) ? GPIO_BASE_HI : \ | ||
24 | DOVE_GPIO2_VIRT_BASE)) | ||
25 | |||
26 | #define GPIO_OUT(pin) (GPIO_BASE(pin) + 0x00) | ||
27 | #define GPIO_IO_CONF(pin) (GPIO_BASE(pin) + 0x04) | ||
28 | #define GPIO_BLINK_EN(pin) (GPIO_BASE(pin) + 0x08) | ||
29 | #define GPIO_IN_POL(pin) (GPIO_BASE(pin) + 0x0c) | ||
30 | #define GPIO_DATA_IN(pin) (GPIO_BASE(pin) + 0x10) | ||
31 | #define GPIO_EDGE_CAUSE(pin) (GPIO_BASE(pin) + 0x14) | ||
32 | #define GPIO_EDGE_MASK(pin) (GPIO_BASE(pin) + 0x18) | ||
33 | #define GPIO_LEVEL_MASK(pin) (GPIO_BASE(pin) + 0x1c) | ||
34 | |||
35 | static inline int gpio_to_irq(int pin) | ||
36 | { | ||
37 | if (pin < NR_GPIO_IRQS) | ||
38 | return pin + IRQ_DOVE_GPIO_START; | ||
39 | |||
40 | return -EINVAL; | ||
41 | } | ||
42 | |||
43 | static inline int irq_to_gpio(int irq) | ||
44 | { | ||
45 | if (IRQ_DOVE_GPIO_START < irq && irq < NR_IRQS) | ||
46 | return irq - IRQ_DOVE_GPIO_START; | ||
47 | |||
48 | return -EINVAL; | ||
49 | } | ||
50 | |||
51 | #endif | ||
diff --git a/arch/arm/mach-dove/include/mach/irqs.h b/arch/arm/mach-dove/include/mach/irqs.h index 46681466f92b..03d401d20453 100644 --- a/arch/arm/mach-dove/include/mach/irqs.h +++ b/arch/arm/mach-dove/include/mach/irqs.h | |||
@@ -92,10 +92,5 @@ | |||
92 | 92 | ||
93 | #define NR_IRQS (IRQ_DOVE_PMU_START + NR_PMU_IRQS) | 93 | #define NR_IRQS (IRQ_DOVE_PMU_START + NR_PMU_IRQS) |
94 | 94 | ||
95 | /* Required for compatability with PXA AC97 driver. */ | 95 | |
96 | #define IRQ_AC97 IRQ_DOVE_AC97 | ||
97 | /* Required for compatability with PXA DMA driver. */ | ||
98 | #define IRQ_DMA IRQ_DOVE_PDMA | ||
99 | /* Required for compatability with PXA NAND driver */ | ||
100 | #define IRQ_NAND IRQ_DOVE_NAND | ||
101 | #endif | 96 | #endif |
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c index 9317f0558b57..101707fa2e2c 100644 --- a/arch/arm/mach-dove/irq.c +++ b/arch/arm/mach-dove/irq.c | |||
@@ -99,11 +99,21 @@ void __init dove_init_irq(void) | |||
99 | orion_irq_init(32, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF)); | 99 | orion_irq_init(32, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF)); |
100 | 100 | ||
101 | /* | 101 | /* |
102 | * Mask and clear GPIO IRQ interrupts. | 102 | * Initialize gpiolib for GPIOs 0-71. |
103 | */ | 103 | */ |
104 | writel(0, GPIO_LEVEL_MASK(0)); | 104 | orion_gpio_init(0, 32, DOVE_GPIO_LO_VIRT_BASE, 0, |
105 | writel(0, GPIO_EDGE_MASK(0)); | 105 | IRQ_DOVE_GPIO_START); |
106 | writel(0, GPIO_EDGE_CAUSE(0)); | 106 | set_irq_chained_handler(IRQ_DOVE_GPIO_0_7, gpio_irq_handler); |
107 | set_irq_chained_handler(IRQ_DOVE_GPIO_8_15, gpio_irq_handler); | ||
108 | set_irq_chained_handler(IRQ_DOVE_GPIO_16_23, gpio_irq_handler); | ||
109 | set_irq_chained_handler(IRQ_DOVE_GPIO_24_31, gpio_irq_handler); | ||
110 | |||
111 | orion_gpio_init(32, 32, DOVE_GPIO_HI_VIRT_BASE, 0, | ||
112 | IRQ_DOVE_GPIO_START + 32); | ||
113 | set_irq_chained_handler(IRQ_DOVE_HIGH_GPIO, gpio_irq_handler); | ||
114 | |||
115 | orion_gpio_init(64, 8, DOVE_GPIO2_VIRT_BASE, 0, | ||
116 | IRQ_DOVE_GPIO_START + 64); | ||
107 | 117 | ||
108 | /* | 118 | /* |
109 | * Mask and clear PMU interrupts | 119 | * Mask and clear PMU interrupts |
@@ -111,18 +121,6 @@ void __init dove_init_irq(void) | |||
111 | writel(0, PMU_INTERRUPT_MASK); | 121 | writel(0, PMU_INTERRUPT_MASK); |
112 | writel(0, PMU_INTERRUPT_CAUSE); | 122 | writel(0, PMU_INTERRUPT_CAUSE); |
113 | 123 | ||
114 | for (i = IRQ_DOVE_GPIO_START; i < IRQ_DOVE_PMU_START; i++) { | ||
115 | set_irq_chip(i, &orion_gpio_irq_chip); | ||
116 | set_irq_handler(i, handle_level_irq); | ||
117 | irq_desc[i].status |= IRQ_LEVEL; | ||
118 | set_irq_flags(i, IRQF_VALID); | ||
119 | } | ||
120 | set_irq_chained_handler(IRQ_DOVE_GPIO_0_7, gpio_irq_handler); | ||
121 | set_irq_chained_handler(IRQ_DOVE_GPIO_8_15, gpio_irq_handler); | ||
122 | set_irq_chained_handler(IRQ_DOVE_GPIO_16_23, gpio_irq_handler); | ||
123 | set_irq_chained_handler(IRQ_DOVE_GPIO_24_31, gpio_irq_handler); | ||
124 | set_irq_chained_handler(IRQ_DOVE_HIGH_GPIO, gpio_irq_handler); | ||
125 | |||
126 | for (i = IRQ_DOVE_PMU_START; i < NR_IRQS; i++) { | 124 | for (i = IRQ_DOVE_PMU_START; i < NR_IRQS; i++) { |
127 | set_irq_chip(i, &pmu_irq_chip); | 125 | set_irq_chip(i, &pmu_irq_chip); |
128 | set_irq_handler(i, handle_level_irq); | 126 | set_irq_handler(i, handle_level_irq); |