aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-02-17 12:15:46 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-02-17 12:15:46 -0500
commit4025fa97ff39db054b47b9cdb9f3980480637668 (patch)
tree1be796bfa9b2d7f8b6f9a05034f9cede3eb28e8d
parentc397f8fa4379040bada53256c848e62c8b060392 (diff)
parent11fe05de8b73816b7d12309ae55ca61c531c4e06 (diff)
Merge tag 'fixes-non-critical-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC non-critical fixes from Olof Johansson: "Here's a small collection of fixes accrued during the last release that weren't considered severe enough to merge during the -rc series. A few of these are around resurrecting TI81xx support that's been broken for quite a while, the rest are smaller fixes -- most for PXA but a few across the board. There are also some updates to MAINTAINERS here, in particular for Broadcom platforms" * tag 'fixes-non-critical-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (23 commits) MAINTAINERS: fix git repositories for Broadcom SoCs ARM: pxa: fix broken isa interrupts for zeus and viper ARM: DRA7: hwmod: Fix boot crash with DEBUG_LL enabled on UART3 ARM: OMAP: DRA7: hwmod: Make gpmc software supervised as the smart idle is broken ARM: AM43xx: hwmod: set DSS submodule parent hwmods ARM: OMAP2+: hwmod: print error if wait_target_ready() failed MAINTAINERS: add maintainer for OMAP hwmod data ARM: OMAP2+: Disable omap3 PM init for ti81xx ARM: OMAP2+: Fix reboot for 81xx ARM: OMAP2+: Fix dm814 and dm816 for clocks and timer init ARM: OMAP2+: Fix ti81xx class type ARM: OMAP2+: Fix ti81xx devtype ARM: OMAP2+: Fix error handling for omap2_clk_enable_init_clocks MAINTAINERS: add a git entry for BMIPS-based BCM7xxx SoCs MAINTAINERS: add a git entry for BCM7xxx ARM-based SoCs MAINTAINERS: update Broadcom Cygnus SoC git tree MAINTAINERS: move BCM63xx ARM-based SoCs git tree hx4700: regulator: declare full constraints ARM: pxa: add regulator_has_full_constraints to spitz board file ARM: pxa: add regulator_has_full_constraints to poodle board file ...
-rw-r--r--MAINTAINERS12
-rw-r--r--arch/arm/mach-omap2/Makefile1
-rw-r--r--arch/arm/mach-omap2/clock.c3
-rw-r--r--arch/arm/mach-omap2/common.h11
-rw-r--r--arch/arm/mach-omap2/control.h4
-rw-r--r--arch/arm/mach-omap2/id.c2
-rw-r--r--arch/arm/mach-omap2/io.c26
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c4
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_43xx_data.c2
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_7xx_data.c5
-rw-r--r--arch/arm/mach-omap2/powerdomains3xxx_data.c2
-rw-r--r--arch/arm/mach-omap2/prm_common.c4
-rw-r--r--arch/arm/mach-omap2/soc.h4
-rw-r--r--arch/arm/mach-omap2/ti81xx-restart.c34
-rw-r--r--arch/arm/mach-omap2/timer.c2
-rw-r--r--arch/arm/mach-pxa/Kconfig6
-rw-r--r--arch/arm/mach-pxa/corgi.c3
-rw-r--r--arch/arm/mach-pxa/hx4700.c2
-rw-r--r--arch/arm/mach-pxa/include/mach/irqs.h10
-rw-r--r--arch/arm/mach-pxa/poodle.c2
-rw-r--r--arch/arm/mach-pxa/spitz.c2
21 files changed, 113 insertions, 28 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index e75c21840815..b27178c87444 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2144,7 +2144,7 @@ F: arch/arm/boot/dts/bcm470*
2144BROADCOM BCM63XX ARM ARCHITECTURE 2144BROADCOM BCM63XX ARM ARCHITECTURE
2145M: Florian Fainelli <f.fainelli@gmail.com> 2145M: Florian Fainelli <f.fainelli@gmail.com>
2146L: linux-arm-kernel@lists.infradead.org 2146L: linux-arm-kernel@lists.infradead.org
2147T: git git://git.github.com/brcm/linux.git 2147T: git git://github.com/broadcom/arm-bcm63xx.git
2148S: Maintained 2148S: Maintained
2149F: arch/arm/mach-bcm/bcm63xx.c 2149F: arch/arm/mach-bcm/bcm63xx.c
2150F: arch/arm/include/debug/bcm63xx.S 2150F: arch/arm/include/debug/bcm63xx.S
@@ -2161,6 +2161,7 @@ M: Brian Norris <computersforpeace@gmail.com>
2161M: Gregory Fong <gregory.0xf0@gmail.com> 2161M: Gregory Fong <gregory.0xf0@gmail.com>
2162M: Florian Fainelli <f.fainelli@gmail.com> 2162M: Florian Fainelli <f.fainelli@gmail.com>
2163L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 2163L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
2164T: git git://github.com/broadcom/stblinux.git
2164S: Maintained 2165S: Maintained
2165F: arch/arm/mach-bcm/*brcmstb* 2166F: arch/arm/mach-bcm/*brcmstb*
2166F: arch/arm/boot/dts/bcm7*.dts* 2167F: arch/arm/boot/dts/bcm7*.dts*
@@ -2170,6 +2171,7 @@ BROADCOM BMIPS MIPS ARCHITECTURE
2170M: Kevin Cernekee <cernekee@gmail.com> 2171M: Kevin Cernekee <cernekee@gmail.com>
2171M: Florian Fainelli <f.fainelli@gmail.com> 2172M: Florian Fainelli <f.fainelli@gmail.com>
2172L: linux-mips@linux-mips.org 2173L: linux-mips@linux-mips.org
2174T: git git://github.com/broadcom/stblinux.git
2173S: Maintained 2175S: Maintained
2174F: arch/mips/bmips/* 2176F: arch/mips/bmips/*
2175F: arch/mips/include/asm/mach-bmips/* 2177F: arch/mips/include/asm/mach-bmips/*
@@ -2212,7 +2214,7 @@ M: Ray Jui <rjui@broadcom.com>
2212M: Scott Branden <sbranden@broadcom.com> 2214M: Scott Branden <sbranden@broadcom.com>
2213L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 2215L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
2214L: bcm-kernel-feedback-list@broadcom.com 2216L: bcm-kernel-feedback-list@broadcom.com
2215T: git git://git.github.com/brcm/linux.git 2217T: git git://github.com/broadcom/cygnus-linux.git
2216S: Maintained 2218S: Maintained
2217N: iproc 2219N: iproc
2218N: cygnus 2220N: cygnus
@@ -7044,6 +7046,12 @@ L: linux-omap@vger.kernel.org
7044S: Maintained 7046S: Maintained
7045F: arch/arm/mach-omap2/omap_hwmod.* 7047F: arch/arm/mach-omap2/omap_hwmod.*
7046 7048
7049OMAP HWMOD DATA
7050M: Paul Walmsley <paul@pwsan.com>
7051L: linux-omap@vger.kernel.org
7052S: Maintained
7053F: arch/arm/mach-omap2/omap_hwmod*data*
7054
7047OMAP HWMOD DATA FOR OMAP4-BASED DEVICES 7055OMAP HWMOD DATA FOR OMAP4-BASED DEVICES
7048M: Benoît Cousson <bcousson@baylibre.com> 7056M: Benoît Cousson <bcousson@baylibre.com>
7049L: linux-omap@vger.kernel.org 7057L: linux-omap@vger.kernel.org
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 5d27dfdef66b..3a6463f88ea2 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -58,6 +58,7 @@ AFLAGS_sram34xx.o :=-Wa,-march=armv7-a
58# Restart code (OMAP4/5 currently in omap4-common.c) 58# Restart code (OMAP4/5 currently in omap4-common.c)
59obj-$(CONFIG_SOC_OMAP2420) += omap2-restart.o 59obj-$(CONFIG_SOC_OMAP2420) += omap2-restart.o
60obj-$(CONFIG_SOC_OMAP2430) += omap2-restart.o 60obj-$(CONFIG_SOC_OMAP2430) += omap2-restart.o
61obj-$(CONFIG_SOC_TI81XX) += ti81xx-restart.o
61obj-$(CONFIG_SOC_AM33XX) += am33xx-restart.o 62obj-$(CONFIG_SOC_AM33XX) += am33xx-restart.o
62obj-$(CONFIG_SOC_AM43XX) += omap4-restart.o 63obj-$(CONFIG_SOC_AM43XX) += omap4-restart.o
63obj-$(CONFIG_ARCH_OMAP3) += omap3-restart.o 64obj-$(CONFIG_ARCH_OMAP3) += omap3-restart.o
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
index 6ad5b4dbd33e..4ae4ccebced2 100644
--- a/arch/arm/mach-omap2/clock.c
+++ b/arch/arm/mach-omap2/clock.c
@@ -620,6 +620,9 @@ void omap2_clk_enable_init_clocks(const char **clk_names, u8 num_clocks)
620 620
621 for (i = 0; i < num_clocks; i++) { 621 for (i = 0; i < num_clocks; i++) {
622 init_clk = clk_get(NULL, clk_names[i]); 622 init_clk = clk_get(NULL, clk_names[i]);
623 if (WARN(IS_ERR(init_clk), "could not find init clock %s\n",
624 clk_names[i]))
625 continue;
623 clk_prepare_enable(init_clk); 626 clk_prepare_enable(init_clk);
624 } 627 }
625} 628}
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 3933b8aa4f01..46e24581d624 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -118,7 +118,8 @@ void omap3630_init_early(void);
118void omap3_init_early(void); /* Do not use this one */ 118void omap3_init_early(void); /* Do not use this one */
119void am33xx_init_early(void); 119void am33xx_init_early(void);
120void am35xx_init_early(void); 120void am35xx_init_early(void);
121void ti81xx_init_early(void); 121void ti814x_init_early(void);
122void ti816x_init_early(void);
122void am33xx_init_early(void); 123void am33xx_init_early(void);
123void am43xx_init_early(void); 124void am43xx_init_early(void);
124void am43xx_init_late(void); 125void am43xx_init_late(void);
@@ -171,6 +172,14 @@ static inline void omap3xxx_restart(enum reboot_mode mode, const char *cmd)
171} 172}
172#endif 173#endif
173 174
175#ifdef CONFIG_SOC_TI81XX
176void ti81xx_restart(enum reboot_mode mode, const char *cmd);
177#else
178static inline void ti81xx_restart(enum reboot_mode mode, const char *cmd)
179{
180}
181#endif
182
174#if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \ 183#if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \
175 defined(CONFIG_SOC_DRA7XX) || defined(CONFIG_SOC_AM43XX) 184 defined(CONFIG_SOC_DRA7XX) || defined(CONFIG_SOC_AM43XX)
176void omap44xx_restart(enum reboot_mode mode, const char *cmd); 185void omap44xx_restart(enum reboot_mode mode, const char *cmd);
diff --git a/arch/arm/mach-omap2/control.h b/arch/arm/mach-omap2/control.h
index a80ac2d70bb1..b8a487181210 100644
--- a/arch/arm/mach-omap2/control.h
+++ b/arch/arm/mach-omap2/control.h
@@ -53,6 +53,7 @@
53#define OMAP343X_CONTROL_GENERAL_WKUP 0xa60 53#define OMAP343X_CONTROL_GENERAL_WKUP 0xa60
54 54
55/* TI81XX spefic control submodules */ 55/* TI81XX spefic control submodules */
56#define TI81XX_CONTROL_DEVBOOT 0x040
56#define TI81XX_CONTROL_DEVCONF 0x600 57#define TI81XX_CONTROL_DEVCONF 0x600
57 58
58/* Control register offsets - read/write with omap_ctrl_{read,write}{bwl}() */ 59/* Control register offsets - read/write with omap_ctrl_{read,write}{bwl}() */
@@ -246,6 +247,9 @@
246#define OMAP3_PADCONF_SAD2D_MSTANDBY 0x250 247#define OMAP3_PADCONF_SAD2D_MSTANDBY 0x250
247#define OMAP3_PADCONF_SAD2D_IDLEACK 0x254 248#define OMAP3_PADCONF_SAD2D_IDLEACK 0x254
248 249
250/* TI81XX CONTROL_DEVBOOT register offsets */
251#define TI81XX_CONTROL_STATUS (TI81XX_CONTROL_DEVBOOT + 0x000)
252
249/* TI81XX CONTROL_DEVCONF register offsets */ 253/* TI81XX CONTROL_DEVCONF register offsets */
250#define TI81XX_CONTROL_DEVICE_ID (TI81XX_CONTROL_DEVCONF + 0x000) 254#define TI81XX_CONTROL_DEVICE_ID (TI81XX_CONTROL_DEVCONF + 0x000)
251 255
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index c25feba05818..2a2f4d56e4c8 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -56,6 +56,8 @@ int omap_type(void)
56 56
57 if (cpu_is_omap24xx()) { 57 if (cpu_is_omap24xx()) {
58 val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS); 58 val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS);
59 } else if (cpu_is_ti81xx()) {
60 val = omap_ctrl_readl(TI81XX_CONTROL_STATUS);
59 } else if (soc_is_am33xx() || soc_is_am43xx()) { 61 } else if (soc_is_am33xx() || soc_is_am43xx()) {
60 val = omap_ctrl_readl(AM33XX_CONTROL_STATUS); 62 val = omap_ctrl_readl(AM33XX_CONTROL_STATUS);
61 } else if (cpu_is_omap34xx()) { 63 } else if (cpu_is_omap34xx()) {
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index a1bd6affb508..e4a5630149e1 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -492,9 +492,28 @@ void __init am35xx_init_early(void)
492 omap_clk_soc_init = am35xx_dt_clk_init; 492 omap_clk_soc_init = am35xx_dt_clk_init;
493} 493}
494 494
495void __init ti81xx_init_early(void) 495void __init ti814x_init_early(void)
496{ 496{
497 omap2_set_globals_tap(OMAP343X_CLASS, 497 omap2_set_globals_tap(TI814X_CLASS,
498 OMAP2_L4_IO_ADDRESS(TI81XX_TAP_BASE));
499 omap2_set_globals_control(OMAP2_L4_IO_ADDRESS(TI81XX_CTRL_BASE),
500 NULL);
501 omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(TI81XX_PRCM_BASE));
502 omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(TI81XX_PRCM_BASE), NULL);
503 omap3xxx_check_revision();
504 ti81xx_check_features();
505 omap3xxx_voltagedomains_init();
506 omap3xxx_powerdomains_init();
507 omap3xxx_clockdomains_init();
508 omap3xxx_hwmod_init();
509 omap_hwmod_init_postsetup();
510 if (of_have_populated_dt())
511 omap_clk_soc_init = ti81xx_dt_clk_init;
512}
513
514void __init ti816x_init_early(void)
515{
516 omap2_set_globals_tap(TI816X_CLASS,
498 OMAP2_L4_IO_ADDRESS(TI81XX_TAP_BASE)); 517 OMAP2_L4_IO_ADDRESS(TI81XX_TAP_BASE));
499 omap2_set_globals_control(OMAP2_L4_IO_ADDRESS(TI81XX_CTRL_BASE), 518 omap2_set_globals_control(OMAP2_L4_IO_ADDRESS(TI81XX_CTRL_BASE),
500 NULL); 519 NULL);
@@ -509,8 +528,6 @@ void __init ti81xx_init_early(void)
509 omap_hwmod_init_postsetup(); 528 omap_hwmod_init_postsetup();
510 if (of_have_populated_dt()) 529 if (of_have_populated_dt())
511 omap_clk_soc_init = ti81xx_dt_clk_init; 530 omap_clk_soc_init = ti81xx_dt_clk_init;
512 else
513 omap_clk_soc_init = omap3xxx_clk_init;
514} 531}
515 532
516void __init omap3_init_late(void) 533void __init omap3_init_late(void)
@@ -551,7 +568,6 @@ void __init am35xx_init_late(void)
551void __init ti81xx_init_late(void) 568void __init ti81xx_init_late(void)
552{ 569{
553 omap_common_late_init(); 570 omap_common_late_init();
554 omap3_pm_init();
555 omap2_clk_enable_autoidle_all(); 571 omap2_clk_enable_autoidle_all();
556} 572}
557#endif 573#endif
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 9025ffffd2dc..2af58570cb65 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -2155,8 +2155,8 @@ static int _enable(struct omap_hwmod *oh)
2155 if (soc_ops.disable_module) 2155 if (soc_ops.disable_module)
2156 soc_ops.disable_module(oh); 2156 soc_ops.disable_module(oh);
2157 _disable_clocks(oh); 2157 _disable_clocks(oh);
2158 pr_debug("omap_hwmod: %s: _wait_target_ready: %d\n", 2158 pr_err("omap_hwmod: %s: _wait_target_ready failed: %d\n",
2159 oh->name, r); 2159 oh->name, r);
2160 2160
2161 if (oh->clkdm) 2161 if (oh->clkdm)
2162 clkdm_hwmod_disable(oh->clkdm, oh); 2162 clkdm_hwmod_disable(oh->clkdm, oh);
diff --git a/arch/arm/mach-omap2/omap_hwmod_43xx_data.c b/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
index 5c6c8410160e..8eb85925e444 100644
--- a/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_43xx_data.c
@@ -498,6 +498,7 @@ static struct omap_hwmod am43xx_dss_dispc_hwmod = {
498 }, 498 },
499 }, 499 },
500 .dev_attr = &am43xx_dss_dispc_dev_attr, 500 .dev_attr = &am43xx_dss_dispc_dev_attr,
501 .parent_hwmod = &am43xx_dss_core_hwmod,
501}; 502};
502 503
503/* rfbi */ 504/* rfbi */
@@ -512,6 +513,7 @@ static struct omap_hwmod am43xx_dss_rfbi_hwmod = {
512 .clkctrl_offs = AM43XX_CM_PER_DSS_CLKCTRL_OFFSET, 513 .clkctrl_offs = AM43XX_CM_PER_DSS_CLKCTRL_OFFSET,
513 }, 514 },
514 }, 515 },
516 .parent_hwmod = &am43xx_dss_core_hwmod,
515}; 517};
516 518
517/* Interfaces */ 519/* Interfaces */
diff --git a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
index ffd6604cd546..e8692e7675b8 100644
--- a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
@@ -819,7 +819,8 @@ static struct omap_hwmod dra7xx_gpmc_hwmod = {
819 .name = "gpmc", 819 .name = "gpmc",
820 .class = &dra7xx_gpmc_hwmod_class, 820 .class = &dra7xx_gpmc_hwmod_class,
821 .clkdm_name = "l3main1_clkdm", 821 .clkdm_name = "l3main1_clkdm",
822 .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET, 822 .flags = (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET |
823 HWMOD_SWSUP_SIDLE),
823 .main_clk = "l3_iclk_div", 824 .main_clk = "l3_iclk_div",
824 .prcm = { 825 .prcm = {
825 .omap4 = { 826 .omap4 = {
@@ -2017,7 +2018,7 @@ static struct omap_hwmod dra7xx_uart3_hwmod = {
2017 .class = &dra7xx_uart_hwmod_class, 2018 .class = &dra7xx_uart_hwmod_class,
2018 .clkdm_name = "l4per_clkdm", 2019 .clkdm_name = "l4per_clkdm",
2019 .main_clk = "uart3_gfclk_mux", 2020 .main_clk = "uart3_gfclk_mux",
2020 .flags = HWMOD_SWSUP_SIDLE_ACT, 2021 .flags = HWMOD_SWSUP_SIDLE_ACT | DEBUG_OMAP4UART3_FLAGS,
2021 .prcm = { 2022 .prcm = {
2022 .omap4 = { 2023 .omap4 = {
2023 .clkctrl_offs = DRA7XX_CM_L4PER_UART3_CLKCTRL_OFFSET, 2024 .clkctrl_offs = DRA7XX_CM_L4PER_UART3_CLKCTRL_OFFSET,
diff --git a/arch/arm/mach-omap2/powerdomains3xxx_data.c b/arch/arm/mach-omap2/powerdomains3xxx_data.c
index 328c1037cb60..70bc7066a4c2 100644
--- a/arch/arm/mach-omap2/powerdomains3xxx_data.c
+++ b/arch/arm/mach-omap2/powerdomains3xxx_data.c
@@ -464,7 +464,7 @@ void __init omap3xxx_powerdomains_init(void)
464{ 464{
465 unsigned int rev; 465 unsigned int rev;
466 466
467 if (!cpu_is_omap34xx()) 467 if (!cpu_is_omap34xx() && !cpu_is_ti81xx())
468 return; 468 return;
469 469
470 pwrdm_register_platform_funcs(&omap3_pwrdm_operations); 470 pwrdm_register_platform_funcs(&omap3_pwrdm_operations);
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
index dea2833ca627..264b5e29404d 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -581,6 +581,10 @@ static const struct of_device_id omap_prcm_dt_match_table[] = {
581 { .compatible = "ti,am3-scrm" }, 581 { .compatible = "ti,am3-scrm" },
582 { .compatible = "ti,am4-prcm" }, 582 { .compatible = "ti,am4-prcm" },
583 { .compatible = "ti,am4-scrm" }, 583 { .compatible = "ti,am4-scrm" },
584 { .compatible = "ti,dm814-prcm" },
585 { .compatible = "ti,dm814-scrm" },
586 { .compatible = "ti,dm816-prcm" },
587 { .compatible = "ti,dm816-scrm" },
584 { .compatible = "ti,omap2-prcm" }, 588 { .compatible = "ti,omap2-prcm" },
585 { .compatible = "ti,omap2-scrm" }, 589 { .compatible = "ti,omap2-scrm" },
586 { .compatible = "ti,omap3-prm" }, 590 { .compatible = "ti,omap3-prm" },
diff --git a/arch/arm/mach-omap2/soc.h b/arch/arm/mach-omap2/soc.h
index c1a3b4416311..f97654d11ea5 100644
--- a/arch/arm/mach-omap2/soc.h
+++ b/arch/arm/mach-omap2/soc.h
@@ -423,13 +423,13 @@ IS_OMAP_TYPE(3430, 0x3430)
423#define OMAP3630_REV_ES1_1 (OMAP363X_CLASS | (0x1 << 8)) 423#define OMAP3630_REV_ES1_1 (OMAP363X_CLASS | (0x1 << 8))
424#define OMAP3630_REV_ES1_2 (OMAP363X_CLASS | (0x2 << 8)) 424#define OMAP3630_REV_ES1_2 (OMAP363X_CLASS | (0x2 << 8))
425 425
426#define TI816X_CLASS 0x81600034 426#define TI816X_CLASS 0x81600081
427#define TI8168_REV_ES1_0 TI816X_CLASS 427#define TI8168_REV_ES1_0 TI816X_CLASS
428#define TI8168_REV_ES1_1 (TI816X_CLASS | (0x1 << 8)) 428#define TI8168_REV_ES1_1 (TI816X_CLASS | (0x1 << 8))
429#define TI8168_REV_ES2_0 (TI816X_CLASS | (0x2 << 8)) 429#define TI8168_REV_ES2_0 (TI816X_CLASS | (0x2 << 8))
430#define TI8168_REV_ES2_1 (TI816X_CLASS | (0x3 << 8)) 430#define TI8168_REV_ES2_1 (TI816X_CLASS | (0x3 << 8))
431 431
432#define TI814X_CLASS 0x81400034 432#define TI814X_CLASS 0x81400081
433#define TI8148_REV_ES1_0 TI814X_CLASS 433#define TI8148_REV_ES1_0 TI814X_CLASS
434#define TI8148_REV_ES2_0 (TI814X_CLASS | (0x1 << 8)) 434#define TI8148_REV_ES2_0 (TI814X_CLASS | (0x1 << 8))
435#define TI8148_REV_ES2_1 (TI814X_CLASS | (0x2 << 8)) 435#define TI8148_REV_ES2_1 (TI814X_CLASS | (0x2 << 8))
diff --git a/arch/arm/mach-omap2/ti81xx-restart.c b/arch/arm/mach-omap2/ti81xx-restart.c
new file mode 100644
index 000000000000..6c3ce7c46ddd
--- /dev/null
+++ b/arch/arm/mach-omap2/ti81xx-restart.c
@@ -0,0 +1,34 @@
1/*
2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License version 2 as
4 * published by the Free Software Foundation.
5 */
6#include <linux/kernel.h>
7#include <linux/init.h>
8#include <linux/reboot.h>
9
10#include "iomap.h"
11#include "common.h"
12#include "control.h"
13#include "prm3xxx.h"
14
15#define TI81XX_PRM_DEVICE_RSTCTRL 0x00a0
16#define TI81XX_GLOBAL_RST_COLD BIT(1)
17
18/**
19 * ti81xx_restart - trigger a software restart of the SoC
20 * @mode: the "reboot mode", see arch/arm/kernel/{setup,process}.c
21 * @cmd: passed from the userspace program rebooting the system (if provided)
22 *
23 * Resets the SoC. For @cmd, see the 'reboot' syscall in
24 * kernel/sys.c. No return value.
25 *
26 * NOTE: Warm reset does not seem to work, may require resetting
27 * clocks to bypass mode.
28 */
29void ti81xx_restart(enum reboot_mode mode, const char *cmd)
30{
31 omap2_prm_set_mod_reg_bits(TI81XX_GLOBAL_RST_COLD, 0,
32 TI81XX_PRM_DEVICE_RSTCTRL);
33 while (1);
34}
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index 7d45c84c69ba..cef67af9e9b8 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -147,6 +147,8 @@ static const struct of_device_id omap_timer_match[] __initconst = {
147 { .compatible = "ti,omap3430-timer", }, 147 { .compatible = "ti,omap3430-timer", },
148 { .compatible = "ti,omap4430-timer", }, 148 { .compatible = "ti,omap4430-timer", },
149 { .compatible = "ti,omap5430-timer", }, 149 { .compatible = "ti,omap5430-timer", },
150 { .compatible = "ti,dm814-timer", },
151 { .compatible = "ti,dm816-timer", },
150 { .compatible = "ti,am335x-timer", }, 152 { .compatible = "ti,am335x-timer", },
151 { .compatible = "ti,am335x-timer-1ms", }, 153 { .compatible = "ti,am335x-timer-1ms", },
152 { } 154 { }
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 83efe914bf7d..8896e71586f5 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -6,7 +6,6 @@ comment "Intel/Marvell Dev Platforms (sorted by hardware release time)"
6 6
7config MACH_PXA27X_DT 7config MACH_PXA27X_DT
8 bool "Support PXA27x platforms from device tree" 8 bool "Support PXA27x platforms from device tree"
9 select CPU_PXA27x
10 select POWER_SUPPLY 9 select POWER_SUPPLY
11 select PXA27x 10 select PXA27x
12 select USE_OF 11 select USE_OF
@@ -84,14 +83,12 @@ config ARCH_VIPER
84 select I2C_GPIO if I2C=y 83 select I2C_GPIO if I2C=y
85 select ISA 84 select ISA
86 select PXA25x 85 select PXA25x
87 select PXA_HAVE_ISA_IRQS
88 86
89config MACH_ARCOM_ZEUS 87config MACH_ARCOM_ZEUS
90 bool "Arcom/Eurotech ZEUS SBC" 88 bool "Arcom/Eurotech ZEUS SBC"
91 select ARCOM_PCMCIA 89 select ARCOM_PCMCIA
92 select ISA 90 select ISA
93 select PXA27x 91 select PXA27x
94 select PXA_HAVE_ISA_IRQS
95 92
96config MACH_BALLOON3 93config MACH_BALLOON3
97 bool "Balloon 3 board" 94 bool "Balloon 3 board"
@@ -691,9 +688,6 @@ config SHARPSL_PM_MAX1111
691 select SPI 688 select SPI
692 select SPI_MASTER 689 select SPI_MASTER
693 690
694config PXA_HAVE_ISA_IRQS
695 bool
696
697config PXA310_ULPI 691config PXA310_ULPI
698 bool 692 bool
699 693
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index 06022b235730..89f790dda93e 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -26,6 +26,7 @@
26#include <linux/i2c.h> 26#include <linux/i2c.h>
27#include <linux/i2c/pxa-i2c.h> 27#include <linux/i2c/pxa-i2c.h>
28#include <linux/io.h> 28#include <linux/io.h>
29#include <linux/regulator/machine.h>
29#include <linux/spi/spi.h> 30#include <linux/spi/spi.h>
30#include <linux/spi/ads7846.h> 31#include <linux/spi/ads7846.h>
31#include <linux/spi/corgi_lcd.h> 32#include <linux/spi/corgi_lcd.h>
@@ -752,6 +753,8 @@ static void __init corgi_init(void)
752 sharpsl_nand_partitions[1].size = 53 * 1024 * 1024; 753 sharpsl_nand_partitions[1].size = 53 * 1024 * 1024;
753 754
754 platform_add_devices(devices, ARRAY_SIZE(devices)); 755 platform_add_devices(devices, ARRAY_SIZE(devices));
756
757 regulator_has_full_constraints();
755} 758}
756 759
757static void __init fixup_corgi(struct tag *tags, char **cmdline) 760static void __init fixup_corgi(struct tag *tags, char **cmdline)
diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c
index c66ad4edc5e3..5fb41ad6e3bc 100644
--- a/arch/arm/mach-pxa/hx4700.c
+++ b/arch/arm/mach-pxa/hx4700.c
@@ -893,6 +893,8 @@ static void __init hx4700_init(void)
893 mdelay(10); 893 mdelay(10);
894 gpio_set_value(GPIO71_HX4700_ASIC3_nRESET, 1); 894 gpio_set_value(GPIO71_HX4700_ASIC3_nRESET, 1);
895 mdelay(10); 895 mdelay(10);
896
897 regulator_has_full_constraints();
896} 898}
897 899
898MACHINE_START(H4700, "HP iPAQ HX4700") 900MACHINE_START(H4700, "HP iPAQ HX4700")
diff --git a/arch/arm/mach-pxa/include/mach/irqs.h b/arch/arm/mach-pxa/include/mach/irqs.h
index 48c2fd851686..7e3ea351f3c7 100644
--- a/arch/arm/mach-pxa/include/mach/irqs.h
+++ b/arch/arm/mach-pxa/include/mach/irqs.h
@@ -12,14 +12,10 @@
12#ifndef __ASM_MACH_IRQS_H 12#ifndef __ASM_MACH_IRQS_H
13#define __ASM_MACH_IRQS_H 13#define __ASM_MACH_IRQS_H
14 14
15#ifdef CONFIG_PXA_HAVE_ISA_IRQS 15#include <asm/irq.h>
16#define PXA_ISA_IRQ(x) (x)
17#define PXA_ISA_IRQ_NUM (16)
18#else
19#define PXA_ISA_IRQ_NUM (0)
20#endif
21 16
22#define PXA_IRQ(x) (PXA_ISA_IRQ_NUM + (x)) 17#define PXA_ISA_IRQ(x) (x)
18#define PXA_IRQ(x) (NR_IRQS_LEGACY + (x))
23 19
24#define IRQ_SSP3 PXA_IRQ(0) /* SSP3 service request */ 20#define IRQ_SSP3 PXA_IRQ(0) /* SSP3 service request */
25#define IRQ_MSL PXA_IRQ(1) /* MSL Interface interrupt */ 21#define IRQ_MSL PXA_IRQ(1) /* MSL Interface interrupt */
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index 29019beae591..195b1121c8f1 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -25,6 +25,7 @@
25#include <linux/gpio.h> 25#include <linux/gpio.h>
26#include <linux/i2c.h> 26#include <linux/i2c.h>
27#include <linux/i2c/pxa-i2c.h> 27#include <linux/i2c/pxa-i2c.h>
28#include <linux/regulator/machine.h>
28#include <linux/spi/spi.h> 29#include <linux/spi/spi.h>
29#include <linux/spi/ads7846.h> 30#include <linux/spi/ads7846.h>
30#include <linux/spi/pxa2xx_spi.h> 31#include <linux/spi/pxa2xx_spi.h>
@@ -455,6 +456,7 @@ static void __init poodle_init(void)
455 pxa_set_i2c_info(NULL); 456 pxa_set_i2c_info(NULL);
456 i2c_register_board_info(0, ARRAY_AND_SIZE(poodle_i2c_devices)); 457 i2c_register_board_info(0, ARRAY_AND_SIZE(poodle_i2c_devices));
457 poodle_init_spi(); 458 poodle_init_spi();
459 regulator_has_full_constraints();
458} 460}
459 461
460static void __init fixup_poodle(struct tag *tags, char **cmdline) 462static void __init fixup_poodle(struct tag *tags, char **cmdline)
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index 962a7f31f596..f4e2e2719580 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -979,6 +979,8 @@ static void __init spitz_init(void)
979 spitz_nand_init(); 979 spitz_nand_init();
980 spitz_i2c_init(); 980 spitz_i2c_init();
981 spitz_audio_init(); 981 spitz_audio_init();
982
983 regulator_has_full_constraints();
982} 984}
983 985
984static void __init spitz_fixup(struct tag *tags, char **cmdline) 986static void __init spitz_fixup(struct tag *tags, char **cmdline)