Commit 01d71368 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'arm-soc-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC updates from Arnd Bergmann:
 "Almost all SoC code changes this time are for the TI OMAP platform,
  which continues its decade-long quest to move from describing a
  complex SoC in code to device tree.

  Aside from this, the Uniphier platform has a new maintainer and some
  platforms have minor bugfixes and cleanups that were not urgent enough
  for v5.12"

* tag 'arm-soc-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (96 commits)
  MAINTAINERS: Update ARM/UniPhier SoCs maintainers and status
  mailmap: Update email address for Nicolas Saenz
  MAINTAINERS: Update BCM2711/BCM2335 maintainer's mail
  ARM: exynos: correct kernel doc in platsmp
  ARM: hisi: use the correct HiSilicon copyright
  ARM: ux500: make ux500_cpu_die static
  ARM: s3c: Use pwm_get() in favour of pwm_request() in RX1950
  ARM: OMAP1: fix incorrect kernel-doc comment syntax in file
  ARM: OMAP2+: fix incorrect kernel-doc comment syntax in file
  ARM: OMAP2+: Use DEFINE_SPINLOCK() for spinlock
  ARM: at91: pm: Move prototypes to mutually included header
  ARM: OMAP2+: use true and false for bool variable
  ARM: OMAP2+: add missing call to of_node_put()
  ARM: OMAP2+: Replace DEFINE_SIMPLE_ATTRIBUTE with DEFINE_DEBUGFS_ATTRIBUTE
  ARM: imx: Kconfig: Fix typo in help
  ARM: mach-imx: Fix a spelling in the file pm-imx5.c
  bus: ti-sysc: Warn about old dtb for dra7 and omap4/5
  ARM: OMAP2+: Stop building legacy code for dra7 and omap4/5
  ARM: OMAP2+: Drop legacy platform data for omap5 hwmod
  ARM: OMAP2+: Drop legacy platform data for omap5 l3
  ...
parents ef124412 d92e5e32
...@@ -265,6 +265,8 @@ Nicholas Piggin <npiggin@gmail.com> <piggin@cyberone.com.au> ...@@ -265,6 +265,8 @@ Nicholas Piggin <npiggin@gmail.com> <piggin@cyberone.com.au>
Nicolas Ferre <nicolas.ferre@microchip.com> <nicolas.ferre@atmel.com> Nicolas Ferre <nicolas.ferre@microchip.com> <nicolas.ferre@atmel.com>
Nicolas Pitre <nico@fluxnic.net> <nicolas.pitre@linaro.org> Nicolas Pitre <nico@fluxnic.net> <nicolas.pitre@linaro.org>
Nicolas Pitre <nico@fluxnic.net> <nico@linaro.org> Nicolas Pitre <nico@fluxnic.net> <nico@linaro.org>
Nicolas Saenz Julienne <nsaenz@kernel.org> <nsaenzjulienne@suse.de>
Nicolas Saenz Julienne <nsaenz@kernel.org> <nsaenzjulienne@suse.com>
Oleksij Rempel <linux@rempel-privat.de> <bug-track@fisher-privat.net> Oleksij Rempel <linux@rempel-privat.de> <bug-track@fisher-privat.net>
Oleksij Rempel <linux@rempel-privat.de> <external.Oleksij.Rempel@de.bosch.com> Oleksij Rempel <linux@rempel-privat.de> <external.Oleksij.Rempel@de.bosch.com>
Oleksij Rempel <linux@rempel-privat.de> <fixed-term.Oleksij.Rempel@de.bosch.com> Oleksij Rempel <linux@rempel-privat.de> <fixed-term.Oleksij.Rempel@de.bosch.com>
......
...@@ -2395,7 +2395,7 @@ F: sound/soc/rockchip/ ...@@ -2395,7 +2395,7 @@ F: sound/soc/rockchip/
N: rockchip N: rockchip
ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES ARM/SAMSUNG S3C, S5P AND EXYNOS ARM ARCHITECTURES
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
S: Maintained S: Maintained
...@@ -2651,8 +2651,10 @@ F: drivers/watchdog/visconti_wdt.c ...@@ -2651,8 +2651,10 @@ F: drivers/watchdog/visconti_wdt.c
N: visconti N: visconti
ARM/UNIPHIER ARCHITECTURE ARM/UNIPHIER ARCHITECTURE
M: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
M: Masami Hiramatsu <mhiramat@kernel.org>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Orphan S: Maintained
F: Documentation/devicetree/bindings/arm/socionext/uniphier.yaml F: Documentation/devicetree/bindings/arm/socionext/uniphier.yaml
F: Documentation/devicetree/bindings/gpio/socionext,uniphier-gpio.yaml F: Documentation/devicetree/bindings/gpio/socionext,uniphier-gpio.yaml
F: Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml F: Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml
...@@ -3389,7 +3391,7 @@ F: include/linux/dsa/brcm.h ...@@ -3389,7 +3391,7 @@ F: include/linux/dsa/brcm.h
F: include/linux/platform_data/b53.h F: include/linux/platform_data/b53.h
BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE
M: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> M: Nicolas Saenz Julienne <nsaenz@kernel.org>
L: bcm-kernel-feedback-list@broadcom.com L: bcm-kernel-feedback-list@broadcom.com
L: linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
...@@ -10933,7 +10935,7 @@ F: drivers/regulator/max77802-regulator.c ...@@ -10933,7 +10935,7 @@ F: drivers/regulator/max77802-regulator.c
F: include/dt-bindings/*/*max77802.h F: include/dt-bindings/*/*max77802.h
MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
L: linux-pm@vger.kernel.org L: linux-pm@vger.kernel.org
S: Supported S: Supported
...@@ -10942,7 +10944,7 @@ F: drivers/power/supply/max77693_charger.c ...@@ -10942,7 +10944,7 @@ F: drivers/power/supply/max77693_charger.c
MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS
M: Chanwoo Choi <cw00.choi@samsung.com> M: Chanwoo Choi <cw00.choi@samsung.com>
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Supported S: Supported
...@@ -11593,7 +11595,7 @@ F: include/linux/memblock.h ...@@ -11593,7 +11595,7 @@ F: include/linux/memblock.h
F: mm/memblock.c F: mm/memblock.c
MEMORY CONTROLLER DRIVERS MEMORY CONTROLLER DRIVERS
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl.git
...@@ -12940,7 +12942,7 @@ F: Documentation/devicetree/bindings/regulator/nxp,pf8x00-regulator.yaml ...@@ -12940,7 +12942,7 @@ F: Documentation/devicetree/bindings/regulator/nxp,pf8x00-regulator.yaml
F: drivers/regulator/pf8x00-regulator.c F: drivers/regulator/pf8x00-regulator.c
NXP PTN5150A CC LOGIC AND EXTCON DRIVER NXP PTN5150A CC LOGIC AND EXTCON DRIVER
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/extcon/extcon-ptn5150.yaml F: Documentation/devicetree/bindings/extcon/extcon-ptn5150.yaml
...@@ -14231,7 +14233,7 @@ F: drivers/pinctrl/renesas/ ...@@ -14231,7 +14233,7 @@ F: drivers/pinctrl/renesas/
PIN CONTROLLER - SAMSUNG PIN CONTROLLER - SAMSUNG
M: Tomasz Figa <tomasz.figa@gmail.com> M: Tomasz Figa <tomasz.figa@gmail.com>
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
M: Sylwester Nawrocki <s.nawrocki@samsung.com> M: Sylwester Nawrocki <s.nawrocki@samsung.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
...@@ -15792,7 +15794,7 @@ F: Documentation/admin-guide/LSM/SafeSetID.rst ...@@ -15792,7 +15794,7 @@ F: Documentation/admin-guide/LSM/SafeSetID.rst
F: security/safesetid/ F: security/safesetid/
SAMSUNG AUDIO (ASoC) DRIVERS SAMSUNG AUDIO (ASoC) DRIVERS
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
M: Sylwester Nawrocki <s.nawrocki@samsung.com> M: Sylwester Nawrocki <s.nawrocki@samsung.com>
L: alsa-devel@alsa-project.org (moderated for non-subscribers) L: alsa-devel@alsa-project.org (moderated for non-subscribers)
S: Supported S: Supported
...@@ -15800,7 +15802,7 @@ F: Documentation/devicetree/bindings/sound/samsung* ...@@ -15800,7 +15802,7 @@ F: Documentation/devicetree/bindings/sound/samsung*
F: sound/soc/samsung/ F: sound/soc/samsung/
SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER SAMSUNG EXYNOS PSEUDO RANDOM NUMBER GENERATOR (RNG) DRIVER
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
L: linux-crypto@vger.kernel.org L: linux-crypto@vger.kernel.org
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
S: Maintained S: Maintained
...@@ -15835,7 +15837,7 @@ S: Maintained ...@@ -15835,7 +15837,7 @@ S: Maintained
F: drivers/platform/x86/samsung-laptop.c F: drivers/platform/x86/samsung-laptop.c
SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
...@@ -15860,7 +15862,7 @@ F: drivers/media/platform/s3c-camif/ ...@@ -15860,7 +15862,7 @@ F: drivers/media/platform/s3c-camif/
F: include/media/drv-intf/s3c_camif.h F: include/media/drv-intf/s3c_camif.h
SAMSUNG S3FWRN5 NFC DRIVER SAMSUNG S3FWRN5 NFC DRIVER
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
M: Krzysztof Opasiak <k.opasiak@samsung.com> M: Krzysztof Opasiak <k.opasiak@samsung.com>
L: linux-nfc@lists.01.org (moderated for non-subscribers) L: linux-nfc@lists.01.org (moderated for non-subscribers)
S: Maintained S: Maintained
...@@ -15880,7 +15882,7 @@ S: Supported ...@@ -15880,7 +15882,7 @@ S: Supported
F: drivers/media/i2c/s5k5baf.c F: drivers/media/i2c/s5k5baf.c
SAMSUNG S5P Security SubSystem (SSS) DRIVER SAMSUNG S5P Security SubSystem (SSS) DRIVER
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
M: Vladimir Zapolskiy <vz@mleia.com> M: Vladimir Zapolskiy <vz@mleia.com>
L: linux-crypto@vger.kernel.org L: linux-crypto@vger.kernel.org
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
...@@ -15912,7 +15914,7 @@ F: include/linux/clk/samsung.h ...@@ -15912,7 +15914,7 @@ F: include/linux/clk/samsung.h
F: include/linux/platform_data/clk-s3c2410.h F: include/linux/platform_data/clk-s3c2410.h
SAMSUNG SPI DRIVERS SAMSUNG SPI DRIVERS
M: Krzysztof Kozlowski <krzk@kernel.org> M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
M: Andi Shyti <andi@etezian.org> M: Andi Shyti <andi@etezian.org>
L: linux-spi@vger.kernel.org L: linux-spi@vger.kernel.org
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
......
&l4_cfg { /* 0x4a000000 */ &l4_cfg { /* 0x4a000000 */
compatible = "ti,dra7-l4-cfg", "simple-bus"; compatible = "ti,dra7-l4-cfg", "simple-pm-bus";
power-domains = <&prm_coreaon>;
clocks = <&l4cfg_clkctrl DRA7_L4CFG_L4_CFG_CLKCTRL 0>;
clock-names = "fck";
reg = <0x4a000000 0x800>, reg = <0x4a000000 0x800>,
<0x4a000800 0x800>, <0x4a000800 0x800>,
<0x4a001000 0x1000>; <0x4a001000 0x1000>;
...@@ -11,7 +14,7 @@ &l4_cfg { /* 0x4a000000 */ ...@@ -11,7 +14,7 @@ &l4_cfg { /* 0x4a000000 */
<0x00200000 0x4a200000 0x100000>; /* segment 2 */ <0x00200000 0x4a200000 0x100000>; /* segment 2 */
segment@0 { /* 0x4a000000 */ segment@0 { /* 0x4a000000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
...@@ -493,7 +496,7 @@ hwspinlock: spinlock@0 { ...@@ -493,7 +496,7 @@ hwspinlock: spinlock@0 {
}; };
segment@100000 { /* 0x4a100000 */ segment@100000 { /* 0x4a100000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00002000 0x00102000 0x001000>, /* ap 27 */ ranges = <0x00002000 0x00102000 0x001000>, /* ap 27 */
...@@ -572,11 +575,33 @@ target-module@8000 { /* 0x4a108000, ap 29 1e.0 */ ...@@ -572,11 +575,33 @@ target-module@8000 { /* 0x4a108000, ap 29 1e.0 */
}; };
target-module@40000 { /* 0x4a140000, ap 31 06.0 */ target-module@40000 { /* 0x4a140000, ap 31 06.0 */
compatible = "ti,sysc"; compatible = "ti,sysc-omap4", "ti,sysc";
status = "disabled"; reg = <0x400fc 4>,
#address-cells = <1>; <0x41100 4>;
reg-names = "rev", "sysc";
ti,sysc-midle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>,
<SYSC_IDLE_SMART_WKUP>;
power-domains = <&prm_l3init>;
clocks = <&l3init_clkctrl DRA7_L3INIT_SATA_CLKCTRL 0>;
clock-names = "fck";
#size-cells = <1>; #size-cells = <1>;
#address-cells = <1>;
ranges = <0x0 0x40000 0x10000>; ranges = <0x0 0x40000 0x10000>;
sata: sata@0 {
compatible = "snps,dwc-ahci";
reg = <0 0x1100>, <0x1100 0x8>;
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
phys = <&sata_phy>;
phy-names = "sata-phy";
clocks = <&l3init_clkctrl DRA7_L3INIT_SATA_CLKCTRL 8>;
ports-implemented = <0x1>;
};
}; };
target-module@51000 { /* 0x4a151000, ap 33 50.0 */ target-module@51000 { /* 0x4a151000, ap 33 50.0 */
...@@ -789,7 +814,7 @@ target-module@87000 { /* 0x4a187000, ap 75 74.0 */ ...@@ -789,7 +814,7 @@ target-module@87000 { /* 0x4a187000, ap 75 74.0 */
}; };
segment@200000 { /* 0x4a200000 */ segment@200000 { /* 0x4a200000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00018000 0x00218000 0x001000>, /* ap 43 */ ranges = <0x00018000 0x00218000 0x001000>, /* ap 43 */
...@@ -1006,7 +1031,10 @@ target-module@36000 { /* 0x4a236000, ap 119 62.0 */ ...@@ -1006,7 +1031,10 @@ target-module@36000 { /* 0x4a236000, ap 119 62.0 */
}; };
&l4_per1 { /* 0x48000000 */ &l4_per1 { /* 0x48000000 */
compatible = "ti,dra7-l4-per1", "simple-bus"; compatible = "ti,dra7-l4-per1", "simple-pm-bus";
power-domains = <&prm_l4per>;
clocks = <&l4per_clkctrl DRA7_L4PER_L4_PER1_CLKCTRL 0>;
clock-names = "fck";
reg = <0x48000000 0x800>, reg = <0x48000000 0x800>,
<0x48000800 0x800>, <0x48000800 0x800>,
<0x48001000 0x400>, <0x48001000 0x400>,
...@@ -1020,7 +1048,7 @@ &l4_per1 { /* 0x48000000 */ ...@@ -1020,7 +1048,7 @@ &l4_per1 { /* 0x48000000 */
<0x00200000 0x48200000 0x200000>; /* segment 1 */ <0x00200000 0x48200000 0x200000>; /* segment 1 */
segment@0 { /* 0x48000000 */ segment@0 { /* 0x48000000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
...@@ -2269,14 +2297,17 @@ target-module@d5000 { /* 0x480d5000, ap 73 30.0 */ ...@@ -2269,14 +2297,17 @@ target-module@d5000 { /* 0x480d5000, ap 73 30.0 */
}; };
segment@200000 { /* 0x48200000 */ segment@200000 { /* 0x48200000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
}; };
}; };
&l4_per2 { /* 0x48400000 */ &l4_per2 { /* 0x48400000 */
compatible = "ti,dra7-l4-per2", "simple-bus"; compatible = "ti,dra7-l4-per2", "simple-pm-bus";
power-domains = <&prm_l4per>;
clocks = <&l4per2_clkctrl DRA7_L4PER2_L4_PER2_CLKCTRL 0>;
clock-names = "fck";
reg = <0x48400000 0x800>, reg = <0x48400000 0x800>,
<0x48400800 0x800>, <0x48400800 0x800>,
<0x48401000 0x400>, <0x48401000 0x400>,
...@@ -2296,7 +2327,7 @@ &l4_per2 { /* 0x48400000 */ ...@@ -2296,7 +2327,7 @@ &l4_per2 { /* 0x48400000 */
<0x48454000 0x48454000 0x400000>; /* L3 data port */ <0x48454000 0x48454000 0x400000>; /* L3 data port */
segment@0 { /* 0x48400000 */ segment@0 { /* 0x48400000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
...@@ -3094,7 +3125,10 @@ cpts { ...@@ -3094,7 +3125,10 @@ cpts {
}; };
&l4_per3 { /* 0x48800000 */ &l4_per3 { /* 0x48800000 */
compatible = "ti,dra7-l4-per3", "simple-bus"; compatible = "ti,dra7-l4-per3", "simple-pm-bus";
power-domains = <&prm_l4per>;
clocks = <&l4per3_clkctrl DRA7_L4PER3_L4_PER3_CLKCTRL 0>;
clock-names = "fck";
reg = <0x48800000 0x800>, reg = <0x48800000 0x800>,
<0x48800800 0x800>, <0x48800800 0x800>,
<0x48801000 0x400>, <0x48801000 0x400>,
...@@ -3106,7 +3140,7 @@ &l4_per3 { /* 0x48800000 */ ...@@ -3106,7 +3140,7 @@ &l4_per3 { /* 0x48800000 */
ranges = <0x00000000 0x48800000 0x200000>; /* segment 0 */ ranges = <0x00000000 0x48800000 0x200000>; /* segment 0 */
segment@0 { /* 0x48800000 */ segment@0 { /* 0x48800000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
...@@ -4205,7 +4239,10 @@ vpe: vpe@0 { ...@@ -4205,7 +4239,10 @@ vpe: vpe@0 {
}; };
&l4_wkup { /* 0x4ae00000 */ &l4_wkup { /* 0x4ae00000 */
compatible = "ti,dra7-l4-wkup", "simple-bus"; compatible = "ti,dra7-l4-wkup", "simple-pm-bus";
power-domains = <&prm_wkupaon>;
clocks = <&wkupaon_clkctrl DRA7_WKUPAON_L4_WKUP_CLKCTRL 0>;
clock-names = "fck";
reg = <0x4ae00000 0x800>, reg = <0x4ae00000 0x800>,
<0x4ae00800 0x800>, <0x4ae00800 0x800>,
<0x4ae01000 0x1000>; <0x4ae01000 0x1000>;
...@@ -4218,7 +4255,7 @@ &l4_wkup { /* 0x4ae00000 */ ...@@ -4218,7 +4255,7 @@ &l4_wkup { /* 0x4ae00000 */
<0x00030000 0x4ae30000 0x010000>; /* segment 3 */ <0x00030000 0x4ae30000 0x010000>; /* segment 3 */
segment@0 { /* 0x4ae00000 */ segment@0 { /* 0x4ae00000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
...@@ -4295,7 +4332,7 @@ scm_wkup: scm_conf@0 { ...@@ -4295,7 +4332,7 @@ scm_wkup: scm_conf@0 {
}; };
segment@10000 { /* 0x4ae10000 */ segment@10000 { /* 0x4ae10000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00010000 0x001000>, /* ap 5 */ ranges = <0x00000000 0x00010000 0x001000>, /* ap 5 */
...@@ -4405,7 +4442,7 @@ target-module@c000 { /* 0x4ae1c000, ap 11 38.0 */ ...@@ -4405,7 +4442,7 @@ target-module@c000 { /* 0x4ae1c000, ap 11 38.0 */
}; };
segment@20000 { /* 0x4ae20000 */ segment@20000 { /* 0x4ae20000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00006000 0x00026000 0x001000>, /* ap 13 */ ranges = <0x00006000 0x00026000 0x001000>, /* ap 13 */
...@@ -4511,7 +4548,7 @@ target-module@f000 { /* 0x4ae2f000, ap 32 58.0 */ ...@@ -4511,7 +4548,7 @@ target-module@f000 { /* 0x4ae2f000, ap 32 58.0 */
}; };
segment@30000 { /* 0x4ae30000 */ segment@30000 { /* 0x4ae30000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x0000c000 0x0003c000 0x002000>, /* ap 30 */ ranges = <0x0000c000 0x0003c000 0x002000>, /* ap 30 */
......
...@@ -125,18 +125,6 @@ opp_high@1500000000 { ...@@ -125,18 +125,6 @@ opp_high@1500000000 {
}; };
}; };
/*
* The soc node represents the soc top level view. It is used for IPs
* that are not memory mapped in the MPU view or for the MPU itself.
*/
soc {
compatible = "ti,omap-infra";
mpu {
compatible = "ti,omap5-mpu";
ti,hwmods = "mpu";
};
};
/* /*
* XXX: Use a flat representation of the SOC interconnect. * XXX: Use a flat representation of the SOC interconnect.
* The real OMAP interconnect network is quite complex. * The real OMAP interconnect network is quite complex.
...@@ -145,16 +133,22 @@ mpu { ...@@ -145,16 +133,22 @@ mpu {
* hierarchy. * hierarchy.
*/ */
ocp: ocp { ocp: ocp {
compatible = "ti,dra7-l3-noc", "simple-bus"; compatible = "simple-pm-bus";
power-domains = <&prm_core>;
clocks = <&l3main1_clkctrl DRA7_L3MAIN1_L3_MAIN_1_CLKCTRL 0>,
<&l3instr_clkctrl DRA7_L3INSTR_L3_MAIN_2_CLKCTRL 0>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x0 0x0 0x0 0xc0000000>; ranges = <0x0 0x0 0x0 0xc0000000>;
dma-ranges = <0x80000000 0x0 0x80000000 0x80000000>; dma-ranges = <0x80000000 0x0 0x80000000 0x80000000>;
ti,hwmods = "l3_main_1", "l3_main_2";
reg = <0x0 0x44000000 0x0 0x1000000>, l3-noc@44000000 {
<0x0 0x45000000 0x0 0x1000>; compatible = "ti,dra7-l3-noc";
reg = <0x44000000 0x1000>,
<0x45000000 0x1000>;
interrupts-extended = <&crossbar_mpu GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, interrupts-extended = <&crossbar_mpu GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
<&wakeupgen GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; <&wakeupgen GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
};
l4_cfg: interconnect@4a000000 { l4_cfg: interconnect@4a000000 {
}; };
...@@ -162,36 +156,65 @@ l4_wkup: interconnect@4ae00000 { ...@@ -162,36 +156,65 @@ l4_wkup: interconnect@4ae00000 {
}; };
l4_per1: interconnect@48000000 { l4_per1: interconnect@48000000 {
}; };
target-module@48210000 {
compatible = "ti,sysc-omap4-simple", "ti,sysc";
power-domains = <&prm_mpu>;
clocks = <&mpu_clkctrl DRA7_MPU_CLKCTRL 0>;
clock-names = "fck";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x48210000 0x1f0000>;
mpu {
compatible = "ti,omap5-mpu";
};
};
l4_per2: interconnect@48400000 { l4_per2: interconnect@48400000 {
}; };
l4_per3: interconnect@48800000 { l4_per3: interconnect@48800000 {
}; };
axi@0 { /*
compatible = "simple-bus"; * Register access seems to have complex dependencies and also
* seems to need an enabled phy. See the TRM chapter for "Table
* 26-678. Main Sequence PCIe Controller Global Initialization"
* and also dra7xx_pcie_probe().
*/
axi0: target-module@51000000 {
compatible = "ti,sysc-omap4", "ti,sysc";
power-domains = <&prm_l3init>;
resets = <&prm_l3init 0>;
reset-names = "rstctrl";
clocks = <&pcie_clkctrl DRA7_PCIE_PCIE1_CLKCTRL 0>,
<&pcie_clkctrl DRA7_PCIE_PCIE1_CLKCTRL 9>,
<&pcie_clkctrl DRA7_PCIE_PCIE1_CLKCTRL 10>;
clock-names = "fck", "phy-clk", "phy-clk-div";
#size-cells = <1>; #size-cells = <1>;
#address-cells = <1>; #address-cells = <1>;
ranges = <0x51000000 0x51000000 0x3000 ranges = <0x51000000 0x51000000 0x3000>,
0x0 0x20000000 0x10000000>; <0x20000000 0x20000000 0x10000000>;
dma-ranges; dma-ranges;
/** /**
* To enable PCI endpoint mode, disable the pcie1_rc * To enable PCI endpoint mode, disable the pcie1_rc
* node and enable pcie1_ep mode. * node and enable pcie1_ep mode.
*/ */
pcie1_rc: pcie@51000000 { pcie1_rc: pcie@51000000 {
reg = <0x51000000 0x2000>, <0x51002000 0x14c>, <0x1000 0x2000>; reg = <0x51000000 0x2000>,
<0x51002000 0x14c>,
<0x20001000 0x2000>;
reg-names = "rc_dbics", "ti_conf", "config"; reg-names = "rc_dbics", "ti_conf", "config";
interrupts = <0 232 0x4>, <0 233 0x4>; interrupts = <0 232 0x4>, <0 233 0x4>;
#address-cells = <3>; #address-cells = <3>;
#size-cells = <2>; #size-cells = <2>;
device_type = "pci"; device_type = "pci";
ranges = <0x81000000 0 0 0x03000 0 0x00010000 ranges = <0x81000000 0 0x00000000 0x20003000 0 0x00010000>,
0x82000000 0 0x20013000 0x13000 0 0xffed000>; <0x82000000 0 0x20013000 0x20013000 0 0x0ffed000>;
bus-range = <0x00 0xff>; bus-range = <0x00 0xff>;
#interrupt-cells = <1>; #interrupt-cells = <1>;
num-lanes = <1>; num-lanes = <1>;
linux,pci-domain = <0>; linux,pci-domain = <0>;
ti,hwmods = "pcie1";
phys = <&pcie1_phy>; phys = <&pcie1_phy>;
phy-names = "pcie-phy0"; phy-names = "pcie-phy0";
ti,syscon-lane-sel = <&scm_conf_pcie 0x18>; ti,syscon-lane-sel = <&scm_conf_pcie 0x18>;
...@@ -210,13 +233,15 @@ pcie1_intc: interrupt-controller { ...@@ -210,13 +233,15 @@ pcie1_intc: interrupt-controller {
}; };
pcie1_ep: pcie_ep@51000000 { pcie1_ep: pcie_ep@51000000 {
reg = <0x51000000 0x28>, <0x51002000 0x14c>, <0x51001000 0x28>, <0x1000 0x10000000>; reg = <0x51000000 0x28>,
<0x51002000 0x14c>,
<0x51001000 0x28>,
<0x20001000 0x10000000>;
reg-names = "ep_dbics", "ti_conf", "ep_dbics2", "addr_space"; reg-names = "ep_dbics", "ti_conf", "ep_dbics2", "addr_space";
interrupts = <0 232 0x4>; interrupts = <0 232 0x4>;
num-lanes = <1>; num-lanes = <1>;
num-ib-windows = <4>; num-ib-windows = <4>;
num-ob-windows = <16>; num-ob-windows = <16>;
ti,hwmods = "pcie1";
phys = <&pcie1_phy>; phys = <&pcie1_phy>;
phy-names = "pcie-phy0"; phy-names = "pcie-phy0";
ti,syscon-unaligned-access = <&scm_conf1 0x14 1>; ti,syscon-unaligned-access = <&scm_conf1 0x14 1>;
...@@ -225,28 +250,42 @@ pcie1_ep: pcie_ep@51000000 { ...@@ -225,28 +250,42 @@ pcie1_ep: pcie_ep@51000000 {
}; };
}; };
axi@1 { /*
compatible = "simple-bus"; * Register access seems to have complex dependencies and also
* seems to need an enabled phy. See the TRM chapter for "Table
* 26-678. Main Sequence PCIe Controller Global Initialization"
* and also dra7xx_pcie_probe().
*/
axi1: target-module@51800000 {
compatible = "ti,sysc-omap4", "ti,sysc";
clocks = <&pcie_clkctrl DRA7_PCIE_PCIE2_CLKCTRL 0>,
<&pcie_clkctrl DRA7_PCIE_PCIE2_CLKCTRL 9>,
<&pcie_clkctrl DRA7_PCIE_PCIE2_CLKCTRL 10>;
clock-names = "fck", "phy-clk", "phy-clk-div";
power-domains = <&prm_l3init>;
resets = <&prm_l3init 1>;
reset-names = "rstctrl";
#size-cells = <1>; #size-cells = <1>;
#address-cells = <1>; #address-cells = <1>;
ranges = <0x51800000 0x51800000 0x3000 ranges = <0x51800000 0x51800000 0x3000>,
0x0 0x30000000 0x10000000>; <0x30000000 0x30000000 0x10000000>;
dma-ranges; dma-ranges;
status = "disabled"; status = "disabled";
pcie2_rc: pcie@51800000 { pcie2_rc: pcie@51800000 {
reg = <0x51800000 0x2000>, <0x51802000 0x14c>, <0x1000 0x2000>; reg = <0x51800000 0x2000>,
<0x51802000 0x14c>,
<0x30001000 0x2000>;
reg-names = "rc_dbics", "ti_conf", "config"; reg-names = "rc_dbics", "ti_conf", "config";
interrupts = <0 355 0x4>, <0 356 0x4>; interrupts = <0 355 0x4>, <0 356 0x4>;
#address-cells = <3>; #address-cells = <3>;
#size-cells = <2>; #size-cells = <2>;
device_type = "pci"; device_type = "pci";
ranges = <0x81000000 0 0 0x03000 0 0x00010000 ranges = <0x81000000 0 0x00000000 0x30003000 0 0x00010000>,
0x82000000 0 0x30013000 0x13000 0 0xffed000>; <0x82000000 0 0x30013000 0x30013000 0 0x0ffed000>;
bus-range = <0x00 0xff>; bus-range = <0x00 0xff>;
#interrupt-cells = <1>; #interrupt-cells = <1>;
num-lanes = <1>; num-lanes = <1>;
linux,pci-domain = <1>; linux,pci-domain = <1>;
ti,hwmods = "pcie2";
phys = <&pcie2_phy>; phys = <&pcie2_phy>;
phy-names = "pcie-phy0"; phy-names = "pcie-phy0";
interrupt-map-mask = <0 0 0 7>; interrupt-map-mask = <0 0 0 7>;
...@@ -337,8 +376,15 @@ dra7_iodelay_core: padconf@4844a000 { ...@@ -337,8 +376,15 @@ dra7_iodelay_core: padconf@4844a000 {
target-module@43300000 { target-module@43300000 {
compatible = "ti,sysc-omap4", "ti,sysc"; compatible = "ti,sysc-omap4", "ti,sysc";
reg = <0x43300000 0x4>; reg = <0x43300000 0x4>,
reg-names = "rev"; <0x43300010 0x4>;
reg-names = "rev", "sysc";
ti,sysc-midle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
clocks = <&l3main1_clkctrl DRA7_L3MAIN1_TPCC_CLKCTRL 0>; clocks = <&l3main1_clkctrl DRA7_L3MAIN1_TPCC_CLKCTRL 0>;
clock-names = "fck"; clock-names = "fck";
#address-cells = <1>; #address-cells = <1>;
...@@ -370,8 +416,15 @@ edma: dma@0 { ...@@ -370,8 +416,15 @@ edma: dma@0 {
target-module@43400000 { target-module@43400000 {
compatible = "ti,sysc-omap4", "ti,sysc"; compatible = "ti,sysc-omap4", "ti,sysc";
reg = <0x43400000 0x4>; reg = <0x43400000 0x4>,
reg-names = "rev"; <0x43400010 0x4>;
reg-names = "rev", "sysc";
ti,sysc-midle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
clocks = <&l3main1_clkctrl DRA7_L3MAIN1_TPTC0_CLKCTRL 0>; clocks = <&l3main1_clkctrl DRA7_L3MAIN1_TPTC0_CLKCTRL 0>;
clock-names = "fck"; clock-names = "fck";
#address-cells = <1>; #address-cells = <1>;
...@@ -388,8 +441,15 @@ edma_tptc0: dma@0 { ...@@ -388,8 +441,15 @@ edma_tptc0: dma@0 {
target-module@43500000 { target-module@43500000 {
compatible = "ti,sysc-omap4", "ti,sysc"; compatible = "ti,sysc-omap4", "ti,sysc";
reg = <0x43500000 0x4>; reg = <0x43500000 0x4>,
reg-names = "rev"; <0x43500010 0x4>;
reg-names = "rev", "sysc";
ti,sysc-midle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
clocks = <&l3main1_clkctrl DRA7_L3MAIN1_TPTC1_CLKCTRL 0>; clocks = <&l3main1_clkctrl DRA7_L3MAIN1_TPTC1_CLKCTRL 0>;
clock-names = "fck"; clock-names = "fck";
#address-cells = <1>; #address-cells = <1>;
...@@ -404,11 +464,23 @@ edma_tptc1: dma@0 { ...@@ -404,11 +464,23 @@ edma_tptc1: dma@0 {
}; };
}; };
dmm@4e000000 { target-module@4e000000 {
compatible = "ti,sysc-omap2", "ti,sysc";
reg = <0x4e000000 0x4>,
<0x4e000010 0x4>;
reg-names = "rev", "sysc";
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ranges = <0x0 0x4e000000 0x2000000>;
#size-cells = <1>;
#address-cells = <1>;
dmm@0 {
compatible = "ti,omap5-dmm"; compatible = "ti,omap5-dmm";
reg = <0x4e000000 0x800>; reg = <0 0x800>;
interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "dmm"; };
}; };
ipu1: ipu@58820000 { ipu1: ipu@58820000 {
...@@ -695,32 +767,36 @@ abb_gpu: regulator-abb-gpu { ...@@ -695,32 +767,36 @@ abb_gpu: regulator-abb-gpu {
>; >;
}; };
qspi: spi@4b300000 { target-module@4b300000 {
compatible = "ti,sysc-omap4", "ti,sysc";
reg = <0x4b300000 0x4>,
<0x4b300010 0x4>;
reg-names = "rev", "sysc";
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>,
<SYSC_IDLE_SMART_WKUP>;
clocks = <&l4per2_clkctrl DRA7_L4PER2_QSPI_CLKCTRL 0>;
clock-names = "fck";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x4b300000 0x1000>,
<0x5c000000 0x5c000000 0x4000000>;
qspi: spi@0 {
compatible = "ti,dra7xxx-qspi"; compatible = "ti,dra7xxx-qspi";
reg = <0x4b300000 0x100>, reg = <0 0x100>,
<0x5c000000 0x4000000>; <0x5c000000 0x4000000>;
reg-names = "qspi_base", "qspi_mmap"; reg-names = "qspi_base", "qspi_mmap";
syscon-chipselects = <&scm_conf 0x558>; syscon-chipselects = <&scm_conf 0x558>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
ti,hwmods = "qspi";
clocks = <&l4per2_clkctrl DRA7_L4PER2_QSPI_CLKCTRL 25>; clocks = <&l4per2_clkctrl DRA7_L4PER2_QSPI_CLKCTRL 25>;
clock-names = "fck"; clock-names = "fck";
num-cs = <4>; num-cs = <4>;
interrupts = <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled"; status = "disabled";
}; };
/* OCP2SCP3 */
sata: sata@4a141100 {
compatible = "snps,dwc-ahci";
reg = <0x4a140000 0x1100>, <0x4a141100 0x7>;
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
phys = <&sata_phy>;
phy-names = "sata-phy";
clocks = <&l3init_clkctrl DRA7_L3INIT_SATA_CLKCTRL 8>;
ti,hwmods = "sata";
ports-implemented = <0x1>;
}; };
/* OCP2SCP1 */ /* OCP2SCP1 */
......
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
&l4_cfg { /* 0x4a000000 */ &l4_cfg { /* 0x4a000000 */
compatible = "ti,omap4-l4-cfg", "simple-bus"; compatible = "ti,omap4-l4-cfg", "simple-pm-bus";
power-domains = <&prm_core>;
clocks = <&l4_cfg_clkctrl OMAP4_L4_CFG_CLKCTRL 0>;
clock-names = "fck";
reg = <0x4a000000 0x800>, reg = <0x4a000000 0x800>,
<0x4a000800 0x800>, <0x4a000800 0x800>,
<0x4a001000 0x1000>; <0x4a001000 0x1000>;
...@@ -16,7 +19,7 @@ &l4_cfg { /* 0x4a000000 */ ...@@ -16,7 +19,7 @@ &l4_cfg { /* 0x4a000000 */
<0x00300000 0x4a300000 0x080000>; /* segment 6 */ <0x00300000 0x4a300000 0x080000>; /* segment 6 */
segment@0 { /* 0x4a000000 */ segment@0 { /* 0x4a000000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
...@@ -43,7 +46,6 @@ segment@0 { /* 0x4a000000 */ ...@@ -43,7 +46,6 @@ segment@0 { /* 0x4a000000 */
target-module@2000 { /* 0x4a002000, ap 3 06.0 */ target-module@2000 { /* 0x4a002000, ap 3 06.0 */
compatible = "ti,sysc-omap4", "ti,sysc"; compatible = "ti,sysc-omap4", "ti,sysc";
ti,hwmods = "ctrl_module_core";
reg = <0x2000 0x4>, reg = <0x2000 0x4>,
<0x2010 0x4>; <0x2010 0x4>;
reg-names = "rev", "sysc"; reg-names = "rev", "sysc";
...@@ -347,7 +349,7 @@ mmu_dsp: mmu@0 { ...@@ -347,7 +349,7 @@ mmu_dsp: mmu@0 {
}; };
segment@80000 { /* 0x4a080000 */ segment@80000 { /* 0x4a080000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00059000 0x000d9000 0x001000>, /* ap 13 */ ranges = <0x00059000 0x000d9000 0x001000>, /* ap 13 */
...@@ -639,7 +641,7 @@ hwspinlock: spinlock@0 { ...@@ -639,7 +641,7 @@ hwspinlock: spinlock@0 {
}; };
segment@100000 { /* 0x4a100000 */ segment@100000 { /* 0x4a100000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00100000 0x001000>, /* ap 21 */ ranges = <0x00000000 0x00100000 0x001000>, /* ap 21 */
...@@ -653,7 +655,6 @@ segment@100000 { /* 0x4a100000 */ ...@@ -653,7 +655,6 @@ segment@100000 { /* 0x4a100000 */
target-module@0 { /* 0x4a100000, ap 21 2a.0 */ target-module@0 { /* 0x4a100000, ap 21 2a.0 */
compatible = "ti,sysc-omap4", "ti,sysc"; compatible = "ti,sysc-omap4", "ti,sysc";
ti,hwmods = "ctrl_module_pad_core";
reg = <0x0 0x4>, reg = <0x0 0x4>,
<0x10 0x4>; <0x10 0x4>;
reg-names = "rev", "sysc"; reg-names = "rev", "sysc";
...@@ -741,13 +742,13 @@ target-module@a000 { /* 0x4a10a000, ap 65 50.0 */ ...@@ -741,13 +742,13 @@ target-module@a000 { /* 0x4a10a000, ap 65 50.0 */
}; };
segment@180000 { /* 0x4a180000 */ segment@180000 { /* 0x4a180000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
}; };
segment@200000 { /* 0x4a200000 */ segment@200000 { /* 0x4a200000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x0001e000 0x0021e000 0x001000>, /* ap 31 */ ranges = <0x0001e000 0x0021e000 0x001000>, /* ap 31 */
...@@ -903,13 +904,13 @@ target-module@2a000 { /* 0x4a22a000, ap 57 48.0 */ ...@@ -903,13 +904,13 @@ target-module@2a000 { /* 0x4a22a000, ap 57 48.0 */
}; };
segment@280000 { /* 0x4a280000 */ segment@280000 { /* 0x4a280000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
}; };
l4_cfg_segment_300000: segment@300000 { /* 0x4a300000 */ l4_cfg_segment_300000: segment@300000 { /* 0x4a300000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00300000 0x020000>, /* ap 67 */ ranges = <0x00000000 0x00300000 0x020000>, /* ap 67 */
...@@ -944,7 +945,10 @@ l4_cfg_target_0: target-module@0 { /* 0x4a300000, ap 67 14.0 */ ...@@ -944,7 +945,10 @@ l4_cfg_target_0: target-module@0 { /* 0x4a300000, ap 67 14.0 */
}; };
&l4_wkup { /* 0x4a300000 */ &l4_wkup { /* 0x4a300000 */
compatible = "ti,omap4-l4-wkup", "simple-bus"; compatible = "ti,omap4-l4-wkup", "simple-pm-bus";
power-domains = <&prm_wkup>;
clocks = <&l4_wkup_clkctrl OMAP4_L4_WKUP_CLKCTRL 0>;
clock-names = "fck";
reg = <0x4a300000 0x800>, reg = <0x4a300000 0x800>,
<0x4a300800 0x800>, <0x4a300800 0x800>,
<0x4a301000 0x1000>; <0x4a301000 0x1000>;
...@@ -956,7 +960,7 @@ &l4_wkup { /* 0x4a300000 */ ...@@ -956,7 +960,7 @@ &l4_wkup { /* 0x4a300000 */
<0x00020000 0x4a320000 0x010000>; /* segment 2 */ <0x00020000 0x4a320000 0x010000>; /* segment 2 */
segment@0 { /* 0x4a300000 */ segment@0 { /* 0x4a300000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
...@@ -1041,7 +1045,6 @@ scrm_clockdomains: clockdomains { ...@@ -1041,7 +1045,6 @@ scrm_clockdomains: clockdomains {
target-module@c000 { /* 0x4a30c000, ap 19 2c.0 */ target-module@c000 { /* 0x4a30c000, ap 19 2c.0 */
compatible = "ti,sysc-omap4", "ti,sysc"; compatible = "ti,sysc-omap4", "ti,sysc";
ti,hwmods = "ctrl_module_wkup";
reg = <0xc000 0x4>, reg = <0xc000 0x4>,
<0xc010 0x4>; <0xc010 0x4>;
reg-names = "rev", "sysc"; reg-names = "rev", "sysc";
...@@ -1062,7 +1065,7 @@ omap4_scm_wkup: scm@c000 { ...@@ -1062,7 +1065,7 @@ omap4_scm_wkup: scm@c000 {
}; };
segment@10000 { /* 0x4a310000 */ segment@10000 { /* 0x4a310000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00010000 0x001000>, /* ap 5 */ ranges = <0x00000000 0x00010000 0x001000>, /* ap 5 */
...@@ -1202,7 +1205,6 @@ keypad: keypad@0 { ...@@ -1202,7 +1205,6 @@ keypad: keypad@0 {
target-module@e000 { /* 0x4a31e000, ap 21 30.0 */ target-module@e000 { /* 0x4a31e000, ap 21 30.0 */
compatible = "ti,sysc-omap4", "ti,sysc"; compatible = "ti,sysc-omap4", "ti,sysc";
ti,hwmods = "ctrl_module_pad_wkup";
reg = <0xe000 0x4>, reg = <0xe000 0x4>,
<0xe010 0x4>; <0xe010 0x4>;
reg-names = "rev", "sysc"; reg-names = "rev", "sysc";
...@@ -1231,7 +1233,7 @@ omap4_pmx_wkup: pinmux@40 { ...@@ -1231,7 +1233,7 @@ omap4_pmx_wkup: pinmux@40 {
}; };
segment@20000 { /* 0x4a320000 */ segment@20000 { /* 0x4a320000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00006000 0x00026000 0x001000>, /* ap 13 */ ranges = <0x00006000 0x00026000 0x001000>, /* ap 13 */
...@@ -1284,7 +1286,10 @@ target-module@6000 { /* 0x4a326000, ap 13 28.0 */ ...@@ -1284,7 +1286,10 @@ target-module@6000 { /* 0x4a326000, ap 13 28.0 */
}; };
&l4_per { /* 0x48000000 */ &l4_per { /* 0x48000000 */
compatible = "ti,omap4-l4-per", "simple-bus"; compatible = "ti,omap4-l4-per", "simple-pm-bus";
power-domains = <&prm_l4per>;
clocks = <&l4_per_clkctrl OMAP4_L4_PER_CLKCTRL 0>;
clock-names = "fck";
reg = <0x48000000 0x800>, reg = <0x48000000 0x800>,
<0x48000800 0x800>, <0x48000800 0x800>,
<0x48001000 0x400>, <0x48001000 0x400>,
...@@ -1298,7 +1303,7 @@ &l4_per { /* 0x48000000 */ ...@@ -1298,7 +1303,7 @@ &l4_per { /* 0x48000000 */
<0x00200000 0x48200000 0x200000>; /* segment 1 */ <0x00200000 0x48200000 0x200000>; /* segment 1 */
segment@0 { /* 0x48000000 */ segment@0 { /* 0x48000000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
...@@ -2437,7 +2442,7 @@ mmc5: mmc@0 { ...@@ -2437,7 +2442,7 @@ mmc5: mmc@0 {
}; };
segment@200000 { /* 0x48200000 */ segment@200000 { /* 0x48200000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00150000 0x00350000 0x001000>, /* ap 77 */ ranges = <0x00150000 0x00350000 0x001000>, /* ap 77 */
......
...@@ -59,14 +59,12 @@ cpu@1 { ...@@ -59,14 +59,12 @@ cpu@1 {
}; };
/* /*
* Note that 4430 needs cross trigger interface (CTI) supported * Needed early by omap4_sram_init() for barrier, do not move to l3
* before we can configure the interrupts. This means sampling * interconnect as simple-pm-bus probes at module_init() time.
* events are not supported for pmu. Note that 4460 does not use
* CTI, see also 4460.dtsi.
*/ */
pmu { ocmcram: sram@40304000 {
compatible = "arm,cortex-a9-pmu"; compatible = "mmio-sram";
ti,hwmods = "debugss"; reg = <0x40304000 0xa000>; /* 40k */
}; };
gic: interrupt-controller@48241000 { gic: interrupt-controller@48241000 {
...@@ -101,19 +99,6 @@ wakeupgen: interrupt-controller@48281000 { ...@@ -101,19 +99,6 @@ wakeupgen: interrupt-controller@48281000 {
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
}; };
/*
* The soc node represents the soc top level view. It is used for IPs
* that are not memory mapped in the MPU view or for the MPU itself.
*/
soc {
compatible = "ti,omap-infra";
mpu {
compatible = "ti,omap4-mpu";
ti,hwmods = "mpu";
sram = <&ocmcram>;
};
};
/* /*
* XXX: Use a flat representation of the OMAP4 interconnect. * XXX: Use a flat representation of the OMAP4 interconnect.
* The real OMAP interconnect network is quite complex. * The real OMAP interconnect network is quite complex.
...@@ -122,16 +107,23 @@ mpu { ...@@ -122,16 +107,23 @@ mpu {
* hierarchy. * hierarchy.
*/ */
ocp { ocp {
compatible = "ti,omap4-l3-noc", "simple-bus"; compatible = "simple-pm-bus";
power-domains = <&prm_l4per>;
clocks = <&l3_1_clkctrl OMAP4_L3_MAIN_1_CLKCTRL 0>,
<&l3_2_clkctrl OMAP4_L3_MAIN_2_CLKCTRL 0>,
<&l3_instr_clkctrl OMAP4_L3_MAIN_3_CLKCTRL 0>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges; ranges;
ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
l3-noc@44000000 {
compatible = "ti,omap4-l3-noc";
reg = <0x44000000 0x1000>, reg = <0x44000000 0x1000>,
<0x44800000 0x2000>, <0x44800000 0x2000>,
<0x45000000 0x1000>; <0x45000000 0x1000>;
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
};
l4_wkup: interconnect@4a300000 { l4_wkup: interconnect@4a300000 {
}; };
...@@ -142,12 +134,22 @@ l4_cfg: interconnect@4a000000 { ...@@ -142,12 +134,22 @@ l4_cfg: interconnect@4a000000 {
l4_per: interconnect@48000000 { l4_per: interconnect@48000000 {
}; };
l4_abe: interconnect@40100000 { target-module@48210000 {
compatible = "ti,sysc-omap4-simple", "ti,sysc";
power-domains = <&prm_mpu>;
clocks = <&mpuss_clkctrl OMAP4_MPU_CLKCTRL 0>;
clock-names = "fck";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x48210000 0x1f0000>;
mpu {
compatible = "ti,omap4-mpu";
sram = <&ocmcram>;
};
}; };
ocmcram: sram@40304000 { l4_abe: interconnect@40100000 {
compatible = "mmio-sram";
reg = <0x40304000 0xa000>; /* 40k */
}; };
target-module@50000000 { target-module@50000000 {
...@@ -189,7 +191,6 @@ gpmc: gpmc@50000000 { ...@@ -189,7 +191,6 @@ gpmc: gpmc@50000000 {
target-module@52000000 { target-module@52000000 {
compatible = "ti,sysc-omap4", "ti,sysc"; compatible = "ti,sysc-omap4", "ti,sysc";
ti,hwmods = "iss";
reg = <0x52000000 0x4>, reg = <0x52000000 0x4>,
<0x52000010 0x4>; <0x52000010 0x4>;
reg-names = "rev", "sysc"; reg-names = "rev", "sysc";
...@@ -203,6 +204,7 @@ target-module@52000000 { ...@@ -203,6 +204,7 @@ target-module@52000000 {
<SYSC_IDLE_SMART>, <SYSC_IDLE_SMART>,
<SYSC_IDLE_SMART_WKUP>; <SYSC_IDLE_SMART_WKUP>;
ti,sysc-delay-us = <2>; ti,sysc-delay-us = <2>;
power-domains = <&prm_cam>;
clocks = <&iss_clkctrl OMAP4_ISS_CLKCTRL 0>; clocks = <&iss_clkctrl OMAP4_ISS_CLKCTRL 0>;
clock-names = "fck"; clock-names = "fck";
#address-cells = <1>; #address-cells = <1>;
...@@ -212,6 +214,26 @@ target-module@52000000 { ...@@ -212,6 +214,26 @@ target-module@52000000 {
/* No child device binding, driver in staging */ /* No child device binding, driver in staging */
}; };
/*
* Note that 4430 needs cross trigger interface (CTI) supported
* before we can configure the interrupts. This means sampling
* events are not supported for pmu. Note that 4460 does not use
* CTI, see also 4460.dtsi.
*/
target-module@54000000 {
compatible = "ti,sysc-omap4-simple", "ti,sysc";
power-domains = <&prm_emu>;
clocks = <&emu_sys_clkctrl OMAP4_DEBUGSS_CLKCTRL 0>;
clock-names = "fck";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x54000000 0x1000000>;
pmu: pmu {
compatible = "arm,cortex-a9-pmu";
};
};
target-module@55082000 { target-module@55082000 {
compatible = "ti,sysc-omap2", "ti,sysc"; compatible = "ti,sysc-omap2", "ti,sysc";
reg = <0x55082000 0x4>, reg = <0x55082000 0x4>,
...@@ -261,36 +283,68 @@ target-module@4012c000 { ...@@ -261,36 +283,68 @@ target-module@4012c000 {
/* No child device binding or driver in mainline */ /* No child device binding or driver in mainline */
}; };
dmm@4e000000 { target-module@4e000000 {
compatible = "ti,sysc-omap2", "ti,sysc";
reg = <0x4e000000 0x4>,
<0x4e000010 0x4>;
reg-names = "rev", "sysc";
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ranges = <0x0 0x4e000000 0x2000000>;
#size-cells = <1>;
#address-cells = <1>;
dmm@0 {
compatible = "ti,omap4-dmm"; compatible = "ti,omap4-dmm";
reg = <0x4e000000 0x800>; reg = <0 0x800>;
interrupts = <0 113 0x4>; interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "dmm"; };
}; };
emif1: emif@4c000000 { target-module@4c000000 {
compatible = "ti,sysc-omap4-simple", "ti,sysc";
reg = <0x4c000000 0x4>;
reg-names = "rev";
clocks = <&l3_emif_clkctrl OMAP4_EMIF1_CLKCTRL 0>;
clock-names = "fck";
ti,no-idle;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x4c000000 0x1000000>;
emif1: emif@0 {
compatible = "ti,emif-4d"; compatible = "ti,emif-4d";
reg = <0x4c000000 0x100>; reg = <0 0x100>;
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "emif1";
ti,no-idle-on-init;
phy-type = <1>; phy-type = <1>;
hw-caps-read-idle-ctrl; hw-caps-read-idle-ctrl;
hw-caps-ll-interface; hw-caps-ll-interface;
hw-caps-temp-alert; hw-caps-temp-alert;
}; };
};
emif2: emif@4d000000 { target-module@4d000000 {
compatible = "ti,sysc-omap4-simple", "ti,sysc";
reg = <0x4d000000 0x4>;
reg-names = "rev";
clocks = <&l3_emif_clkctrl OMAP4_EMIF2_CLKCTRL 0>;
clock-names = "fck";
ti,no-idle;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x4d000000 0x1000000>;
emif2: emif@0 {
compatible = "ti,emif-4d"; compatible = "ti,emif-4d";
reg = <0x4d000000 0x100>; reg = <0 0x100>;
interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "emif2";
ti,no-idle-on-init;
phy-type = <1>; phy-type = <1>;
hw-caps-read-idle-ctrl; hw-caps-read-idle-ctrl;
hw-caps-ll-interface; hw-caps-ll-interface;
hw-caps-temp-alert; hw-caps-temp-alert;
}; };
};
dsp: dsp { dsp: dsp {
compatible = "ti,omap4-dsp"; compatible = "ti,omap4-dsp";
...@@ -440,6 +494,7 @@ sgx_module: target-module@56000000 { ...@@ -440,6 +494,7 @@ sgx_module: target-module@56000000 {
<SYSC_IDLE_NO>, <SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>, <SYSC_IDLE_SMART>,
<SYSC_IDLE_SMART_WKUP>; <SYSC_IDLE_SMART_WKUP>;
power-domains = <&prm_gfx>;
clocks = <&l3_gfx_clkctrl OMAP4_GPU_CLKCTRL 0>; clocks = <&l3_gfx_clkctrl OMAP4_GPU_CLKCTRL 0>;
clock-names = "fck"; clock-names = "fck";
#address-cells = <1>; #address-cells = <1>;
......
...@@ -26,13 +26,6 @@ cpu0: cpu@0 { ...@@ -26,13 +26,6 @@ cpu0: cpu@0 {
}; };
}; };
pmu {
compatible = "arm,cortex-a9-pmu";
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "debugss";
};
thermal-zones { thermal-zones {
#include "omap4-cpu-thermal.dtsi" #include "omap4-cpu-thermal.dtsi"
}; };
...@@ -128,4 +121,10 @@ &l4_cfg_target_0 { ...@@ -128,4 +121,10 @@ &l4_cfg_target_0 {
<0x00030000 0x00030000 0x00010000>; <0x00030000 0x00030000 0x00010000>;
}; };
&pmu {
compatible = "arm,cortex-a9-pmu";
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
};
/include/ "omap446x-clocks.dtsi" /include/ "omap446x-clocks.dtsi"
&l4_cfg { /* 0x4a000000 */ &l4_cfg { /* 0x4a000000 */
compatible = "ti,omap5-l4-cfg", "simple-bus"; compatible = "ti,omap5-l4-cfg", "simple-pm-bus";
power-domains = <&prm_core>;
clocks = <&l4cfg_clkctrl OMAP5_L4_CFG_CLKCTRL 0>;
clock-names = "fck";
reg = <0x4a000000 0x800>, reg = <0x4a000000 0x800>,
<0x4a000800 0x800>, <0x4a000800 0x800>,
<0x4a001000 0x1000>; <0x4a001000 0x1000>;
...@@ -15,7 +18,7 @@ &l4_cfg { /* 0x4a000000 */ ...@@ -15,7 +18,7 @@ &l4_cfg { /* 0x4a000000 */
<0x00300000 0x4a300000 0x080000>; /* segment 6 */ <0x00300000 0x4a300000 0x080000>; /* segment 6 */
segment@0 { /* 0x4a000000 */ segment@0 { /* 0x4a000000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
...@@ -391,7 +394,7 @@ target-module@75000 { /* 0x4a075000, ap 81 32.0 */ ...@@ -391,7 +394,7 @@ target-module@75000 { /* 0x4a075000, ap 81 32.0 */
}; };
segment@80000 { /* 0x4a080000 */ segment@80000 { /* 0x4a080000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00059000 0x000d9000 0x001000>, /* ap 13 */ ranges = <0x00059000 0x000d9000 0x001000>, /* ap 13 */
...@@ -654,7 +657,7 @@ hwspinlock: spinlock@0 { ...@@ -654,7 +657,7 @@ hwspinlock: spinlock@0 {
}; };
segment@100000 { /* 0x4a100000 */ segment@100000 { /* 0x4a100000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00002000 0x00102000 0x001000>, /* ap 59 */ ranges = <0x00002000 0x00102000 0x001000>, /* ap 59 */
...@@ -691,22 +694,44 @@ target-module@a000 { /* 0x4a10a000, ap 63 22.0 */ ...@@ -691,22 +694,44 @@ target-module@a000 { /* 0x4a10a000, ap 63 22.0 */
}; };
target-module@40000 { /* 0x4a140000, ap 101 16.0 */ target-module@40000 { /* 0x4a140000, ap 101 16.0 */
compatible = "ti,sysc"; compatible = "ti,sysc-omap4", "ti,sysc";
status = "disabled"; reg = <0x400fc 4>,
#address-cells = <1>; <0x41100 4>;
reg-names = "rev", "sysc";
ti,sysc-midle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>,
<SYSC_IDLE_SMART_WKUP>;
power-domains = <&prm_l3init>;
clocks = <&l3init_clkctrl OMAP5_SATA_CLKCTRL 0>;
clock-names = "fck";
#size-cells = <1>; #size-cells = <1>;
#address-cells = <1>;
ranges = <0x0 0x40000 0x10000>; ranges = <0x0 0x40000 0x10000>;
sata: sata@0 {
compatible = "snps,dwc-ahci";
reg = <0 0x1100>, <0x1100 0x8>;
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
phys = <&sata_phy>;
phy-names = "sata-phy";
clocks = <&l3init_clkctrl OMAP5_SATA_CLKCTRL 8>;
ports-implemented = <0x1>;
};
}; };
}; };
segment@180000 { /* 0x4a180000 */ segment@180000 { /* 0x4a180000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
}; };
segment@200000 { /* 0x4a200000 */ segment@200000 { /* 0x4a200000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x0001e000 0x0021e000 0x001000>, /* ap 29 */ ranges = <0x0001e000 0x0021e000 0x001000>, /* ap 29 */
...@@ -912,20 +937,23 @@ target-module@2a000 { /* 0x4a22a000, ap 55 5a.0 */ ...@@ -912,20 +937,23 @@ target-module@2a000 { /* 0x4a22a000, ap 55 5a.0 */
}; };
segment@280000 { /* 0x4a280000 */ segment@280000 { /* 0x4a280000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
}; };
segment@300000 { /* 0x4a300000 */ segment@300000 { /* 0x4a300000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
}; };
}; };
&l4_per { /* 0x48000000 */ &l4_per { /* 0x48000000 */
compatible = "ti,omap5-l4-per", "simple-bus"; compatible = "ti,omap5-l4-per", "simple-pm-bus";
power-domains = <&prm_core>;
clocks = <&l4per_clkctrl OMAP5_L4_PER_CLKCTRL 0>;
clock-names = "fck";
reg = <0x48000000 0x800>, reg = <0x48000000 0x800>,
<0x48000800 0x800>, <0x48000800 0x800>,
<0x48001000 0x400>, <0x48001000 0x400>,
...@@ -939,7 +967,7 @@ &l4_per { /* 0x48000000 */ ...@@ -939,7 +967,7 @@ &l4_per { /* 0x48000000 */
<0x00200000 0x48200000 0x200000>; /* segment 1 */ <0x00200000 0x48200000 0x200000>; /* segment 1 */
segment@0 { /* 0x48000000 */ segment@0 { /* 0x48000000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
...@@ -2148,14 +2176,17 @@ mmc5: mmc@0 { ...@@ -2148,14 +2176,17 @@ mmc5: mmc@0 {
}; };
segment@200000 { /* 0x48200000 */ segment@200000 { /* 0x48200000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
}; };
}; };
&l4_wkup { /* 0x4ae00000 */ &l4_wkup { /* 0x4ae00000 */
compatible = "ti,omap5-l4-wkup", "simple-bus"; compatible = "ti,omap5-l4-wkup", "simple-pm-bus";
power-domains = <&prm_wkupaon>;
clocks = <&wkupaon_clkctrl OMAP5_L4_WKUP_CLKCTRL 0>;
clock-names = "fck";
reg = <0x4ae00000 0x800>, reg = <0x4ae00000 0x800>,
<0x4ae00800 0x800>, <0x4ae00800 0x800>,
<0x4ae01000 0x1000>; <0x4ae01000 0x1000>;
...@@ -2167,7 +2198,7 @@ &l4_wkup { /* 0x4ae00000 */ ...@@ -2167,7 +2198,7 @@ &l4_wkup { /* 0x4ae00000 */
<0x00020000 0x4ae20000 0x010000>; /* segment 2 */ <0x00020000 0x4ae20000 0x010000>; /* segment 2 */
segment@0 { /* 0x4ae00000 */ segment@0 { /* 0x4ae00000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */ ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
...@@ -2296,7 +2327,7 @@ scm_wkup_pad_conf_clocks: clocks@0 { ...@@ -2296,7 +2327,7 @@ scm_wkup_pad_conf_clocks: clocks@0 {
}; };
segment@10000 { /* 0x4ae10000 */ segment@10000 { /* 0x4ae10000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00000000 0x00010000 0x001000>, /* ap 5 */ ranges = <0x00000000 0x00010000 0x001000>, /* ap 5 */
...@@ -2423,7 +2454,7 @@ keypad: keypad@0 { ...@@ -2423,7 +2454,7 @@ keypad: keypad@0 {
}; };
segment@20000 { /* 0x4ae20000 */ segment@20000 { /* 0x4ae20000 */
compatible = "simple-bus"; compatible = "simple-pm-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0x00006000 0x00026000 0x001000>, /* ap 13 */ ranges = <0x00006000 0x00026000 0x001000>, /* ap 13 */
......
...@@ -106,6 +106,15 @@ pmu { ...@@ -106,6 +106,15 @@ pmu {
<GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>; <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
}; };
/*
* Needed early by omap4_sram_init() for barrier, do not move to l3
* interconnect as simple-pm-bus probes at module_init() time.
*/
ocmcram: sram@40300000 {
compatible = "mmio-sram";
reg = <0 0x40300000 0 0x20000>; /* 128k */
};
gic: interrupt-controller@48211000 { gic: interrupt-controller@48211000 {
compatible = "arm,cortex-a15-gic"; compatible = "arm,cortex-a15-gic";
interrupt-controller; interrupt-controller;
...@@ -125,19 +134,6 @@ wakeupgen: interrupt-controller@48281000 { ...@@ -125,19 +134,6 @@ wakeupgen: interrupt-controller@48281000 {
interrupt-parent = <&gic>; interrupt-parent = <&gic>;
}; };
/*
* The soc node represents the soc top level view. It is used for IPs
* that are not memory mapped in the MPU view or for the MPU itself.
*/
soc {
compatible = "ti,omap-infra";
mpu {
compatible = "ti,omap4-mpu";
ti,hwmods = "mpu";
sram = <&ocmcram>;
};
};
/* /*
* XXX: Use a flat representation of the OMAP3 interconnect. * XXX: Use a flat representation of the OMAP3 interconnect.
* The real OMAP interconnect network is quite complex. * The real OMAP interconnect network is quite complex.
...@@ -146,17 +142,24 @@ mpu { ...@@ -146,17 +142,24 @@ mpu {
* hierarchy. * hierarchy.
*/ */
ocp { ocp {
compatible = "ti,omap5-l3-noc", "simple-bus"; compatible = "simple-pm-bus";
power-domains = <&prm_core>;
clocks = <&l3main1_clkctrl OMAP5_L3_MAIN_1_CLKCTRL 0>,
<&l3main2_clkctrl OMAP5_L3_MAIN_2_CLKCTRL 0>,
<&l3instr_clkctrl OMAP5_L3_MAIN_3_CLKCTRL 0>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
ranges = <0 0 0 0xc0000000>; ranges = <0 0 0 0xc0000000>;
dma-ranges = <0x80000000 0x0 0x80000000 0x80000000>; dma-ranges = <0x80000000 0x0 0x80000000 0x80000000>;
ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
reg = <0 0x44000000 0 0x2000>, l3-noc@44000000 {
<0 0x44800000 0 0x3000>, compatible = "ti,omap5-l3-noc";
<0 0x45000000 0 0x4000>; reg = <0x44000000 0x2000>,
<0x44800000 0x3000>,
<0x45000000 0x4000>;
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
};
l4_wkup: interconnect@4ae00000 { l4_wkup: interconnect@4ae00000 {
}; };
...@@ -167,14 +170,42 @@ l4_cfg: interconnect@4a000000 { ...@@ -167,14 +170,42 @@ l4_cfg: interconnect@4a000000 {
l4_per: interconnect@48000000 { l4_per: interconnect@48000000 {
}; };
l4_abe: interconnect@40100000 { target-module@48210000 {
compatible = "ti,sysc-omap4-simple", "ti,sysc";
power-domains = <&prm_mpu>;
clocks = <&mpu_clkctrl OMAP5_MPU_CLKCTRL 0>;
clock-names = "fck";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x48210000 0x1f0000>;
mpu {
compatible = "ti,omap4-mpu";
sram = <&ocmcram>;
};
}; };
ocmcram: sram@40300000 { l4_abe: interconnect@40100000 {
compatible = "mmio-sram";
reg = <0x40300000 0x20000>; /* 128k */
}; };
target-module@50000000 {
compatible = "ti,sysc-omap2", "ti,sysc";
reg = <0x50000000 4>,
<0x50000010 4>,
<0x50000014 4>;
reg-names = "rev", "sysc", "syss";
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ti,syss-mask = <1>;
ti,no-idle-on-init;
clocks = <&l3main2_clkctrl OMAP5_L3_MAIN_2_GPMC_CLKCTRL 0>;
clock-names = "fck";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x50000000 0x50000000 0x00001000>, /* regs */
<0x00000000 0x00000000 0x40000000>; /* data */
gpmc: gpmc@50000000 { gpmc: gpmc@50000000 {
compatible = "ti,omap4430-gpmc"; compatible = "ti,omap4430-gpmc";
reg = <0x50000000 0x1000>; reg = <0x50000000 0x1000>;
...@@ -185,14 +216,13 @@ gpmc: gpmc@50000000 { ...@@ -185,14 +216,13 @@ gpmc: gpmc@50000000 {
dma-names = "rxtx"; dma-names = "rxtx";
gpmc,num-cs = <8>; gpmc,num-cs = <8>;
gpmc,num-waitpins = <4>; gpmc,num-waitpins = <4>;
ti,hwmods = "gpmc";
clocks = <&l3_iclk_div>;
clock-names = "fck"; clock-names = "fck";
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
gpio-controller; gpio-controller;
#gpio-cells = <2>; #gpio-cells = <2>;
}; };
};
target-module@55082000 { target-module@55082000 {
compatible = "ti,sysc-omap2", "ti,sysc"; compatible = "ti,sysc-omap2", "ti,sysc";
...@@ -246,36 +276,68 @@ ipu: ipu@55020000 { ...@@ -246,36 +276,68 @@ ipu: ipu@55020000 {
status = "disabled"; status = "disabled";
}; };
dmm@4e000000 { target-module@4e000000 {
compatible = "ti,sysc-omap2", "ti,sysc";
reg = <0x4e000000 0x4>,
<0x4e000010 0x4>;
reg-names = "rev", "sysc";
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ranges = <0x0 0x4e000000 0x2000000>;
#size-cells = <1>;
#address-cells = <1>;
dmm@0 {
compatible = "ti,omap5-dmm"; compatible = "ti,omap5-dmm";
reg = <0x4e000000 0x800>; reg = <0 0x800>;
interrupts = <0 113 0x4>; interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "dmm";
}; };
};
target-module@4c000000 {
compatible = "ti,sysc-omap4-simple", "ti,sysc";
reg = <0x4c000000 0x4>;
reg-names = "rev";
clocks = <&emif_clkctrl OMAP5_EMIF1_CLKCTRL 0>;
clock-names = "fck";
ti,no-idle;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x4c000000 0x1000000>;
emif1: emif@4c000000 { emif1: emif@0 {
compatible = "ti,emif-4d5"; compatible = "ti,emif-4d5";
ti,hwmods = "emif1"; reg = <0 0x400>;
ti,no-idle-on-init;
phy-type = <2>; /* DDR PHY type: Intelli PHY */
reg = <0x4c000000 0x400>;
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
phy-type = <2>; /* DDR PHY type: Intelli PHY */
hw-caps-read-idle-ctrl; hw-caps-read-idle-ctrl;
hw-caps-ll-interface; hw-caps-ll-interface;
hw-caps-temp-alert; hw-caps-temp-alert;
}; };
};
emif2: emif@4d000000 { target-module@4d000000 {
compatible = "ti,sysc-omap4-simple", "ti,sysc";
reg = <0x4d000000 0x4>;
reg-names = "rev";
clocks = <&emif_clkctrl OMAP5_EMIF2_CLKCTRL 0>;
clock-names = "fck";
ti,no-idle;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x4d000000 0x1000000>;
emif2: emif@0 {
compatible = "ti,emif-4d5"; compatible = "ti,emif-4d5";
ti,hwmods = "emif2"; reg = <0 0x400>;
ti,no-idle-on-init;
phy-type = <2>; /* DDR PHY type: Intelli PHY */
reg = <0x4d000000 0x400>;
interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
phy-type = <2>; /* DDR PHY type: Intelli PHY */
hw-caps-read-idle-ctrl; hw-caps-read-idle-ctrl;
hw-caps-ll-interface; hw-caps-ll-interface;
hw-caps-temp-alert; hw-caps-temp-alert;
}; };
};
aes1_target: target-module@4b501000 { aes1_target: target-module@4b501000 {
compatible = "ti,sysc-omap2", "ti,sysc"; compatible = "ti,sysc-omap2", "ti,sysc";
...@@ -374,18 +436,6 @@ bandgap: bandgap@4a0021e0 { ...@@ -374,18 +436,6 @@ bandgap: bandgap@4a0021e0 {
#thermal-sensor-cells = <1>; #thermal-sensor-cells = <1>;
}; };
/* OCP2SCP3 */
sata: sata@4a141100 {
compatible = "snps,dwc-ahci";
reg = <0x4a140000 0x1100>, <0x4a141100 0x7>;
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
phys = <&sata_phy>;
phy-names = "sata-phy";
clocks = <&l3init_clkctrl OMAP5_SATA_CLKCTRL 8>;
ti,hwmods = "sata";
ports-implemented = <0x1>;
};
target-module@56000000 { target-module@56000000 {
compatible = "ti,sysc-omap4", "ti,sysc"; compatible = "ti,sysc-omap4", "ti,sysc";
reg = <0x5600fe00 0x4>, reg = <0x5600fe00 0x4>,
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
#include <linux/clk/at91_pmc.h> #include <linux/clk/at91_pmc.h>
#include <linux/platform_data/atmel.h> #include <linux/platform_data/atmel.h>
#include <soc/at91/pm.h>
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/fncpy.h> #include <asm/fncpy.h>
#include <asm/system_misc.h> #include <asm/system_misc.h>
...@@ -25,17 +27,6 @@ ...@@ -25,17 +27,6 @@
#include "generic.h" #include "generic.h"
#include "pm.h" #include "pm.h"
/*
* FIXME: this is needed to communicate between the pinctrl driver and
* the PM implementation in the machine. Possibly part of the PM
* implementation should be moved down into the pinctrl driver and get
* called as part of the generic suspend/resume path.
*/
#ifdef CONFIG_PINCTRL_AT91
extern void at91_pinctrl_gpio_suspend(void);
extern void at91_pinctrl_gpio_resume(void);
#endif
struct at91_soc_pm { struct at91_soc_pm {
int (*config_shdwc_ws)(void __iomem *shdwc, u32 *mode, u32 *polarity); int (*config_shdwc_ws)(void __iomem *shdwc, u32 *mode, u32 *polarity);
int (*config_pmc_ws)(void __iomem *pmc, u32 mode, u32 polarity); int (*config_pmc_ws)(void __iomem *pmc, u32 mode, u32 polarity);
...@@ -326,6 +317,12 @@ static void at91_pm_suspend(suspend_state_t state) ...@@ -326,6 +317,12 @@ static void at91_pm_suspend(suspend_state_t state)
static int at91_pm_enter(suspend_state_t state) static int at91_pm_enter(suspend_state_t state)
{ {
#ifdef CONFIG_PINCTRL_AT91 #ifdef CONFIG_PINCTRL_AT91
/*
* FIXME: this is needed to communicate between the pinctrl driver and
* the PM implementation in the machine. Possibly part of the PM
* implementation should be moved down into the pinctrl driver and get
* called as part of the generic suspend/resume path.
*/
at91_pinctrl_gpio_suspend(); at91_pinctrl_gpio_suspend();
#endif #endif
......
...@@ -78,12 +78,11 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious) ...@@ -78,12 +78,11 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
#endif /* CONFIG_HOTPLUG_CPU */ #endif /* CONFIG_HOTPLUG_CPU */
/** /**
* exynos_core_power_down : power down the specified cpu * exynos_cpu_power_down() - power down the specified cpu
* @cpu : the cpu to power down * @cpu: the cpu to power down
* *
* Power down the specified cpu. The sequence must be finished by a * Power down the specified cpu. The sequence must be finished by a
* call to cpu_do_idle() * call to cpu_do_idle()
*
*/ */
void exynos_cpu_power_down(int cpu) void exynos_cpu_power_down(int cpu)
{ {
...@@ -107,8 +106,8 @@ void exynos_cpu_power_down(int cpu) ...@@ -107,8 +106,8 @@ void exynos_cpu_power_down(int cpu)
} }
/** /**
* exynos_cpu_power_up : power up the specified cpu * exynos_cpu_power_up() - power up the specified cpu
* @cpu : the cpu to power up * @cpu: the cpu to power up
* *
* Power up the specified cpu * Power up the specified cpu
*/ */
...@@ -124,9 +123,8 @@ void exynos_cpu_power_up(int cpu) ...@@ -124,9 +123,8 @@ void exynos_cpu_power_up(int cpu)
} }
/** /**
* exynos_cpu_power_state : returns the power state of the cpu * exynos_cpu_power_state() - returns the power state of the cpu
* @cpu : the cpu to retrieve the power state from * @cpu: the cpu to retrieve the power state from
*
*/ */
int exynos_cpu_power_state(int cpu) int exynos_cpu_power_state(int cpu)
{ {
...@@ -135,8 +133,8 @@ int exynos_cpu_power_state(int cpu) ...@@ -135,8 +133,8 @@ int exynos_cpu_power_state(int cpu)
} }
/** /**
* exynos_cluster_power_down : power down the specified cluster * exynos_cluster_power_down() - power down the specified cluster
* @cluster : the cluster to power down * @cluster: the cluster to power down
*/ */
void exynos_cluster_power_down(int cluster) void exynos_cluster_power_down(int cluster)
{ {
...@@ -144,8 +142,8 @@ void exynos_cluster_power_down(int cluster) ...@@ -144,8 +142,8 @@ void exynos_cluster_power_down(int cluster)
} }
/** /**
* exynos_cluster_power_up : power up the specified cluster * exynos_cluster_power_up() - power up the specified cluster
* @cluster : the cluster to power up * @cluster: the cluster to power up
*/ */
void exynos_cluster_power_up(int cluster) void exynos_cluster_power_up(int cluster)
{ {
...@@ -154,8 +152,8 @@ void exynos_cluster_power_up(int cluster) ...@@ -154,8 +152,8 @@ void exynos_cluster_power_up(int cluster)
} }
/** /**
* exynos_cluster_power_state : returns the power state of the cluster * exynos_cluster_power_state() - returns the power state of the cluster
* @cluster : the cluster to retrieve the power state from * @cluster: the cluster to retrieve the power state from
* *
*/ */
int exynos_cluster_power_state(int cluster) int exynos_cluster_power_state(int cluster)
...@@ -165,7 +163,7 @@ int exynos_cluster_power_state(int cluster) ...@@ -165,7 +163,7 @@ int exynos_cluster_power_state(int cluster)
} }
/** /**
* exynos_scu_enable : enables SCU for Cortex-A9 based system * exynos_scu_enable() - enables SCU for Cortex-A9 based system
*/ */
void exynos_scu_enable(void) void exynos_scu_enable(void)
{ {
......
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* (Hisilicon's SoC based) flattened device tree enabled machine * (HiSilicon's SoC based) flattened device tree enabled machine
* *
* Copyright (c) 2012-2013 Hisilicon Ltd. * Copyright (c) 2012-2013 HiSilicon Ltd.
* Copyright (c) 2012-2013 Linaro Ltd. * Copyright (c) 2012-2013 Linaro Ltd.
* *
* Author: Haojian Zhuang <haojian.zhuang@linaro.org> * Author: Haojian Zhuang <haojian.zhuang@linaro.org>
......
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2013 Linaro Ltd. * Copyright (c) 2013 Linaro Ltd.
* Copyright (c) 2013 Hisilicon Limited. * Copyright (c) 2013 HiSilicon Limited.
*/ */
#include <linux/cpu.h> #include <linux/cpu.h>
......
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2013-2014 Linaro Ltd. * Copyright (c) 2013-2014 Linaro Ltd.
* Copyright (c) 2013-2014 Hisilicon Limited. * Copyright (c) 2013-2014 HiSilicon Limited.
*/ */
#include <linux/init.h> #include <linux/init.h>
#include <linux/smp.h> #include <linux/smp.h>
......
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2013 Linaro Ltd. * Copyright (c) 2013 Linaro Ltd.
* Copyright (c) 2013 Hisilicon Limited. * Copyright (c) 2013 HiSilicon Limited.
* Based on arch/arm/mach-vexpress/platsmp.c, Copyright (C) 2002 ARM Ltd. * Based on arch/arm/mach-vexpress/platsmp.c, Copyright (C) 2002 ARM Ltd.
*/ */
#include <linux/smp.h> #include <linux/smp.h>
......
...@@ -63,7 +63,7 @@ config SOC_IMX35 ...@@ -63,7 +63,7 @@ config SOC_IMX35
select MXC_AVIC select MXC_AVIC
select PINCTRL_IMX35 select PINCTRL_IMX35
help help
This enables support for Freescale i.MX31 processor This enables support for Freescale i.MX35 processor
endif endif
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
* This is also the lowest power state possible without affecting * This is also the lowest power state possible without affecting
* non-cpu parts of the system. For these reasons, imx5 should default * non-cpu parts of the system. For these reasons, imx5 should default
* to always using this state for cpu idling. The PM_SUSPEND_STANDBY also * to always using this state for cpu idling. The PM_SUSPEND_STANDBY also
* uses this state and needs to take no action when registers remain confgiured * uses this state and needs to take no action when registers remain configured
* for this state. * for this state.
*/ */
#define IMX5_DEFAULT_CPU_IDLE_STATE WAIT_UNCLOCKED_POWER_OFF #define IMX5_DEFAULT_CPU_IDLE_STATE WAIT_UNCLOCKED_POWER_OFF
......
/** /*
* OMAP1 Dual-Mode Timers - platform device registration * OMAP1 Dual-Mode Timers - platform device registration
* *
* Contains first level initialization routines which internally * Contains first level initialization routines which internally
......
...@@ -34,7 +34,6 @@ config ARCH_OMAP4 ...@@ -34,7 +34,6 @@ config ARCH_OMAP4
select ARM_GIC select ARM_GIC
select HAVE_ARM_SCU if SMP select HAVE_ARM_SCU if SMP
select HAVE_ARM_TWD if SMP select HAVE_ARM_TWD if SMP
select OMAP_HWMOD
select OMAP_INTERCONNECT select OMAP_INTERCONNECT
select OMAP_INTERCONNECT_BARRIER select OMAP_INTERCONNECT_BARRIER
select PL310_ERRATA_588369 if CACHE_L2X0 select PL310_ERRATA_588369 if CACHE_L2X0
...@@ -54,7 +53,6 @@ config SOC_OMAP5 ...@@ -54,7 +53,6 @@ config SOC_OMAP5
select HAVE_ARM_SCU if SMP select HAVE_ARM_SCU if SMP
select HAVE_ARM_ARCH_TIMER select HAVE_ARM_ARCH_TIMER
select ARM_ERRATA_798181 if SMP select ARM_ERRATA_798181 if SMP
select OMAP_HWMOD
select OMAP_INTERCONNECT select OMAP_INTERCONNECT
select OMAP_INTERCONNECT_BARRIER select OMAP_INTERCONNECT_BARRIER
select PM_OPP select PM_OPP
...@@ -90,7 +88,6 @@ config SOC_DRA7XX ...@@ -90,7 +88,6 @@ config SOC_DRA7XX
select HAVE_ARM_ARCH_TIMER select HAVE_ARM_ARCH_TIMER
select IRQ_CROSSBAR select IRQ_CROSSBAR
select ARM_ERRATA_798181 if SMP select ARM_ERRATA_798181 if SMP
select OMAP_HWMOD
select OMAP_INTERCONNECT select OMAP_INTERCONNECT
select OMAP_INTERCONNECT_BARRIER select OMAP_INTERCONNECT_BARRIER
select PM_OPP select PM_OPP
......
...@@ -20,14 +20,14 @@ secure-common = omap-smc.o omap-secure.o ...@@ -20,14 +20,14 @@ secure-common = omap-smc.o omap-secure.o
obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(hwmod-common) obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(hwmod-common)
obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(hwmod-common) $(secure-common) obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(hwmod-common) $(secure-common)
obj-$(CONFIG_ARCH_OMAP4) += $(hwmod-common) $(secure-common) obj-$(CONFIG_ARCH_OMAP4) += $(secure-common)
obj-$(CONFIG_SOC_AM33XX) += $(secure-common) obj-$(CONFIG_SOC_AM33XX) += $(secure-common)
obj-$(CONFIG_SOC_OMAP5) += $(hwmod-common) $(secure-common) obj-$(CONFIG_SOC_OMAP5) += $(secure-common)
obj-$(CONFIG_SOC_AM43XX) += $(secure-common) obj-$(CONFIG_SOC_AM43XX) += $(secure-common)
obj-$(CONFIG_SOC_DRA7XX) += $(hwmod-common) $(secure-common) obj-$(CONFIG_SOC_DRA7XX) += $(secure-common)
ifneq ($(CONFIG_SND_SOC_OMAP_MCBSP),) ifneq ($(CONFIG_SND_SOC_OMAP_MCBSP),)
obj-y += mcbsp.o obj-$(CONFIG_OMAP_HWMOD) += mcbsp.o
endif endif
obj-$(CONFIG_TWL4030_CORE) += omap_twl.o obj-$(CONFIG_TWL4030_CORE) += omap_twl.o
...@@ -207,9 +207,6 @@ obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2430_data.o ...@@ -207,9 +207,6 @@ obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2430_data.o
obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_ipblock_data.o obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_ipblock_data.o
obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_3xxx_data.o obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_3xxx_data.o
obj-$(CONFIG_SOC_TI81XX) += omap_hwmod_81xx_data.o obj-$(CONFIG_SOC_TI81XX) += omap_hwmod_81xx_data.o
obj-$(CONFIG_ARCH_OMAP4) += omap_hwmod_44xx_data.o
obj-$(CONFIG_SOC_OMAP5) += omap_hwmod_54xx_data.o
obj-$(CONFIG_SOC_DRA7XX) += omap_hwmod_7xx_data.o
# OMAP2420 MSDI controller integration support ("MMC") # OMAP2420 MSDI controller integration support ("MMC")
obj-$(CONFIG_SOC_OMAP2420) += msdi.o obj-$(CONFIG_SOC_OMAP2420) += msdi.o
......
...@@ -343,15 +343,6 @@ static inline void omap5_secondary_hyp_startup(void) ...@@ -343,15 +343,6 @@ static inline void omap5_secondary_hyp_startup(void)
} }
#endif #endif
#ifdef CONFIG_SOC_DRA7XX
extern int dra7xx_pciess_reset(struct omap_hwmod *oh);
#else
static inline int dra7xx_pciess_reset(struct omap_hwmod *oh)
{
return 0;
}
#endif
struct omap_system_dma_plat_info; struct omap_system_dma_plat_info;
void pdata_quirks_init(const struct of_device_id *); void pdata_quirks_init(const struct of_device_id *);
......
...@@ -402,6 +402,7 @@ static int __init _omap2_init_reprogram_sdrc(void) ...@@ -402,6 +402,7 @@ static int __init _omap2_init_reprogram_sdrc(void)
return v; return v;
} }
#ifdef CONFIG_OMAP_HWMOD
static int _set_hwmod_postsetup_state(struct omap_hwmod *oh, void *data) static int _set_hwmod_postsetup_state(struct omap_hwmod *oh, void *data)
{ {
return omap_hwmod_set_postsetup_state(oh, *(u8 *)data); return omap_hwmod_set_postsetup_state(oh, *(u8 *)data);
...@@ -414,6 +415,11 @@ static void __init __maybe_unused omap_hwmod_init_postsetup(void) ...@@ -414,6 +415,11 @@ static void __init __maybe_unused omap_hwmod_init_postsetup(void)
/* Set the default postsetup state for all hwmods */ /* Set the default postsetup state for all hwmods */
omap_hwmod_for_each(_set_hwmod_postsetup_state, &postsetup_state); omap_hwmod_for_each(_set_hwmod_postsetup_state, &postsetup_state);
} }
#else
static inline void omap_hwmod_init_postsetup(void)
{
}
#endif
#ifdef CONFIG_SOC_OMAP2420 #ifdef CONFIG_SOC_OMAP2420
void __init omap2420_init_early(void) void __init omap2420_init_early(void)
...@@ -615,8 +621,6 @@ void __init omap4430_init_early(void) ...@@ -615,8 +621,6 @@ void __init omap4430_init_early(void)
omap44xx_voltagedomains_init(); omap44xx_voltagedomains_init();
omap44xx_powerdomains_init(); omap44xx_powerdomains_init();
omap44xx_clockdomains_init(); omap44xx_clockdomains_init();
omap44xx_hwmod_init();
omap_hwmod_init_postsetup();
omap_l2_cache_init(); omap_l2_cache_init();
omap_clk_soc_init = omap4xxx_dt_clk_init; omap_clk_soc_init = omap4xxx_dt_clk_init;
omap_secure_init(); omap_secure_init();
...@@ -643,8 +647,6 @@ void __init omap5_init_early(void) ...@@ -643,8 +647,6 @@ void __init omap5_init_early(void)
omap54xx_voltagedomains_init(); omap54xx_voltagedomains_init();
omap54xx_powerdomains_init(); omap54xx_powerdomains_init();
omap54xx_clockdomains_init(); omap54xx_clockdomains_init();
omap54xx_hwmod_init();
omap_hwmod_init_postsetup();
omap_clk_soc_init = omap5xxx_dt_clk_init; omap_clk_soc_init = omap5xxx_dt_clk_init;
omap_secure_init(); omap_secure_init();
} }
...@@ -667,8 +669,6 @@ void __init dra7xx_init_early(void) ...@@ -667,8 +669,6 @@ void __init dra7xx_init_early(void)
dra7xxx_check_revision(); dra7xxx_check_revision();
dra7xx_powerdomains_init(); dra7xx_powerdomains_init();
dra7xx_clockdomains_init(); dra7xx_clockdomains_init();
dra7xx_hwmod_init();
omap_hwmod_init_postsetup();
omap_clk_soc_init = dra7xx_dt_clk_init; omap_clk_soc_init = dra7xx_dt_clk_init;
omap_secure_init(); omap_secure_init();
} }
......
...@@ -2137,6 +2137,7 @@ static int of_dev_hwmod_lookup(struct device_node *np, ...@@ -2137,6 +2137,7 @@ static int of_dev_hwmod_lookup(struct device_node *np,
if (res == 0) { if (res == 0) {
*found = fc; *found = fc;
*index = i; *index = i;
of_node_put(np0);
return 0; return 0;
} }
} }
...@@ -3495,10 +3496,6 @@ static const struct omap_hwmod_reset omap24xx_reset_quirks[] = { ...@@ -3495,10 +3496,6 @@ static const struct omap_hwmod_reset omap24xx_reset_quirks[] = {
{ .match = "msdi", .len = 4, .reset = omap_msdi_reset, }, { .match = "msdi", .len = 4, .reset = omap_msdi_reset, },
}; };
static const struct omap_hwmod_reset dra7_reset_quirks[] = {
{ .match = "pcie", .len = 4, .reset = dra7xx_pciess_reset, },
};
static const struct omap_hwmod_reset omap_reset_quirks[] = { static const struct omap_hwmod_reset omap_reset_quirks[] = {
{ .match = "dss_core", .len = 8, .reset = omap_dss_reset, }, { .match = "dss_core", .len = 8, .reset = omap_dss_reset, },
{ .match = "hdq1w", .len = 5, .reset = omap_hdq1w_reset, }, { .match = "hdq1w", .len = 5, .reset = omap_hdq1w_reset, },
...@@ -3534,10 +3531,6 @@ omap_hwmod_init_reset_quirks(struct device *dev, struct omap_hwmod *oh, ...@@ -3534,10 +3531,6 @@ omap_hwmod_init_reset_quirks(struct device *dev, struct omap_hwmod *oh,
omap24xx_reset_quirks, omap24xx_reset_quirks,
ARRAY_SIZE(omap24xx_reset_quirks)); ARRAY_SIZE(omap24xx_reset_quirks));
if (soc_is_dra7xx())
omap_hwmod_init_reset_quirk(dev, oh, data, dra7_reset_quirks,
ARRAY_SIZE(dra7_reset_quirks));
omap_hwmod_init_reset_quirk(dev, oh, data, omap_reset_quirks, omap_hwmod_init_reset_quirk(dev, oh, data, omap_reset_quirks,
ARRAY_SIZE(omap_reset_quirks)); ARRAY_SIZE(omap_reset_quirks));
} }
......
...@@ -607,6 +607,8 @@ struct omap_hwmod { ...@@ -607,6 +607,8 @@ struct omap_hwmod {
struct omap_hwmod *parent_hwmod; struct omap_hwmod *parent_hwmod;
}; };
#ifdef CONFIG_OMAP_HWMOD
struct device_node; struct device_node;
struct omap_hwmod *omap_hwmod_lookup(const char *name); struct omap_hwmod *omap_hwmod_lookup(const char *name);
...@@ -656,6 +658,17 @@ extern void __init omap_hwmod_init(void); ...@@ -656,6 +658,17 @@ extern void __init omap_hwmod_init(void);
const char *omap_hwmod_get_main_clk(struct omap_hwmod *oh); const char *omap_hwmod_get_main_clk(struct omap_hwmod *oh);
#else /* CONFIG_OMAP_HWMOD */
static inline int
omap_hwmod_for_each_by_class(const char *classname,
int (*fn)(struct omap_hwmod *oh, void *user),
void *user)
{
return 0;
}
#endif /* CONFIG_OMAP_HWMOD */
/* /*
* *
*/ */
...@@ -671,7 +684,6 @@ extern int omap2420_hwmod_init(void); ...@@ -671,7 +684,6 @@ extern int omap2420_hwmod_init(void);
extern int omap2430_hwmod_init(void); extern int omap2430_hwmod_init(void);
extern int omap3xxx_hwmod_init(void); extern int omap3xxx_hwmod_init(void);
extern int omap44xx_hwmod_init(void); extern int omap44xx_hwmod_init(void);
extern int omap54xx_hwmod_init(void);
extern int am33xx_hwmod_init(void); extern int am33xx_hwmod_init(void);
extern int dm814x_hwmod_init(void); extern int dm814x_hwmod_init(void);
extern int dm816x_hwmod_init(void); extern int dm816x_hwmod_init(void);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/** /*
* OMAP and TWL PMIC specific initializations. * OMAP and TWL PMIC specific initializations.
* *
* Copyright (C) 2010 Texas Instruments Incorporated. * Copyright (C) 2010 Texas Instruments Incorporated.
......
...@@ -443,7 +443,7 @@ void omap_auxdata_legacy_init(struct device *dev) ...@@ -443,7 +443,7 @@ void omap_auxdata_legacy_init(struct device *dev)
dev->platform_data = &twl_gpio_auxdata; dev->platform_data = &twl_gpio_auxdata;
} }
#if IS_ENABLED(CONFIG_SND_SOC_OMAP_MCBSP) #if defined(CONFIG_ARCH_OMAP3) && IS_ENABLED(CONFIG_SND_SOC_OMAP_MCBSP)
static struct omap_mcbsp_platform_data mcbsp_pdata; static struct omap_mcbsp_platform_data mcbsp_pdata;
static void __init omap3_mcbsp_init(void) static void __init omap3_mcbsp_init(void)
{ {
...@@ -569,10 +569,29 @@ static void pdata_quirks_check(struct pdata_init *quirks) ...@@ -569,10 +569,29 @@ static void pdata_quirks_check(struct pdata_init *quirks)
} }
} }
void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table) static const char * const pdata_quirks_init_nodes[] = {
"prcm",
"prm",
};
void __init
pdata_quirks_init_clocks(const struct of_device_id *omap_dt_match_table)
{ {
struct device_node *np; struct device_node *np;
int i;
for (i = 0; i < ARRAY_SIZE(pdata_quirks_init_nodes); i++) {
np = of_find_node_by_name(NULL, pdata_quirks_init_nodes[i]);
if (!np)
continue;
of_platform_populate(np, omap_dt_match_table,
omap_auxdata_lookup, NULL);
}
}
void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table)
{
/* /*
* We still need this for omap2420 and omap3 PM to work, others are * We still need this for omap2420 and omap3 PM to work, others are
* using drivers/misc/sram.c already. * using drivers/misc/sram.c already.
...@@ -585,13 +604,7 @@ void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table) ...@@ -585,13 +604,7 @@ void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table)
omap3_mcbsp_init(); omap3_mcbsp_init();
pdata_quirks_check(auxdata_quirks); pdata_quirks_check(auxdata_quirks);
/* Populate always-on PRCM in l4_wkup to probe l4_wkup */ pdata_quirks_init_clocks(omap_dt_match_table);
np = of_find_node_by_name(NULL, "prcm");
if (!np)
np = of_find_node_by_name(NULL, "prm");
if (np)
of_platform_populate(np, omap_dt_match_table,
omap_auxdata_lookup, NULL);
of_platform_populate(NULL, omap_dt_match_table, of_platform_populate(NULL, omap_dt_match_table,
omap_auxdata_lookup, NULL); omap_auxdata_lookup, NULL);
......
...@@ -168,7 +168,7 @@ static int pwrdm_suspend_set(void *data, u64 val) ...@@ -168,7 +168,7 @@ static int pwrdm_suspend_set(void *data, u64 val)
return -EINVAL; return -EINVAL;
} }
DEFINE_SIMPLE_ATTRIBUTE(pwrdm_suspend_fops, pwrdm_suspend_get, DEFINE_DEBUGFS_ATTRIBUTE(pwrdm_suspend_fops, pwrdm_suspend_get,
pwrdm_suspend_set, "%llu\n"); pwrdm_suspend_set, "%llu\n");
static int __init pwrdms_setup(struct powerdomain *pwrdm, void *dir) static int __init pwrdms_setup(struct powerdomain *pwrdm, void *dir)
......
...@@ -1202,26 +1202,26 @@ bool pwrdm_can_ever_lose_context(struct powerdomain *pwrdm) ...@@ -1202,26 +1202,26 @@ bool pwrdm_can_ever_lose_context(struct powerdomain *pwrdm)
if (!pwrdm) { if (!pwrdm) {
pr_debug("powerdomain: %s: invalid powerdomain pointer\n", pr_debug("powerdomain: %s: invalid powerdomain pointer\n",
__func__); __func__);
return 1; return true;
} }
if (pwrdm->pwrsts & PWRSTS_OFF) if (pwrdm->pwrsts & PWRSTS_OFF)
return 1; return true;
if (pwrdm->pwrsts & PWRSTS_RET) { if (pwrdm->pwrsts & PWRSTS_RET) {
if (pwrdm->pwrsts_logic_ret & PWRSTS_OFF) if (pwrdm->pwrsts_logic_ret & PWRSTS_OFF)
return 1; return true;
for (i = 0; i < pwrdm->banks; i++) for (i = 0; i < pwrdm->banks; i++)
if (pwrdm->pwrsts_mem_ret[i] & PWRSTS_OFF) if (pwrdm->pwrsts_mem_ret[i] & PWRSTS_OFF)
return 1; return true;
} }
for (i = 0; i < pwrdm->banks; i++) for (i = 0; i < pwrdm->banks; i++)
if (pwrdm->pwrsts_mem_on[i] & PWRSTS_OFF) if (pwrdm->pwrsts_mem_on[i] & PWRSTS_OFF)
return 1; return true;
return 0; return false;
} }
/** /**
......
...@@ -152,6 +152,7 @@ static int __init sr_init_by_name(const char *name, const char *voltdm) ...@@ -152,6 +152,7 @@ static int __init sr_init_by_name(const char *name, const char *voltdm)
return 0; return 0;
} }
#ifdef CONFIG_OMAP_HWMOD
static int __init sr_dev_init(struct omap_hwmod *oh, void *user) static int __init sr_dev_init(struct omap_hwmod *oh, void *user)
{ {
struct omap_smartreflex_dev_attr *sr_dev_attr; struct omap_smartreflex_dev_attr *sr_dev_attr;
...@@ -165,6 +166,12 @@ static int __init sr_dev_init(struct omap_hwmod *oh, void *user) ...@@ -165,6 +166,12 @@ static int __init sr_dev_init(struct omap_hwmod *oh, void *user)
return sr_init_by_name(oh->name, sr_dev_attr->sensor_voltdm_name); return sr_init_by_name(oh->name, sr_dev_attr->sensor_voltdm_name);
} }
#else
static int __init sr_dev_init(struct omap_hwmod *oh, void *user)
{
return -EINVAL;
}
#endif
/* /*
* API to be called from board files to enable smartreflex * API to be called from board files to enable smartreflex
......
...@@ -384,6 +384,8 @@ static struct s3c2410fb_mach_info rx1950_lcd_cfg = { ...@@ -384,6 +384,8 @@ static struct s3c2410fb_mach_info rx1950_lcd_cfg = {
static struct pwm_lookup rx1950_pwm_lookup[] = { static struct pwm_lookup rx1950_pwm_lookup[] = {
PWM_LOOKUP("samsung-pwm", 0, "pwm-backlight.0", NULL, 48000, PWM_LOOKUP("samsung-pwm", 0, "pwm-backlight.0", NULL, 48000,
PWM_POLARITY_NORMAL), PWM_POLARITY_NORMAL),
PWM_LOOKUP("samsung-pwm", 1, "pwm-backlight.0", "RX1950 LCD", LCD_PWM_PERIOD,
PWM_POLARITY_NORMAL),
}; };
static struct pwm_device *lcd_pwm; static struct pwm_device *lcd_pwm;
...@@ -498,19 +500,18 @@ static void rx1950_bl_power(int enable) ...@@ -498,19 +500,18 @@ static void rx1950_bl_power(int enable)
static int rx1950_backlight_init(struct device *dev) static int rx1950_backlight_init(struct device *dev)
{ {
WARN_ON(gpio_request(S3C2410_GPB(0), "Backlight")); WARN_ON(gpio_request(S3C2410_GPB(0), "Backlight"));
lcd_pwm = pwm_request(1, "RX1950 LCD"); lcd_pwm = pwm_get(dev, "RX1950 LCD");
if (IS_ERR(lcd_pwm)) { if (IS_ERR(lcd_pwm)) {
dev_err(dev, "Unable to request PWM for LCD power!\n"); dev_err(dev, "Unable to request PWM for LCD power!\n");
return PTR_ERR(lcd_pwm); return PTR_ERR(lcd_pwm);
} }
/* /*
* This is only required to initialize .polarity; all other values are * Call pwm_init_state to initialize .polarity and .period. The other
* fixed in this driver. * values are fixed in this driver.
*/ */
pwm_init_state(lcd_pwm, &lcd_pwm_state); pwm_init_state(lcd_pwm, &lcd_pwm_state);
lcd_pwm_state.period = LCD_PWM_PERIOD;
lcd_pwm_state.duty_cycle = LCD_PWM_DUTY; lcd_pwm_state.duty_cycle = LCD_PWM_DUTY;
rx1950_lcd_power(1); rx1950_lcd_power(1);
...@@ -524,7 +525,7 @@ static void rx1950_backlight_exit(struct device *dev) ...@@ -524,7 +525,7 @@ static void rx1950_backlight_exit(struct device *dev)
rx1950_bl_power(0); rx1950_bl_power(0);
rx1950_lcd_power(0); rx1950_lcd_power(0);
pwm_free(lcd_pwm); pwm_put(lcd_pwm);
gpio_free(S3C2410_GPB(0)); gpio_free(S3C2410_GPB(0));
} }
......
...@@ -86,7 +86,7 @@ static int ux500_boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -86,7 +86,7 @@ static int ux500_boot_secondary(unsigned int cpu, struct task_struct *idle)
} }
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
void ux500_cpu_die(unsigned int cpu) static void ux500_cpu_die(unsigned int cpu)
{ {
wfi(); wfi();
} }
......
...@@ -85,7 +85,7 @@ static int dma_lch_count; ...@@ -85,7 +85,7 @@ static int dma_lch_count;
static int dma_chan_count; static int dma_chan_count;
static int omap_dma_reserve_channels; static int omap_dma_reserve_channels;
static spinlock_t dma_chan_lock; static DEFINE_SPINLOCK(dma_chan_lock);
static struct omap_dma_lch *dma_chan; static struct omap_dma_lch *dma_chan;
static inline void disable_lnk(int lch); static inline void disable_lnk(int lch);
...@@ -902,7 +902,6 @@ static int omap_system_dma_probe(struct platform_device *pdev) ...@@ -902,7 +902,6 @@ static int omap_system_dma_probe(struct platform_device *pdev)
if (!dma_chan) if (!dma_chan)
return -ENOMEM; return -ENOMEM;
spin_lock_init(&dma_chan_lock);
for (ch = 0; ch < dma_chan_count; ch++) { for (ch = 0; ch < dma_chan_count; ch++) {
omap_clear_dma(ch); omap_clear_dma(ch);
......
...@@ -635,6 +635,51 @@ static int sysc_parse_and_check_child_range(struct sysc *ddata) ...@@ -635,6 +635,51 @@ static int sysc_parse_and_check_child_range(struct sysc *ddata)
return 0; return 0;
} }
/* Interconnect instances to probe before l4_per instances */
static struct resource early_bus_ranges[] = {
/* am3/4 l4_wkup */
{ .start = 0x44c00000, .end = 0x44c00000 + 0x300000, },
/* omap4/5 and dra7 l4_cfg */
{ .start = 0x4a000000, .end = 0x4a000000 + 0x300000, },
/* omap4 l4_wkup */
{ .start = 0x4a300000, .end = 0x4a300000 + 0x30000, },
/* omap5 and dra7 l4_wkup without dra7 dcan segment */
{ .start = 0x4ae00000, .end = 0x4ae00000 + 0x30000, },
};
static atomic_t sysc_defer = ATOMIC_INIT(10);
/**
* sysc_defer_non_critical - defer non_critical interconnect probing
* @ddata: device driver data
*
* We want to probe l4_cfg and l4_wkup interconnect instances before any
* l4_per instances as l4_per instances depend on resources on l4_cfg and
* l4_wkup interconnects.
*/
static int sysc_defer_non_critical(struct sysc *ddata)
{
struct resource *res;
int i;
if (!atomic_read(&sysc_defer))
return 0;
for (i = 0; i < ARRAY_SIZE(early_bus_ranges); i++) {
res = &early_bus_ranges[i];
if (ddata->module_pa >= res->start &&
ddata->module_pa <= res->end) {
atomic_set(&sysc_defer, 0);
return 0;
}
}
atomic_dec_if_positive(&sysc_defer);
return -EPROBE_DEFER;
}
static struct device_node *stdout_path; static struct device_node *stdout_path;
static void sysc_init_stdout_path(struct sysc *ddata) static void sysc_init_stdout_path(struct sysc *ddata)
...@@ -856,15 +901,19 @@ static int sysc_map_and_check_registers(struct sysc *ddata) ...@@ -856,15 +901,19 @@ static int sysc_map_and_check_registers(struct sysc *ddata)
struct device_node *np = ddata->dev->of_node; struct device_node *np = ddata->dev->of_node;
int error; int error;
if (!of_get_property(np, "reg", NULL))
return 0;
error = sysc_parse_and_check_child_range(ddata); error = sysc_parse_and_check_child_range(ddata);
if (error) if (error)
return error; return error;
error = sysc_defer_non_critical(ddata);
if (error)
return error;
sysc_check_children(ddata); sysc_check_children(ddata);
if (!of_get_property(np, "reg", NULL))
return 0;
error = sysc_parse_registers(ddata); error = sysc_parse_registers(ddata);
if (error) if (error)
return error; return error;
...@@ -1447,12 +1496,16 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = { ...@@ -1447,12 +1496,16 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = {
SYSC_QUIRK("dwc3", 0, 0, 0x10, -ENODEV, 0x500a0200, 0xffffffff, 0), SYSC_QUIRK("dwc3", 0, 0, 0x10, -ENODEV, 0x500a0200, 0xffffffff, 0),
SYSC_QUIRK("d2d", 0x4a0b6000, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0), SYSC_QUIRK("d2d", 0x4a0b6000, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0),
SYSC_QUIRK("d2d", 0x4a0cd000, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0), SYSC_QUIRK("d2d", 0x4a0cd000, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0),
SYSC_QUIRK("elm", 0x48080000, 0, 0x10, 0x14, 0x00000020, 0xffffffff, 0),
SYSC_QUIRK("emif", 0, 0, -ENODEV, -ENODEV, 0x40441403, 0xffff0fff, 0),
SYSC_QUIRK("emif", 0, 0, -ENODEV, -ENODEV, 0x50440500, 0xffffffff, 0),
SYSC_QUIRK("epwmss", 0, 0, 0x4, -ENODEV, 0x47400001, 0xffffffff, 0), SYSC_QUIRK("epwmss", 0, 0, 0x4, -ENODEV, 0x47400001, 0xffffffff, 0),
SYSC_QUIRK("gpu", 0, 0x1fc00, 0x1fc10, -ENODEV, 0, 0, 0), SYSC_QUIRK("gpu", 0, 0x1fc00, 0x1fc10, -ENODEV, 0, 0, 0),
SYSC_QUIRK("gpu", 0, 0xfe00, 0xfe10, -ENODEV, 0x40000000 , 0xffffffff, 0), SYSC_QUIRK("gpu", 0, 0xfe00, 0xfe10, -ENODEV, 0x40000000 , 0xffffffff, 0),
SYSC_QUIRK("hdmi", 0, 0, 0x10, -ENODEV, 0x50031d00, 0xffffffff, 0), SYSC_QUIRK("hdmi", 0, 0, 0x10, -ENODEV, 0x50031d00, 0xffffffff, 0),
SYSC_QUIRK("hsi", 0, 0, 0x10, 0x14, 0x50043101, 0xffffffff, 0), SYSC_QUIRK("hsi", 0, 0, 0x10, 0x14, 0x50043101, 0xffffffff, 0),
SYSC_QUIRK("iss", 0, 0, 0x10, -ENODEV, 0x40000101, 0xffffffff, 0), SYSC_QUIRK("iss", 0, 0, 0x10, -ENODEV, 0x40000101, 0xffffffff, 0),
SYSC_QUIRK("keypad", 0x4a31c000, 0, 0x10, 0x14, 0x00000020, 0xffffffff, 0),
SYSC_QUIRK("mcasp", 0, 0, 0x4, -ENODEV, 0x44306302, 0xffffffff, 0), SYSC_QUIRK("mcasp", 0, 0, 0x4, -ENODEV, 0x44306302, 0xffffffff, 0),
SYSC_QUIRK("mcasp", 0, 0, 0x4, -ENODEV, 0x44307b02, 0xffffffff, 0), SYSC_QUIRK("mcasp", 0, 0, 0x4, -ENODEV, 0x44307b02, 0xffffffff, 0),
SYSC_QUIRK("mcbsp", 0, -ENODEV, 0x8c, -ENODEV, 0, 0, 0), SYSC_QUIRK("mcbsp", 0, -ENODEV, 0x8c, -ENODEV, 0, 0, 0),
...@@ -1464,11 +1517,14 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = { ...@@ -1464,11 +1517,14 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = {
SYSC_QUIRK("ocp2scp", 0, 0, -ENODEV, -ENODEV, 0x50060007, 0xffffffff, 0), SYSC_QUIRK("ocp2scp", 0, 0, -ENODEV, -ENODEV, 0x50060007, 0xffffffff, 0),
SYSC_QUIRK("padconf", 0, 0, 0x10, -ENODEV, 0x4fff0800, 0xffffffff, 0), SYSC_QUIRK("padconf", 0, 0, 0x10, -ENODEV, 0x4fff0800, 0xffffffff, 0),
SYSC_QUIRK("padconf", 0, 0, -ENODEV, -ENODEV, 0x40001100, 0xffffffff, 0), SYSC_QUIRK("padconf", 0, 0, -ENODEV, -ENODEV, 0x40001100, 0xffffffff, 0),
SYSC_QUIRK("pcie", 0x51000000, -ENODEV, -ENODEV, -ENODEV, 0, 0, 0),
SYSC_QUIRK("pcie", 0x51800000, -ENODEV, -ENODEV, -ENODEV, 0, 0, 0),
SYSC_QUIRK("prcm", 0, 0, -ENODEV, -ENODEV, 0x40000100, 0xffffffff, 0), SYSC_QUIRK("prcm", 0, 0, -ENODEV, -ENODEV, 0x40000100, 0xffffffff, 0),
SYSC_QUIRK("prcm", 0, 0, -ENODEV, -ENODEV, 0x00004102, 0xffffffff, 0), SYSC_QUIRK("prcm", 0, 0, -ENODEV, -ENODEV, 0x00004102, 0xffffffff, 0),
SYSC_QUIRK("prcm", 0, 0, -ENODEV, -ENODEV, 0x40000400, 0xffffffff, 0), SYSC_QUIRK("prcm", 0, 0, -ENODEV, -ENODEV, 0x40000400, 0xffffffff, 0),
SYSC_QUIRK("rfbi", 0x4832a800, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0), SYSC_QUIRK("rfbi", 0x4832a800, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0),
SYSC_QUIRK("rfbi", 0x58002000, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0), SYSC_QUIRK("rfbi", 0x58002000, 0, 0x10, 0x14, 0x00000010, 0xffffffff, 0),
SYSC_QUIRK("sata", 0, 0xfc, 0x1100, -ENODEV, 0x5e412000, 0xffffffff, 0),
SYSC_QUIRK("scm", 0, 0, 0x10, -ENODEV, 0x40000900, 0xffffffff, 0), SYSC_QUIRK("scm", 0, 0, 0x10, -ENODEV, 0x40000900, 0xffffffff, 0),
SYSC_QUIRK("scm", 0, 0, -ENODEV, -ENODEV, 0x4e8b0100, 0xffffffff, 0), SYSC_QUIRK("scm", 0, 0, -ENODEV, -ENODEV, 0x4e8b0100, 0xffffffff, 0),
SYSC_QUIRK("scm", 0, 0, -ENODEV, -ENODEV, 0x4f000100, 0xffffffff, 0), SYSC_QUIRK("scm", 0, 0, -ENODEV, -ENODEV, 0x4f000100, 0xffffffff, 0),
...@@ -2802,6 +2858,7 @@ static int sysc_init_soc(struct sysc *ddata) ...@@ -2802,6 +2858,7 @@ static int sysc_init_soc(struct sysc *ddata)
const struct soc_device_attribute *match; const struct soc_device_attribute *match;
struct ti_sysc_platform_data *pdata; struct ti_sysc_platform_data *pdata;
unsigned long features = 0; unsigned long features = 0;
struct device_node *np;
if (sysc_soc) if (sysc_soc)
return 0; return 0;
...@@ -2822,6 +2879,24 @@ static int sysc_init_soc(struct sysc *ddata) ...@@ -2822,6 +2879,24 @@ static int sysc_init_soc(struct sysc *ddata)
if (match && match->data) if (match && match->data)
sysc_soc->soc = (int)match->data; sysc_soc->soc = (int)match->data;
/*
* Check and warn about possible old incomplete dtb. We now want to see
* simple-pm-bus instead of simple-bus in the dtb for genpd using SoCs.
*/
switch (sysc_soc->soc) {
case SOC_AM3:
case SOC_AM4:
case SOC_4430 ... SOC_4470:
case SOC_5430:
case SOC_DRA7:
np = of_find_node_by_path("/ocp");
WARN_ONCE(np && of_device_is_compatible(np, "simple-bus"),
"ti-sysc: Incomplete old dtb, please update\n");
break;
default:
break;
}
/* Ignore devices that are not available on HS and EMU SoCs */ /* Ignore devices that are not available on HS and EMU SoCs */
if (!sysc_soc->general_purpose) { if (!sysc_soc->general_purpose) {
switch (sysc_soc->soc) { switch (sysc_soc->soc) {
......
...@@ -156,6 +156,8 @@ static const struct omap_clkctrl_reg_data omap5_l3main1_clkctrl_regs[] __initcon ...@@ -156,6 +156,8 @@ static const struct omap_clkctrl_reg_data omap5_l3main1_clkctrl_regs[] __initcon
static const struct omap_clkctrl_reg_data omap5_l3main2_clkctrl_regs[] __initconst = { static const struct omap_clkctrl_reg_data omap5_l3main2_clkctrl_regs[] __initconst = {
{ OMAP5_L3_MAIN_2_CLKCTRL, NULL, 0, "l3_iclk_div" }, { OMAP5_L3_MAIN_2_CLKCTRL, NULL, 0, "l3_iclk_div" },
{ OMAP5_L3_MAIN_2_GPMC_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" },
{ OMAP5_L3_MAIN_2_OCMC_RAM_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" },
{ 0 }, { 0 },
}; };
......
...@@ -443,7 +443,7 @@ static const struct dw_pcie_ep_ops pcie_ep_ops = { ...@@ -443,7 +443,7 @@ static const struct dw_pcie_ep_ops pcie_ep_ops = {
.get_features = dra7xx_pcie_get_features, .get_features = dra7xx_pcie_get_features,
}; };
static int __init dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx, static int dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx,
struct platform_device *pdev) struct platform_device *pdev)
{ {
int ret; int ret;
...@@ -472,7 +472,7 @@ static int __init dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx, ...@@ -472,7 +472,7 @@ static int __init dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx,
return 0; return 0;
} }
static int __init dra7xx_add_pcie_port(struct dra7xx_pcie *dra7xx, static int dra7xx_add_pcie_port(struct dra7xx_pcie *dra7xx,
struct platform_device *pdev) struct platform_device *pdev)
{ {
int ret; int ret;
...@@ -682,7 +682,7 @@ static int dra7xx_pcie_configure_two_lane(struct device *dev, ...@@ -682,7 +682,7 @@ static int dra7xx_pcie_configure_two_lane(struct device *dev,
return 0; return 0;
} }
static int __init dra7xx_pcie_probe(struct platform_device *pdev) static int dra7xx_pcie_probe(struct platform_device *pdev)
{ {
u32 reg; u32 reg;
int ret; int ret;
...@@ -938,6 +938,7 @@ static const struct dev_pm_ops dra7xx_pcie_pm_ops = { ...@@ -938,6 +938,7 @@ static const struct dev_pm_ops dra7xx_pcie_pm_ops = {
}; };
static struct platform_driver dra7xx_pcie_driver = { static struct platform_driver dra7xx_pcie_driver = {
.probe = dra7xx_pcie_probe,
.driver = { .driver = {
.name = "dra7-pcie", .name = "dra7-pcie",
.of_match_table = of_dra7xx_pcie_match, .of_match_table = of_dra7xx_pcie_match,
...@@ -946,4 +947,4 @@ static struct platform_driver dra7xx_pcie_driver = { ...@@ -946,4 +947,4 @@ static struct platform_driver dra7xx_pcie_driver = {
}, },
.shutdown = dra7xx_pcie_shutdown, .shutdown = dra7xx_pcie_shutdown,
}; };
builtin_platform_driver_probe(dra7xx_pcie_driver, dra7xx_pcie_probe); builtin_platform_driver(dra7xx_pcie_driver);
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
/* Since we request GPIOs from ourself */ /* Since we request GPIOs from ourself */
#include <linux/pinctrl/consumer.h> #include <linux/pinctrl/consumer.h>
#include <soc/at91/pm.h>
#include "pinctrl-at91.h" #include "pinctrl-at91.h"
#include "core.h" #include "core.h"
......
...@@ -88,6 +88,7 @@ struct omap_reset_data { ...@@ -88,6 +88,7 @@ struct omap_reset_data {
#define OMAP_PRM_HAS_RSTCTRL BIT(0) #define OMAP_PRM_HAS_RSTCTRL BIT(0)
#define OMAP_PRM_HAS_RSTST BIT(1) #define OMAP_PRM_HAS_RSTST BIT(1)
#define OMAP_PRM_HAS_NO_CLKDM BIT(2) #define OMAP_PRM_HAS_NO_CLKDM BIT(2)
#define OMAP_PRM_RET_WHEN_IDLE BIT(3)
#define OMAP_PRM_HAS_RESETS (OMAP_PRM_HAS_RSTCTRL | OMAP_PRM_HAS_RSTST) #define OMAP_PRM_HAS_RESETS (OMAP_PRM_HAS_RSTCTRL | OMAP_PRM_HAS_RSTST)
...@@ -174,7 +175,8 @@ static const struct omap_prm_data omap4_prm_data[] = { ...@@ -174,7 +175,8 @@ static const struct omap_prm_data omap4_prm_data[] = {
.name = "core", .base = 0x4a306700, .name = "core", .base = 0x4a306700,
.pwrstctrl = 0x0, .pwrstst = 0x4, .dmap = &omap_prm_reton, .pwrstctrl = 0x0, .pwrstst = 0x4, .dmap = &omap_prm_reton,
.rstctrl = 0x210, .rstst = 0x214, .clkdm_name = "ducati", .rstctrl = 0x210, .rstst = 0x214, .clkdm_name = "ducati",
.rstmap = rst_map_012 .rstmap = rst_map_012,
.flags = OMAP_PRM_RET_WHEN_IDLE,
}, },
{ {
.name = "ivahd", .base = 0x4a306f00, .name = "ivahd", .base = 0x4a306f00,
...@@ -199,7 +201,8 @@ static const struct omap_prm_data omap4_prm_data[] = { ...@@ -199,7 +201,8 @@ static const struct omap_prm_data omap4_prm_data[] = {
}, },
{ {
.name = "l4per", .base = 0x4a307400, .name = "l4per", .base = 0x4a307400,
.pwrstctrl = 0x0, .pwrstst = 0x4, .dmap = &omap_prm_reton .pwrstctrl = 0x0, .pwrstst = 0x4, .dmap = &omap_prm_reton,
.flags = OMAP_PRM_RET_WHEN_IDLE,
}, },
{ {
.name = "cefuse", .base = 0x4a307600, .name = "cefuse", .base = 0x4a307600,
...@@ -517,7 +520,7 @@ static int omap_prm_domain_power_on(struct generic_pm_domain *domain) ...@@ -517,7 +520,7 @@ static int omap_prm_domain_power_on(struct generic_pm_domain *domain)
{ {
struct omap_prm_domain *prmd; struct omap_prm_domain *prmd;
int ret; int ret;
u32 v; u32 v, mode;
prmd = genpd_to_prm_domain(domain); prmd = genpd_to_prm_domain(domain);
if (!prmd->cap) if (!prmd->cap)
...@@ -530,7 +533,12 @@ static int omap_prm_domain_power_on(struct generic_pm_domain *domain) ...@@ -530,7 +533,12 @@ static int omap_prm_domain_power_on(struct generic_pm_domain *domain)
else else
v = readl_relaxed(prmd->prm->base + prmd->pwrstctrl); v = readl_relaxed(prmd->prm->base + prmd->pwrstctrl);
writel_relaxed(v | OMAP_PRMD_ON_ACTIVE, if (prmd->prm->data->flags & OMAP_PRM_RET_WHEN_IDLE)
mode = OMAP_PRMD_RETENTION;
else
mode = OMAP_PRMD_ON_ACTIVE;
writel_relaxed((v & ~PRM_POWERSTATE_MASK) | mode,
prmd->prm->base + prmd->pwrstctrl); prmd->prm->base + prmd->pwrstctrl);
/* wait for the transition bit to get cleared */ /* wait for the transition bit to get cleared */
......
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
/* l3main2 clocks */ /* l3main2 clocks */
#define OMAP5_L3_MAIN_2_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20) #define OMAP5_L3_MAIN_2_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
#define OMAP5_L3_MAIN_2_GPMC_CLKCTRL OMAP5_CLKCTRL_INDEX(0x28)
#define OMAP5_L3_MAIN_2_OCMC_RAM_CLKCTRL OMAP5_CLKCTRL_INDEX(0x30)
/* ipu clocks */ /* ipu clocks */
#define OMAP5_MMU_IPU_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20) #define OMAP5_MMU_IPU_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
......
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Atmel Power Management
*
* Copyright (C) 2020 Atmel
*
* Author: Lee Jones <lee.jones@linaro.org>
*/
#ifndef __SOC_ATMEL_PM_H
#define __SOC_ATMEL_PM_H
void at91_pinctrl_gpio_suspend(void);
void at91_pinctrl_gpio_resume(void);
#endif /* __SOC_ATMEL_PM_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment