diff options
Diffstat (limited to 'arch/arm/mach-pxa')
76 files changed, 349 insertions, 338 deletions
diff --git a/arch/arm/mach-pxa/balloon3.c b/arch/arm/mach-pxa/balloon3.c index 810a982a66f8..ef3e8b1e06c1 100644 --- a/arch/arm/mach-pxa/balloon3.c +++ b/arch/arm/mach-pxa/balloon3.c | |||
@@ -825,6 +825,7 @@ MACHINE_START(BALLOON3, "Balloon3") | |||
825 | .map_io = balloon3_map_io, | 825 | .map_io = balloon3_map_io, |
826 | .nr_irqs = BALLOON3_NR_IRQS, | 826 | .nr_irqs = BALLOON3_NR_IRQS, |
827 | .init_irq = balloon3_init_irq, | 827 | .init_irq = balloon3_init_irq, |
828 | .handle_irq = pxa27x_handle_irq, | ||
828 | .timer = &pxa_timer, | 829 | .timer = &pxa_timer, |
829 | .init_machine = balloon3_init, | 830 | .init_machine = balloon3_init, |
830 | .boot_params = PLAT_PHYS_OFFSET + 0x100, | 831 | .boot_params = PLAT_PHYS_OFFSET + 0x100, |
diff --git a/arch/arm/mach-pxa/capc7117.c b/arch/arm/mach-pxa/capc7117.c index 4284513f396a..648b0ab2bf77 100644 --- a/arch/arm/mach-pxa/capc7117.c +++ b/arch/arm/mach-pxa/capc7117.c | |||
@@ -151,6 +151,7 @@ MACHINE_START(CAPC7117, | |||
151 | .boot_params = 0xa0000100, | 151 | .boot_params = 0xa0000100, |
152 | .map_io = pxa3xx_map_io, | 152 | .map_io = pxa3xx_map_io, |
153 | .init_irq = pxa3xx_init_irq, | 153 | .init_irq = pxa3xx_init_irq, |
154 | .handle_irq = pxa3xx_handle_irq, | ||
154 | .timer = &pxa_timer, | 155 | .timer = &pxa_timer, |
155 | .init_machine = capc7117_init | 156 | .init_machine = capc7117_init |
156 | MACHINE_END | 157 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/clock.c b/arch/arm/mach-pxa/clock.c index d5152220ce94..4d466102a027 100644 --- a/arch/arm/mach-pxa/clock.c +++ b/arch/arm/mach-pxa/clock.c | |||
@@ -53,6 +53,21 @@ unsigned long clk_get_rate(struct clk *clk) | |||
53 | } | 53 | } |
54 | EXPORT_SYMBOL(clk_get_rate); | 54 | EXPORT_SYMBOL(clk_get_rate); |
55 | 55 | ||
56 | int clk_set_rate(struct clk *clk, unsigned long rate) | ||
57 | { | ||
58 | unsigned long flags; | ||
59 | int ret = -EINVAL; | ||
60 | |||
61 | if (clk->ops->setrate) { | ||
62 | spin_lock_irqsave(&clocks_lock, flags); | ||
63 | ret = clk->ops->setrate(clk, rate); | ||
64 | spin_unlock_irqrestore(&clocks_lock, flags); | ||
65 | } | ||
66 | |||
67 | return ret; | ||
68 | } | ||
69 | EXPORT_SYMBOL(clk_set_rate); | ||
70 | |||
56 | void clk_dummy_enable(struct clk *clk) | 71 | void clk_dummy_enable(struct clk *clk) |
57 | { | 72 | { |
58 | } | 73 | } |
diff --git a/arch/arm/mach-pxa/clock.h b/arch/arm/mach-pxa/clock.h index 1f2fb9c43f06..3a258b1bf1aa 100644 --- a/arch/arm/mach-pxa/clock.h +++ b/arch/arm/mach-pxa/clock.h | |||
@@ -5,6 +5,7 @@ struct clkops { | |||
5 | void (*enable)(struct clk *); | 5 | void (*enable)(struct clk *); |
6 | void (*disable)(struct clk *); | 6 | void (*disable)(struct clk *); |
7 | unsigned long (*getrate)(struct clk *); | 7 | unsigned long (*getrate)(struct clk *); |
8 | int (*setrate)(struct clk *, unsigned long); | ||
8 | }; | 9 | }; |
9 | 10 | ||
10 | struct clk { | 11 | struct clk { |
diff --git a/arch/arm/mach-pxa/cm-x2xx-pci.c b/arch/arm/mach-pxa/cm-x2xx-pci.c index 939a3695ac5d..6bf479d9b5ac 100644 --- a/arch/arm/mach-pxa/cm-x2xx-pci.c +++ b/arch/arm/mach-pxa/cm-x2xx-pci.c | |||
@@ -125,6 +125,9 @@ static void cmx2xx_pci_preinit(void) | |||
125 | { | 125 | { |
126 | pr_info("Initializing CM-X2XX PCI subsystem\n"); | 126 | pr_info("Initializing CM-X2XX PCI subsystem\n"); |
127 | 127 | ||
128 | pcibios_min_io = 0; | ||
129 | pcibios_min_mem = 0; | ||
130 | |||
128 | __raw_writel(0x800, IT8152_PCI_CFG_ADDR); | 131 | __raw_writel(0x800, IT8152_PCI_CFG_ADDR); |
129 | if (__raw_readl(IT8152_PCI_CFG_DATA) == 0x81521283) { | 132 | if (__raw_readl(IT8152_PCI_CFG_DATA) == 0x81521283) { |
130 | pr_info("PCI Bridge found.\n"); | 133 | pr_info("PCI Bridge found.\n"); |
diff --git a/arch/arm/mach-pxa/cm-x2xx.c b/arch/arm/mach-pxa/cm-x2xx.c index a10996782476..13cf518bbbf8 100644 --- a/arch/arm/mach-pxa/cm-x2xx.c +++ b/arch/arm/mach-pxa/cm-x2xx.c | |||
@@ -21,7 +21,8 @@ | |||
21 | #include <asm/mach-types.h> | 21 | #include <asm/mach-types.h> |
22 | #include <asm/mach/map.h> | 22 | #include <asm/mach/map.h> |
23 | 23 | ||
24 | #include <mach/pxa2xx-regs.h> | 24 | #include <mach/pxa25x.h> |
25 | #include <mach/pxa27x.h> | ||
25 | #include <mach/audio.h> | 26 | #include <mach/audio.h> |
26 | #include <mach/pxafb.h> | 27 | #include <mach/pxafb.h> |
27 | #include <mach/smemc.h> | 28 | #include <mach/smemc.h> |
@@ -516,6 +517,11 @@ MACHINE_START(ARMCORE, "Compulab CM-X2XX") | |||
516 | .map_io = cmx2xx_map_io, | 517 | .map_io = cmx2xx_map_io, |
517 | .nr_irqs = CMX2XX_NR_IRQS, | 518 | .nr_irqs = CMX2XX_NR_IRQS, |
518 | .init_irq = cmx2xx_init_irq, | 519 | .init_irq = cmx2xx_init_irq, |
520 | /* NOTE: pxa25x_handle_irq() works on PXA27x w/o camera support */ | ||
521 | .handle_irq = pxa25x_handle_irq, | ||
519 | .timer = &pxa_timer, | 522 | .timer = &pxa_timer, |
520 | .init_machine = cmx2xx_init, | 523 | .init_machine = cmx2xx_init, |
524 | #ifdef CONFIG_PCI | ||
525 | .dma_zone_size = SZ_64M, | ||
526 | #endif | ||
521 | MACHINE_END | 527 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/cm-x300.c b/arch/arm/mach-pxa/cm-x300.c index b2248e76ec8b..b6a51340270b 100644 --- a/arch/arm/mach-pxa/cm-x300.c +++ b/arch/arm/mach-pxa/cm-x300.c | |||
@@ -12,6 +12,7 @@ | |||
12 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
13 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
14 | */ | 14 | */ |
15 | #define pr_fmt(fmt) "%s: " fmt, __func__ | ||
15 | 16 | ||
16 | #include <linux/module.h> | 17 | #include <linux/module.h> |
17 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
@@ -161,10 +162,10 @@ static mfp_cfg_t cm_x3xx_mfp_cfg[] __initdata = { | |||
161 | GPIO99_GPIO, /* Ethernet IRQ */ | 162 | GPIO99_GPIO, /* Ethernet IRQ */ |
162 | 163 | ||
163 | /* RTC GPIOs */ | 164 | /* RTC GPIOs */ |
164 | GPIO95_GPIO, /* RTC CS */ | 165 | GPIO95_GPIO | MFP_LPM_DRIVE_HIGH, /* RTC CS */ |
165 | GPIO96_GPIO, /* RTC WR */ | 166 | GPIO96_GPIO | MFP_LPM_DRIVE_HIGH, /* RTC WR */ |
166 | GPIO97_GPIO, /* RTC RD */ | 167 | GPIO97_GPIO | MFP_LPM_DRIVE_HIGH, /* RTC RD */ |
167 | GPIO98_GPIO, /* RTC IO */ | 168 | GPIO98_GPIO, /* RTC IO */ |
168 | 169 | ||
169 | /* Standard I2C */ | 170 | /* Standard I2C */ |
170 | GPIO21_I2C_SCL, | 171 | GPIO21_I2C_SCL, |
@@ -484,14 +485,13 @@ static int cm_x300_ulpi_phy_reset(void) | |||
484 | int err; | 485 | int err; |
485 | 486 | ||
486 | /* reset the PHY */ | 487 | /* reset the PHY */ |
487 | err = gpio_request(GPIO_ULPI_PHY_RST, "ulpi reset"); | 488 | err = gpio_request_one(GPIO_ULPI_PHY_RST, GPIOF_OUT_INIT_LOW, |
489 | "ulpi reset"); | ||
488 | if (err) { | 490 | if (err) { |
489 | pr_err("%s: failed to request ULPI reset GPIO: %d\n", | 491 | pr_err("failed to request ULPI reset GPIO: %d\n", err); |
490 | __func__, err); | ||
491 | return err; | 492 | return err; |
492 | } | 493 | } |
493 | 494 | ||
494 | gpio_direction_output(GPIO_ULPI_PHY_RST, 0); | ||
495 | msleep(10); | 495 | msleep(10); |
496 | gpio_set_value(GPIO_ULPI_PHY_RST, 1); | 496 | gpio_set_value(GPIO_ULPI_PHY_RST, 1); |
497 | msleep(10); | 497 | msleep(10); |
@@ -510,8 +510,7 @@ static inline int cm_x300_u2d_init(struct device *dev) | |||
510 | pout_clk = clk_get(NULL, "CLK_POUT"); | 510 | pout_clk = clk_get(NULL, "CLK_POUT"); |
511 | if (IS_ERR(pout_clk)) { | 511 | if (IS_ERR(pout_clk)) { |
512 | err = PTR_ERR(pout_clk); | 512 | err = PTR_ERR(pout_clk); |
513 | pr_err("%s: failed to get CLK_POUT: %d\n", | 513 | pr_err("failed to get CLK_POUT: %d\n", err); |
514 | __func__, err); | ||
515 | return err; | 514 | return err; |
516 | } | 515 | } |
517 | clk_enable(pout_clk); | 516 | clk_enable(pout_clk); |
@@ -768,39 +767,36 @@ static void __init cm_x300_init_da9030(void) | |||
768 | irq_set_irq_wake(IRQ_WAKEUP0, 1); | 767 | irq_set_irq_wake(IRQ_WAKEUP0, 1); |
769 | } | 768 | } |
770 | 769 | ||
770 | /* wi2wi gpio setting for system_rev >= 130 */ | ||
771 | static struct gpio cm_x300_wi2wi_gpios[] __initdata = { | ||
772 | { 71, GPIOF_OUT_INIT_HIGH, "wlan en" }, | ||
773 | { 70, GPIOF_OUT_INIT_HIGH, "bt reset" }, | ||
774 | }; | ||
775 | |||
771 | static void __init cm_x300_init_wi2wi(void) | 776 | static void __init cm_x300_init_wi2wi(void) |
772 | { | 777 | { |
773 | int bt_reset, wlan_en; | 778 | int bt_reset, wlan_en; |
774 | int err; | 779 | int err; |
775 | 780 | ||
776 | if (system_rev < 130) { | 781 | if (system_rev < 130) { |
777 | wlan_en = 77; | 782 | cm_x300_wi2wi_gpios[0].gpio = 77; /* wlan en */ |
778 | bt_reset = 78; | 783 | cm_x300_wi2wi_gpios[1].gpio = 78; /* bt reset */ |
779 | } else { | ||
780 | wlan_en = 71; | ||
781 | bt_reset = 70; | ||
782 | } | 784 | } |
783 | 785 | ||
784 | /* Libertas and CSR reset */ | 786 | /* Libertas and CSR reset */ |
785 | err = gpio_request(wlan_en, "wlan en"); | 787 | err = gpio_request_array(ARRAY_AND_SIZE(cm_x300_wi2wi_gpios)); |
786 | if (err) { | 788 | if (err) { |
787 | pr_err("CM-X300: failed to request wlan en gpio: %d\n", err); | 789 | pr_err("failed to request wifi/bt gpios: %d\n", err); |
788 | } else { | 790 | return; |
789 | gpio_direction_output(wlan_en, 1); | ||
790 | gpio_free(wlan_en); | ||
791 | } | 791 | } |
792 | 792 | ||
793 | err = gpio_request(bt_reset, "bt reset"); | 793 | udelay(10); |
794 | if (err) { | 794 | gpio_set_value(bt_reset, 0); |
795 | pr_err("CM-X300: failed to request bt reset gpio: %d\n", err); | 795 | udelay(10); |
796 | } else { | 796 | gpio_set_value(bt_reset, 1); |
797 | gpio_direction_output(bt_reset, 1); | 797 | |
798 | udelay(10); | 798 | gpio_free(wlan_en); |
799 | gpio_set_value(bt_reset, 0); | 799 | gpio_free(bt_reset); |
800 | udelay(10); | ||
801 | gpio_set_value(bt_reset, 1); | ||
802 | gpio_free(bt_reset); | ||
803 | } | ||
804 | } | 800 | } |
805 | 801 | ||
806 | /* MFP */ | 802 | /* MFP */ |
@@ -859,6 +855,7 @@ MACHINE_START(CM_X300, "CM-X300 module") | |||
859 | .boot_params = 0xa0000100, | 855 | .boot_params = 0xa0000100, |
860 | .map_io = pxa3xx_map_io, | 856 | .map_io = pxa3xx_map_io, |
861 | .init_irq = pxa3xx_init_irq, | 857 | .init_irq = pxa3xx_init_irq, |
858 | .handle_irq = pxa3xx_handle_irq, | ||
862 | .timer = &pxa_timer, | 859 | .timer = &pxa_timer, |
863 | .init_machine = cm_x300_init, | 860 | .init_machine = cm_x300_init, |
864 | .fixup = cm_x300_fixup, | 861 | .fixup = cm_x300_fixup, |
diff --git a/arch/arm/mach-pxa/colibri-pxa270.c b/arch/arm/mach-pxa/colibri-pxa270.c index 7545a48ed88b..870920934ecf 100644 --- a/arch/arm/mach-pxa/colibri-pxa270.c +++ b/arch/arm/mach-pxa/colibri-pxa270.c | |||
@@ -310,6 +310,7 @@ MACHINE_START(COLIBRI, "Toradex Colibri PXA270") | |||
310 | .init_machine = colibri_pxa270_init, | 310 | .init_machine = colibri_pxa270_init, |
311 | .map_io = pxa27x_map_io, | 311 | .map_io = pxa27x_map_io, |
312 | .init_irq = pxa27x_init_irq, | 312 | .init_irq = pxa27x_init_irq, |
313 | .handle_irq = pxa27x_handle_irq, | ||
313 | .timer = &pxa_timer, | 314 | .timer = &pxa_timer, |
314 | MACHINE_END | 315 | MACHINE_END |
315 | 316 | ||
@@ -318,6 +319,7 @@ MACHINE_START(INCOME, "Income s.r.o. SH-Dmaster PXA270 SBC") | |||
318 | .init_machine = colibri_pxa270_income_init, | 319 | .init_machine = colibri_pxa270_income_init, |
319 | .map_io = pxa27x_map_io, | 320 | .map_io = pxa27x_map_io, |
320 | .init_irq = pxa27x_init_irq, | 321 | .init_irq = pxa27x_init_irq, |
322 | .handle_irq = pxa27x_handle_irq, | ||
321 | .timer = &pxa_timer, | 323 | .timer = &pxa_timer, |
322 | MACHINE_END | 324 | MACHINE_END |
323 | 325 | ||
diff --git a/arch/arm/mach-pxa/colibri-pxa300.c b/arch/arm/mach-pxa/colibri-pxa300.c index 66dd81cbc8a0..60a6781e7a8e 100644 --- a/arch/arm/mach-pxa/colibri-pxa300.c +++ b/arch/arm/mach-pxa/colibri-pxa300.c | |||
@@ -187,6 +187,7 @@ MACHINE_START(COLIBRI300, "Toradex Colibri PXA300") | |||
187 | .init_machine = colibri_pxa300_init, | 187 | .init_machine = colibri_pxa300_init, |
188 | .map_io = pxa3xx_map_io, | 188 | .map_io = pxa3xx_map_io, |
189 | .init_irq = pxa3xx_init_irq, | 189 | .init_irq = pxa3xx_init_irq, |
190 | .handle_irq = pxa3xx_handle_irq, | ||
190 | .timer = &pxa_timer, | 191 | .timer = &pxa_timer, |
191 | MACHINE_END | 192 | MACHINE_END |
192 | 193 | ||
diff --git a/arch/arm/mach-pxa/colibri-pxa320.c b/arch/arm/mach-pxa/colibri-pxa320.c index ff9ff5f4fc47..d2c6631915d4 100644 --- a/arch/arm/mach-pxa/colibri-pxa320.c +++ b/arch/arm/mach-pxa/colibri-pxa320.c | |||
@@ -23,8 +23,7 @@ | |||
23 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
24 | #include <asm/mach/irq.h> | 24 | #include <asm/mach/irq.h> |
25 | 25 | ||
26 | #include <mach/pxa3xx-regs.h> | 26 | #include <mach/pxa320.h> |
27 | #include <mach/mfp-pxa320.h> | ||
28 | #include <mach/colibri.h> | 27 | #include <mach/colibri.h> |
29 | #include <mach/pxafb.h> | 28 | #include <mach/pxafb.h> |
30 | #include <mach/ohci.h> | 29 | #include <mach/ohci.h> |
@@ -258,6 +257,7 @@ MACHINE_START(COLIBRI320, "Toradex Colibri PXA320") | |||
258 | .init_machine = colibri_pxa320_init, | 257 | .init_machine = colibri_pxa320_init, |
259 | .map_io = pxa3xx_map_io, | 258 | .map_io = pxa3xx_map_io, |
260 | .init_irq = pxa3xx_init_irq, | 259 | .init_irq = pxa3xx_init_irq, |
260 | .handle_irq = pxa3xx_handle_irq, | ||
261 | .timer = &pxa_timer, | 261 | .timer = &pxa_timer, |
262 | MACHINE_END | 262 | MACHINE_END |
263 | 263 | ||
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index 3a5507e31919..185a37cad254 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
@@ -722,6 +722,7 @@ MACHINE_START(CORGI, "SHARP Corgi") | |||
722 | .fixup = fixup_corgi, | 722 | .fixup = fixup_corgi, |
723 | .map_io = pxa25x_map_io, | 723 | .map_io = pxa25x_map_io, |
724 | .init_irq = pxa25x_init_irq, | 724 | .init_irq = pxa25x_init_irq, |
725 | .handle_irq = pxa25x_handle_irq, | ||
725 | .init_machine = corgi_init, | 726 | .init_machine = corgi_init, |
726 | .timer = &pxa_timer, | 727 | .timer = &pxa_timer, |
727 | MACHINE_END | 728 | MACHINE_END |
@@ -732,6 +733,7 @@ MACHINE_START(SHEPHERD, "SHARP Shepherd") | |||
732 | .fixup = fixup_corgi, | 733 | .fixup = fixup_corgi, |
733 | .map_io = pxa25x_map_io, | 734 | .map_io = pxa25x_map_io, |
734 | .init_irq = pxa25x_init_irq, | 735 | .init_irq = pxa25x_init_irq, |
736 | .handle_irq = pxa25x_handle_irq, | ||
735 | .init_machine = corgi_init, | 737 | .init_machine = corgi_init, |
736 | .timer = &pxa_timer, | 738 | .timer = &pxa_timer, |
737 | MACHINE_END | 739 | MACHINE_END |
@@ -742,6 +744,7 @@ MACHINE_START(HUSKY, "SHARP Husky") | |||
742 | .fixup = fixup_corgi, | 744 | .fixup = fixup_corgi, |
743 | .map_io = pxa25x_map_io, | 745 | .map_io = pxa25x_map_io, |
744 | .init_irq = pxa25x_init_irq, | 746 | .init_irq = pxa25x_init_irq, |
747 | .handle_irq = pxa25x_handle_irq, | ||
745 | .init_machine = corgi_init, | 748 | .init_machine = corgi_init, |
746 | .timer = &pxa_timer, | 749 | .timer = &pxa_timer, |
747 | MACHINE_END | 750 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/csb726.c b/arch/arm/mach-pxa/csb726.c index 0481c29a70e8..fe812eafb1f1 100644 --- a/arch/arm/mach-pxa/csb726.c +++ b/arch/arm/mach-pxa/csb726.c | |||
@@ -22,10 +22,9 @@ | |||
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
24 | #include <mach/csb726.h> | 24 | #include <mach/csb726.h> |
25 | #include <mach/mfp-pxa27x.h> | 25 | #include <mach/pxa27x.h> |
26 | #include <mach/mmc.h> | 26 | #include <mach/mmc.h> |
27 | #include <mach/ohci.h> | 27 | #include <mach/ohci.h> |
28 | #include <mach/pxa2xx-regs.h> | ||
29 | #include <mach/audio.h> | 28 | #include <mach/audio.h> |
30 | #include <mach/smemc.h> | 29 | #include <mach/smemc.h> |
31 | 30 | ||
@@ -276,6 +275,7 @@ MACHINE_START(CSB726, "Cogent CSB726") | |||
276 | .boot_params = 0xa0000100, | 275 | .boot_params = 0xa0000100, |
277 | .map_io = pxa27x_map_io, | 276 | .map_io = pxa27x_map_io, |
278 | .init_irq = pxa27x_init_irq, | 277 | .init_irq = pxa27x_init_irq, |
278 | .handle_irq = pxa27x_handle_irq, | ||
279 | .init_machine = csb726_init, | 279 | .init_machine = csb726_init, |
280 | .timer = &pxa_timer, | 280 | .timer = &pxa_timer, |
281 | MACHINE_END | 281 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c index f8a6e9d79a3a..2e37ea52b372 100644 --- a/arch/arm/mach-pxa/em-x270.c +++ b/arch/arm/mach-pxa/em-x270.c | |||
@@ -1302,6 +1302,7 @@ MACHINE_START(EM_X270, "Compulab EM-X270") | |||
1302 | .boot_params = 0xa0000100, | 1302 | .boot_params = 0xa0000100, |
1303 | .map_io = pxa27x_map_io, | 1303 | .map_io = pxa27x_map_io, |
1304 | .init_irq = pxa27x_init_irq, | 1304 | .init_irq = pxa27x_init_irq, |
1305 | .handle_irq = pxa27x_handle_irq, | ||
1305 | .timer = &pxa_timer, | 1306 | .timer = &pxa_timer, |
1306 | .init_machine = em_x270_init, | 1307 | .init_machine = em_x270_init, |
1307 | MACHINE_END | 1308 | MACHINE_END |
@@ -1310,6 +1311,7 @@ MACHINE_START(EXEDA, "Compulab eXeda") | |||
1310 | .boot_params = 0xa0000100, | 1311 | .boot_params = 0xa0000100, |
1311 | .map_io = pxa27x_map_io, | 1312 | .map_io = pxa27x_map_io, |
1312 | .init_irq = pxa27x_init_irq, | 1313 | .init_irq = pxa27x_init_irq, |
1314 | .handle_irq = pxa27x_handle_irq, | ||
1313 | .timer = &pxa_timer, | 1315 | .timer = &pxa_timer, |
1314 | .init_machine = em_x270_init, | 1316 | .init_machine = em_x270_init, |
1315 | MACHINE_END | 1317 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/eseries.c b/arch/arm/mach-pxa/eseries.c index 2e3970fdde0b..b4599ec9d619 100644 --- a/arch/arm/mach-pxa/eseries.c +++ b/arch/arm/mach-pxa/eseries.c | |||
@@ -193,6 +193,7 @@ MACHINE_START(E330, "Toshiba e330") | |||
193 | .map_io = pxa25x_map_io, | 193 | .map_io = pxa25x_map_io, |
194 | .nr_irqs = ESERIES_NR_IRQS, | 194 | .nr_irqs = ESERIES_NR_IRQS, |
195 | .init_irq = pxa25x_init_irq, | 195 | .init_irq = pxa25x_init_irq, |
196 | .handle_irq = pxa25x_handle_irq, | ||
196 | .fixup = eseries_fixup, | 197 | .fixup = eseries_fixup, |
197 | .init_machine = e330_init, | 198 | .init_machine = e330_init, |
198 | .timer = &pxa_timer, | 199 | .timer = &pxa_timer, |
@@ -242,6 +243,7 @@ MACHINE_START(E350, "Toshiba e350") | |||
242 | .map_io = pxa25x_map_io, | 243 | .map_io = pxa25x_map_io, |
243 | .nr_irqs = ESERIES_NR_IRQS, | 244 | .nr_irqs = ESERIES_NR_IRQS, |
244 | .init_irq = pxa25x_init_irq, | 245 | .init_irq = pxa25x_init_irq, |
246 | .handle_irq = pxa25x_handle_irq, | ||
245 | .fixup = eseries_fixup, | 247 | .fixup = eseries_fixup, |
246 | .init_machine = e350_init, | 248 | .init_machine = e350_init, |
247 | .timer = &pxa_timer, | 249 | .timer = &pxa_timer, |
@@ -364,6 +366,7 @@ MACHINE_START(E400, "Toshiba e400") | |||
364 | .map_io = pxa25x_map_io, | 366 | .map_io = pxa25x_map_io, |
365 | .nr_irqs = ESERIES_NR_IRQS, | 367 | .nr_irqs = ESERIES_NR_IRQS, |
366 | .init_irq = pxa25x_init_irq, | 368 | .init_irq = pxa25x_init_irq, |
369 | .handle_irq = pxa25x_handle_irq, | ||
367 | .fixup = eseries_fixup, | 370 | .fixup = eseries_fixup, |
368 | .init_machine = e400_init, | 371 | .init_machine = e400_init, |
369 | .timer = &pxa_timer, | 372 | .timer = &pxa_timer, |
@@ -552,6 +555,7 @@ MACHINE_START(E740, "Toshiba e740") | |||
552 | .map_io = pxa25x_map_io, | 555 | .map_io = pxa25x_map_io, |
553 | .nr_irqs = ESERIES_NR_IRQS, | 556 | .nr_irqs = ESERIES_NR_IRQS, |
554 | .init_irq = pxa25x_init_irq, | 557 | .init_irq = pxa25x_init_irq, |
558 | .handle_irq = pxa25x_handle_irq, | ||
555 | .fixup = eseries_fixup, | 559 | .fixup = eseries_fixup, |
556 | .init_machine = e740_init, | 560 | .init_machine = e740_init, |
557 | .timer = &pxa_timer, | 561 | .timer = &pxa_timer, |
@@ -743,6 +747,7 @@ MACHINE_START(E750, "Toshiba e750") | |||
743 | .map_io = pxa25x_map_io, | 747 | .map_io = pxa25x_map_io, |
744 | .nr_irqs = ESERIES_NR_IRQS, | 748 | .nr_irqs = ESERIES_NR_IRQS, |
745 | .init_irq = pxa25x_init_irq, | 749 | .init_irq = pxa25x_init_irq, |
750 | .handle_irq = pxa25x_handle_irq, | ||
746 | .fixup = eseries_fixup, | 751 | .fixup = eseries_fixup, |
747 | .init_machine = e750_init, | 752 | .init_machine = e750_init, |
748 | .timer = &pxa_timer, | 753 | .timer = &pxa_timer, |
@@ -947,6 +952,7 @@ MACHINE_START(E800, "Toshiba e800") | |||
947 | .map_io = pxa25x_map_io, | 952 | .map_io = pxa25x_map_io, |
948 | .nr_irqs = ESERIES_NR_IRQS, | 953 | .nr_irqs = ESERIES_NR_IRQS, |
949 | .init_irq = pxa25x_init_irq, | 954 | .init_irq = pxa25x_init_irq, |
955 | .handle_irq = pxa25x_handle_irq, | ||
950 | .fixup = eseries_fixup, | 956 | .fixup = eseries_fixup, |
951 | .init_machine = e800_init, | 957 | .init_machine = e800_init, |
952 | .timer = &pxa_timer, | 958 | .timer = &pxa_timer, |
diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c index d88aed8fbe15..b73eadb9f5dc 100644 --- a/arch/arm/mach-pxa/ezx.c +++ b/arch/arm/mach-pxa/ezx.c | |||
@@ -801,6 +801,7 @@ MACHINE_START(EZX_A780, "Motorola EZX A780") | |||
801 | .map_io = pxa27x_map_io, | 801 | .map_io = pxa27x_map_io, |
802 | .nr_irqs = EZX_NR_IRQS, | 802 | .nr_irqs = EZX_NR_IRQS, |
803 | .init_irq = pxa27x_init_irq, | 803 | .init_irq = pxa27x_init_irq, |
804 | .handle_irq = pxa27x_handle_irq, | ||
804 | .timer = &pxa_timer, | 805 | .timer = &pxa_timer, |
805 | .init_machine = a780_init, | 806 | .init_machine = a780_init, |
806 | MACHINE_END | 807 | MACHINE_END |
@@ -866,6 +867,7 @@ MACHINE_START(EZX_E680, "Motorola EZX E680") | |||
866 | .map_io = pxa27x_map_io, | 867 | .map_io = pxa27x_map_io, |
867 | .nr_irqs = EZX_NR_IRQS, | 868 | .nr_irqs = EZX_NR_IRQS, |
868 | .init_irq = pxa27x_init_irq, | 869 | .init_irq = pxa27x_init_irq, |
870 | .handle_irq = pxa27x_handle_irq, | ||
869 | .timer = &pxa_timer, | 871 | .timer = &pxa_timer, |
870 | .init_machine = e680_init, | 872 | .init_machine = e680_init, |
871 | MACHINE_END | 873 | MACHINE_END |
@@ -931,6 +933,7 @@ MACHINE_START(EZX_A1200, "Motorola EZX A1200") | |||
931 | .map_io = pxa27x_map_io, | 933 | .map_io = pxa27x_map_io, |
932 | .nr_irqs = EZX_NR_IRQS, | 934 | .nr_irqs = EZX_NR_IRQS, |
933 | .init_irq = pxa27x_init_irq, | 935 | .init_irq = pxa27x_init_irq, |
936 | .handle_irq = pxa27x_handle_irq, | ||
934 | .timer = &pxa_timer, | 937 | .timer = &pxa_timer, |
935 | .init_machine = a1200_init, | 938 | .init_machine = a1200_init, |
936 | MACHINE_END | 939 | MACHINE_END |
@@ -1121,6 +1124,7 @@ MACHINE_START(EZX_A910, "Motorola EZX A910") | |||
1121 | .map_io = pxa27x_map_io, | 1124 | .map_io = pxa27x_map_io, |
1122 | .nr_irqs = EZX_NR_IRQS, | 1125 | .nr_irqs = EZX_NR_IRQS, |
1123 | .init_irq = pxa27x_init_irq, | 1126 | .init_irq = pxa27x_init_irq, |
1127 | .handle_irq = pxa27x_handle_irq, | ||
1124 | .timer = &pxa_timer, | 1128 | .timer = &pxa_timer, |
1125 | .init_machine = a910_init, | 1129 | .init_machine = a910_init, |
1126 | MACHINE_END | 1130 | MACHINE_END |
@@ -1186,6 +1190,7 @@ MACHINE_START(EZX_E6, "Motorola EZX E6") | |||
1186 | .map_io = pxa27x_map_io, | 1190 | .map_io = pxa27x_map_io, |
1187 | .nr_irqs = EZX_NR_IRQS, | 1191 | .nr_irqs = EZX_NR_IRQS, |
1188 | .init_irq = pxa27x_init_irq, | 1192 | .init_irq = pxa27x_init_irq, |
1193 | .handle_irq = pxa27x_handle_irq, | ||
1189 | .timer = &pxa_timer, | 1194 | .timer = &pxa_timer, |
1190 | .init_machine = e6_init, | 1195 | .init_machine = e6_init, |
1191 | MACHINE_END | 1196 | MACHINE_END |
@@ -1225,6 +1230,7 @@ MACHINE_START(EZX_E2, "Motorola EZX E2") | |||
1225 | .map_io = pxa27x_map_io, | 1230 | .map_io = pxa27x_map_io, |
1226 | .nr_irqs = EZX_NR_IRQS, | 1231 | .nr_irqs = EZX_NR_IRQS, |
1227 | .init_irq = pxa27x_init_irq, | 1232 | .init_irq = pxa27x_init_irq, |
1233 | .handle_irq = pxa27x_handle_irq, | ||
1228 | .timer = &pxa_timer, | 1234 | .timer = &pxa_timer, |
1229 | .init_machine = e2_init, | 1235 | .init_machine = e2_init, |
1230 | MACHINE_END | 1236 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/generic.h b/arch/arm/mach-pxa/generic.h index e6c9344a95ae..92a2e85ab02c 100644 --- a/arch/arm/mach-pxa/generic.h +++ b/arch/arm/mach-pxa/generic.h | |||
@@ -13,21 +13,8 @@ struct irq_data; | |||
13 | struct sys_timer; | 13 | struct sys_timer; |
14 | 14 | ||
15 | extern struct sys_timer pxa_timer; | 15 | extern struct sys_timer pxa_timer; |
16 | extern void __init pxa_init_irq(int irq_nr, | ||
17 | int (*set_wake)(struct irq_data *, | ||
18 | unsigned int)); | ||
19 | extern void __init pxa25x_init_irq(void); | ||
20 | #ifdef CONFIG_CPU_PXA26x | ||
21 | extern void __init pxa26x_init_irq(void); | ||
22 | #endif | ||
23 | extern void __init pxa27x_init_irq(void); | ||
24 | extern void __init pxa3xx_init_irq(void); | ||
25 | extern void __init pxa95x_init_irq(void); | ||
26 | 16 | ||
27 | extern void __init pxa_map_io(void); | 17 | extern void __init pxa_map_io(void); |
28 | extern void __init pxa25x_map_io(void); | ||
29 | extern void __init pxa27x_map_io(void); | ||
30 | extern void __init pxa3xx_map_io(void); | ||
31 | 18 | ||
32 | extern unsigned int get_clk_frequency_khz(int info); | 19 | extern unsigned int get_clk_frequency_khz(int info); |
33 | 20 | ||
diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c index d65e4bde9b91..deaa111c91f9 100644 --- a/arch/arm/mach-pxa/gumstix.c +++ b/arch/arm/mach-pxa/gumstix.c | |||
@@ -236,6 +236,7 @@ MACHINE_START(GUMSTIX, "Gumstix") | |||
236 | .boot_params = 0xa0000100, /* match u-boot bi_boot_params */ | 236 | .boot_params = 0xa0000100, /* match u-boot bi_boot_params */ |
237 | .map_io = pxa25x_map_io, | 237 | .map_io = pxa25x_map_io, |
238 | .init_irq = pxa25x_init_irq, | 238 | .init_irq = pxa25x_init_irq, |
239 | .handle_irq = pxa25x_handle_irq, | ||
239 | .timer = &pxa_timer, | 240 | .timer = &pxa_timer, |
240 | .init_machine = gumstix_init, | 241 | .init_machine = gumstix_init, |
241 | MACHINE_END | 242 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/h5000.c b/arch/arm/mach-pxa/h5000.c index 657db469de1f..0a235128914d 100644 --- a/arch/arm/mach-pxa/h5000.c +++ b/arch/arm/mach-pxa/h5000.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <asm/mach-types.h> | 28 | #include <asm/mach-types.h> |
29 | #include <asm/mach/arch.h> | 29 | #include <asm/mach/arch.h> |
30 | #include <asm/mach/map.h> | 30 | #include <asm/mach/map.h> |
31 | #include <asm/irq.h> | ||
31 | 32 | ||
32 | #include <mach/pxa25x.h> | 33 | #include <mach/pxa25x.h> |
33 | #include <mach/h5000.h> | 34 | #include <mach/h5000.h> |
@@ -205,6 +206,7 @@ MACHINE_START(H5400, "HP iPAQ H5000") | |||
205 | .boot_params = 0xa0000100, | 206 | .boot_params = 0xa0000100, |
206 | .map_io = pxa25x_map_io, | 207 | .map_io = pxa25x_map_io, |
207 | .init_irq = pxa25x_init_irq, | 208 | .init_irq = pxa25x_init_irq, |
209 | .handle_irq = pxa25x_handle_irq, | ||
208 | .timer = &pxa_timer, | 210 | .timer = &pxa_timer, |
209 | .init_machine = h5000_init, | 211 | .init_machine = h5000_init, |
210 | MACHINE_END | 212 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/himalaya.c b/arch/arm/mach-pxa/himalaya.c index e8603eba54bd..a997d0ab2872 100644 --- a/arch/arm/mach-pxa/himalaya.c +++ b/arch/arm/mach-pxa/himalaya.c | |||
@@ -24,8 +24,7 @@ | |||
24 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
25 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
26 | 26 | ||
27 | #include <mach/mfp-pxa25x.h> | 27 | #include <mach/pxa25x.h> |
28 | #include <mach/hardware.h> | ||
29 | 28 | ||
30 | #include "generic.h" | 29 | #include "generic.h" |
31 | 30 | ||
@@ -162,6 +161,7 @@ MACHINE_START(HIMALAYA, "HTC Himalaya") | |||
162 | .boot_params = 0xa0000100, | 161 | .boot_params = 0xa0000100, |
163 | .map_io = pxa25x_map_io, | 162 | .map_io = pxa25x_map_io, |
164 | .init_irq = pxa25x_init_irq, | 163 | .init_irq = pxa25x_init_irq, |
164 | .handle_irq = pxa25x_handle_irq, | ||
165 | .init_machine = himalaya_init, | 165 | .init_machine = himalaya_init, |
166 | .timer = &pxa_timer, | 166 | .timer = &pxa_timer, |
167 | MACHINE_END | 167 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c index f941a495a4a8..c748a473a2ff 100644 --- a/arch/arm/mach-pxa/hx4700.c +++ b/arch/arm/mach-pxa/hx4700.c | |||
@@ -135,42 +135,6 @@ static unsigned long hx4700_pin_config[] __initdata = { | |||
135 | GPIO66_GPIO, /* nSDIO_IRQ */ | 135 | GPIO66_GPIO, /* nSDIO_IRQ */ |
136 | }; | 136 | }; |
137 | 137 | ||
138 | #define HX4700_GPIO_IN(num, _desc) \ | ||
139 | { .gpio = (num), .dir = 0, .desc = (_desc) } | ||
140 | #define HX4700_GPIO_OUT(num, _init, _desc) \ | ||
141 | { .gpio = (num), .dir = 1, .init = (_init), .desc = (_desc) } | ||
142 | struct gpio_ress { | ||
143 | unsigned gpio : 8; | ||
144 | unsigned dir : 1; | ||
145 | unsigned init : 1; | ||
146 | char *desc; | ||
147 | }; | ||
148 | |||
149 | static int hx4700_gpio_request(struct gpio_ress *gpios, int size) | ||
150 | { | ||
151 | int i, rc = 0; | ||
152 | int gpio; | ||
153 | int dir; | ||
154 | |||
155 | for (i = 0; (!rc) && (i < size); i++) { | ||
156 | gpio = gpios[i].gpio; | ||
157 | dir = gpios[i].dir; | ||
158 | rc = gpio_request(gpio, gpios[i].desc); | ||
159 | if (rc) { | ||
160 | pr_err("Error requesting GPIO %d(%s) : %d\n", | ||
161 | gpio, gpios[i].desc, rc); | ||
162 | continue; | ||
163 | } | ||
164 | if (dir) | ||
165 | gpio_direction_output(gpio, gpios[i].init); | ||
166 | else | ||
167 | gpio_direction_input(gpio); | ||
168 | } | ||
169 | while ((rc) && (--i >= 0)) | ||
170 | gpio_free(gpios[i].gpio); | ||
171 | return rc; | ||
172 | } | ||
173 | |||
174 | /* | 138 | /* |
175 | * IRDA | 139 | * IRDA |
176 | */ | 140 | */ |
@@ -829,26 +793,30 @@ static struct platform_device *devices[] __initdata = { | |||
829 | &pcmcia, | 793 | &pcmcia, |
830 | }; | 794 | }; |
831 | 795 | ||
832 | static struct gpio_ress global_gpios[] = { | 796 | static struct gpio global_gpios[] = { |
833 | HX4700_GPIO_IN(GPIO12_HX4700_ASIC3_IRQ, "ASIC3_IRQ"), | 797 | { GPIO12_HX4700_ASIC3_IRQ, GPIOF_IN, "ASIC3_IRQ" }, |
834 | HX4700_GPIO_IN(GPIO13_HX4700_W3220_IRQ, "W3220_IRQ"), | 798 | { GPIO13_HX4700_W3220_IRQ, GPIOF_IN, "W3220_IRQ" }, |
835 | HX4700_GPIO_IN(GPIO14_HX4700_nWLAN_IRQ, "WLAN_IRQ"), | 799 | { GPIO14_HX4700_nWLAN_IRQ, GPIOF_IN, "WLAN_IRQ" }, |
836 | HX4700_GPIO_OUT(GPIO59_HX4700_LCD_PC1, 1, "LCD_PC1"), | 800 | { GPIO59_HX4700_LCD_PC1, GPIOF_OUT_INIT_HIGH, "LCD_PC1" }, |
837 | HX4700_GPIO_OUT(GPIO62_HX4700_LCD_nRESET, 1, "LCD_RESET"), | 801 | { GPIO62_HX4700_LCD_nRESET, GPIOF_OUT_INIT_HIGH, "LCD_RESET" }, |
838 | HX4700_GPIO_OUT(GPIO70_HX4700_LCD_SLIN1, 1, "LCD_SLIN1"), | 802 | { GPIO70_HX4700_LCD_SLIN1, GPIOF_OUT_INIT_HIGH, "LCD_SLIN1" }, |
839 | HX4700_GPIO_OUT(GPIO84_HX4700_LCD_SQN, 1, "LCD_SQN"), | 803 | { GPIO84_HX4700_LCD_SQN, GPIOF_OUT_INIT_HIGH, "LCD_SQN" }, |
840 | HX4700_GPIO_OUT(GPIO110_HX4700_LCD_LVDD_3V3_ON, 1, "LCD_LVDD"), | 804 | { GPIO110_HX4700_LCD_LVDD_3V3_ON, GPIOF_OUT_INIT_HIGH, "LCD_LVDD" }, |
841 | HX4700_GPIO_OUT(GPIO111_HX4700_LCD_AVDD_3V3_ON, 1, "LCD_AVDD"), | 805 | { GPIO111_HX4700_LCD_AVDD_3V3_ON, GPIOF_OUT_INIT_HIGH, "LCD_AVDD" }, |
842 | HX4700_GPIO_OUT(GPIO32_HX4700_RS232_ON, 1, "RS232_ON"), | 806 | { GPIO32_HX4700_RS232_ON, GPIOF_OUT_INIT_HIGH, "RS232_ON" }, |
843 | HX4700_GPIO_OUT(GPIO71_HX4700_ASIC3_nRESET, 1, "ASIC3_nRESET"), | 807 | { GPIO71_HX4700_ASIC3_nRESET, GPIOF_OUT_INIT_HIGH, "ASIC3_nRESET" }, |
844 | HX4700_GPIO_OUT(GPIO82_HX4700_EUART_RESET, 1, "EUART_RESET"), | 808 | { GPIO82_HX4700_EUART_RESET, GPIOF_OUT_INIT_HIGH, "EUART_RESET" }, |
845 | HX4700_GPIO_OUT(GPIO105_HX4700_nIR_ON, 1, "nIR_EN"), | 809 | { GPIO105_HX4700_nIR_ON, GPIOF_OUT_INIT_HIGH, "nIR_EN" }, |
846 | }; | 810 | }; |
847 | 811 | ||
848 | static void __init hx4700_init(void) | 812 | static void __init hx4700_init(void) |
849 | { | 813 | { |
814 | int ret; | ||
815 | |||
850 | pxa2xx_mfp_config(ARRAY_AND_SIZE(hx4700_pin_config)); | 816 | pxa2xx_mfp_config(ARRAY_AND_SIZE(hx4700_pin_config)); |
851 | hx4700_gpio_request(ARRAY_AND_SIZE(global_gpios)); | 817 | ret = gpio_request_array(ARRAY_AND_SIZE(global_gpios)); |
818 | if (ret) | ||
819 | pr_err ("hx4700: Failed to request GPIOs.\n"); | ||
852 | 820 | ||
853 | pxa_set_ffuart_info(NULL); | 821 | pxa_set_ffuart_info(NULL); |
854 | pxa_set_btuart_info(NULL); | 822 | pxa_set_btuart_info(NULL); |
@@ -874,6 +842,7 @@ MACHINE_START(H4700, "HP iPAQ HX4700") | |||
874 | .map_io = pxa27x_map_io, | 842 | .map_io = pxa27x_map_io, |
875 | .nr_irqs = HX4700_NR_IRQS, | 843 | .nr_irqs = HX4700_NR_IRQS, |
876 | .init_irq = pxa27x_init_irq, | 844 | .init_irq = pxa27x_init_irq, |
845 | .handle_irq = pxa27x_handle_irq, | ||
877 | .init_machine = hx4700_init, | 846 | .init_machine = hx4700_init, |
878 | .timer = &pxa_timer, | 847 | .timer = &pxa_timer, |
879 | MACHINE_END | 848 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/icontrol.c b/arch/arm/mach-pxa/icontrol.c index 6cedc81da3bc..d427429f1f34 100644 --- a/arch/arm/mach-pxa/icontrol.c +++ b/arch/arm/mach-pxa/icontrol.c | |||
@@ -194,6 +194,7 @@ MACHINE_START(ICONTROL, "iControl/SafeTcam boards using Embedian MXM-8x10 CoM") | |||
194 | .boot_params = 0xa0000100, | 194 | .boot_params = 0xa0000100, |
195 | .map_io = pxa3xx_map_io, | 195 | .map_io = pxa3xx_map_io, |
196 | .init_irq = pxa3xx_init_irq, | 196 | .init_irq = pxa3xx_init_irq, |
197 | .handle_irq = pxa3xx_handle_irq, | ||
197 | .timer = &pxa_timer, | 198 | .timer = &pxa_timer, |
198 | .init_machine = icontrol_init | 199 | .init_machine = icontrol_init |
199 | MACHINE_END | 200 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/idp.c b/arch/arm/mach-pxa/idp.c index f7fb64f11a7d..ddf20e5c376e 100644 --- a/arch/arm/mach-pxa/idp.c +++ b/arch/arm/mach-pxa/idp.c | |||
@@ -196,6 +196,7 @@ MACHINE_START(PXA_IDP, "Vibren PXA255 IDP") | |||
196 | /* Maintainer: Vibren Technologies */ | 196 | /* Maintainer: Vibren Technologies */ |
197 | .map_io = idp_map_io, | 197 | .map_io = idp_map_io, |
198 | .init_irq = pxa25x_init_irq, | 198 | .init_irq = pxa25x_init_irq, |
199 | .handle_irq = pxa25x_handle_irq, | ||
199 | .timer = &pxa_timer, | 200 | .timer = &pxa_timer, |
200 | .init_machine = idp_init, | 201 | .init_machine = idp_init, |
201 | MACHINE_END | 202 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/include/mach/clkdev.h b/arch/arm/mach-pxa/include/mach/clkdev.h deleted file mode 100644 index 04b37a89801c..000000000000 --- a/arch/arm/mach-pxa/include/mach/clkdev.h +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | #ifndef __ASM_MACH_CLKDEV_H | ||
2 | #define __ASM_MACH_CLKDEV_H | ||
3 | |||
4 | #define __clk_get(clk) ({ 1; }) | ||
5 | #define __clk_put(clk) do { } while (0) | ||
6 | |||
7 | #endif | ||
diff --git a/arch/arm/mach-pxa/include/mach/corgi.h b/arch/arm/mach-pxa/include/mach/corgi.h index 0011055bc3f9..5dfd1195a5a7 100644 --- a/arch/arm/mach-pxa/include/mach/corgi.h +++ b/arch/arm/mach-pxa/include/mach/corgi.h | |||
@@ -34,7 +34,7 @@ | |||
34 | #define CORGI_GPIO_LCDCON_CS (19) /* LCD Control Chip Select */ | 34 | #define CORGI_GPIO_LCDCON_CS (19) /* LCD Control Chip Select */ |
35 | #define CORGI_GPIO_MAX1111_CS (20) /* MAX1111 Chip Select */ | 35 | #define CORGI_GPIO_MAX1111_CS (20) /* MAX1111 Chip Select */ |
36 | #define CORGI_GPIO_ADC_TEMP_ON (21) /* Select battery voltage or temperature */ | 36 | #define CORGI_GPIO_ADC_TEMP_ON (21) /* Select battery voltage or temperature */ |
37 | #define CORGI_GPIO_IR_ON (22) /* Enable IR Transciever */ | 37 | #define CORGI_GPIO_IR_ON (22) /* Enable IR Transceiver */ |
38 | #define CORGI_GPIO_ADS7846_CS (24) /* ADS7846 Chip Select */ | 38 | #define CORGI_GPIO_ADS7846_CS (24) /* ADS7846 Chip Select */ |
39 | #define CORGI_GPIO_SD_PWR (33) /* MMC/SD Power */ | 39 | #define CORGI_GPIO_SD_PWR (33) /* MMC/SD Power */ |
40 | #define CORGI_GPIO_CHRG_ON (38) /* Enable battery Charging */ | 40 | #define CORGI_GPIO_CHRG_ON (38) /* Enable battery Charging */ |
diff --git a/arch/arm/mach-pxa/include/mach/hardware.h b/arch/arm/mach-pxa/include/mach/hardware.h index 6957ba56025b..de63ca3016b4 100644 --- a/arch/arm/mach-pxa/include/mach/hardware.h +++ b/arch/arm/mach-pxa/include/mach/hardware.h | |||
@@ -337,9 +337,6 @@ extern unsigned long get_clock_tick_rate(void); | |||
337 | #endif | 337 | #endif |
338 | 338 | ||
339 | #if defined(CONFIG_MACH_ARMCORE) && defined(CONFIG_PCI) | 339 | #if defined(CONFIG_MACH_ARMCORE) && defined(CONFIG_PCI) |
340 | #define PCIBIOS_MIN_IO 0 | ||
341 | #define PCIBIOS_MIN_MEM 0 | ||
342 | #define pcibios_assign_all_busses() 1 | ||
343 | #define ARCH_HAS_DMA_SET_COHERENT_MASK | 340 | #define ARCH_HAS_DMA_SET_COHERENT_MASK |
344 | #endif | 341 | #endif |
345 | 342 | ||
diff --git a/arch/arm/mach-pxa/include/mach/irqs.h b/arch/arm/mach-pxa/include/mach/irqs.h index 038402404e39..7cc5a781e99e 100644 --- a/arch/arm/mach-pxa/include/mach/irqs.h +++ b/arch/arm/mach-pxa/include/mach/irqs.h | |||
@@ -104,4 +104,16 @@ | |||
104 | 104 | ||
105 | #define NR_IRQS (IRQ_BOARD_START) | 105 | #define NR_IRQS (IRQ_BOARD_START) |
106 | 106 | ||
107 | #ifndef __ASSEMBLY__ | ||
108 | struct irq_data; | ||
109 | struct pt_regs; | ||
110 | |||
111 | void pxa_mask_irq(struct irq_data *); | ||
112 | void pxa_unmask_irq(struct irq_data *); | ||
113 | void icip_handle_irq(struct pt_regs *); | ||
114 | void ichp_handle_irq(struct pt_regs *); | ||
115 | |||
116 | void pxa_init_irq(int irq_nr, int (*set_wake)(struct irq_data *, unsigned int)); | ||
117 | #endif | ||
118 | |||
107 | #endif /* __ASM_MACH_IRQS_H */ | 119 | #endif /* __ASM_MACH_IRQS_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/magician.h b/arch/arm/mach-pxa/include/mach/magician.h index 0a2efcf7947c..7cbfc5d3f9df 100644 --- a/arch/arm/mach-pxa/include/mach/magician.h +++ b/arch/arm/mach-pxa/include/mach/magician.h | |||
@@ -12,6 +12,7 @@ | |||
12 | #ifndef _MAGICIAN_H_ | 12 | #ifndef _MAGICIAN_H_ |
13 | #define _MAGICIAN_H_ | 13 | #define _MAGICIAN_H_ |
14 | 14 | ||
15 | #include <linux/gpio.h> | ||
15 | #include <mach/irqs.h> | 16 | #include <mach/irqs.h> |
16 | 17 | ||
17 | /* | 18 | /* |
@@ -77,7 +78,7 @@ | |||
77 | * CPLD EGPIOs | 78 | * CPLD EGPIOs |
78 | */ | 79 | */ |
79 | 80 | ||
80 | #define MAGICIAN_EGPIO_BASE 0x80 /* GPIO_BOARD_START */ | 81 | #define MAGICIAN_EGPIO_BASE NR_BUILTIN_GPIO |
81 | #define MAGICIAN_EGPIO(reg,bit) \ | 82 | #define MAGICIAN_EGPIO(reg,bit) \ |
82 | (MAGICIAN_EGPIO_BASE + 8*reg + bit) | 83 | (MAGICIAN_EGPIO_BASE + 8*reg + bit) |
83 | 84 | ||
diff --git a/arch/arm/mach-pxa/include/mach/memory.h b/arch/arm/mach-pxa/include/mach/memory.h index 07734f37f8fd..d05a59727d66 100644 --- a/arch/arm/mach-pxa/include/mach/memory.h +++ b/arch/arm/mach-pxa/include/mach/memory.h | |||
@@ -17,8 +17,4 @@ | |||
17 | */ | 17 | */ |
18 | #define PLAT_PHYS_OFFSET UL(0xa0000000) | 18 | #define PLAT_PHYS_OFFSET UL(0xa0000000) |
19 | 19 | ||
20 | #if defined(CONFIG_MACH_ARMCORE) && defined(CONFIG_PCI) | ||
21 | #define ARM_DMA_ZONE_SIZE SZ_64M | ||
22 | #endif | ||
23 | |||
24 | #endif | 20 | #endif |
diff --git a/arch/arm/mach-pxa/include/mach/pm.h b/arch/arm/mach-pxa/include/mach/pm.h index f15afe012995..51558bcee999 100644 --- a/arch/arm/mach-pxa/include/mach/pm.h +++ b/arch/arm/mach-pxa/include/mach/pm.h | |||
@@ -22,8 +22,8 @@ struct pxa_cpu_pm_fns { | |||
22 | extern struct pxa_cpu_pm_fns *pxa_cpu_pm_fns; | 22 | extern struct pxa_cpu_pm_fns *pxa_cpu_pm_fns; |
23 | 23 | ||
24 | /* sleep.S */ | 24 | /* sleep.S */ |
25 | extern void pxa25x_cpu_suspend(unsigned int, long); | 25 | extern int pxa25x_finish_suspend(unsigned long); |
26 | extern void pxa27x_cpu_suspend(unsigned int, long); | 26 | extern int pxa27x_finish_suspend(unsigned long); |
27 | 27 | ||
28 | extern int pxa_pm_enter(suspend_state_t state); | 28 | extern int pxa_pm_enter(suspend_state_t state); |
29 | extern int pxa_pm_prepare(void); | 29 | extern int pxa_pm_prepare(void); |
diff --git a/arch/arm/mach-pxa/include/mach/pxa25x.h b/arch/arm/mach-pxa/include/mach/pxa25x.h index 508c3ba1f4d0..3ac0baac7350 100644 --- a/arch/arm/mach-pxa/include/mach/pxa25x.h +++ b/arch/arm/mach-pxa/include/mach/pxa25x.h | |||
@@ -4,5 +4,14 @@ | |||
4 | #include <mach/hardware.h> | 4 | #include <mach/hardware.h> |
5 | #include <mach/pxa2xx-regs.h> | 5 | #include <mach/pxa2xx-regs.h> |
6 | #include <mach/mfp-pxa25x.h> | 6 | #include <mach/mfp-pxa25x.h> |
7 | #include <mach/irqs.h> | ||
8 | |||
9 | extern void __init pxa25x_map_io(void); | ||
10 | extern void __init pxa25x_init_irq(void); | ||
11 | #ifdef CONFIG_CPU_PXA26x | ||
12 | extern void __init pxa26x_init_irq(void); | ||
13 | #endif | ||
14 | |||
15 | #define pxa25x_handle_irq icip_handle_irq | ||
7 | 16 | ||
8 | #endif /* __MACH_PXA25x_H */ | 17 | #endif /* __MACH_PXA25x_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/pxa27x-udc.h b/arch/arm/mach-pxa/include/mach/pxa27x-udc.h index ab1443f8bd89..4cf28f670706 100644 --- a/arch/arm/mach-pxa/include/mach/pxa27x-udc.h +++ b/arch/arm/mach-pxa/include/mach/pxa27x-udc.h | |||
@@ -56,9 +56,9 @@ | |||
56 | #define UDCFNR __REG(0x40600014) /* UDC Frame Number Register */ | 56 | #define UDCFNR __REG(0x40600014) /* UDC Frame Number Register */ |
57 | #define UDCOTGICR __REG(0x40600018) /* UDC On-The-Go interrupt control */ | 57 | #define UDCOTGICR __REG(0x40600018) /* UDC On-The-Go interrupt control */ |
58 | #define UDCOTGICR_IESF (1 << 24) /* OTG SET_FEATURE command recvd */ | 58 | #define UDCOTGICR_IESF (1 << 24) /* OTG SET_FEATURE command recvd */ |
59 | #define UDCOTGICR_IEXR (1 << 17) /* Extra Transciever Interrupt | 59 | #define UDCOTGICR_IEXR (1 << 17) /* Extra Transceiver Interrupt |
60 | Rising Edge Interrupt Enable */ | 60 | Rising Edge Interrupt Enable */ |
61 | #define UDCOTGICR_IEXF (1 << 16) /* Extra Transciever Interrupt | 61 | #define UDCOTGICR_IEXF (1 << 16) /* Extra Transceiver Interrupt |
62 | Falling Edge Interrupt Enable */ | 62 | Falling Edge Interrupt Enable */ |
63 | #define UDCOTGICR_IEVV40R (1 << 9) /* OTG Vbus Valid 4.0V Rising Edge | 63 | #define UDCOTGICR_IEVV40R (1 << 9) /* OTG Vbus Valid 4.0V Rising Edge |
64 | Interrupt Enable */ | 64 | Interrupt Enable */ |
diff --git a/arch/arm/mach-pxa/include/mach/pxa27x.h b/arch/arm/mach-pxa/include/mach/pxa27x.h index 0b702693f458..b9b1bdc4bacc 100644 --- a/arch/arm/mach-pxa/include/mach/pxa27x.h +++ b/arch/arm/mach-pxa/include/mach/pxa27x.h | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <mach/hardware.h> | 4 | #include <mach/hardware.h> |
5 | #include <mach/pxa2xx-regs.h> | 5 | #include <mach/pxa2xx-regs.h> |
6 | #include <mach/mfp-pxa27x.h> | 6 | #include <mach/mfp-pxa27x.h> |
7 | #include <mach/irqs.h> | ||
7 | 8 | ||
8 | #define ARB_CNTRL __REG(0x48000048) /* Arbiter Control Register */ | 9 | #define ARB_CNTRL __REG(0x48000048) /* Arbiter Control Register */ |
9 | 10 | ||
@@ -17,6 +18,10 @@ | |||
17 | #define ARB_CORE_PARK (1<<24) /* Be parked with core when idle */ | 18 | #define ARB_CORE_PARK (1<<24) /* Be parked with core when idle */ |
18 | #define ARB_LOCK_FLAG (1<<23) /* Only Locking masters gain access to the bus */ | 19 | #define ARB_LOCK_FLAG (1<<23) /* Only Locking masters gain access to the bus */ |
19 | 20 | ||
21 | extern void __init pxa27x_map_io(void); | ||
22 | extern void __init pxa27x_init_irq(void); | ||
20 | extern int __init pxa27x_set_pwrmode(unsigned int mode); | 23 | extern int __init pxa27x_set_pwrmode(unsigned int mode); |
21 | 24 | ||
25 | #define pxa27x_handle_irq ichp_handle_irq | ||
26 | |||
22 | #endif /* __MACH_PXA27x_H */ | 27 | #endif /* __MACH_PXA27x_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/pxa300.h b/arch/arm/mach-pxa/include/mach/pxa300.h index 2f33076c9e48..733b6412c3df 100644 --- a/arch/arm/mach-pxa/include/mach/pxa300.h +++ b/arch/arm/mach-pxa/include/mach/pxa300.h | |||
@@ -1,8 +1,7 @@ | |||
1 | #ifndef __MACH_PXA300_H | 1 | #ifndef __MACH_PXA300_H |
2 | #define __MACH_PXA300_H | 2 | #define __MACH_PXA300_H |
3 | 3 | ||
4 | #include <mach/hardware.h> | 4 | #include <mach/pxa3xx.h> |
5 | #include <mach/pxa3xx-regs.h> | ||
6 | #include <mach/mfp-pxa300.h> | 5 | #include <mach/mfp-pxa300.h> |
7 | 6 | ||
8 | #endif /* __MACH_PXA300_H */ | 7 | #endif /* __MACH_PXA300_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/pxa320.h b/arch/arm/mach-pxa/include/mach/pxa320.h index cab78e903273..b6204e470d89 100644 --- a/arch/arm/mach-pxa/include/mach/pxa320.h +++ b/arch/arm/mach-pxa/include/mach/pxa320.h | |||
@@ -1,8 +1,7 @@ | |||
1 | #ifndef __MACH_PXA320_H | 1 | #ifndef __MACH_PXA320_H |
2 | #define __MACH_PXA320_H | 2 | #define __MACH_PXA320_H |
3 | 3 | ||
4 | #include <mach/hardware.h> | 4 | #include <mach/pxa3xx.h> |
5 | #include <mach/pxa3xx-regs.h> | ||
6 | #include <mach/mfp-pxa320.h> | 5 | #include <mach/mfp-pxa320.h> |
7 | 6 | ||
8 | #endif /* __MACH_PXA320_H */ | 7 | #endif /* __MACH_PXA320_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/pxa3xx.h b/arch/arm/mach-pxa/include/mach/pxa3xx.h new file mode 100644 index 000000000000..cd3e57f42688 --- /dev/null +++ b/arch/arm/mach-pxa/include/mach/pxa3xx.h | |||
@@ -0,0 +1,14 @@ | |||
1 | #ifndef __MACH_PXA3XX_H | ||
2 | #define __MACH_PXA3XX_H | ||
3 | |||
4 | #include <mach/hardware.h> | ||
5 | #include <mach/pxa3xx-regs.h> | ||
6 | #include <mach/irqs.h> | ||
7 | |||
8 | extern void __init pxa3xx_map_io(void); | ||
9 | extern void __init pxa3xx_init_irq(void); | ||
10 | extern void __init pxa95x_init_irq(void); | ||
11 | |||
12 | #define pxa3xx_handle_irq ichp_handle_irq | ||
13 | |||
14 | #endif /* __MACH_PXA3XX_H */ | ||
diff --git a/arch/arm/mach-pxa/include/mach/pxa930.h b/arch/arm/mach-pxa/include/mach/pxa930.h index d45f76a9b54d..190363b98d01 100644 --- a/arch/arm/mach-pxa/include/mach/pxa930.h +++ b/arch/arm/mach-pxa/include/mach/pxa930.h | |||
@@ -1,8 +1,7 @@ | |||
1 | #ifndef __MACH_PXA930_H | 1 | #ifndef __MACH_PXA930_H |
2 | #define __MACH_PXA930_H | 2 | #define __MACH_PXA930_H |
3 | 3 | ||
4 | #include <mach/hardware.h> | 4 | #include <mach/pxa3xx.h> |
5 | #include <mach/pxa3xx-regs.h> | ||
6 | #include <mach/mfp-pxa930.h> | 5 | #include <mach/mfp-pxa930.h> |
7 | 6 | ||
8 | #endif /* __MACH_PXA930_H */ | 7 | #endif /* __MACH_PXA930_H */ |
diff --git a/arch/arm/mach-pxa/include/mach/regs-intc.h b/arch/arm/mach-pxa/include/mach/regs-intc.h deleted file mode 100644 index 662288eb6f95..000000000000 --- a/arch/arm/mach-pxa/include/mach/regs-intc.h +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | #ifndef __ASM_MACH_REGS_INTC_H | ||
2 | #define __ASM_MACH_REGS_INTC_H | ||
3 | |||
4 | #include <mach/hardware.h> | ||
5 | |||
6 | /* | ||
7 | * Interrupt Controller | ||
8 | */ | ||
9 | |||
10 | #define ICIP __REG(0x40D00000) /* Interrupt Controller IRQ Pending Register */ | ||
11 | #define ICMR __REG(0x40D00004) /* Interrupt Controller Mask Register */ | ||
12 | #define ICLR __REG(0x40D00008) /* Interrupt Controller Level Register */ | ||
13 | #define ICFP __REG(0x40D0000C) /* Interrupt Controller FIQ Pending Register */ | ||
14 | #define ICPR __REG(0x40D00010) /* Interrupt Controller Pending Register */ | ||
15 | #define ICCR __REG(0x40D00014) /* Interrupt Controller Control Register */ | ||
16 | #define ICHP __REG(0x40D00018) /* Interrupt Controller Highest Priority Register */ | ||
17 | |||
18 | #define ICIP2 __REG(0x40D0009C) /* Interrupt Controller IRQ Pending Register 2 */ | ||
19 | #define ICMR2 __REG(0x40D000A0) /* Interrupt Controller Mask Register 2 */ | ||
20 | #define ICLR2 __REG(0x40D000A4) /* Interrupt Controller Level Register 2 */ | ||
21 | #define ICFP2 __REG(0x40D000A8) /* Interrupt Controller FIQ Pending Register 2 */ | ||
22 | #define ICPR2 __REG(0x40D000AC) /* Interrupt Controller Pending Register 2 */ | ||
23 | |||
24 | #define ICIP3 __REG(0x40D00130) /* Interrupt Controller IRQ Pending Register 3 */ | ||
25 | #define ICMR3 __REG(0x40D00134) /* Interrupt Controller Mask Register 3 */ | ||
26 | #define ICLR3 __REG(0x40D00138) /* Interrupt Controller Level Register 3 */ | ||
27 | #define ICFP3 __REG(0x40D0013C) /* Interrupt Controller FIQ Pending Register 3 */ | ||
28 | #define ICPR3 __REG(0x40D00140) /* Interrupt Controller Pending Register 3 */ | ||
29 | |||
30 | #endif /* __ASM_MACH_REGS_INTC_H */ | ||
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c index 32ed551bf9c5..b09e848eb6c6 100644 --- a/arch/arm/mach-pxa/irq.c +++ b/arch/arm/mach-pxa/irq.c | |||
@@ -37,6 +37,8 @@ | |||
37 | #define IPR(i) (((i) < 32) ? (0x01c + ((i) << 2)) : \ | 37 | #define IPR(i) (((i) < 32) ? (0x01c + ((i) << 2)) : \ |
38 | ((i) < 64) ? (0x0b0 + (((i) - 32) << 2)) : \ | 38 | ((i) < 64) ? (0x0b0 + (((i) - 32) << 2)) : \ |
39 | (0x144 + (((i) - 64) << 2))) | 39 | (0x144 + (((i) - 64) << 2))) |
40 | #define ICHP_VAL_IRQ (1 << 31) | ||
41 | #define ICHP_IRQ(i) (((i) >> 16) & 0x7fff) | ||
40 | #define IPR_VALID (1 << 31) | 42 | #define IPR_VALID (1 << 31) |
41 | #define IRQ_BIT(n) (((n) - PXA_IRQ(0)) & 0x1f) | 43 | #define IRQ_BIT(n) (((n) - PXA_IRQ(0)) & 0x1f) |
42 | 44 | ||
@@ -64,7 +66,7 @@ static inline void __iomem *irq_base(int i) | |||
64 | return (void __iomem *)io_p2v(phys_base[i]); | 66 | return (void __iomem *)io_p2v(phys_base[i]); |
65 | } | 67 | } |
66 | 68 | ||
67 | static void pxa_mask_irq(struct irq_data *d) | 69 | void pxa_mask_irq(struct irq_data *d) |
68 | { | 70 | { |
69 | void __iomem *base = irq_data_get_irq_chip_data(d); | 71 | void __iomem *base = irq_data_get_irq_chip_data(d); |
70 | uint32_t icmr = __raw_readl(base + ICMR); | 72 | uint32_t icmr = __raw_readl(base + ICMR); |
@@ -73,7 +75,7 @@ static void pxa_mask_irq(struct irq_data *d) | |||
73 | __raw_writel(icmr, base + ICMR); | 75 | __raw_writel(icmr, base + ICMR); |
74 | } | 76 | } |
75 | 77 | ||
76 | static void pxa_unmask_irq(struct irq_data *d) | 78 | void pxa_unmask_irq(struct irq_data *d) |
77 | { | 79 | { |
78 | void __iomem *base = irq_data_get_irq_chip_data(d); | 80 | void __iomem *base = irq_data_get_irq_chip_data(d); |
79 | uint32_t icmr = __raw_readl(base + ICMR); | 81 | uint32_t icmr = __raw_readl(base + ICMR); |
@@ -127,6 +129,36 @@ static struct irq_chip pxa_low_gpio_chip = { | |||
127 | .irq_set_type = pxa_set_low_gpio_type, | 129 | .irq_set_type = pxa_set_low_gpio_type, |
128 | }; | 130 | }; |
129 | 131 | ||
132 | asmlinkage void __exception_irq_entry icip_handle_irq(struct pt_regs *regs) | ||
133 | { | ||
134 | uint32_t icip, icmr, mask; | ||
135 | |||
136 | do { | ||
137 | icip = __raw_readl(IRQ_BASE + ICIP); | ||
138 | icmr = __raw_readl(IRQ_BASE + ICMR); | ||
139 | mask = icip & icmr; | ||
140 | |||
141 | if (mask == 0) | ||
142 | break; | ||
143 | |||
144 | handle_IRQ(PXA_IRQ(fls(mask) - 1), regs); | ||
145 | } while (1); | ||
146 | } | ||
147 | |||
148 | asmlinkage void __exception_irq_entry ichp_handle_irq(struct pt_regs *regs) | ||
149 | { | ||
150 | uint32_t ichp; | ||
151 | |||
152 | do { | ||
153 | __asm__ __volatile__("mrc p6, 0, %0, c5, c0, 0\n": "=r"(ichp)); | ||
154 | |||
155 | if ((ichp & ICHP_VAL_IRQ) == 0) | ||
156 | break; | ||
157 | |||
158 | handle_IRQ(PXA_IRQ(ICHP_IRQ(ichp)), regs); | ||
159 | } while (1); | ||
160 | } | ||
161 | |||
130 | static void __init pxa_init_low_gpio_irq(set_wake_t fn) | 162 | static void __init pxa_init_low_gpio_irq(set_wake_t fn) |
131 | { | 163 | { |
132 | int irq; | 164 | int irq; |
diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c index e5e326d2cdc9..8f97e15e86e5 100644 --- a/arch/arm/mach-pxa/littleton.c +++ b/arch/arm/mach-pxa/littleton.c | |||
@@ -441,6 +441,7 @@ MACHINE_START(LITTLETON, "Marvell Form Factor Development Platform (aka Littleto | |||
441 | .map_io = pxa3xx_map_io, | 441 | .map_io = pxa3xx_map_io, |
442 | .nr_irqs = LITTLETON_NR_IRQS, | 442 | .nr_irqs = LITTLETON_NR_IRQS, |
443 | .init_irq = pxa3xx_init_irq, | 443 | .init_irq = pxa3xx_init_irq, |
444 | .handle_irq = pxa3xx_handle_irq, | ||
444 | .timer = &pxa_timer, | 445 | .timer = &pxa_timer, |
445 | .init_machine = littleton_init, | 446 | .init_machine = littleton_init, |
446 | MACHINE_END | 447 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c index 6cf8180bf5bd..c171d6ebee49 100644 --- a/arch/arm/mach-pxa/lpd270.c +++ b/arch/arm/mach-pxa/lpd270.c | |||
@@ -503,6 +503,7 @@ MACHINE_START(LOGICPD_PXA270, "LogicPD PXA270 Card Engine") | |||
503 | .map_io = lpd270_map_io, | 503 | .map_io = lpd270_map_io, |
504 | .nr_irqs = LPD270_NR_IRQS, | 504 | .nr_irqs = LPD270_NR_IRQS, |
505 | .init_irq = lpd270_init_irq, | 505 | .init_irq = lpd270_init_irq, |
506 | .handle_irq = pxa27x_handle_irq, | ||
506 | .timer = &pxa_timer, | 507 | .timer = &pxa_timer, |
507 | .init_machine = lpd270_init, | 508 | .init_machine = lpd270_init, |
508 | MACHINE_END | 509 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index e10ddb827147..a8c696bfc132 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
@@ -553,6 +553,7 @@ MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)") | |||
553 | .map_io = lubbock_map_io, | 553 | .map_io = lubbock_map_io, |
554 | .nr_irqs = LUBBOCK_NR_IRQS, | 554 | .nr_irqs = LUBBOCK_NR_IRQS, |
555 | .init_irq = lubbock_init_irq, | 555 | .init_irq = lubbock_init_irq, |
556 | .handle_irq = pxa25x_handle_irq, | ||
556 | .timer = &pxa_timer, | 557 | .timer = &pxa_timer, |
557 | .init_machine = lubbock_init, | 558 | .init_machine = lubbock_init, |
558 | MACHINE_END | 559 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c index e1920572948a..5fe5bcd7c0a1 100644 --- a/arch/arm/mach-pxa/magician.c +++ b/arch/arm/mach-pxa/magician.c | |||
@@ -344,22 +344,14 @@ static struct pxafb_mach_info samsung_info = { | |||
344 | * Backlight | 344 | * Backlight |
345 | */ | 345 | */ |
346 | 346 | ||
347 | static struct gpio magician_bl_gpios[] = { | ||
348 | { EGPIO_MAGICIAN_BL_POWER, GPIOF_DIR_OUT, "Backlight power" }, | ||
349 | { EGPIO_MAGICIAN_BL_POWER2, GPIOF_DIR_OUT, "Backlight power 2" }, | ||
350 | }; | ||
351 | |||
347 | static int magician_backlight_init(struct device *dev) | 352 | static int magician_backlight_init(struct device *dev) |
348 | { | 353 | { |
349 | int ret; | 354 | return gpio_request_array(ARRAY_AND_SIZE(magician_bl_gpios)); |
350 | |||
351 | ret = gpio_request(EGPIO_MAGICIAN_BL_POWER, "BL_POWER"); | ||
352 | if (ret) | ||
353 | goto err; | ||
354 | ret = gpio_request(EGPIO_MAGICIAN_BL_POWER2, "BL_POWER2"); | ||
355 | if (ret) | ||
356 | goto err2; | ||
357 | return 0; | ||
358 | |||
359 | err2: | ||
360 | gpio_free(EGPIO_MAGICIAN_BL_POWER); | ||
361 | err: | ||
362 | return ret; | ||
363 | } | 355 | } |
364 | 356 | ||
365 | static int magician_backlight_notify(struct device *dev, int brightness) | 357 | static int magician_backlight_notify(struct device *dev, int brightness) |
@@ -376,8 +368,7 @@ static int magician_backlight_notify(struct device *dev, int brightness) | |||
376 | 368 | ||
377 | static void magician_backlight_exit(struct device *dev) | 369 | static void magician_backlight_exit(struct device *dev) |
378 | { | 370 | { |
379 | gpio_free(EGPIO_MAGICIAN_BL_POWER); | 371 | gpio_free_array(ARRAY_AND_SIZE(magician_bl_gpios)); |
380 | gpio_free(EGPIO_MAGICIAN_BL_POWER2); | ||
381 | } | 372 | } |
382 | 373 | ||
383 | static struct platform_pwm_backlight_data backlight_data = { | 374 | static struct platform_pwm_backlight_data backlight_data = { |
@@ -712,16 +703,25 @@ static struct platform_device *devices[] __initdata = { | |||
712 | &leds_gpio, | 703 | &leds_gpio, |
713 | }; | 704 | }; |
714 | 705 | ||
706 | static struct gpio magician_global_gpios[] = { | ||
707 | { GPIO13_MAGICIAN_CPLD_IRQ, GPIOF_IN, "CPLD_IRQ" }, | ||
708 | { GPIO107_MAGICIAN_DS1WM_IRQ, GPIOF_IN, "DS1WM_IRQ" }, | ||
709 | { GPIO104_MAGICIAN_LCD_POWER_1, GPIOF_OUT_INIT_LOW, "LCD power 1" }, | ||
710 | { GPIO105_MAGICIAN_LCD_POWER_2, GPIOF_OUT_INIT_LOW, "LCD power 2" }, | ||
711 | { GPIO106_MAGICIAN_LCD_POWER_3, GPIOF_OUT_INIT_LOW, "LCD power 3" }, | ||
712 | { GPIO83_MAGICIAN_nIR_EN, GPIOF_OUT_INIT_HIGH, "nIR_EN" }, | ||
713 | }; | ||
714 | |||
715 | static void __init magician_init(void) | 715 | static void __init magician_init(void) |
716 | { | 716 | { |
717 | void __iomem *cpld; | 717 | void __iomem *cpld; |
718 | int lcd_select; | 718 | int lcd_select; |
719 | int err; | 719 | int err; |
720 | 720 | ||
721 | gpio_request(GPIO13_MAGICIAN_CPLD_IRQ, "CPLD_IRQ"); | ||
722 | gpio_request(GPIO107_MAGICIAN_DS1WM_IRQ, "DS1WM_IRQ"); | ||
723 | |||
724 | pxa2xx_mfp_config(ARRAY_AND_SIZE(magician_pin_config)); | 721 | pxa2xx_mfp_config(ARRAY_AND_SIZE(magician_pin_config)); |
722 | err = gpio_request_array(ARRAY_AND_SIZE(magician_global_gpios)); | ||
723 | if (err) | ||
724 | pr_err("magician: Failed to request GPIOs: %d\n", err); | ||
725 | 725 | ||
726 | pxa_set_ffuart_info(NULL); | 726 | pxa_set_ffuart_info(NULL); |
727 | pxa_set_btuart_info(NULL); | 727 | pxa_set_btuart_info(NULL); |
@@ -729,11 +729,7 @@ static void __init magician_init(void) | |||
729 | 729 | ||
730 | platform_add_devices(ARRAY_AND_SIZE(devices)); | 730 | platform_add_devices(ARRAY_AND_SIZE(devices)); |
731 | 731 | ||
732 | err = gpio_request(GPIO83_MAGICIAN_nIR_EN, "nIR_EN"); | 732 | pxa_set_ficp_info(&magician_ficp_info); |
733 | if (!err) { | ||
734 | gpio_direction_output(GPIO83_MAGICIAN_nIR_EN, 1); | ||
735 | pxa_set_ficp_info(&magician_ficp_info); | ||
736 | } | ||
737 | pxa27x_set_i2c_power_info(NULL); | 733 | pxa27x_set_i2c_power_info(NULL); |
738 | pxa_set_i2c_info(&i2c_info); | 734 | pxa_set_i2c_info(&i2c_info); |
739 | pxa_set_mci_info(&magician_mci_info); | 735 | pxa_set_mci_info(&magician_mci_info); |
@@ -747,16 +743,9 @@ static void __init magician_init(void) | |||
747 | system_rev = board_id & 0x7; | 743 | system_rev = board_id & 0x7; |
748 | lcd_select = board_id & 0x8; | 744 | lcd_select = board_id & 0x8; |
749 | pr_info("LCD type: %s\n", lcd_select ? "Samsung" : "Toppoly"); | 745 | pr_info("LCD type: %s\n", lcd_select ? "Samsung" : "Toppoly"); |
750 | if (lcd_select && (system_rev < 3)) { | 746 | if (lcd_select && (system_rev < 3)) |
751 | gpio_request(GPIO75_MAGICIAN_SAMSUNG_POWER, "SAMSUNG_POWER"); | 747 | gpio_request_one(GPIO75_MAGICIAN_SAMSUNG_POWER, |
752 | gpio_direction_output(GPIO75_MAGICIAN_SAMSUNG_POWER, 0); | 748 | GPIOF_OUT_INIT_LOW, "SAMSUNG_POWER"); |
753 | } | ||
754 | gpio_request(GPIO104_MAGICIAN_LCD_POWER_1, "LCD_POWER_1"); | ||
755 | gpio_request(GPIO105_MAGICIAN_LCD_POWER_2, "LCD_POWER_2"); | ||
756 | gpio_request(GPIO106_MAGICIAN_LCD_POWER_3, "LCD_POWER_3"); | ||
757 | gpio_direction_output(GPIO104_MAGICIAN_LCD_POWER_1, 0); | ||
758 | gpio_direction_output(GPIO105_MAGICIAN_LCD_POWER_2, 0); | ||
759 | gpio_direction_output(GPIO106_MAGICIAN_LCD_POWER_3, 0); | ||
760 | pxa_set_fb_info(NULL, lcd_select ? &samsung_info : &toppoly_info); | 749 | pxa_set_fb_info(NULL, lcd_select ? &samsung_info : &toppoly_info); |
761 | } else | 750 | } else |
762 | pr_err("LCD detection: CPLD mapping failed\n"); | 751 | pr_err("LCD detection: CPLD mapping failed\n"); |
@@ -768,6 +757,7 @@ MACHINE_START(MAGICIAN, "HTC Magician") | |||
768 | .map_io = pxa27x_map_io, | 757 | .map_io = pxa27x_map_io, |
769 | .nr_irqs = MAGICIAN_NR_IRQS, | 758 | .nr_irqs = MAGICIAN_NR_IRQS, |
770 | .init_irq = pxa27x_init_irq, | 759 | .init_irq = pxa27x_init_irq, |
760 | .handle_irq = pxa27x_handle_irq, | ||
771 | .init_machine = magician_init, | 761 | .init_machine = magician_init, |
772 | .timer = &pxa_timer, | 762 | .timer = &pxa_timer, |
773 | MACHINE_END | 763 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 3479e2b3b511..4622eb78ef25 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -620,6 +620,7 @@ MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") | |||
620 | .map_io = mainstone_map_io, | 620 | .map_io = mainstone_map_io, |
621 | .nr_irqs = MAINSTONE_NR_IRQS, | 621 | .nr_irqs = MAINSTONE_NR_IRQS, |
622 | .init_irq = mainstone_init_irq, | 622 | .init_irq = mainstone_init_irq, |
623 | .handle_irq = pxa27x_handle_irq, | ||
623 | .timer = &pxa_timer, | 624 | .timer = &pxa_timer, |
624 | .init_machine = mainstone_init, | 625 | .init_machine = mainstone_init, |
625 | MACHINE_END | 626 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/mfp-pxa2xx.c b/arch/arm/mach-pxa/mfp-pxa2xx.c index 87ae3129f4f7..b27544bcafcb 100644 --- a/arch/arm/mach-pxa/mfp-pxa2xx.c +++ b/arch/arm/mach-pxa/mfp-pxa2xx.c | |||
@@ -347,9 +347,9 @@ static int pxa2xx_mfp_suspend(void) | |||
347 | if ((gpio_desc[i].config & MFP_LPM_KEEP_OUTPUT) && | 347 | if ((gpio_desc[i].config & MFP_LPM_KEEP_OUTPUT) && |
348 | (GPDR(i) & GPIO_bit(i))) { | 348 | (GPDR(i) & GPIO_bit(i))) { |
349 | if (GPLR(i) & GPIO_bit(i)) | 349 | if (GPLR(i) & GPIO_bit(i)) |
350 | PGSR(i) |= GPIO_bit(i); | 350 | PGSR(gpio_to_bank(i)) |= GPIO_bit(i); |
351 | else | 351 | else |
352 | PGSR(i) &= ~GPIO_bit(i); | 352 | PGSR(gpio_to_bank(i)) &= ~GPIO_bit(i); |
353 | } | 353 | } |
354 | } | 354 | } |
355 | 355 | ||
diff --git a/arch/arm/mach-pxa/mioa701.c b/arch/arm/mach-pxa/mioa701.c index e3470137c934..64810f908e5b 100644 --- a/arch/arm/mach-pxa/mioa701.c +++ b/arch/arm/mach-pxa/mioa701.c | |||
@@ -177,50 +177,6 @@ static unsigned long mioa701_pin_config[] = { | |||
177 | MFP_CFG_OUT(GPIO116, AF0, DRIVE_HIGH), | 177 | MFP_CFG_OUT(GPIO116, AF0, DRIVE_HIGH), |
178 | }; | 178 | }; |
179 | 179 | ||
180 | #define MIO_GPIO_IN(num, _desc) \ | ||
181 | { .gpio = (num), .dir = 0, .desc = (_desc) } | ||
182 | #define MIO_GPIO_OUT(num, _init, _desc) \ | ||
183 | { .gpio = (num), .dir = 1, .init = (_init), .desc = (_desc) } | ||
184 | struct gpio_ress { | ||
185 | unsigned gpio : 8; | ||
186 | unsigned dir : 1; | ||
187 | unsigned init : 1; | ||
188 | char *desc; | ||
189 | }; | ||
190 | |||
191 | static int mio_gpio_request(struct gpio_ress *gpios, int size) | ||
192 | { | ||
193 | int i, rc = 0; | ||
194 | int gpio; | ||
195 | int dir; | ||
196 | |||
197 | for (i = 0; (!rc) && (i < size); i++) { | ||
198 | gpio = gpios[i].gpio; | ||
199 | dir = gpios[i].dir; | ||
200 | rc = gpio_request(gpio, gpios[i].desc); | ||
201 | if (rc) { | ||
202 | printk(KERN_ERR "Error requesting GPIO %d(%s) : %d\n", | ||
203 | gpio, gpios[i].desc, rc); | ||
204 | continue; | ||
205 | } | ||
206 | if (dir) | ||
207 | gpio_direction_output(gpio, gpios[i].init); | ||
208 | else | ||
209 | gpio_direction_input(gpio); | ||
210 | } | ||
211 | while ((rc) && (--i >= 0)) | ||
212 | gpio_free(gpios[i].gpio); | ||
213 | return rc; | ||
214 | } | ||
215 | |||
216 | static void mio_gpio_free(struct gpio_ress *gpios, int size) | ||
217 | { | ||
218 | int i; | ||
219 | |||
220 | for (i = 0; i < size; i++) | ||
221 | gpio_free(gpios[i].gpio); | ||
222 | } | ||
223 | |||
224 | /* LCD Screen and Backlight */ | 180 | /* LCD Screen and Backlight */ |
225 | static struct platform_pwm_backlight_data mioa701_backlight_data = { | 181 | static struct platform_pwm_backlight_data mioa701_backlight_data = { |
226 | .pwm_id = 0, | 182 | .pwm_id = 0, |
@@ -346,16 +302,16 @@ irqreturn_t gsm_on_irq(int irq, void *p) | |||
346 | return IRQ_HANDLED; | 302 | return IRQ_HANDLED; |
347 | } | 303 | } |
348 | 304 | ||
349 | struct gpio_ress gsm_gpios[] = { | 305 | static struct gpio gsm_gpios[] = { |
350 | MIO_GPIO_IN(GPIO25_GSM_MOD_ON_STATE, "GSM state"), | 306 | { GPIO25_GSM_MOD_ON_STATE, GPIOF_IN, "GSM state" }, |
351 | MIO_GPIO_IN(GPIO113_GSM_EVENT, "GSM event"), | 307 | { GPIO113_GSM_EVENT, GPIOF_IN, "GSM event" }, |
352 | }; | 308 | }; |
353 | 309 | ||
354 | static int __init gsm_init(void) | 310 | static int __init gsm_init(void) |
355 | { | 311 | { |
356 | int rc; | 312 | int rc; |
357 | 313 | ||
358 | rc = mio_gpio_request(ARRAY_AND_SIZE(gsm_gpios)); | 314 | rc = gpio_request_array(ARRAY_AND_SIZE(gsm_gpios)); |
359 | if (rc) | 315 | if (rc) |
360 | goto err_gpio; | 316 | goto err_gpio; |
361 | rc = request_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), gsm_on_irq, | 317 | rc = request_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), gsm_on_irq, |
@@ -369,7 +325,7 @@ static int __init gsm_init(void) | |||
369 | 325 | ||
370 | err_irq: | 326 | err_irq: |
371 | printk(KERN_ERR "Mioa701: Can't request GSM_ON irq\n"); | 327 | printk(KERN_ERR "Mioa701: Can't request GSM_ON irq\n"); |
372 | mio_gpio_free(ARRAY_AND_SIZE(gsm_gpios)); | 328 | gpio_free_array(ARRAY_AND_SIZE(gsm_gpios)); |
373 | err_gpio: | 329 | err_gpio: |
374 | printk(KERN_ERR "Mioa701: gsm not available\n"); | 330 | printk(KERN_ERR "Mioa701: gsm not available\n"); |
375 | return rc; | 331 | return rc; |
@@ -378,7 +334,7 @@ err_gpio: | |||
378 | static void gsm_exit(void) | 334 | static void gsm_exit(void) |
379 | { | 335 | { |
380 | free_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), NULL); | 336 | free_irq(gpio_to_irq(GPIO25_GSM_MOD_ON_STATE), NULL); |
381 | mio_gpio_free(ARRAY_AND_SIZE(gsm_gpios)); | 337 | gpio_free_array(ARRAY_AND_SIZE(gsm_gpios)); |
382 | } | 338 | } |
383 | 339 | ||
384 | /* | 340 | /* |
@@ -749,14 +705,16 @@ static void mioa701_restart(char c, const char *cmd) | |||
749 | arm_machine_restart('s', cmd); | 705 | arm_machine_restart('s', cmd); |
750 | } | 706 | } |
751 | 707 | ||
752 | static struct gpio_ress global_gpios[] = { | 708 | static struct gpio global_gpios[] = { |
753 | MIO_GPIO_OUT(GPIO9_CHARGE_EN, 1, "Charger enable"), | 709 | { GPIO9_CHARGE_EN, GPIOF_OUT_INIT_HIGH, "Charger enable" }, |
754 | MIO_GPIO_OUT(GPIO18_POWEROFF, 0, "Power Off"), | 710 | { GPIO18_POWEROFF, GPIOF_OUT_INIT_LOW, "Power Off" }, |
755 | MIO_GPIO_OUT(GPIO87_LCD_POWER, 0, "LCD Power"), | 711 | { GPIO87_LCD_POWER, GPIOF_OUT_INIT_LOW, "LCD Power" }, |
756 | }; | 712 | }; |
757 | 713 | ||
758 | static void __init mioa701_machine_init(void) | 714 | static void __init mioa701_machine_init(void) |
759 | { | 715 | { |
716 | int rc; | ||
717 | |||
760 | PSLR = 0xff100000; /* SYSDEL=125ms, PWRDEL=125ms, PSLR_SL_ROD=1 */ | 718 | PSLR = 0xff100000; /* SYSDEL=125ms, PWRDEL=125ms, PSLR_SL_ROD=1 */ |
761 | PCFR = PCFR_DC_EN | PCFR_GPR_EN | PCFR_OPDE; | 719 | PCFR = PCFR_DC_EN | PCFR_GPR_EN | PCFR_OPDE; |
762 | RTTR = 32768 - 1; /* Reset crazy WinCE value */ | 720 | RTTR = 32768 - 1; /* Reset crazy WinCE value */ |
@@ -766,7 +724,9 @@ static void __init mioa701_machine_init(void) | |||
766 | pxa_set_ffuart_info(NULL); | 724 | pxa_set_ffuart_info(NULL); |
767 | pxa_set_btuart_info(NULL); | 725 | pxa_set_btuart_info(NULL); |
768 | pxa_set_stuart_info(NULL); | 726 | pxa_set_stuart_info(NULL); |
769 | mio_gpio_request(ARRAY_AND_SIZE(global_gpios)); | 727 | rc = gpio_request_array(ARRAY_AND_SIZE(global_gpios)); |
728 | if (rc) | ||
729 | pr_err("MioA701: Failed to request GPIOs: %d", rc); | ||
770 | bootstrap_init(); | 730 | bootstrap_init(); |
771 | pxa_set_fb_info(NULL, &mioa701_pxafb_info); | 731 | pxa_set_fb_info(NULL, &mioa701_pxafb_info); |
772 | pxa_set_mci_info(&mioa701_mci_info); | 732 | pxa_set_mci_info(&mioa701_mci_info); |
@@ -794,6 +754,7 @@ MACHINE_START(MIOA701, "MIO A701") | |||
794 | .boot_params = 0xa0000100, | 754 | .boot_params = 0xa0000100, |
795 | .map_io = &pxa27x_map_io, | 755 | .map_io = &pxa27x_map_io, |
796 | .init_irq = &pxa27x_init_irq, | 756 | .init_irq = &pxa27x_init_irq, |
757 | .handle_irq = &pxa27x_handle_irq, | ||
797 | .init_machine = mioa701_machine_init, | 758 | .init_machine = mioa701_machine_init, |
798 | .timer = &pxa_timer, | 759 | .timer = &pxa_timer, |
799 | MACHINE_END | 760 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/mp900.c b/arch/arm/mach-pxa/mp900.c index 59cce78aebd1..fb408861dbcf 100644 --- a/arch/arm/mach-pxa/mp900.c +++ b/arch/arm/mach-pxa/mp900.c | |||
@@ -96,6 +96,7 @@ MACHINE_START(NEC_MP900, "MobilePro900/C") | |||
96 | .timer = &pxa_timer, | 96 | .timer = &pxa_timer, |
97 | .map_io = pxa25x_map_io, | 97 | .map_io = pxa25x_map_io, |
98 | .init_irq = pxa25x_init_irq, | 98 | .init_irq = pxa25x_init_irq, |
99 | .handle_irq = pxa25x_handle_irq, | ||
99 | .init_machine = mp900c_init, | 100 | .init_machine = mp900c_init, |
100 | MACHINE_END | 101 | MACHINE_END |
101 | 102 | ||
diff --git a/arch/arm/mach-pxa/palmld.c b/arch/arm/mach-pxa/palmld.c index 4061ecddee70..6b77365ed938 100644 --- a/arch/arm/mach-pxa/palmld.c +++ b/arch/arm/mach-pxa/palmld.c | |||
@@ -345,6 +345,7 @@ MACHINE_START(PALMLD, "Palm LifeDrive") | |||
345 | .boot_params = 0xa0000100, | 345 | .boot_params = 0xa0000100, |
346 | .map_io = palmld_map_io, | 346 | .map_io = palmld_map_io, |
347 | .init_irq = pxa27x_init_irq, | 347 | .init_irq = pxa27x_init_irq, |
348 | .handle_irq = pxa27x_handle_irq, | ||
348 | .timer = &pxa_timer, | 349 | .timer = &pxa_timer, |
349 | .init_machine = palmld_init | 350 | .init_machine = palmld_init |
350 | MACHINE_END | 351 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c index df4d7d009fbb..9bd3e47486fb 100644 --- a/arch/arm/mach-pxa/palmt5.c +++ b/arch/arm/mach-pxa/palmt5.c | |||
@@ -206,6 +206,7 @@ MACHINE_START(PALMT5, "Palm Tungsten|T5") | |||
206 | .map_io = pxa27x_map_io, | 206 | .map_io = pxa27x_map_io, |
207 | .reserve = palmt5_reserve, | 207 | .reserve = palmt5_reserve, |
208 | .init_irq = pxa27x_init_irq, | 208 | .init_irq = pxa27x_init_irq, |
209 | .handle_irq = pxa27x_handle_irq, | ||
209 | .timer = &pxa_timer, | 210 | .timer = &pxa_timer, |
210 | .init_machine = palmt5_init | 211 | .init_machine = palmt5_init |
211 | MACHINE_END | 212 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/palmtc.c b/arch/arm/mach-pxa/palmtc.c index fb06bd047272..6ad4a6c7bc96 100644 --- a/arch/arm/mach-pxa/palmtc.c +++ b/arch/arm/mach-pxa/palmtc.c | |||
@@ -31,14 +31,13 @@ | |||
31 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
32 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
33 | 33 | ||
34 | #include <mach/pxa25x.h> | ||
34 | #include <mach/audio.h> | 35 | #include <mach/audio.h> |
35 | #include <mach/palmtc.h> | 36 | #include <mach/palmtc.h> |
36 | #include <mach/mmc.h> | 37 | #include <mach/mmc.h> |
37 | #include <mach/pxafb.h> | 38 | #include <mach/pxafb.h> |
38 | #include <mach/mfp-pxa25x.h> | ||
39 | #include <mach/irda.h> | 39 | #include <mach/irda.h> |
40 | #include <mach/udc.h> | 40 | #include <mach/udc.h> |
41 | #include <mach/pxa2xx-regs.h> | ||
42 | 41 | ||
43 | #include "generic.h" | 42 | #include "generic.h" |
44 | #include "devices.h" | 43 | #include "devices.h" |
@@ -541,6 +540,7 @@ MACHINE_START(PALMTC, "Palm Tungsten|C") | |||
541 | .boot_params = 0xa0000100, | 540 | .boot_params = 0xa0000100, |
542 | .map_io = pxa25x_map_io, | 541 | .map_io = pxa25x_map_io, |
543 | .init_irq = pxa25x_init_irq, | 542 | .init_irq = pxa25x_init_irq, |
543 | .handle_irq = pxa25x_handle_irq, | ||
544 | .timer = &pxa_timer, | 544 | .timer = &pxa_timer, |
545 | .init_machine = palmtc_init | 545 | .init_machine = palmtc_init |
546 | MACHINE_END | 546 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/palmte2.c b/arch/arm/mach-pxa/palmte2.c index 726f5b98dcd3..664232f3e62c 100644 --- a/arch/arm/mach-pxa/palmte2.c +++ b/arch/arm/mach-pxa/palmte2.c | |||
@@ -31,11 +31,11 @@ | |||
31 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
32 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
33 | 33 | ||
34 | #include <mach/pxa25x.h> | ||
34 | #include <mach/audio.h> | 35 | #include <mach/audio.h> |
35 | #include <mach/palmte2.h> | 36 | #include <mach/palmte2.h> |
36 | #include <mach/mmc.h> | 37 | #include <mach/mmc.h> |
37 | #include <mach/pxafb.h> | 38 | #include <mach/pxafb.h> |
38 | #include <mach/mfp-pxa25x.h> | ||
39 | #include <mach/irda.h> | 39 | #include <mach/irda.h> |
40 | #include <mach/udc.h> | 40 | #include <mach/udc.h> |
41 | #include <mach/palmasoc.h> | 41 | #include <mach/palmasoc.h> |
@@ -359,6 +359,7 @@ MACHINE_START(PALMTE2, "Palm Tungsten|E2") | |||
359 | .boot_params = 0xa0000100, | 359 | .boot_params = 0xa0000100, |
360 | .map_io = pxa25x_map_io, | 360 | .map_io = pxa25x_map_io, |
361 | .init_irq = pxa25x_init_irq, | 361 | .init_irq = pxa25x_init_irq, |
362 | .handle_irq = pxa25x_handle_irq, | ||
362 | .timer = &pxa_timer, | 363 | .timer = &pxa_timer, |
363 | .init_machine = palmte2_init | 364 | .init_machine = palmte2_init |
364 | MACHINE_END | 365 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/palmtreo.c b/arch/arm/mach-pxa/palmtreo.c index 20d1b18b1733..bb27d4b688d8 100644 --- a/arch/arm/mach-pxa/palmtreo.c +++ b/arch/arm/mach-pxa/palmtreo.c | |||
@@ -444,6 +444,7 @@ MACHINE_START(TREO680, "Palm Treo 680") | |||
444 | .map_io = pxa27x_map_io, | 444 | .map_io = pxa27x_map_io, |
445 | .reserve = treo_reserve, | 445 | .reserve = treo_reserve, |
446 | .init_irq = pxa27x_init_irq, | 446 | .init_irq = pxa27x_init_irq, |
447 | .handle_irq = pxa27x_handle_irq, | ||
447 | .timer = &pxa_timer, | 448 | .timer = &pxa_timer, |
448 | .init_machine = treo680_init, | 449 | .init_machine = treo680_init, |
449 | MACHINE_END | 450 | MACHINE_END |
@@ -453,6 +454,7 @@ MACHINE_START(CENTRO, "Palm Centro 685") | |||
453 | .map_io = pxa27x_map_io, | 454 | .map_io = pxa27x_map_io, |
454 | .reserve = treo_reserve, | 455 | .reserve = treo_reserve, |
455 | .init_irq = pxa27x_init_irq, | 456 | .init_irq = pxa27x_init_irq, |
457 | .handle_irq = pxa27x_handle_irq, | ||
456 | .timer = &pxa_timer, | 458 | .timer = &pxa_timer, |
457 | .init_machine = centro_init, | 459 | .init_machine = centro_init, |
458 | MACHINE_END | 460 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/palmtx.c b/arch/arm/mach-pxa/palmtx.c index 595f002066cc..fc4285589c1f 100644 --- a/arch/arm/mach-pxa/palmtx.c +++ b/arch/arm/mach-pxa/palmtx.c | |||
@@ -367,6 +367,7 @@ MACHINE_START(PALMTX, "Palm T|X") | |||
367 | .boot_params = 0xa0000100, | 367 | .boot_params = 0xa0000100, |
368 | .map_io = palmtx_map_io, | 368 | .map_io = palmtx_map_io, |
369 | .init_irq = pxa27x_init_irq, | 369 | .init_irq = pxa27x_init_irq, |
370 | .handle_irq = pxa27x_handle_irq, | ||
370 | .timer = &pxa_timer, | 371 | .timer = &pxa_timer, |
371 | .init_machine = palmtx_init | 372 | .init_machine = palmtx_init |
372 | MACHINE_END | 373 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c index 65f24f0b77e8..e61c1cc05519 100644 --- a/arch/arm/mach-pxa/palmz72.c +++ b/arch/arm/mach-pxa/palmz72.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/i2c-gpio.h> | 33 | #include <linux/i2c-gpio.h> |
34 | 34 | ||
35 | #include <asm/mach-types.h> | 35 | #include <asm/mach-types.h> |
36 | #include <asm/suspend.h> | ||
36 | #include <asm/mach/arch.h> | 37 | #include <asm/mach/arch.h> |
37 | #include <asm/mach/map.h> | 38 | #include <asm/mach/map.h> |
38 | 39 | ||
@@ -401,6 +402,7 @@ MACHINE_START(PALMZ72, "Palm Zire72") | |||
401 | .boot_params = 0xa0000100, | 402 | .boot_params = 0xa0000100, |
402 | .map_io = pxa27x_map_io, | 403 | .map_io = pxa27x_map_io, |
403 | .init_irq = pxa27x_init_irq, | 404 | .init_irq = pxa27x_init_irq, |
405 | .handle_irq = pxa27x_handle_irq, | ||
404 | .timer = &pxa_timer, | 406 | .timer = &pxa_timer, |
405 | .init_machine = palmz72_init | 407 | .init_machine = palmz72_init |
406 | MACHINE_END | 408 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/pcm027.c b/arch/arm/mach-pxa/pcm027.c index 1fc8a66407ae..ffa65dfb8c6f 100644 --- a/arch/arm/mach-pxa/pcm027.c +++ b/arch/arm/mach-pxa/pcm027.c | |||
@@ -262,6 +262,7 @@ MACHINE_START(PCM027, "Phytec Messtechnik GmbH phyCORE-PXA270") | |||
262 | .map_io = pcm027_map_io, | 262 | .map_io = pcm027_map_io, |
263 | .nr_irqs = PCM027_NR_IRQS, | 263 | .nr_irqs = PCM027_NR_IRQS, |
264 | .init_irq = pxa27x_init_irq, | 264 | .init_irq = pxa27x_init_irq, |
265 | .handle_irq = pxa27x_handle_irq, | ||
265 | .timer = &pxa_timer, | 266 | .timer = &pxa_timer, |
266 | .init_machine = pcm027_init, | 267 | .init_machine = pcm027_init, |
267 | MACHINE_END | 268 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/pm.c b/arch/arm/mach-pxa/pm.c index 51e1583265b2..37178a8559b1 100644 --- a/arch/arm/mach-pxa/pm.c +++ b/arch/arm/mach-pxa/pm.c | |||
@@ -42,7 +42,6 @@ int pxa_pm_enter(suspend_state_t state) | |||
42 | 42 | ||
43 | /* *** go zzz *** */ | 43 | /* *** go zzz *** */ |
44 | pxa_cpu_pm_fns->enter(state); | 44 | pxa_cpu_pm_fns->enter(state); |
45 | cpu_init(); | ||
46 | 45 | ||
47 | if (state != PM_SUSPEND_STANDBY && pxa_cpu_pm_fns->restore) { | 46 | if (state != PM_SUSPEND_STANDBY && pxa_cpu_pm_fns->restore) { |
48 | /* after sleeping, validate the checksum */ | 47 | /* after sleeping, validate the checksum */ |
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index 16d14fd79b4b..a113ea9ab4ab 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c | |||
@@ -468,6 +468,7 @@ MACHINE_START(POODLE, "SHARP Poodle") | |||
468 | .map_io = pxa25x_map_io, | 468 | .map_io = pxa25x_map_io, |
469 | .nr_irqs = POODLE_NR_IRQS, /* 4 for LoCoMo */ | 469 | .nr_irqs = POODLE_NR_IRQS, /* 4 for LoCoMo */ |
470 | .init_irq = pxa25x_init_irq, | 470 | .init_irq = pxa25x_init_irq, |
471 | .handle_irq = pxa25x_handle_irq, | ||
471 | .timer = &pxa_timer, | 472 | .timer = &pxa_timer, |
472 | .init_machine = poodle_init, | 473 | .init_machine = poodle_init, |
473 | MACHINE_END | 474 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c index fed363cec9c6..9c434d21a271 100644 --- a/arch/arm/mach-pxa/pxa25x.c +++ b/arch/arm/mach-pxa/pxa25x.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/irq.h> | 25 | #include <linux/irq.h> |
26 | 26 | ||
27 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
28 | #include <asm/suspend.h> | ||
28 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
29 | #include <mach/irqs.h> | 30 | #include <mach/irqs.h> |
30 | #include <mach/gpio.h> | 31 | #include <mach/gpio.h> |
@@ -244,7 +245,7 @@ static void pxa25x_cpu_pm_enter(suspend_state_t state) | |||
244 | 245 | ||
245 | switch (state) { | 246 | switch (state) { |
246 | case PM_SUSPEND_MEM: | 247 | case PM_SUSPEND_MEM: |
247 | pxa25x_cpu_suspend(PWRMODE_SLEEP, PLAT_PHYS_OFFSET - PAGE_OFFSET); | 248 | cpu_suspend(PWRMODE_SLEEP, pxa25x_finish_suspend); |
248 | break; | 249 | break; |
249 | } | 250 | } |
250 | } | 251 | } |
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 2fecbec58d88..9d2400b5f503 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <asm/mach/map.h> | 24 | #include <asm/mach/map.h> |
25 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
26 | #include <asm/irq.h> | 26 | #include <asm/irq.h> |
27 | #include <asm/suspend.h> | ||
27 | #include <mach/irqs.h> | 28 | #include <mach/irqs.h> |
28 | #include <mach/gpio.h> | 29 | #include <mach/gpio.h> |
29 | #include <mach/pxa27x.h> | 30 | #include <mach/pxa27x.h> |
@@ -284,6 +285,11 @@ void pxa27x_cpu_pm_restore(unsigned long *sleep_save) | |||
284 | void pxa27x_cpu_pm_enter(suspend_state_t state) | 285 | void pxa27x_cpu_pm_enter(suspend_state_t state) |
285 | { | 286 | { |
286 | extern void pxa_cpu_standby(void); | 287 | extern void pxa_cpu_standby(void); |
288 | #ifndef CONFIG_IWMMXT | ||
289 | u64 acc0; | ||
290 | |||
291 | asm volatile("mra %Q0, %R0, acc0" : "=r" (acc0)); | ||
292 | #endif | ||
287 | 293 | ||
288 | /* ensure voltage-change sequencer not initiated, which hangs */ | 294 | /* ensure voltage-change sequencer not initiated, which hangs */ |
289 | PCFR &= ~PCFR_FVC; | 295 | PCFR &= ~PCFR_FVC; |
@@ -299,7 +305,10 @@ void pxa27x_cpu_pm_enter(suspend_state_t state) | |||
299 | pxa_cpu_standby(); | 305 | pxa_cpu_standby(); |
300 | break; | 306 | break; |
301 | case PM_SUSPEND_MEM: | 307 | case PM_SUSPEND_MEM: |
302 | pxa27x_cpu_suspend(pwrmode, PLAT_PHYS_OFFSET - PAGE_OFFSET); | 308 | cpu_suspend(pwrmode, pxa27x_finish_suspend); |
309 | #ifndef CONFIG_IWMMXT | ||
310 | asm volatile("mar acc0, %Q0, %R0" : "=r" (acc0)); | ||
311 | #endif | ||
303 | break; | 312 | break; |
304 | } | 313 | } |
305 | } | 314 | } |
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c index 8521d7d6f1da..b5cd9e5aba31 100644 --- a/arch/arm/mach-pxa/pxa3xx.c +++ b/arch/arm/mach-pxa/pxa3xx.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/i2c/pxa-i2c.h> | 24 | #include <linux/i2c/pxa-i2c.h> |
25 | 25 | ||
26 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |
27 | #include <asm/suspend.h> | ||
27 | #include <mach/hardware.h> | 28 | #include <mach/hardware.h> |
28 | #include <mach/gpio.h> | 29 | #include <mach/gpio.h> |
29 | #include <mach/pxa3xx-regs.h> | 30 | #include <mach/pxa3xx-regs.h> |
@@ -31,7 +32,6 @@ | |||
31 | #include <mach/ohci.h> | 32 | #include <mach/ohci.h> |
32 | #include <mach/pm.h> | 33 | #include <mach/pm.h> |
33 | #include <mach/dma.h> | 34 | #include <mach/dma.h> |
34 | #include <mach/regs-intc.h> | ||
35 | #include <mach/smemc.h> | 35 | #include <mach/smemc.h> |
36 | 36 | ||
37 | #include "generic.h" | 37 | #include "generic.h" |
@@ -141,8 +141,13 @@ static void pxa3xx_cpu_pm_suspend(void) | |||
141 | { | 141 | { |
142 | volatile unsigned long *p = (volatile void *)0xc0000000; | 142 | volatile unsigned long *p = (volatile void *)0xc0000000; |
143 | unsigned long saved_data = *p; | 143 | unsigned long saved_data = *p; |
144 | #ifndef CONFIG_IWMMXT | ||
145 | u64 acc0; | ||
144 | 146 | ||
145 | extern void pxa3xx_cpu_suspend(long); | 147 | asm volatile("mra %Q0, %R0, acc0" : "=r" (acc0)); |
148 | #endif | ||
149 | |||
150 | extern int pxa3xx_finish_suspend(unsigned long); | ||
146 | 151 | ||
147 | /* resuming from D2 requires the HSIO2/BOOT/TPM clocks enabled */ | 152 | /* resuming from D2 requires the HSIO2/BOOT/TPM clocks enabled */ |
148 | CKENA |= (1 << CKEN_BOOT) | (1 << CKEN_TPM); | 153 | CKENA |= (1 << CKEN_BOOT) | (1 << CKEN_TPM); |
@@ -162,11 +167,15 @@ static void pxa3xx_cpu_pm_suspend(void) | |||
162 | /* overwrite with the resume address */ | 167 | /* overwrite with the resume address */ |
163 | *p = virt_to_phys(cpu_resume); | 168 | *p = virt_to_phys(cpu_resume); |
164 | 169 | ||
165 | pxa3xx_cpu_suspend(PLAT_PHYS_OFFSET - PAGE_OFFSET); | 170 | cpu_suspend(0, pxa3xx_finish_suspend); |
166 | 171 | ||
167 | *p = saved_data; | 172 | *p = saved_data; |
168 | 173 | ||
169 | AD3ER = 0; | 174 | AD3ER = 0; |
175 | |||
176 | #ifndef CONFIG_IWMMXT | ||
177 | asm volatile("mar acc0, %Q0, %R0" : "=r" (acc0)); | ||
178 | #endif | ||
170 | } | 179 | } |
171 | 180 | ||
172 | static void pxa3xx_cpu_pm_enter(suspend_state_t state) | 181 | static void pxa3xx_cpu_pm_enter(suspend_state_t state) |
@@ -328,13 +337,13 @@ static void pxa_ack_ext_wakeup(struct irq_data *d) | |||
328 | 337 | ||
329 | static void pxa_mask_ext_wakeup(struct irq_data *d) | 338 | static void pxa_mask_ext_wakeup(struct irq_data *d) |
330 | { | 339 | { |
331 | ICMR2 &= ~(1 << ((d->irq - PXA_IRQ(0)) & 0x1f)); | 340 | pxa_mask_irq(d); |
332 | PECR &= ~PECR_IE(d->irq - IRQ_WAKEUP0); | 341 | PECR &= ~PECR_IE(d->irq - IRQ_WAKEUP0); |
333 | } | 342 | } |
334 | 343 | ||
335 | static void pxa_unmask_ext_wakeup(struct irq_data *d) | 344 | static void pxa_unmask_ext_wakeup(struct irq_data *d) |
336 | { | 345 | { |
337 | ICMR2 |= 1 << ((d->irq - PXA_IRQ(0)) & 0x1f); | 346 | pxa_unmask_irq(d); |
338 | PECR |= PECR_IE(d->irq - IRQ_WAKEUP0); | 347 | PECR |= PECR_IE(d->irq - IRQ_WAKEUP0); |
339 | } | 348 | } |
340 | 349 | ||
diff --git a/arch/arm/mach-pxa/pxa95x.c b/arch/arm/mach-pxa/pxa95x.c index ecc82a330fad..0ee166b61f81 100644 --- a/arch/arm/mach-pxa/pxa95x.c +++ b/arch/arm/mach-pxa/pxa95x.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <mach/reset.h> | 27 | #include <mach/reset.h> |
28 | #include <mach/pm.h> | 28 | #include <mach/pm.h> |
29 | #include <mach/dma.h> | 29 | #include <mach/dma.h> |
30 | #include <mach/regs-intc.h> | ||
31 | 30 | ||
32 | #include "generic.h" | 31 | #include "generic.h" |
33 | #include "devices.h" | 32 | #include "devices.h" |
diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c index d130f77b6d11..bbcd90562ebe 100644 --- a/arch/arm/mach-pxa/raumfeld.c +++ b/arch/arm/mach-pxa/raumfeld.c | |||
@@ -46,10 +46,7 @@ | |||
46 | #include <asm/mach-types.h> | 46 | #include <asm/mach-types.h> |
47 | #include <asm/mach/arch.h> | 47 | #include <asm/mach/arch.h> |
48 | 48 | ||
49 | #include <mach/hardware.h> | 49 | #include <mach/pxa300.h> |
50 | #include <mach/pxa3xx-regs.h> | ||
51 | #include <mach/mfp-pxa3xx.h> | ||
52 | #include <mach/mfp-pxa300.h> | ||
53 | #include <mach/ohci.h> | 50 | #include <mach/ohci.h> |
54 | #include <mach/pxafb.h> | 51 | #include <mach/pxafb.h> |
55 | #include <mach/mmc.h> | 52 | #include <mach/mmc.h> |
@@ -573,10 +570,10 @@ static struct pxafb_mode_info sharp_lq043t3dx02_mode = { | |||
573 | .xres = 480, | 570 | .xres = 480, |
574 | .yres = 272, | 571 | .yres = 272, |
575 | .bpp = 16, | 572 | .bpp = 16, |
576 | .hsync_len = 4, | 573 | .hsync_len = 41, |
577 | .left_margin = 2, | 574 | .left_margin = 2, |
578 | .right_margin = 1, | 575 | .right_margin = 1, |
579 | .vsync_len = 1, | 576 | .vsync_len = 10, |
580 | .upper_margin = 3, | 577 | .upper_margin = 3, |
581 | .lower_margin = 1, | 578 | .lower_margin = 1, |
582 | .sync = 0, | 579 | .sync = 0, |
@@ -596,29 +593,31 @@ static void __init raumfeld_lcd_init(void) | |||
596 | { | 593 | { |
597 | int ret; | 594 | int ret; |
598 | 595 | ||
599 | pxa_set_fb_info(NULL, &raumfeld_sharp_lcd_info); | ||
600 | |||
601 | /* Earlier devices had the backlight regulator controlled | ||
602 | * via PWM, later versions use another controller for that */ | ||
603 | if ((system_rev & 0xff) < 2) { | ||
604 | mfp_cfg_t raumfeld_pwm_pin_config = GPIO17_PWM0_OUT; | ||
605 | pxa3xx_mfp_config(&raumfeld_pwm_pin_config, 1); | ||
606 | platform_device_register(&raumfeld_pwm_backlight_device); | ||
607 | } else | ||
608 | platform_device_register(&raumfeld_lt3593_device); | ||
609 | |||
610 | ret = gpio_request(GPIO_TFT_VA_EN, "display VA enable"); | 596 | ret = gpio_request(GPIO_TFT_VA_EN, "display VA enable"); |
611 | if (ret < 0) | 597 | if (ret < 0) |
612 | pr_warning("Unable to request GPIO_TFT_VA_EN\n"); | 598 | pr_warning("Unable to request GPIO_TFT_VA_EN\n"); |
613 | else | 599 | else |
614 | gpio_direction_output(GPIO_TFT_VA_EN, 1); | 600 | gpio_direction_output(GPIO_TFT_VA_EN, 1); |
615 | 601 | ||
602 | msleep(100); | ||
603 | |||
616 | ret = gpio_request(GPIO_DISPLAY_ENABLE, "display enable"); | 604 | ret = gpio_request(GPIO_DISPLAY_ENABLE, "display enable"); |
617 | if (ret < 0) | 605 | if (ret < 0) |
618 | pr_warning("Unable to request GPIO_DISPLAY_ENABLE\n"); | 606 | pr_warning("Unable to request GPIO_DISPLAY_ENABLE\n"); |
619 | else | 607 | else |
620 | gpio_direction_output(GPIO_DISPLAY_ENABLE, 1); | 608 | gpio_direction_output(GPIO_DISPLAY_ENABLE, 1); |
621 | 609 | ||
610 | /* Hardware revision 2 has the backlight regulator controlled | ||
611 | * by an LT3593, earlier and later devices use PWM for that. */ | ||
612 | if ((system_rev & 0xff) == 2) { | ||
613 | platform_device_register(&raumfeld_lt3593_device); | ||
614 | } else { | ||
615 | mfp_cfg_t raumfeld_pwm_pin_config = GPIO17_PWM0_OUT; | ||
616 | pxa3xx_mfp_config(&raumfeld_pwm_pin_config, 1); | ||
617 | platform_device_register(&raumfeld_pwm_backlight_device); | ||
618 | } | ||
619 | |||
620 | pxa_set_fb_info(NULL, &raumfeld_sharp_lcd_info); | ||
622 | platform_device_register(&pxa3xx_device_gcu); | 621 | platform_device_register(&pxa3xx_device_gcu); |
623 | } | 622 | } |
624 | 623 | ||
@@ -657,10 +656,10 @@ static struct lis3lv02d_platform_data lis3_pdata = { | |||
657 | 656 | ||
658 | #define SPI_AK4104 \ | 657 | #define SPI_AK4104 \ |
659 | { \ | 658 | { \ |
660 | .modalias = "ak4104", \ | 659 | .modalias = "ak4104-codec", \ |
661 | .max_speed_hz = 10000, \ | 660 | .max_speed_hz = 10000, \ |
662 | .bus_num = 0, \ | 661 | .bus_num = 0, \ |
663 | .chip_select = 0, \ | 662 | .chip_select = 0, \ |
664 | .controller_data = (void *) GPIO_SPDIF_CS, \ | 663 | .controller_data = (void *) GPIO_SPDIF_CS, \ |
665 | } | 664 | } |
666 | 665 | ||
@@ -1091,6 +1090,7 @@ MACHINE_START(RAUMFELD_RC, "Raumfeld Controller") | |||
1091 | .init_machine = raumfeld_controller_init, | 1090 | .init_machine = raumfeld_controller_init, |
1092 | .map_io = pxa3xx_map_io, | 1091 | .map_io = pxa3xx_map_io, |
1093 | .init_irq = pxa3xx_init_irq, | 1092 | .init_irq = pxa3xx_init_irq, |
1093 | .handle_irq = pxa3xx_handle_irq, | ||
1094 | .timer = &pxa_timer, | 1094 | .timer = &pxa_timer, |
1095 | MACHINE_END | 1095 | MACHINE_END |
1096 | #endif | 1096 | #endif |
@@ -1101,6 +1101,7 @@ MACHINE_START(RAUMFELD_CONNECTOR, "Raumfeld Connector") | |||
1101 | .init_machine = raumfeld_connector_init, | 1101 | .init_machine = raumfeld_connector_init, |
1102 | .map_io = pxa3xx_map_io, | 1102 | .map_io = pxa3xx_map_io, |
1103 | .init_irq = pxa3xx_init_irq, | 1103 | .init_irq = pxa3xx_init_irq, |
1104 | .handle_irq = pxa3xx_handle_irq, | ||
1104 | .timer = &pxa_timer, | 1105 | .timer = &pxa_timer, |
1105 | MACHINE_END | 1106 | MACHINE_END |
1106 | #endif | 1107 | #endif |
@@ -1111,6 +1112,7 @@ MACHINE_START(RAUMFELD_SPEAKER, "Raumfeld Speaker") | |||
1111 | .init_machine = raumfeld_speaker_init, | 1112 | .init_machine = raumfeld_speaker_init, |
1112 | .map_io = pxa3xx_map_io, | 1113 | .map_io = pxa3xx_map_io, |
1113 | .init_irq = pxa3xx_init_irq, | 1114 | .init_irq = pxa3xx_init_irq, |
1115 | .handle_irq = pxa3xx_handle_irq, | ||
1114 | .timer = &pxa_timer, | 1116 | .timer = &pxa_timer, |
1115 | MACHINE_END | 1117 | MACHINE_END |
1116 | #endif | 1118 | #endif |
diff --git a/arch/arm/mach-pxa/saar.c b/arch/arm/mach-pxa/saar.c index fee97a935122..df4356e8acae 100644 --- a/arch/arm/mach-pxa/saar.c +++ b/arch/arm/mach-pxa/saar.c | |||
@@ -599,6 +599,7 @@ MACHINE_START(SAAR, "PXA930 Handheld Platform (aka SAAR)") | |||
599 | .boot_params = 0xa0000100, | 599 | .boot_params = 0xa0000100, |
600 | .map_io = pxa3xx_map_io, | 600 | .map_io = pxa3xx_map_io, |
601 | .init_irq = pxa3xx_init_irq, | 601 | .init_irq = pxa3xx_init_irq, |
602 | .handle_irq = pxa3xx_handle_irq, | ||
602 | .timer = &pxa_timer, | 603 | .timer = &pxa_timer, |
603 | .init_machine = saar_init, | 604 | .init_machine = saar_init, |
604 | MACHINE_END | 605 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/saarb.c b/arch/arm/mach-pxa/saarb.c index 9322fe527c7f..ebd6379c4969 100644 --- a/arch/arm/mach-pxa/saarb.c +++ b/arch/arm/mach-pxa/saarb.c | |||
@@ -104,9 +104,10 @@ static void __init saarb_init(void) | |||
104 | 104 | ||
105 | MACHINE_START(SAARB, "PXA955 Handheld Platform (aka SAARB)") | 105 | MACHINE_START(SAARB, "PXA955 Handheld Platform (aka SAARB)") |
106 | .boot_params = 0xa0000100, | 106 | .boot_params = 0xa0000100, |
107 | .map_io = pxa_map_io, | 107 | .map_io = pxa3xx_map_io, |
108 | .nr_irqs = SAARB_NR_IRQS, | 108 | .nr_irqs = SAARB_NR_IRQS, |
109 | .init_irq = pxa95x_init_irq, | 109 | .init_irq = pxa95x_init_irq, |
110 | .handle_irq = pxa3xx_handle_irq, | ||
110 | .timer = &pxa_timer, | 111 | .timer = &pxa_timer, |
111 | .init_machine = saarb_init, | 112 | .init_machine = saarb_init, |
112 | MACHINE_END | 113 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/sleep.S b/arch/arm/mach-pxa/sleep.S index 6f5368899d84..1e544be9905d 100644 --- a/arch/arm/mach-pxa/sleep.S +++ b/arch/arm/mach-pxa/sleep.S | |||
@@ -24,20 +24,9 @@ | |||
24 | 24 | ||
25 | #ifdef CONFIG_PXA3xx | 25 | #ifdef CONFIG_PXA3xx |
26 | /* | 26 | /* |
27 | * pxa3xx_cpu_suspend() - forces CPU into sleep state (S2D3C4) | 27 | * pxa3xx_finish_suspend() - forces CPU into sleep state (S2D3C4) |
28 | * | ||
29 | * r0 = v:p offset | ||
30 | */ | 28 | */ |
31 | ENTRY(pxa3xx_cpu_suspend) | 29 | ENTRY(pxa3xx_finish_suspend) |
32 | |||
33 | #ifndef CONFIG_IWMMXT | ||
34 | mra r2, r3, acc0 | ||
35 | #endif | ||
36 | stmfd sp!, {r2 - r12, lr} @ save registers on stack | ||
37 | mov r1, r0 | ||
38 | ldr r3, =pxa_cpu_resume @ resume function | ||
39 | bl cpu_suspend | ||
40 | |||
41 | mov r0, #0x06 @ S2D3C4 mode | 30 | mov r0, #0x06 @ S2D3C4 mode |
42 | mcr p14, 0, r0, c7, c0, 0 @ enter sleep | 31 | mcr p14, 0, r0, c7, c0, 0 @ enter sleep |
43 | 32 | ||
@@ -46,28 +35,18 @@ ENTRY(pxa3xx_cpu_suspend) | |||
46 | 35 | ||
47 | #ifdef CONFIG_PXA27x | 36 | #ifdef CONFIG_PXA27x |
48 | /* | 37 | /* |
49 | * pxa27x_cpu_suspend() | 38 | * pxa27x_finish_suspend() |
50 | * | 39 | * |
51 | * Forces CPU into sleep state. | 40 | * Forces CPU into sleep state. |
52 | * | 41 | * |
53 | * r0 = value for PWRMODE M field for desired sleep state | 42 | * r0 = value for PWRMODE M field for desired sleep state |
54 | * r1 = v:p offset | ||
55 | */ | 43 | */ |
56 | ENTRY(pxa27x_cpu_suspend) | 44 | ENTRY(pxa27x_finish_suspend) |
57 | |||
58 | #ifndef CONFIG_IWMMXT | ||
59 | mra r2, r3, acc0 | ||
60 | #endif | ||
61 | stmfd sp!, {r2 - r12, lr} @ save registers on stack | ||
62 | mov r4, r0 @ save sleep mode | ||
63 | ldr r3, =pxa_cpu_resume @ resume function | ||
64 | bl cpu_suspend | ||
65 | |||
66 | @ Put the processor to sleep | 45 | @ Put the processor to sleep |
67 | @ (also workaround for sighting 28071) | 46 | @ (also workaround for sighting 28071) |
68 | 47 | ||
69 | @ prepare value for sleep mode | 48 | @ prepare value for sleep mode |
70 | mov r1, r4 @ sleep mode | 49 | mov r1, r0 @ sleep mode |
71 | 50 | ||
72 | @ prepare pointer to physical address 0 (virtual mapping in generic.c) | 51 | @ prepare pointer to physical address 0 (virtual mapping in generic.c) |
73 | mov r2, #UNCACHED_PHYS_0 | 52 | mov r2, #UNCACHED_PHYS_0 |
@@ -99,21 +78,16 @@ ENTRY(pxa27x_cpu_suspend) | |||
99 | 78 | ||
100 | #ifdef CONFIG_PXA25x | 79 | #ifdef CONFIG_PXA25x |
101 | /* | 80 | /* |
102 | * pxa25x_cpu_suspend() | 81 | * pxa25x_finish_suspend() |
103 | * | 82 | * |
104 | * Forces CPU into sleep state. | 83 | * Forces CPU into sleep state. |
105 | * | 84 | * |
106 | * r0 = value for PWRMODE M field for desired sleep state | 85 | * r0 = value for PWRMODE M field for desired sleep state |
107 | * r1 = v:p offset | ||
108 | */ | 86 | */ |
109 | 87 | ||
110 | ENTRY(pxa25x_cpu_suspend) | 88 | ENTRY(pxa25x_finish_suspend) |
111 | stmfd sp!, {r2 - r12, lr} @ save registers on stack | ||
112 | mov r4, r0 @ save sleep mode | ||
113 | ldr r3, =pxa_cpu_resume @ resume function | ||
114 | bl cpu_suspend | ||
115 | @ prepare value for sleep mode | 89 | @ prepare value for sleep mode |
116 | mov r1, r4 @ sleep mode | 90 | mov r1, r0 @ sleep mode |
117 | 91 | ||
118 | @ prepare pointer to physical address 0 (virtual mapping in generic.c) | 92 | @ prepare pointer to physical address 0 (virtual mapping in generic.c) |
119 | mov r2, #UNCACHED_PHYS_0 | 93 | mov r2, #UNCACHED_PHYS_0 |
@@ -195,16 +169,3 @@ pxa_cpu_do_suspend: | |||
195 | mcr p14, 0, r1, c7, c0, 0 @ PWRMODE | 169 | mcr p14, 0, r1, c7, c0, 0 @ PWRMODE |
196 | 170 | ||
197 | 20: b 20b @ loop waiting for sleep | 171 | 20: b 20b @ loop waiting for sleep |
198 | |||
199 | /* | ||
200 | * pxa_cpu_resume() | ||
201 | * | ||
202 | * entry point from bootloader into kernel during resume | ||
203 | */ | ||
204 | .align 5 | ||
205 | pxa_cpu_resume: | ||
206 | ldmfd sp!, {r2, r3} | ||
207 | #ifndef CONFIG_IWMMXT | ||
208 | mar acc0, r2, r3 | ||
209 | #endif | ||
210 | ldmfd sp!, {r4 - r12, pc} @ return to caller | ||
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 01c576963e94..438c7b5e451f 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
@@ -984,6 +984,7 @@ MACHINE_START(SPITZ, "SHARP Spitz") | |||
984 | .fixup = spitz_fixup, | 984 | .fixup = spitz_fixup, |
985 | .map_io = pxa27x_map_io, | 985 | .map_io = pxa27x_map_io, |
986 | .init_irq = pxa27x_init_irq, | 986 | .init_irq = pxa27x_init_irq, |
987 | .handle_irq = pxa27x_handle_irq, | ||
987 | .init_machine = spitz_init, | 988 | .init_machine = spitz_init, |
988 | .timer = &pxa_timer, | 989 | .timer = &pxa_timer, |
989 | MACHINE_END | 990 | MACHINE_END |
@@ -994,6 +995,7 @@ MACHINE_START(BORZOI, "SHARP Borzoi") | |||
994 | .fixup = spitz_fixup, | 995 | .fixup = spitz_fixup, |
995 | .map_io = pxa27x_map_io, | 996 | .map_io = pxa27x_map_io, |
996 | .init_irq = pxa27x_init_irq, | 997 | .init_irq = pxa27x_init_irq, |
998 | .handle_irq = pxa27x_handle_irq, | ||
997 | .init_machine = spitz_init, | 999 | .init_machine = spitz_init, |
998 | .timer = &pxa_timer, | 1000 | .timer = &pxa_timer, |
999 | MACHINE_END | 1001 | MACHINE_END |
@@ -1004,6 +1006,7 @@ MACHINE_START(AKITA, "SHARP Akita") | |||
1004 | .fixup = spitz_fixup, | 1006 | .fixup = spitz_fixup, |
1005 | .map_io = pxa27x_map_io, | 1007 | .map_io = pxa27x_map_io, |
1006 | .init_irq = pxa27x_init_irq, | 1008 | .init_irq = pxa27x_init_irq, |
1009 | .handle_irq = pxa27x_handle_irq, | ||
1007 | .init_machine = spitz_init, | 1010 | .init_machine = spitz_init, |
1008 | .timer = &pxa_timer, | 1011 | .timer = &pxa_timer, |
1009 | MACHINE_END | 1012 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/stargate2.c b/arch/arm/mach-pxa/stargate2.c index cb5611daf5fe..3f8d0af9e2f7 100644 --- a/arch/arm/mach-pxa/stargate2.c +++ b/arch/arm/mach-pxa/stargate2.c | |||
@@ -1001,6 +1001,7 @@ static void __init stargate2_init(void) | |||
1001 | MACHINE_START(INTELMOTE2, "IMOTE 2") | 1001 | MACHINE_START(INTELMOTE2, "IMOTE 2") |
1002 | .map_io = pxa27x_map_io, | 1002 | .map_io = pxa27x_map_io, |
1003 | .init_irq = pxa27x_init_irq, | 1003 | .init_irq = pxa27x_init_irq, |
1004 | .handle_irq = pxa27x_handle_irq, | ||
1004 | .timer = &pxa_timer, | 1005 | .timer = &pxa_timer, |
1005 | .init_machine = imote2_init, | 1006 | .init_machine = imote2_init, |
1006 | .boot_params = 0xA0000100, | 1007 | .boot_params = 0xA0000100, |
@@ -1012,6 +1013,7 @@ MACHINE_START(STARGATE2, "Stargate 2") | |||
1012 | .map_io = pxa27x_map_io, | 1013 | .map_io = pxa27x_map_io, |
1013 | .nr_irqs = STARGATE_NR_IRQS, | 1014 | .nr_irqs = STARGATE_NR_IRQS, |
1014 | .init_irq = pxa27x_init_irq, | 1015 | .init_irq = pxa27x_init_irq, |
1016 | .handle_irq = pxa27x_handle_irq, | ||
1015 | .timer = &pxa_timer, | 1017 | .timer = &pxa_timer, |
1016 | .init_machine = stargate2_init, | 1018 | .init_machine = stargate2_init, |
1017 | .boot_params = 0xA0000100, | 1019 | .boot_params = 0xA0000100, |
diff --git a/arch/arm/mach-pxa/tavorevb.c b/arch/arm/mach-pxa/tavorevb.c index 53d4a472b699..32fb58e01b10 100644 --- a/arch/arm/mach-pxa/tavorevb.c +++ b/arch/arm/mach-pxa/tavorevb.c | |||
@@ -492,6 +492,7 @@ MACHINE_START(TAVOREVB, "PXA930 Evaluation Board (aka TavorEVB)") | |||
492 | .boot_params = 0xa0000100, | 492 | .boot_params = 0xa0000100, |
493 | .map_io = pxa3xx_map_io, | 493 | .map_io = pxa3xx_map_io, |
494 | .init_irq = pxa3xx_init_irq, | 494 | .init_irq = pxa3xx_init_irq, |
495 | .handle_irq = pxa3xx_handle_irq, | ||
495 | .timer = &pxa_timer, | 496 | .timer = &pxa_timer, |
496 | .init_machine = tavorevb_init, | 497 | .init_machine = tavorevb_init, |
497 | MACHINE_END | 498 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/tavorevb3.c b/arch/arm/mach-pxa/tavorevb3.c index 79f4422f12f4..fd5a8eae0a87 100644 --- a/arch/arm/mach-pxa/tavorevb3.c +++ b/arch/arm/mach-pxa/tavorevb3.c | |||
@@ -129,6 +129,7 @@ MACHINE_START(TAVOREVB3, "PXA950 Evaluation Board (aka TavorEVB3)") | |||
129 | .map_io = pxa3xx_map_io, | 129 | .map_io = pxa3xx_map_io, |
130 | .nr_irqs = TAVOREVB3_NR_IRQS, | 130 | .nr_irqs = TAVOREVB3_NR_IRQS, |
131 | .init_irq = pxa3xx_init_irq, | 131 | .init_irq = pxa3xx_init_irq, |
132 | .handle_irq = pxa3xx_handle_irq, | ||
132 | .timer = &pxa_timer, | 133 | .timer = &pxa_timer, |
133 | .init_machine = evb3_init, | 134 | .init_machine = evb3_init, |
134 | MACHINE_END | 135 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c index 5fa145778e7d..9f69a2682693 100644 --- a/arch/arm/mach-pxa/tosa.c +++ b/arch/arm/mach-pxa/tosa.c | |||
@@ -974,6 +974,7 @@ MACHINE_START(TOSA, "SHARP Tosa") | |||
974 | .map_io = pxa25x_map_io, | 974 | .map_io = pxa25x_map_io, |
975 | .nr_irqs = TOSA_NR_IRQS, | 975 | .nr_irqs = TOSA_NR_IRQS, |
976 | .init_irq = pxa25x_init_irq, | 976 | .init_irq = pxa25x_init_irq, |
977 | .handle_irq = pxa25x_handle_irq, | ||
977 | .init_machine = tosa_init, | 978 | .init_machine = tosa_init, |
978 | .timer = &pxa_timer, | 979 | .timer = &pxa_timer, |
979 | MACHINE_END | 980 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c index 687417a93698..c0417508f39d 100644 --- a/arch/arm/mach-pxa/trizeps4.c +++ b/arch/arm/mach-pxa/trizeps4.c | |||
@@ -558,6 +558,7 @@ MACHINE_START(TRIZEPS4, "Keith und Koep Trizeps IV module") | |||
558 | .init_machine = trizeps4_init, | 558 | .init_machine = trizeps4_init, |
559 | .map_io = trizeps4_map_io, | 559 | .map_io = trizeps4_map_io, |
560 | .init_irq = pxa27x_init_irq, | 560 | .init_irq = pxa27x_init_irq, |
561 | .handle_irq = pxa27x_handle_irq, | ||
561 | .timer = &pxa_timer, | 562 | .timer = &pxa_timer, |
562 | MACHINE_END | 563 | MACHINE_END |
563 | 564 | ||
@@ -567,5 +568,6 @@ MACHINE_START(TRIZEPS4WL, "Keith und Koep Trizeps IV-WL module") | |||
567 | .init_machine = trizeps4_init, | 568 | .init_machine = trizeps4_init, |
568 | .map_io = trizeps4_map_io, | 569 | .map_io = trizeps4_map_io, |
569 | .init_irq = pxa27x_init_irq, | 570 | .init_irq = pxa27x_init_irq, |
571 | .handle_irq = pxa27x_handle_irq, | ||
570 | .timer = &pxa_timer, | 572 | .timer = &pxa_timer, |
571 | MACHINE_END | 573 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c index 903218eab56d..d4a3dc74e84a 100644 --- a/arch/arm/mach-pxa/viper.c +++ b/arch/arm/mach-pxa/viper.c | |||
@@ -995,6 +995,7 @@ MACHINE_START(VIPER, "Arcom/Eurotech VIPER SBC") | |||
995 | .boot_params = 0xa0000100, | 995 | .boot_params = 0xa0000100, |
996 | .map_io = viper_map_io, | 996 | .map_io = viper_map_io, |
997 | .init_irq = viper_init_irq, | 997 | .init_irq = viper_init_irq, |
998 | .handle_irq = pxa25x_handle_irq, | ||
998 | .timer = &pxa_timer, | 999 | .timer = &pxa_timer, |
999 | .init_machine = viper_init, | 1000 | .init_machine = viper_init, |
1000 | MACHINE_END | 1001 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/vpac270.c b/arch/arm/mach-pxa/vpac270.c index 67bd41488bf8..5f8490ab07cb 100644 --- a/arch/arm/mach-pxa/vpac270.c +++ b/arch/arm/mach-pxa/vpac270.c | |||
@@ -719,6 +719,7 @@ MACHINE_START(VPAC270, "Voipac PXA270") | |||
719 | .boot_params = 0xa0000100, | 719 | .boot_params = 0xa0000100, |
720 | .map_io = pxa27x_map_io, | 720 | .map_io = pxa27x_map_io, |
721 | .init_irq = pxa27x_init_irq, | 721 | .init_irq = pxa27x_init_irq, |
722 | .handle_irq = pxa27x_handle_irq, | ||
722 | .timer = &pxa_timer, | 723 | .timer = &pxa_timer, |
723 | .init_machine = vpac270_init | 724 | .init_machine = vpac270_init |
724 | MACHINE_END | 725 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/xcep.c b/arch/arm/mach-pxa/xcep.c index f55f8f2e0db3..acc600f5e72f 100644 --- a/arch/arm/mach-pxa/xcep.c +++ b/arch/arm/mach-pxa/xcep.c | |||
@@ -28,8 +28,7 @@ | |||
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
29 | 29 | ||
30 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
31 | #include <mach/pxa2xx-regs.h> | 31 | #include <mach/pxa25x.h> |
32 | #include <mach/mfp-pxa25x.h> | ||
33 | #include <mach/smemc.h> | 32 | #include <mach/smemc.h> |
34 | 33 | ||
35 | #include "generic.h" | 34 | #include "generic.h" |
@@ -185,6 +184,7 @@ MACHINE_START(XCEP, "Iskratel XCEP") | |||
185 | .init_machine = xcep_init, | 184 | .init_machine = xcep_init, |
186 | .map_io = pxa25x_map_io, | 185 | .map_io = pxa25x_map_io, |
187 | .init_irq = pxa25x_init_irq, | 186 | .init_irq = pxa25x_init_irq, |
187 | .handle_irq = pxa25x_handle_irq, | ||
188 | .timer = &pxa_timer, | 188 | .timer = &pxa_timer, |
189 | MACHINE_END | 189 | MACHINE_END |
190 | 190 | ||
diff --git a/arch/arm/mach-pxa/z2.c b/arch/arm/mach-pxa/z2.c index fbe9e02e2f9f..6c9275a20c91 100644 --- a/arch/arm/mach-pxa/z2.c +++ b/arch/arm/mach-pxa/z2.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <mach/pxafb.h> | 40 | #include <mach/pxafb.h> |
41 | #include <mach/mmc.h> | 41 | #include <mach/mmc.h> |
42 | #include <plat/pxa27x_keypad.h> | 42 | #include <plat/pxa27x_keypad.h> |
43 | #include <mach/pm.h> | ||
43 | 44 | ||
44 | #include "generic.h" | 45 | #include "generic.h" |
45 | #include "devices.h" | 46 | #include "devices.h" |
@@ -677,6 +678,20 @@ static void __init z2_pmic_init(void) | |||
677 | static inline void z2_pmic_init(void) {} | 678 | static inline void z2_pmic_init(void) {} |
678 | #endif | 679 | #endif |
679 | 680 | ||
681 | #ifdef CONFIG_PM | ||
682 | static void z2_power_off(void) | ||
683 | { | ||
684 | /* We're using deep sleep as poweroff, so clear PSPR to ensure that | ||
685 | * bootloader will jump to its entry point in resume handler | ||
686 | */ | ||
687 | PSPR = 0x0; | ||
688 | local_irq_disable(); | ||
689 | pxa27x_cpu_suspend(PWRMODE_DEEPSLEEP, PLAT_PHYS_OFFSET - PAGE_OFFSET); | ||
690 | } | ||
691 | #else | ||
692 | #define z2_power_off NULL | ||
693 | #endif | ||
694 | |||
680 | /****************************************************************************** | 695 | /****************************************************************************** |
681 | * Machine init | 696 | * Machine init |
682 | ******************************************************************************/ | 697 | ******************************************************************************/ |
@@ -698,12 +713,15 @@ static void __init z2_init(void) | |||
698 | z2_leds_init(); | 713 | z2_leds_init(); |
699 | z2_keys_init(); | 714 | z2_keys_init(); |
700 | z2_pmic_init(); | 715 | z2_pmic_init(); |
716 | |||
717 | pm_power_off = z2_power_off; | ||
701 | } | 718 | } |
702 | 719 | ||
703 | MACHINE_START(ZIPIT2, "Zipit Z2") | 720 | MACHINE_START(ZIPIT2, "Zipit Z2") |
704 | .boot_params = 0xa0000100, | 721 | .boot_params = 0xa0000100, |
705 | .map_io = pxa27x_map_io, | 722 | .map_io = pxa27x_map_io, |
706 | .init_irq = pxa27x_init_irq, | 723 | .init_irq = pxa27x_init_irq, |
724 | .handle_irq = pxa27x_handle_irq, | ||
707 | .timer = &pxa_timer, | 725 | .timer = &pxa_timer, |
708 | .init_machine = z2_init, | 726 | .init_machine = z2_init, |
709 | MACHINE_END | 727 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c index 00363c7ac182..99c49bcd9f70 100644 --- a/arch/arm/mach-pxa/zeus.c +++ b/arch/arm/mach-pxa/zeus.c | |||
@@ -31,17 +31,17 @@ | |||
31 | #include <linux/can/platform/mcp251x.h> | 31 | #include <linux/can/platform/mcp251x.h> |
32 | 32 | ||
33 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
34 | #include <asm/suspend.h> | ||
34 | #include <asm/mach/arch.h> | 35 | #include <asm/mach/arch.h> |
35 | #include <asm/mach/map.h> | 36 | #include <asm/mach/map.h> |
36 | 37 | ||
37 | #include <mach/pxa2xx-regs.h> | 38 | #include <mach/pxa27x.h> |
38 | #include <mach/regs-uart.h> | 39 | #include <mach/regs-uart.h> |
39 | #include <mach/ohci.h> | 40 | #include <mach/ohci.h> |
40 | #include <mach/mmc.h> | 41 | #include <mach/mmc.h> |
41 | #include <mach/pxa27x-udc.h> | 42 | #include <mach/pxa27x-udc.h> |
42 | #include <mach/udc.h> | 43 | #include <mach/udc.h> |
43 | #include <mach/pxafb.h> | 44 | #include <mach/pxafb.h> |
44 | #include <mach/mfp-pxa27x.h> | ||
45 | #include <mach/pm.h> | 45 | #include <mach/pm.h> |
46 | #include <mach/audio.h> | 46 | #include <mach/audio.h> |
47 | #include <mach/arcom-pcmcia.h> | 47 | #include <mach/arcom-pcmcia.h> |
@@ -676,7 +676,7 @@ static struct pxa2xx_udc_mach_info zeus_udc_info = { | |||
676 | static void zeus_power_off(void) | 676 | static void zeus_power_off(void) |
677 | { | 677 | { |
678 | local_irq_disable(); | 678 | local_irq_disable(); |
679 | pxa27x_cpu_suspend(PWRMODE_DEEPSLEEP, PLAT_PHYS_OFFSET - PAGE_OFFSET); | 679 | cpu_suspend(PWRMODE_DEEPSLEEP, pxa27x_finish_suspend); |
680 | } | 680 | } |
681 | #else | 681 | #else |
682 | #define zeus_power_off NULL | 682 | #define zeus_power_off NULL |
@@ -908,6 +908,7 @@ MACHINE_START(ARCOM_ZEUS, "Arcom/Eurotech ZEUS") | |||
908 | .map_io = zeus_map_io, | 908 | .map_io = zeus_map_io, |
909 | .nr_irqs = ZEUS_NR_IRQS, | 909 | .nr_irqs = ZEUS_NR_IRQS, |
910 | .init_irq = zeus_init_irq, | 910 | .init_irq = zeus_init_irq, |
911 | .handle_irq = pxa27x_handle_irq, | ||
911 | .timer = &pxa_timer, | 912 | .timer = &pxa_timer, |
912 | .init_machine = zeus_init, | 913 | .init_machine = zeus_init, |
913 | MACHINE_END | 914 | MACHINE_END |
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c index 5821185f77ab..15ec66b3471a 100644 --- a/arch/arm/mach-pxa/zylonite.c +++ b/arch/arm/mach-pxa/zylonite.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | #include <asm/mach-types.h> | 25 | #include <asm/mach-types.h> |
26 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
27 | #include <mach/hardware.h> | 27 | #include <mach/pxa3xx.h> |
28 | #include <mach/audio.h> | 28 | #include <mach/audio.h> |
29 | #include <mach/pxafb.h> | 29 | #include <mach/pxafb.h> |
30 | #include <mach/zylonite.h> | 30 | #include <mach/zylonite.h> |
@@ -426,6 +426,7 @@ MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)") | |||
426 | .map_io = pxa3xx_map_io, | 426 | .map_io = pxa3xx_map_io, |
427 | .nr_irqs = ZYLONITE_NR_IRQS, | 427 | .nr_irqs = ZYLONITE_NR_IRQS, |
428 | .init_irq = pxa3xx_init_irq, | 428 | .init_irq = pxa3xx_init_irq, |
429 | .handle_irq = pxa3xx_handle_irq, | ||
429 | .timer = &pxa_timer, | 430 | .timer = &pxa_timer, |
430 | .init_machine = zylonite_init, | 431 | .init_machine = zylonite_init, |
431 | MACHINE_END | 432 | MACHINE_END |