Commit 4a4743e8 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'fixes-nc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC non-critical bug fixes from Arnd Bergmann:
 "These are bug fixes for harmless problems that were not important
  enough to get fixed in 3.17.  The majority of these are OMAP specific,
  but there are also a couple for Marvell mvebu, cns3xxx, and others, as
  well as some updates for the MAINTAINERS file.

  In particular, Robert Jarzmik and Daniel Mack now volunteered to help
  out maintaining the PXA platform, Krzysztof Halasa took over the
  cns3xxx platform, Carlo Caione is the maintainer for the new Amlogic
  meson platform, and Matthias Brugger is now listed for the mediatek
  platform he recently contributed"

* tag 'fixes-nc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (42 commits)
  MAINTAINERS: update Shawn's email address
  MAINTAINERS: condense some Tegra related entries
  MAINTAINERS: add Alexandre Courbot for Tegra
  MAINTAINERS: CNS3xxx and IXP4xx update.
  MAINTAINERS: Add maintainers entry for Mediatek SoCs
  arm, vt8500, LLVMLlinux: Use mcr instead of mcr% for mach-vt8500
  MAINTAINERS: add a third maintainer to mach-bcm
  CNS3xxx: Fix PCIe read size limit.
  CNS3xxx: Fix logical PCIe topology.
  CNS3xxx: Fix debug UART.
  MAINTAINERS: Add entry for the Amlogic MesonX SoCs
  MAINTAINERS: update ARM pxa maintainers
  ARM: at91/PMC: don't forget to write PMC_PCDR register to disable clocks
  ARM: at91: fix at91sam9263ek DT mmc pinmuxing settings
  ARM: mvebu: Netgear RN102: Use Hardware BCH ECC
  ARM: Kirkwood: Fix DT based DSA.
  ARM: OMAP2+: make of_device_ids const
  ARM: omap2: make arrays containing machine compatible strings const
  ARM: LPC32xx: Fix reset function
  ARM: mvebu: Netgear RN2120: Use Hardware BCH ECC
  ...
parents da01e614 5df27823
...@@ -846,6 +846,12 @@ M: Emilio López <emilio@elopez.com.ar> ...@@ -846,6 +846,12 @@ M: Emilio López <emilio@elopez.com.ar>
S: Maintained S: Maintained
F: drivers/clk/sunxi/ F: drivers/clk/sunxi/
ARM/Amlogic MesonX SoC support
M: Carlo Caione <carlo@caione.org>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained
N: meson[x68]
ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES
M: Andrew Victor <linux@maxim.org.za> M: Andrew Victor <linux@maxim.org.za>
M: Nicolas Ferre <nicolas.ferre@atmel.com> M: Nicolas Ferre <nicolas.ferre@atmel.com>
...@@ -872,10 +878,9 @@ S: Maintained ...@@ -872,10 +878,9 @@ S: Maintained
F: arch/arm/mach-highbank/ F: arch/arm/mach-highbank/
ARM/CAVIUM NETWORKS CNS3XXX MACHINE SUPPORT ARM/CAVIUM NETWORKS CNS3XXX MACHINE SUPPORT
M: Anton Vorontsov <anton@enomsg.org> M: Krzysztof Halasa <khalasa@piap.pl>
S: Maintained S: Maintained
F: arch/arm/mach-cns3xxx/ F: arch/arm/mach-cns3xxx/
T: git git://git.infradead.org/users/cbou/linux-cns3xxx.git
ARM/CIRRUS LOGIC CLPS711X ARM ARCHITECTURE ARM/CIRRUS LOGIC CLPS711X ARM ARCHITECTURE
M: Alexander Shiyan <shc_work@mail.ru> M: Alexander Shiyan <shc_work@mail.ru>
...@@ -975,7 +980,7 @@ F: arch/arm/include/asm/hardware/dec21285.h ...@@ -975,7 +980,7 @@ F: arch/arm/include/asm/hardware/dec21285.h
F: arch/arm/mach-footbridge/ F: arch/arm/mach-footbridge/
ARM/FREESCALE IMX / MXC ARM ARCHITECTURE ARM/FREESCALE IMX / MXC ARM ARCHITECTURE
M: Shawn Guo <shawn.guo@freescale.com> M: Shawn Guo <shawn.guo@linaro.org>
M: Sascha Hauer <kernel@pengutronix.de> M: Sascha Hauer <kernel@pengutronix.de>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained S: Maintained
...@@ -1060,7 +1065,7 @@ S: Maintained ...@@ -1060,7 +1065,7 @@ S: Maintained
ARM/INTEL IXP4XX ARM ARCHITECTURE ARM/INTEL IXP4XX ARM ARCHITECTURE
M: Imre Kaloz <kaloz@openwrt.org> M: Imre Kaloz <kaloz@openwrt.org>
M: Krzysztof Halasa <khc@pm.waw.pl> M: Krzysztof Halasa <khalasa@piap.pl>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained S: Maintained
F: arch/arm/mach-ixp4xx/ F: arch/arm/mach-ixp4xx/
...@@ -1156,6 +1161,16 @@ W: http://www.digriz.org.uk/ts78xx/kernel ...@@ -1156,6 +1161,16 @@ W: http://www.digriz.org.uk/ts78xx/kernel
S: Maintained S: Maintained
F: arch/arm/mach-orion5x/ts78xx-* F: arch/arm/mach-orion5x/ts78xx-*
ARM/Mediatek SoC support
M: Matthias Brugger <matthias.bgg@gmail.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained
F: arch/arm/boot/dts/mt6*
F: arch/arm/boot/dts/mt8*
F: arch/arm/mach-mediatek/
N: mtk
K: mediatek
ARM/MICREL KS8695 ARCHITECTURE ARM/MICREL KS8695 ARCHITECTURE
M: Greg Ungerer <gerg@uclinux.org> M: Greg Ungerer <gerg@uclinux.org>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
...@@ -1367,7 +1382,6 @@ F: arch/arm/boot/dts/sh* ...@@ -1367,7 +1382,6 @@ F: arch/arm/boot/dts/sh*
F: arch/arm/configs/ape6evm_defconfig F: arch/arm/configs/ape6evm_defconfig
F: arch/arm/configs/armadillo800eva_defconfig F: arch/arm/configs/armadillo800eva_defconfig
F: arch/arm/configs/bockw_defconfig F: arch/arm/configs/bockw_defconfig
F: arch/arm/configs/genmai_defconfig
F: arch/arm/configs/koelsch_defconfig F: arch/arm/configs/koelsch_defconfig
F: arch/arm/configs/kzm9g_defconfig F: arch/arm/configs/kzm9g_defconfig
F: arch/arm/configs/lager_defconfig F: arch/arm/configs/lager_defconfig
...@@ -2021,6 +2035,7 @@ F: drivers/net/ethernet/broadcom/bnx2x/ ...@@ -2021,6 +2035,7 @@ F: drivers/net/ethernet/broadcom/bnx2x/
BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE
M: Christian Daudt <bcm@fixthebug.org> M: Christian Daudt <bcm@fixthebug.org>
M: Matt Porter <mporter@linaro.org> M: Matt Porter <mporter@linaro.org>
M: Florian Fainelli <f.fainelli@gmail.com>
L: bcm-kernel-feedback-list@broadcom.com L: bcm-kernel-feedback-list@broadcom.com
T: git git://github.com/broadcom/mach-bcm T: git git://github.com/broadcom/mach-bcm
S: Maintained S: Maintained
...@@ -4796,7 +4811,7 @@ S: Odd fixes ...@@ -4796,7 +4811,7 @@ S: Odd fixes
F: drivers/dma/iop-adma.c F: drivers/dma/iop-adma.c
INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
M: Krzysztof Halasa <khc@pm.waw.pl> M: Krzysztof Halasa <khalasa@piap.pl>
S: Maintained S: Maintained
F: arch/arm/mach-ixp4xx/include/mach/qmgr.h F: arch/arm/mach-ixp4xx/include/mach/qmgr.h
F: arch/arm/mach-ixp4xx/include/mach/npe.h F: arch/arm/mach-ixp4xx/include/mach/npe.h
...@@ -7322,12 +7337,12 @@ F: drivers/video/backlight/pwm_bl.c ...@@ -7322,12 +7337,12 @@ F: drivers/video/backlight/pwm_bl.c
F: include/linux/pwm_backlight.h F: include/linux/pwm_backlight.h
PXA2xx/PXA3xx SUPPORT PXA2xx/PXA3xx SUPPORT
M: Eric Miao <eric.y.miao@gmail.com> M: Daniel Mack <daniel@zonque.org>
M: Russell King <linux@arm.linux.org.uk>
M: Haojian Zhuang <haojian.zhuang@gmail.com> M: Haojian Zhuang <haojian.zhuang@gmail.com>
M: Robert Jarzmik <robert.jarzmik@free.fr>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
T: git git://github.com/hzhuang1/linux.git T: git git://github.com/hzhuang1/linux.git
T: git git://git.linaro.org/people/ycmiao/pxa-linux.git T: git git://github.com/rjarzmik/linux.git
S: Maintained S: Maintained
F: arch/arm/mach-pxa/ F: arch/arm/mach-pxa/
F: drivers/pcmcia/pxa2xx* F: drivers/pcmcia/pxa2xx*
...@@ -9044,17 +9059,13 @@ F: drivers/media/rc/ttusbir.c ...@@ -9044,17 +9059,13 @@ F: drivers/media/rc/ttusbir.c
TEGRA ARCHITECTURE SUPPORT TEGRA ARCHITECTURE SUPPORT
M: Stephen Warren <swarren@wwwdotorg.org> M: Stephen Warren <swarren@wwwdotorg.org>
M: Thierry Reding <thierry.reding@gmail.com> M: Thierry Reding <thierry.reding@gmail.com>
M: Alexandre Courbot <gnurou@gmail.com>
L: linux-tegra@vger.kernel.org L: linux-tegra@vger.kernel.org
Q: http://patchwork.ozlabs.org/project/linux-tegra/list/ Q: http://patchwork.ozlabs.org/project/linux-tegra/list/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git
S: Supported S: Supported
N: [^a-z]tegra N: [^a-z]tegra
TEGRA ASOC DRIVER
M: Stephen Warren <swarren@wwwdotorg.org>
S: Supported
F: sound/soc/tegra/
TEGRA CLOCK DRIVER TEGRA CLOCK DRIVER
M: Peter De Schrijver <pdeschrijver@nvidia.com> M: Peter De Schrijver <pdeschrijver@nvidia.com>
M: Prashant Gaikwad <pgaikwad@nvidia.com> M: Prashant Gaikwad <pgaikwad@nvidia.com>
...@@ -9066,11 +9077,6 @@ M: Laxman Dewangan <ldewangan@nvidia.com> ...@@ -9066,11 +9077,6 @@ M: Laxman Dewangan <ldewangan@nvidia.com>
S: Supported S: Supported
F: drivers/dma/tegra20-apb-dma.c F: drivers/dma/tegra20-apb-dma.c
TEGRA GPIO DRIVER
M: Stephen Warren <swarren@wwwdotorg.org>
S: Supported
F: drivers/gpio/gpio-tegra.c
TEGRA I2C DRIVER TEGRA I2C DRIVER
M: Laxman Dewangan <ldewangan@nvidia.com> M: Laxman Dewangan <ldewangan@nvidia.com>
S: Supported S: Supported
...@@ -9087,11 +9093,6 @@ M: Laxman Dewangan <ldewangan@nvidia.com> ...@@ -9087,11 +9093,6 @@ M: Laxman Dewangan <ldewangan@nvidia.com>
S: Supported S: Supported
F: drivers/input/keyboard/tegra-kbc.c F: drivers/input/keyboard/tegra-kbc.c
TEGRA PINCTRL DRIVER
M: Stephen Warren <swarren@wwwdotorg.org>
S: Supported
F: drivers/pinctrl/pinctrl-tegra*
TEGRA PWM DRIVER TEGRA PWM DRIVER
M: Thierry Reding <thierry.reding@gmail.com> M: Thierry Reding <thierry.reding@gmail.com>
S: Supported S: Supported
......
...@@ -147,7 +147,7 @@ choice ...@@ -147,7 +147,7 @@ choice
config DEBUG_CNS3XXX config DEBUG_CNS3XXX
bool "Kernel Kernel low-level debugging on Cavium Networks CNS3xxx" bool "Kernel Kernel low-level debugging on Cavium Networks CNS3xxx"
depends on ARCH_CNS3XXX depends on ARCH_CNS3XXX
select DEBUG_UART_PL01X select DEBUG_UART_8250
help help
Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct
their output to the CNS3xxx UART0. their output to the CNS3xxx UART0.
...@@ -1068,7 +1068,7 @@ config DEBUG_UART_PHYS ...@@ -1068,7 +1068,7 @@ config DEBUG_UART_PHYS
default 0x02530c00 if DEBUG_KEYSTONE_UART0 default 0x02530c00 if DEBUG_KEYSTONE_UART0
default 0x02531000 if DEBUG_KEYSTONE_UART1 default 0x02531000 if DEBUG_KEYSTONE_UART1
default 0x03010fe0 if ARCH_RPC default 0x03010fe0 if ARCH_RPC
default 0x10009000 if DEBUG_REALVIEW_STD_PORT || DEBUG_CNS3XXX || \ default 0x10009000 if DEBUG_REALVIEW_STD_PORT || \
DEBUG_VEXPRESS_UART0_CA9 DEBUG_VEXPRESS_UART0_CA9
default 0x1010c000 if DEBUG_REALVIEW_PB1176_PORT default 0x1010c000 if DEBUG_REALVIEW_PB1176_PORT
default 0x10124000 if DEBUG_RK3X_UART0 default 0x10124000 if DEBUG_RK3X_UART0
...@@ -1094,6 +1094,7 @@ config DEBUG_UART_PHYS ...@@ -1094,6 +1094,7 @@ config DEBUG_UART_PHYS
default 0x50008000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART2 || \ default 0x50008000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART2 || \
DEBUG_S3C2410_UART2) DEBUG_S3C2410_UART2)
default 0x7c0003f8 if FOOTBRIDGE default 0x7c0003f8 if FOOTBRIDGE
default 0x78000000 if DEBUG_CNS3XXX
default 0x80070000 if DEBUG_IMX23_UART default 0x80070000 if DEBUG_IMX23_UART
default 0x80074000 if DEBUG_IMX28_UART default 0x80074000 if DEBUG_IMX28_UART
default 0x80230000 if DEBUG_PICOXCELL_UART default 0x80230000 if DEBUG_PICOXCELL_UART
...@@ -1133,7 +1134,6 @@ config DEBUG_UART_VIRT ...@@ -1133,7 +1134,6 @@ config DEBUG_UART_VIRT
default 0xe0010fe0 if ARCH_RPC default 0xe0010fe0 if ARCH_RPC
default 0xe1000000 if DEBUG_MSM_UART default 0xe1000000 if DEBUG_MSM_UART
default 0xf0000be0 if ARCH_EBSA110 default 0xf0000be0 if ARCH_EBSA110
default 0xf0009000 if DEBUG_CNS3XXX
default 0xf01fb000 if DEBUG_NOMADIK_UART default 0xf01fb000 if DEBUG_NOMADIK_UART
default 0xf0201000 if DEBUG_BCM2835 default 0xf0201000 if DEBUG_BCM2835
default 0xf1000300 if DEBUG_BCM_5301X default 0xf1000300 if DEBUG_BCM_5301X
...@@ -1155,6 +1155,7 @@ config DEBUG_UART_VIRT ...@@ -1155,6 +1155,7 @@ config DEBUG_UART_VIRT
default 0xf8009000 if DEBUG_VEXPRESS_UART0_CA9 default 0xf8009000 if DEBUG_VEXPRESS_UART0_CA9
default 0xf8090000 if DEBUG_VEXPRESS_UART0_RS1 default 0xf8090000 if DEBUG_VEXPRESS_UART0_RS1
default 0xfa71e000 if DEBUG_QCOM_UARTDM default 0xfa71e000 if DEBUG_QCOM_UARTDM
default 0xfb002000 if DEBUG_CNS3XXX
default 0xfb009000 if DEBUG_REALVIEW_STD_PORT default 0xfb009000 if DEBUG_REALVIEW_STD_PORT
default 0xfb10c000 if DEBUG_REALVIEW_PB1176_PORT default 0xfb10c000 if DEBUG_REALVIEW_PB1176_PORT
default 0xfd000000 if ARCH_SPEAR3XX || ARCH_SPEAR6XX default 0xfd000000 if ARCH_SPEAR3XX || ARCH_SPEAR6XX
......
...@@ -144,8 +144,8 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += kirkwood-b3.dtb \ ...@@ -144,8 +144,8 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += kirkwood-b3.dtb \
kirkwood-openrd-client.dtb \ kirkwood-openrd-client.dtb \
kirkwood-openrd-ultimate.dtb \ kirkwood-openrd-ultimate.dtb \
kirkwood-rd88f6192.dtb \ kirkwood-rd88f6192.dtb \
kirkwood-rd88f6281-a0.dtb \ kirkwood-rd88f6281-z0.dtb \
kirkwood-rd88f6281-a1.dtb \ kirkwood-rd88f6281-a.dtb \
kirkwood-rs212.dtb \ kirkwood-rs212.dtb \
kirkwood-rs409.dtb \ kirkwood-rs409.dtb \
kirkwood-rs411.dtb \ kirkwood-rs411.dtb \
......
...@@ -7,9 +7,6 @@ ...@@ -7,9 +7,6 @@
*/ */
/ { / {
model = "TI AM335x BeagleBone";
compatible = "ti,am335x-bone", "ti,am33xx";
cpus { cpus {
cpu@0 { cpu@0 {
cpu0-supply = <&dcdc2_reg>; cpu0-supply = <&dcdc2_reg>;
......
...@@ -10,6 +10,11 @@ ...@@ -10,6 +10,11 @@
#include "am33xx.dtsi" #include "am33xx.dtsi"
#include "am335x-bone-common.dtsi" #include "am335x-bone-common.dtsi"
/ {
model = "TI AM335x BeagleBone";
compatible = "ti,am335x-bone", "ti,am33xx";
};
&ldo3_reg { &ldo3_reg {
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
......
...@@ -10,6 +10,11 @@ ...@@ -10,6 +10,11 @@
#include "am33xx.dtsi" #include "am33xx.dtsi"
#include "am335x-bone-common.dtsi" #include "am335x-bone-common.dtsi"
/ {
model = "TI AM335x BeagleBone Black";
compatible = "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
};
&ldo3_reg { &ldo3_reg {
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
......
...@@ -143,6 +143,10 @@ nand@d0000 { ...@@ -143,6 +143,10 @@ nand@d0000 {
marvell,nand-enable-arbiter; marvell,nand-enable-arbiter;
nand-on-flash-bbt; nand-on-flash-bbt;
/* Use Hardware BCH ECC */
nand-ecc-strength = <4>;
nand-ecc-step-size = <512>;
partition@0 { partition@0 {
label = "u-boot"; label = "u-boot";
reg = <0x0000000 0x180000>; /* 1.5MB */ reg = <0x0000000 0x180000>; /* 1.5MB */
......
...@@ -145,6 +145,10 @@ nand@d0000 { ...@@ -145,6 +145,10 @@ nand@d0000 {
marvell,nand-enable-arbiter; marvell,nand-enable-arbiter;
nand-on-flash-bbt; nand-on-flash-bbt;
/* Use Hardware BCH ECC */
nand-ecc-strength = <4>;
nand-ecc-step-size = <512>;
partition@0 { partition@0 {
label = "u-boot"; label = "u-boot";
reg = <0x0000000 0x180000>; /* 1.5MB */ reg = <0x0000000 0x180000>; /* 1.5MB */
......
...@@ -223,6 +223,10 @@ nand@d0000 { ...@@ -223,6 +223,10 @@ nand@d0000 {
marvell,nand-enable-arbiter; marvell,nand-enable-arbiter;
nand-on-flash-bbt; nand-on-flash-bbt;
/* Use Hardware BCH ECC */
nand-ecc-strength = <4>;
nand-ecc-step-size = <512>;
partition@0 { partition@0 {
label = "u-boot"; label = "u-boot";
reg = <0x0000000 0x180000>; /* 1.5MB */ reg = <0x0000000 0x180000>; /* 1.5MB */
......
...@@ -834,6 +834,7 @@ mmc0: mmc@fff80000 { ...@@ -834,6 +834,7 @@ mmc0: mmc@fff80000 {
compatible = "atmel,hsmci"; compatible = "atmel,hsmci";
reg = <0xfff80000 0x600>; reg = <0xfff80000 0x600>;
interrupts = <10 IRQ_TYPE_LEVEL_HIGH 0>; interrupts = <10 IRQ_TYPE_LEVEL_HIGH 0>;
pinctrl-names = "default";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
clocks = <&mci0_clk>; clocks = <&mci0_clk>;
...@@ -845,6 +846,7 @@ mmc1: mmc@fff84000 { ...@@ -845,6 +846,7 @@ mmc1: mmc@fff84000 {
compatible = "atmel,hsmci"; compatible = "atmel,hsmci";
reg = <0xfff84000 0x600>; reg = <0xfff84000 0x600>;
interrupts = <11 IRQ_TYPE_LEVEL_HIGH 0>; interrupts = <11 IRQ_TYPE_LEVEL_HIGH 0>;
pinctrl-names = "default";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
clocks = <&mci1_clk>; clocks = <&mci1_clk>;
......
...@@ -123,11 +123,11 @@ button@2 { ...@@ -123,11 +123,11 @@ button@2 {
dsa@0 { dsa@0 {
compatible = "marvell,dsa"; compatible = "marvell,dsa";
#address-cells = <2>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
dsa,ethernet = <&eth0>; dsa,ethernet = <&eth0port>;
dsa,mii-bus = <&ethphy0>; dsa,mii-bus = <&mdio>;
switch@0 { switch@0 {
#address-cells = <1>; #address-cells = <1>;
...@@ -169,17 +169,13 @@ port@5 { ...@@ -169,17 +169,13 @@ port@5 {
&mdio { &mdio {
status = "okay"; status = "okay";
ethphy0: ethernet-phy@ff {
reg = <0xff>; /* No phy attached */
speed = <1000>;
duplex = <1>;
};
}; };
&eth0 { &eth0 {
status = "okay"; status = "okay";
ethernet0-port@0 { ethernet0-port@0 {
phy-handle = <&ethphy0>; speed = <1000>;
duplex = <1>;
}; };
}; };
/* /*
* Marvell RD88F6181 A0 Board descrition * Marvell RD88F6181 A Board descrition
* *
* Andrew Lunn <andrew@lunn.ch> * Andrew Lunn <andrew@lunn.ch>
* *
...@@ -7,20 +7,37 @@ ...@@ -7,20 +7,37 @@
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied. * warranty of any kind, whether express or implied.
* *
* This file contains the definitions for the board with the A0 variant of * This file contains the definitions for the board with the A0 or
* the SoC. The ethernet switch does not have a "wan" port. * higher stepping of the SoC. The ethernet switch does not have a
* "wan" port.
*/ */
/dts-v1/; /dts-v1/;
#include "kirkwood-rd88f6281.dtsi" #include "kirkwood-rd88f6281.dtsi"
/ { / {
model = "Marvell RD88f6281 Reference design, with A0 SoC"; model = "Marvell RD88f6281 Reference design, with A0 or higher SoC";
compatible = "marvell,rd88f6281-a0", "marvell,rd88f6281","marvell,kirkwood-88f6281", "marvell,kirkwood"; compatible = "marvell,rd88f6281-a", "marvell,rd88f6281","marvell,kirkwood-88f6281", "marvell,kirkwood";
dsa@0 { dsa@0 {
switch@0 { switch@0 {
reg = <10 0>; /* MDIO address 10, switch 0 in tree */ reg = <10 0>; /* MDIO address 10, switch 0 in tree */
}; };
}; };
}; };
\ No newline at end of file
&mdio {
status = "okay";
ethphy1: ethernet-phy@11 {
reg = <11>;
};
};
&eth1 {
status = "okay";
ethernet1-port@0 {
phy-handle = <&ethphy1>;
};
};
/* /*
* Marvell RD88F6181 A1 Board descrition * Marvell RD88F6181 Z0 stepping descrition
* *
* Andrew Lunn <andrew@lunn.ch> * Andrew Lunn <andrew@lunn.ch>
* *
...@@ -7,17 +7,17 @@ ...@@ -7,17 +7,17 @@
* License version 2. This program is licensed "as is" without any * License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied. * warranty of any kind, whether express or implied.
* *
* This file contains the definitions for the board with the A1 variant of * This file contains the definitions for the board using the Z0
* the SoC. The ethernet switch has a "wan" port. * stepping of the SoC. The ethernet switch has a "wan" port.
*/ */
/dts-v1/; /dts-v1/;
#include "kirkwood-rd88f6281.dtsi" #include "kirkwood-rd88f6281.dtsi"
/ { / {
model = "Marvell RD88f6281 Reference design, with A1 SoC"; model = "Marvell RD88f6281 Reference design, with Z0 SoC";
compatible = "marvell,rd88f6281-a1", "marvell,rd88f6281","marvell,kirkwood-88f6281", "marvell,kirkwood"; compatible = "marvell,rd88f6281-z0", "marvell,rd88f6281","marvell,kirkwood-88f6281", "marvell,kirkwood";
dsa@0 { dsa@0 {
switch@0 { switch@0 {
...@@ -28,4 +28,8 @@ port@4 { ...@@ -28,4 +28,8 @@ port@4 {
}; };
}; };
}; };
}; };
\ No newline at end of file
&eth1 {
status = "disabled";
};
...@@ -37,7 +37,6 @@ pcie@1,0 { ...@@ -37,7 +37,6 @@ pcie@1,0 {
ocp@f1000000 { ocp@f1000000 {
pinctrl: pin-controller@10000 { pinctrl: pin-controller@10000 {
pinctrl-0 = <&pmx_sdio_cd>;
pinctrl-names = "default"; pinctrl-names = "default";
pmx_sdio_cd: pmx-sdio-cd { pmx_sdio_cd: pmx-sdio-cd {
...@@ -69,8 +68,8 @@ dsa@0 { ...@@ -69,8 +68,8 @@ dsa@0 {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <0>; #size-cells = <0>;
dsa,ethernet = <&eth0>; dsa,ethernet = <&eth0port>;
dsa,mii-bus = <&ethphy1>; dsa,mii-bus = <&mdio>;
switch@0 { switch@0 {
#address-cells = <1>; #address-cells = <1>;
...@@ -119,35 +118,19 @@ partition@100000 { ...@@ -119,35 +118,19 @@ partition@100000 {
}; };
partition@300000 { partition@300000 {
label = "data"; label = "rootfs";
reg = <0x0300000 0x500000>; reg = <0x0300000 0x500000>;
}; };
}; };
&mdio { &mdio {
status = "okay"; status = "okay";
ethphy0: ethernet-phy@0 {
reg = <0>;
};
ethphy1: ethernet-phy@ff {
reg = <0xff>; /* No PHY attached */
speed = <1000>;
duple = <1>;
};
}; };
&eth0 { &eth0 {
status = "okay"; status = "okay";
ethernet0-port@0 { ethernet0-port@0 {
phy-handle = <&ethphy0>; speed = <1000>;
}; duplex = <1>;
};
&eth1 {
status = "okay";
ethernet1-port@0 {
phy-handle = <&ethphy1>;
}; };
}; };
...@@ -309,7 +309,7 @@ eth0: ethernet-controller@72000 { ...@@ -309,7 +309,7 @@ eth0: ethernet-controller@72000 {
marvell,tx-checksum-limit = <1600>; marvell,tx-checksum-limit = <1600>;
status = "disabled"; status = "disabled";
ethernet0-port@0 { eth0port: ethernet0-port@0 {
compatible = "marvell,kirkwood-eth-port"; compatible = "marvell,kirkwood-eth-port";
reg = <0>; reg = <0>;
interrupts = <11>; interrupts = <11>;
...@@ -342,7 +342,7 @@ eth1: ethernet-controller@76000 { ...@@ -342,7 +342,7 @@ eth1: ethernet-controller@76000 {
pinctrl-names = "default"; pinctrl-names = "default";
status = "disabled"; status = "disabled";
ethernet1-port@0 { eth1port: ethernet1-port@0 {
compatible = "marvell,kirkwood-eth-port"; compatible = "marvell,kirkwood-eth-port";
reg = <0>; reg = <0>;
interrupts = <15>; interrupts = <15>;
......
...@@ -8,9 +8,6 @@ ...@@ -8,9 +8,6 @@
#include "elpida_ecb240abacn.dtsi" #include "elpida_ecb240abacn.dtsi"
/ { / {
model = "TI OMAP4 PandaBoard";
compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4";
memory { memory {
device_type = "memory"; device_type = "memory";
reg = <0x80000000 0x40000000>; /* 1 GB */ reg = <0x80000000 0x40000000>; /* 1 GB */
......
...@@ -10,6 +10,11 @@ ...@@ -10,6 +10,11 @@
#include "omap4460.dtsi" #include "omap4460.dtsi"
#include "omap4-panda-common.dtsi" #include "omap4-panda-common.dtsi"
/ {
model = "TI OMAP4 PandaBoard-ES";
compatible = "ti,omap4-panda-es", "ti,omap4-panda", "ti,omap4460", "ti,omap4430", "ti,omap4";
};
/* Audio routing is differnet between PandaBoard4430 and PandaBoardES */ /* Audio routing is differnet between PandaBoard4430 and PandaBoardES */
&sound { &sound {
ti,model = "PandaBoardES"; ti,model = "PandaBoardES";
......
...@@ -9,3 +9,8 @@ ...@@ -9,3 +9,8 @@
#include "omap443x.dtsi" #include "omap443x.dtsi"
#include "omap4-panda-common.dtsi" #include "omap4-panda-common.dtsi"
/ {
model = "TI OMAP4 PandaBoard";
compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4";
};
...@@ -962,6 +962,7 @@ static int __init at91_clock_reset(void) ...@@ -962,6 +962,7 @@ static int __init at91_clock_reset(void)
} }
at91_pmc_write(AT91_PMC_SCDR, scdr); at91_pmc_write(AT91_PMC_SCDR, scdr);
at91_pmc_write(AT91_PMC_PCDR, pcdr);
if (cpu_is_sama5d3()) if (cpu_is_sama5d3())
at91_pmc_write(AT91_PMC_PCDR1, pcdr1); at91_pmc_write(AT91_PMC_PCDR1, pcdr1);
......
...@@ -250,5 +250,6 @@ MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board") ...@@ -250,5 +250,6 @@ MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board")
.init_irq = cns3xxx_init_irq, .init_irq = cns3xxx_init_irq,
.init_time = cns3xxx_timer_init, .init_time = cns3xxx_timer_init,
.init_machine = cns3420_init, .init_machine = cns3420_init,
.init_late = cns3xxx_pcie_init_late,
.restart = cns3xxx_restart, .restart = cns3xxx_restart,
MACHINE_END MACHINE_END
...@@ -404,5 +404,6 @@ DT_MACHINE_START(CNS3XXX_DT, "Cavium Networks CNS3xxx") ...@@ -404,5 +404,6 @@ DT_MACHINE_START(CNS3XXX_DT, "Cavium Networks CNS3xxx")
.init_irq = cns3xxx_init_irq, .init_irq = cns3xxx_init_irq,
.init_time = cns3xxx_timer_init, .init_time = cns3xxx_timer_init,
.init_machine = cns3xxx_init, .init_machine = cns3xxx_init,
.init_late = cns3xxx_pcie_init_late,
.restart = cns3xxx_restart, .restart = cns3xxx_restart,
MACHINE_END MACHINE_END
...@@ -21,6 +21,12 @@ void __init cns3xxx_l2x0_init(void); ...@@ -21,6 +21,12 @@ void __init cns3xxx_l2x0_init(void);
static inline void cns3xxx_l2x0_init(void) {} static inline void cns3xxx_l2x0_init(void) {}
#endif /* CONFIG_CACHE_L2X0 */ #endif /* CONFIG_CACHE_L2X0 */
#ifdef CONFIG_PCI
extern void __init cns3xxx_pcie_init_late(void);
#else
static inline void __init cns3xxx_pcie_init_late(void) {}
#endif
void __init cns3xxx_map_io(void); void __init cns3xxx_map_io(void);
void __init cns3xxx_init_irq(void); void __init cns3xxx_init_irq(void);
void cns3xxx_power_off(void); void cns3xxx_power_off(void);
......
...@@ -60,11 +60,10 @@ static void __iomem *cns3xxx_pci_cfg_base(struct pci_bus *bus, ...@@ -60,11 +60,10 @@ static void __iomem *cns3xxx_pci_cfg_base(struct pci_bus *bus,
struct cns3xxx_pcie *cnspci = pbus_to_cnspci(bus); struct cns3xxx_pcie *cnspci = pbus_to_cnspci(bus);
int busno = bus->number; int busno = bus->number;
int slot = PCI_SLOT(devfn); int slot = PCI_SLOT(devfn);
int offset;
void __iomem *base; void __iomem *base;
/* If there is no link, just show the CNS PCI bridge. */ /* If there is no link, just show the CNS PCI bridge. */
if (!cnspci->linked && (busno > 0 || slot > 0)) if (!cnspci->linked && busno > 0)
return NULL; return NULL;
/* /*
...@@ -72,22 +71,21 @@ static void __iomem *cns3xxx_pci_cfg_base(struct pci_bus *bus, ...@@ -72,22 +71,21 @@ static void __iomem *cns3xxx_pci_cfg_base(struct pci_bus *bus,
* we still want to access it. For this to work, we must place * we still want to access it. For this to work, we must place
* the first device on the same bus as the CNS PCI bridge. * the first device on the same bus as the CNS PCI bridge.
*/ */
if (busno == 0) { /* directly connected PCIe bus */ if (busno == 0) { /* internal PCIe bus, host bridge device */
switch (slot) { if (devfn == 0) /* device# and function# are ignored by hw */
case 0: /* host bridge device, function 0 only */
base = cnspci->host_regs; base = cnspci->host_regs;
break; else
case 1: /* directly connected device */ return NULL; /* no such device */
} else if (busno == 1) { /* directly connected PCIe device */
if (slot == 0) /* device# is ignored by hw */
base = cnspci->cfg0_regs; base = cnspci->cfg0_regs;
break; else
default:
return NULL; /* no such device */ return NULL; /* no such device */
}
} else /* remote PCI bus */ } else /* remote PCI bus */
base = cnspci->cfg1_regs; base = cnspci->cfg1_regs + ((busno & 0xf) << 20);
offset = ((busno & 0xf) << 20) | (devfn << 12) | (where & 0xffc); return base + (where & 0xffc) + (devfn << 12);
return base + offset;
} }
static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn, static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
...@@ -167,7 +165,7 @@ static struct pci_ops cns3xxx_pcie_ops = { ...@@ -167,7 +165,7 @@ static struct pci_ops cns3xxx_pcie_ops = {
static int cns3xxx_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) static int cns3xxx_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{ {
struct cns3xxx_pcie *cnspci = pdev_to_cnspci(dev); struct cns3xxx_pcie *cnspci = pdev_to_cnspci(dev);
int irq = cnspci->irqs[slot]; int irq = cnspci->irqs[!!dev->bus->number];
pr_info("PCIe map irq: %04d:%02x:%02x.%02x slot %d, pin %d, irq: %d\n", pr_info("PCIe map irq: %04d:%02x:%02x.%02x slot %d, pin %d, irq: %d\n",
pci_domain_nr(dev->bus), dev->bus->number, PCI_SLOT(dev->devfn), pci_domain_nr(dev->bus), dev->bus->number, PCI_SLOT(dev->devfn),
...@@ -297,15 +295,19 @@ static void __init cns3xxx_pcie_hw_init(struct cns3xxx_pcie *cnspci) ...@@ -297,15 +295,19 @@ static void __init cns3xxx_pcie_hw_init(struct cns3xxx_pcie *cnspci)
return; return;
/* Set Device Max_Read_Request_Size to 128 byte */ /* Set Device Max_Read_Request_Size to 128 byte */
devfn = PCI_DEVFN(1, 0); bus.number = 1; /* directly connected PCIe device */
devfn = PCI_DEVFN(0, 0);
pos = pci_bus_find_capability(&bus, devfn, PCI_CAP_ID_EXP); pos = pci_bus_find_capability(&bus, devfn, PCI_CAP_ID_EXP);
pci_bus_read_config_word(&bus, devfn, pos + PCI_EXP_DEVCTL, &dc); pci_bus_read_config_word(&bus, devfn, pos + PCI_EXP_DEVCTL, &dc);
dc &= ~(0x3 << 12); /* Clear Device Control Register [14:12] */ if (dc & PCI_EXP_DEVCTL_READRQ) {
pci_bus_write_config_word(&bus, devfn, pos + PCI_EXP_DEVCTL, dc); dc &= ~PCI_EXP_DEVCTL_READRQ;
pci_bus_read_config_word(&bus, devfn, pos + PCI_EXP_DEVCTL, &dc); pci_bus_write_config_word(&bus, devfn, pos + PCI_EXP_DEVCTL, dc);
if (!(dc & (0x3 << 12))) pci_bus_read_config_word(&bus, devfn, pos + PCI_EXP_DEVCTL, &dc);
pr_info("PCIe: Set Device Max_Read_Request_Size to 128 byte\n"); if (dc & PCI_EXP_DEVCTL_READRQ)
pr_warn("PCIe: Unable to set device Max_Read_Request_Size\n");
else
pr_info("PCIe: Max_Read_Request_Size set to 128 bytes\n");
}
/* Disable PCIe0 Interrupt Mask INTA to INTD */ /* Disable PCIe0 Interrupt Mask INTA to INTD */
__raw_writel(~0x3FFF, MISC_PCIE_INT_MASK(port)); __raw_writel(~0x3FFF, MISC_PCIE_INT_MASK(port));
} }
...@@ -318,7 +320,7 @@ static int cns3xxx_pcie_abort_handler(unsigned long addr, unsigned int fsr, ...@@ -318,7 +320,7 @@ static int cns3xxx_pcie_abort_handler(unsigned long addr, unsigned int fsr,
return 0; return 0;
} }
static int __init cns3xxx_pcie_init(void) void __init cns3xxx_pcie_init_late(void)
{ {
int i; int i;
...@@ -337,7 +339,4 @@ static int __init cns3xxx_pcie_init(void) ...@@ -337,7 +339,4 @@ static int __init cns3xxx_pcie_init(void)
} }
pci_assign_unassigned_resources(); pci_assign_unassigned_resources();
return 0;
} }
device_initcall(cns3xxx_pcie_init);
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <linux/platform_data/uio_pruss.h> #include <linux/platform_data/uio_pruss.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/regulator/tps6507x.h> #include <linux/regulator/tps6507x.h>
#include <linux/regulator/fixed.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#include <linux/wl12xx.h> #include <linux/wl12xx.h>
...@@ -842,6 +843,16 @@ static int da850_lcd_hw_init(void) ...@@ -842,6 +843,16 @@ static int da850_lcd_hw_init(void)
return 0; return 0;
} }
/* Fixed regulator support */
static struct regulator_consumer_supply fixed_supplies[] = {
/* Baseboard 3.3V: 5V -> TPS73701DCQ -> 3.3V */
REGULATOR_SUPPLY("AVDD", "1-0018"),
REGULATOR_SUPPLY("DRVDD", "1-0018"),
/* Baseboard 1.8V: 5V -> TPS73701DCQ -> 1.8V */
REGULATOR_SUPPLY("DVDD", "1-0018"),
};
/* TPS65070 voltage regulator support */ /* TPS65070 voltage regulator support */
/* 3.3V */ /* 3.3V */
...@@ -865,6 +876,7 @@ static struct regulator_consumer_supply tps65070_dcdc2_consumers[] = { ...@@ -865,6 +876,7 @@ static struct regulator_consumer_supply tps65070_dcdc2_consumers[] = {
{ {
.supply = "dvdd3318_c", .supply = "dvdd3318_c",
}, },
REGULATOR_SUPPLY("IOVDD", "1-0018"),
}; };
/* 1.2V */ /* 1.2V */
...@@ -936,6 +948,7 @@ static struct regulator_init_data tps65070_regulator_data[] = { ...@@ -936,6 +948,7 @@ static struct regulator_init_data tps65070_regulator_data[] = {
.valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE | .valid_ops_mask = (REGULATOR_CHANGE_VOLTAGE |
REGULATOR_CHANGE_STATUS), REGULATOR_CHANGE_STATUS),
.boot_on = 1, .boot_on = 1,
.always_on = 1,
}, },
.num_consumer_supplies = ARRAY_SIZE(tps65070_dcdc2_consumers), .num_consumer_supplies = ARRAY_SIZE(tps65070_dcdc2_consumers),
.consumer_supplies = tps65070_dcdc2_consumers, .consumer_supplies = tps65070_dcdc2_consumers,
...@@ -1446,6 +1459,8 @@ static __init void da850_evm_init(void) ...@@ -1446,6 +1459,8 @@ static __init void da850_evm_init(void)
if (ret) if (ret)
pr_warn("%s: GPIO init failed: %d\n", __func__, ret); pr_warn("%s: GPIO init failed: %d\n", __func__, ret);
regulator_register_fixed(0, fixed_supplies, ARRAY_SIZE(fixed_supplies));
ret = pmic_tps65070_init(); ret = pmic_tps65070_init();
if (ret) if (ret)
pr_warn("%s: TPS65070 PMIC init failed: %d\n", __func__, ret); pr_warn("%s: TPS65070 PMIC init failed: %d\n", __func__, ret);
......
...@@ -56,20 +56,6 @@ int clk_is_sysclk_mainosc(void) ...@@ -56,20 +56,6 @@ int clk_is_sysclk_mainosc(void)
return 0; return 0;
} }
/*
* System reset via the watchdog timer
*/
static void lpc32xx_watchdog_reset(void)
{
/* Make sure WDT clocks are enabled */
__raw_writel(LPC32XX_CLKPWR_PWMCLK_WDOG_EN,
LPC32XX_CLKPWR_TIMER_CLK_CTRL);
/* Instant assert of RESETOUT_N with pulse length 1mS */
__raw_writel(13000, io_p2v(LPC32XX_WDTIM_BASE + 0x18));
__raw_writel(0x70, io_p2v(LPC32XX_WDTIM_BASE + 0xC));
}
/* /*
* Detects and returns IRAM size for the device variation * Detects and returns IRAM size for the device variation
*/ */
...@@ -210,16 +196,13 @@ void __init lpc32xx_map_io(void) ...@@ -210,16 +196,13 @@ void __init lpc32xx_map_io(void)
void lpc23xx_restart(enum reboot_mode mode, const char *cmd) void lpc23xx_restart(enum reboot_mode mode, const char *cmd)
{ {
switch (mode) { /* Make sure WDT clocks are enabled */
case REBOOT_SOFT: __raw_writel(LPC32XX_CLKPWR_PWMCLK_WDOG_EN,
case REBOOT_HARD: LPC32XX_CLKPWR_TIMER_CLK_CTRL);
lpc32xx_watchdog_reset();
break;
default: /* Instant assert of RESETOUT_N with pulse length 1mS */
/* Do nothing */ __raw_writel(13000, io_p2v(LPC32XX_WDTIM_BASE + 0x18));
break; __raw_writel(0x70, io_p2v(LPC32XX_WDTIM_BASE + 0xC));
}
/* Wait for watchdog to reset system */ /* Wait for watchdog to reset system */
while (1) while (1)
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#define gic_of_init NULL #define gic_of_init NULL
#endif #endif
static struct of_device_id omap_dt_match_table[] __initdata = { static const struct of_device_id omap_dt_match_table[] __initconst = {
{ .compatible = "simple-bus", }, { .compatible = "simple-bus", },
{ .compatible = "ti,omap-infra", }, { .compatible = "ti,omap-infra", },
{ } { }
...@@ -43,7 +43,7 @@ static void __init omap_generic_init(void) ...@@ -43,7 +43,7 @@ static void __init omap_generic_init(void)
} }
#ifdef CONFIG_SOC_OMAP2420 #ifdef CONFIG_SOC_OMAP2420
static const char *omap242x_boards_compat[] __initconst = { static const char *const omap242x_boards_compat[] __initconst = {
"ti,omap2420", "ti,omap2420",
NULL, NULL,
}; };
...@@ -62,7 +62,7 @@ MACHINE_END ...@@ -62,7 +62,7 @@ MACHINE_END
#endif #endif
#ifdef CONFIG_SOC_OMAP2430 #ifdef CONFIG_SOC_OMAP2430
static const char *omap243x_boards_compat[] __initconst = { static const char *const omap243x_boards_compat[] __initconst = {
"ti,omap2430", "ti,omap2430",
NULL, NULL,
}; };
...@@ -81,7 +81,7 @@ MACHINE_END ...@@ -81,7 +81,7 @@ MACHINE_END
#endif #endif
#ifdef CONFIG_ARCH_OMAP3 #ifdef CONFIG_ARCH_OMAP3
static const char *omap3_boards_compat[] __initconst = { static const char *const omap3_boards_compat[] __initconst = {
"ti,omap3430", "ti,omap3430",
"ti,omap3", "ti,omap3",
NULL, NULL,
...@@ -100,7 +100,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") ...@@ -100,7 +100,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
.restart = omap3xxx_restart, .restart = omap3xxx_restart,
MACHINE_END MACHINE_END
static const char *omap36xx_boards_compat[] __initconst = { static const char *const omap36xx_boards_compat[] __initconst = {
"ti,omap36xx", "ti,omap36xx",
NULL, NULL,
}; };
...@@ -118,7 +118,7 @@ DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)") ...@@ -118,7 +118,7 @@ DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)")
.restart = omap3xxx_restart, .restart = omap3xxx_restart,
MACHINE_END MACHINE_END
static const char *omap3_gp_boards_compat[] __initconst = { static const char *const omap3_gp_boards_compat[] __initconst = {
"ti,omap3-beagle", "ti,omap3-beagle",
"timll,omap3-devkit8000", "timll,omap3-devkit8000",
NULL, NULL,
...@@ -137,7 +137,7 @@ DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)") ...@@ -137,7 +137,7 @@ DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)")
.restart = omap3xxx_restart, .restart = omap3xxx_restart,
MACHINE_END MACHINE_END
static const char *am3517_boards_compat[] __initconst = { static const char *const am3517_boards_compat[] __initconst = {
"ti,am3517", "ti,am3517",
NULL, NULL,
}; };
...@@ -157,7 +157,7 @@ MACHINE_END ...@@ -157,7 +157,7 @@ MACHINE_END
#endif #endif
#ifdef CONFIG_SOC_AM33XX #ifdef CONFIG_SOC_AM33XX
static const char *am33xx_boards_compat[] __initconst = { static const char *const am33xx_boards_compat[] __initconst = {
"ti,am33xx", "ti,am33xx",
NULL, NULL,
}; };
...@@ -177,7 +177,7 @@ MACHINE_END ...@@ -177,7 +177,7 @@ MACHINE_END
#endif #endif
#ifdef CONFIG_ARCH_OMAP4 #ifdef CONFIG_ARCH_OMAP4
static const char *omap4_boards_compat[] __initconst = { static const char *const omap4_boards_compat[] __initconst = {
"ti,omap4460", "ti,omap4460",
"ti,omap4430", "ti,omap4430",
"ti,omap4", "ti,omap4",
...@@ -199,7 +199,7 @@ MACHINE_END ...@@ -199,7 +199,7 @@ MACHINE_END
#endif #endif
#ifdef CONFIG_SOC_OMAP5 #ifdef CONFIG_SOC_OMAP5
static const char *omap5_boards_compat[] __initconst = { static const char *const omap5_boards_compat[] __initconst = {
"ti,omap5432", "ti,omap5432",
"ti,omap5430", "ti,omap5430",
"ti,omap5", "ti,omap5",
...@@ -221,7 +221,7 @@ MACHINE_END ...@@ -221,7 +221,7 @@ MACHINE_END
#endif #endif
#ifdef CONFIG_SOC_AM43XX #ifdef CONFIG_SOC_AM43XX
static const char *am43_boards_compat[] __initconst = { static const char *const am43_boards_compat[] __initconst = {
"ti,am4372", "ti,am4372",
"ti,am43", "ti,am43",
NULL, NULL,
...@@ -240,7 +240,7 @@ MACHINE_END ...@@ -240,7 +240,7 @@ MACHINE_END
#endif #endif
#ifdef CONFIG_SOC_DRA7XX #ifdef CONFIG_SOC_DRA7XX
static const char *dra74x_boards_compat[] __initconst = { static const char *const dra74x_boards_compat[] __initconst = {
"ti,dra742", "ti,dra742",
"ti,dra7", "ti,dra7",
NULL, NULL,
...@@ -259,7 +259,7 @@ DT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)") ...@@ -259,7 +259,7 @@ DT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)")
.restart = omap44xx_restart, .restart = omap44xx_restart,
MACHINE_END MACHINE_END
static const char *dra72x_boards_compat[] __initconst = { static const char *const dra72x_boards_compat[] __initconst = {
"ti,dra722", "ti,dra722",
NULL, NULL,
}; };
......
...@@ -307,7 +307,7 @@ static inline void omap4_cpu_resume(void) ...@@ -307,7 +307,7 @@ static inline void omap4_cpu_resume(void)
#endif #endif
void pdata_quirks_init(struct of_device_id *); void pdata_quirks_init(const struct of_device_id *);
void omap_auxdata_legacy_init(struct device *dev); void omap_auxdata_legacy_init(struct device *dev);
void omap_pcs_legacy_init(int irq, void (*rearm)(void)); void omap_pcs_legacy_init(int irq, void (*rearm)(void));
......
...@@ -1243,7 +1243,7 @@ int gpmc_cs_program_settings(int cs, struct gpmc_settings *p) ...@@ -1243,7 +1243,7 @@ int gpmc_cs_program_settings(int cs, struct gpmc_settings *p)
} }
#ifdef CONFIG_OF #ifdef CONFIG_OF
static struct of_device_id gpmc_dt_ids[] = { static const struct of_device_id gpmc_dt_ids[] = {
{ .compatible = "ti,omap2420-gpmc" }, { .compatible = "ti,omap2420-gpmc" },
{ .compatible = "ti,omap2430-gpmc" }, { .compatible = "ti,omap2430-gpmc" },
{ .compatible = "ti,omap3430-gpmc" }, /* omap3430 & omap3630 */ { .compatible = "ti,omap3430-gpmc" }, /* omap3430 & omap3630 */
......
...@@ -289,7 +289,7 @@ int __init intc_of_init(struct device_node *node, ...@@ -289,7 +289,7 @@ int __init intc_of_init(struct device_node *node,
return 0; return 0;
} }
static struct of_device_id irq_match[] __initdata = { static const struct of_device_id irq_match[] __initconst = {
{ .compatible = "ti,omap2-intc", .data = intc_of_init, }, { .compatible = "ti,omap2-intc", .data = intc_of_init, },
{ } { }
}; };
......
...@@ -298,6 +298,10 @@ int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state) ...@@ -298,6 +298,10 @@ int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state)
if (omap_rev() == OMAP4430_REV_ES1_0) if (omap_rev() == OMAP4430_REV_ES1_0)
return -ENXIO; return -ENXIO;
/* Use the achievable power state for the domain */
power_state = pwrdm_get_valid_lp_state(pm_info->pwrdm,
false, power_state);
if (power_state == PWRDM_POWER_OFF) if (power_state == PWRDM_POWER_OFF)
cpu_state = 1; cpu_state = 1;
......
...@@ -405,7 +405,7 @@ static void pdata_quirks_check(struct pdata_init *quirks) ...@@ -405,7 +405,7 @@ static void pdata_quirks_check(struct pdata_init *quirks)
} }
} }
void __init pdata_quirks_init(struct of_device_id *omap_dt_match_table) void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table)
{ {
omap_sdrc_init(NULL, NULL); omap_sdrc_init(NULL, NULL);
pdata_quirks_check(auxdata_quirks); pdata_quirks_check(auxdata_quirks);
......
...@@ -29,6 +29,7 @@ u16 pm44xx_errata; ...@@ -29,6 +29,7 @@ u16 pm44xx_errata;
struct power_state { struct power_state {
struct powerdomain *pwrdm; struct powerdomain *pwrdm;
u32 next_state; u32 next_state;
u32 next_logic_state;
#ifdef CONFIG_SUSPEND #ifdef CONFIG_SUSPEND
u32 saved_state; u32 saved_state;
u32 saved_logic_state; u32 saved_logic_state;
...@@ -54,7 +55,7 @@ static int omap4_pm_suspend(void) ...@@ -54,7 +55,7 @@ static int omap4_pm_suspend(void)
/* Set targeted power domain states by suspend */ /* Set targeted power domain states by suspend */
list_for_each_entry(pwrst, &pwrst_list, node) { list_for_each_entry(pwrst, &pwrst_list, node) {
omap_set_pwrdm_state(pwrst->pwrdm, pwrst->next_state); omap_set_pwrdm_state(pwrst->pwrdm, pwrst->next_state);
pwrdm_set_logic_retst(pwrst->pwrdm, PWRDM_POWER_OFF); pwrdm_set_logic_retst(pwrst->pwrdm, pwrst->next_logic_state);
} }
/* /*
...@@ -120,7 +121,11 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused) ...@@ -120,7 +121,11 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused)
return -ENOMEM; return -ENOMEM;
pwrst->pwrdm = pwrdm; pwrst->pwrdm = pwrdm;
pwrst->next_state = PWRDM_POWER_RET; pwrst->next_state = pwrdm_get_valid_lp_state(pwrdm, false,
PWRDM_POWER_RET);
pwrst->next_logic_state = pwrdm_get_valid_lp_state(pwrdm, true,
PWRDM_POWER_OFF);
list_add(&pwrst->node, &pwrst_list); list_add(&pwrst->node, &pwrst_list);
return omap_set_pwrdm_state(pwrst->pwrdm, pwrst->next_state); return omap_set_pwrdm_state(pwrst->pwrdm, pwrst->next_state);
......
...@@ -546,7 +546,8 @@ int pwrdm_for_each_clkdm(struct powerdomain *pwrdm, ...@@ -546,7 +546,8 @@ int pwrdm_for_each_clkdm(struct powerdomain *pwrdm,
return -EINVAL; return -EINVAL;
for (i = 0; i < PWRDM_MAX_CLKDMS && !ret; i++) for (i = 0; i < PWRDM_MAX_CLKDMS && !ret; i++)
ret = (*fn)(pwrdm, pwrdm->pwrdm_clkdms[i]); if (pwrdm->pwrdm_clkdms[i])
ret = (*fn)(pwrdm, pwrdm->pwrdm_clkdms[i]);
return ret; return ret;
} }
...@@ -1079,6 +1080,82 @@ int pwrdm_post_transition(struct powerdomain *pwrdm) ...@@ -1079,6 +1080,82 @@ int pwrdm_post_transition(struct powerdomain *pwrdm)
return 0; return 0;
} }
/**
* pwrdm_get_valid_lp_state() - Find best match deep power state
* @pwrdm: power domain for which we want to find best match
* @is_logic_state: Are we looking for logic state match here? Should
* be one of PWRDM_xxx macro values
* @req_state: requested power state
*
* Returns: closest match for requested power state. default fallback
* is RET for logic state and ON for power state.
*
* This does a search from the power domain data looking for the
* closest valid power domain state that the hardware can achieve.
* PRCM definitions for PWRSTCTRL allows us to program whatever
* configuration we'd like, and PRCM will actually attempt such
* a transition, however if the powerdomain does not actually support it,
* we endup with a hung system. The valid power domain states are already
* available in our powerdomain data files. So this function tries to do
* the following:
* a) find if we have an exact match to the request - no issues.
* b) else find if a deeper power state is possible.
* c) failing which, it tries to find closest higher power state for the
* request.
*/
u8 pwrdm_get_valid_lp_state(struct powerdomain *pwrdm,
bool is_logic_state, u8 req_state)
{
u8 pwrdm_states = is_logic_state ? pwrdm->pwrsts_logic_ret :
pwrdm->pwrsts;
/* For logic, ret is highest and others, ON is highest */
u8 default_pwrst = is_logic_state ? PWRDM_POWER_RET : PWRDM_POWER_ON;
u8 new_pwrst;
bool found;
/* If it is already supported, nothing to search */
if (pwrdm_states & BIT(req_state))
return req_state;
if (!req_state)
goto up_search;
/*
* So, we dont have a exact match
* Can we get a deeper power state match?
*/
new_pwrst = req_state - 1;
found = true;
while (!(pwrdm_states & BIT(new_pwrst))) {
/* No match even at OFF? Not available */
if (new_pwrst == PWRDM_POWER_OFF) {
found = false;
break;
}
new_pwrst--;
}
if (found)
goto done;
up_search:
/* OK, no deeper ones, can we get a higher match? */
new_pwrst = req_state + 1;
while (!(pwrdm_states & BIT(new_pwrst))) {
if (new_pwrst > PWRDM_POWER_ON) {
WARN(1, "powerdomain: %s: Fix max powerstate to ON\n",
pwrdm->name);
return PWRDM_POWER_ON;
}
if (new_pwrst == default_pwrst)
break;
new_pwrst++;
}
done:
return new_pwrst;
}
/** /**
* omap_set_pwrdm_state - change a powerdomain's current power state * omap_set_pwrdm_state - change a powerdomain's current power state
* @pwrdm: struct powerdomain * to change the power state of * @pwrdm: struct powerdomain * to change the power state of
......
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
#define PWRSTS_OFF_RET (PWRSTS_OFF | PWRSTS_RET) #define PWRSTS_OFF_RET (PWRSTS_OFF | PWRSTS_RET)
#define PWRSTS_RET_ON (PWRSTS_RET | PWRSTS_ON) #define PWRSTS_RET_ON (PWRSTS_RET | PWRSTS_ON)
#define PWRSTS_OFF_RET_ON (PWRSTS_OFF_RET | PWRSTS_ON) #define PWRSTS_OFF_RET_ON (PWRSTS_OFF_RET | PWRSTS_ON)
#define PWRSTS_INA_ON (PWRSTS_INACTIVE | PWRSTS_ON)
/* /*
...@@ -219,6 +220,9 @@ struct voltagedomain *pwrdm_get_voltdm(struct powerdomain *pwrdm); ...@@ -219,6 +220,9 @@ struct voltagedomain *pwrdm_get_voltdm(struct powerdomain *pwrdm);
int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm); int pwrdm_get_mem_bank_count(struct powerdomain *pwrdm);
u8 pwrdm_get_valid_lp_state(struct powerdomain *pwrdm,
bool is_logic_state, u8 req_state);
int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst); int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst);
int pwrdm_read_next_pwrst(struct powerdomain *pwrdm); int pwrdm_read_next_pwrst(struct powerdomain *pwrdm);
int pwrdm_read_pwrst(struct powerdomain *pwrdm); int pwrdm_read_pwrst(struct powerdomain *pwrdm);
......
...@@ -35,7 +35,7 @@ static struct powerdomain core_54xx_pwrdm = { ...@@ -35,7 +35,7 @@ static struct powerdomain core_54xx_pwrdm = {
.prcm_offs = OMAP54XX_PRM_CORE_INST, .prcm_offs = OMAP54XX_PRM_CORE_INST,
.prcm_partition = OMAP54XX_PRM_PARTITION, .prcm_partition = OMAP54XX_PRM_PARTITION,
.pwrsts = PWRSTS_RET_ON, .pwrsts = PWRSTS_RET_ON,
.pwrsts_logic_ret = PWRSTS_OFF_RET, .pwrsts_logic_ret = PWRSTS_RET,
.banks = 5, .banks = 5,
.pwrsts_mem_ret = { .pwrsts_mem_ret = {
[0] = PWRSTS_OFF_RET, /* core_nret_bank */ [0] = PWRSTS_OFF_RET, /* core_nret_bank */
...@@ -107,8 +107,8 @@ static struct powerdomain cpu0_54xx_pwrdm = { ...@@ -107,8 +107,8 @@ static struct powerdomain cpu0_54xx_pwrdm = {
.voltdm = { .name = "mpu" }, .voltdm = { .name = "mpu" },
.prcm_offs = OMAP54XX_PRCM_MPU_PRM_C0_INST, .prcm_offs = OMAP54XX_PRCM_MPU_PRM_C0_INST,
.prcm_partition = OMAP54XX_PRCM_MPU_PARTITION, .prcm_partition = OMAP54XX_PRCM_MPU_PARTITION,
.pwrsts = PWRSTS_OFF_RET_ON, .pwrsts = PWRSTS_RET_ON,
.pwrsts_logic_ret = PWRSTS_OFF_RET, .pwrsts_logic_ret = PWRSTS_RET,
.banks = 1, .banks = 1,
.pwrsts_mem_ret = { .pwrsts_mem_ret = {
[0] = PWRSTS_OFF_RET, /* cpu0_l1 */ [0] = PWRSTS_OFF_RET, /* cpu0_l1 */
...@@ -124,8 +124,8 @@ static struct powerdomain cpu1_54xx_pwrdm = { ...@@ -124,8 +124,8 @@ static struct powerdomain cpu1_54xx_pwrdm = {
.voltdm = { .name = "mpu" }, .voltdm = { .name = "mpu" },
.prcm_offs = OMAP54XX_PRCM_MPU_PRM_C1_INST, .prcm_offs = OMAP54XX_PRCM_MPU_PRM_C1_INST,
.prcm_partition = OMAP54XX_PRCM_MPU_PARTITION, .prcm_partition = OMAP54XX_PRCM_MPU_PARTITION,
.pwrsts = PWRSTS_OFF_RET_ON, .pwrsts = PWRSTS_RET_ON,
.pwrsts_logic_ret = PWRSTS_OFF_RET, .pwrsts_logic_ret = PWRSTS_RET,
.banks = 1, .banks = 1,
.pwrsts_mem_ret = { .pwrsts_mem_ret = {
[0] = PWRSTS_OFF_RET, /* cpu1_l1 */ [0] = PWRSTS_OFF_RET, /* cpu1_l1 */
...@@ -158,7 +158,7 @@ static struct powerdomain mpu_54xx_pwrdm = { ...@@ -158,7 +158,7 @@ static struct powerdomain mpu_54xx_pwrdm = {
.prcm_offs = OMAP54XX_PRM_MPU_INST, .prcm_offs = OMAP54XX_PRM_MPU_INST,
.prcm_partition = OMAP54XX_PRM_PARTITION, .prcm_partition = OMAP54XX_PRM_PARTITION,
.pwrsts = PWRSTS_RET_ON, .pwrsts = PWRSTS_RET_ON,
.pwrsts_logic_ret = PWRSTS_OFF_RET, .pwrsts_logic_ret = PWRSTS_RET,
.banks = 2, .banks = 2,
.pwrsts_mem_ret = { .pwrsts_mem_ret = {
[0] = PWRSTS_OFF_RET, /* mpu_l2 */ [0] = PWRSTS_OFF_RET, /* mpu_l2 */
......
...@@ -160,8 +160,8 @@ static struct powerdomain core_7xx_pwrdm = { ...@@ -160,8 +160,8 @@ static struct powerdomain core_7xx_pwrdm = {
.name = "core_pwrdm", .name = "core_pwrdm",
.prcm_offs = DRA7XX_PRM_CORE_INST, .prcm_offs = DRA7XX_PRM_CORE_INST,
.prcm_partition = DRA7XX_PRM_PARTITION, .prcm_partition = DRA7XX_PRM_PARTITION,
.pwrsts = PWRSTS_RET_ON, .pwrsts = PWRSTS_INA_ON,
.pwrsts_logic_ret = PWRSTS_OFF_RET, .pwrsts_logic_ret = PWRSTS_RET,
.banks = 5, .banks = 5,
.pwrsts_mem_ret = { .pwrsts_mem_ret = {
[0] = PWRSTS_OFF_RET, /* core_nret_bank */ [0] = PWRSTS_OFF_RET, /* core_nret_bank */
...@@ -193,8 +193,8 @@ static struct powerdomain cpu0_7xx_pwrdm = { ...@@ -193,8 +193,8 @@ static struct powerdomain cpu0_7xx_pwrdm = {
.name = "cpu0_pwrdm", .name = "cpu0_pwrdm",
.prcm_offs = DRA7XX_MPU_PRCM_PRM_C0_INST, .prcm_offs = DRA7XX_MPU_PRCM_PRM_C0_INST,
.prcm_partition = DRA7XX_MPU_PRCM_PARTITION, .prcm_partition = DRA7XX_MPU_PRCM_PARTITION,
.pwrsts = PWRSTS_OFF_RET_ON, .pwrsts = PWRSTS_RET_ON,
.pwrsts_logic_ret = PWRSTS_OFF_RET, .pwrsts_logic_ret = PWRSTS_RET,
.banks = 1, .banks = 1,
.pwrsts_mem_ret = { .pwrsts_mem_ret = {
[0] = PWRSTS_OFF_RET, /* cpu0_l1 */ [0] = PWRSTS_OFF_RET, /* cpu0_l1 */
...@@ -209,8 +209,8 @@ static struct powerdomain cpu1_7xx_pwrdm = { ...@@ -209,8 +209,8 @@ static struct powerdomain cpu1_7xx_pwrdm = {
.name = "cpu1_pwrdm", .name = "cpu1_pwrdm",
.prcm_offs = DRA7XX_MPU_PRCM_PRM_C1_INST, .prcm_offs = DRA7XX_MPU_PRCM_PRM_C1_INST,
.prcm_partition = DRA7XX_MPU_PRCM_PARTITION, .prcm_partition = DRA7XX_MPU_PRCM_PARTITION,
.pwrsts = PWRSTS_OFF_RET_ON, .pwrsts = PWRSTS_RET_ON,
.pwrsts_logic_ret = PWRSTS_OFF_RET, .pwrsts_logic_ret = PWRSTS_RET,
.banks = 1, .banks = 1,
.pwrsts_mem_ret = { .pwrsts_mem_ret = {
[0] = PWRSTS_OFF_RET, /* cpu1_l1 */ [0] = PWRSTS_OFF_RET, /* cpu1_l1 */
...@@ -243,7 +243,7 @@ static struct powerdomain mpu_7xx_pwrdm = { ...@@ -243,7 +243,7 @@ static struct powerdomain mpu_7xx_pwrdm = {
.prcm_offs = DRA7XX_PRM_MPU_INST, .prcm_offs = DRA7XX_PRM_MPU_INST,
.prcm_partition = DRA7XX_PRM_PARTITION, .prcm_partition = DRA7XX_PRM_PARTITION,
.pwrsts = PWRSTS_RET_ON, .pwrsts = PWRSTS_RET_ON,
.pwrsts_logic_ret = PWRSTS_OFF_RET, .pwrsts_logic_ret = PWRSTS_RET,
.banks = 2, .banks = 2,
.pwrsts_mem_ret = { .pwrsts_mem_ret = {
[0] = PWRSTS_OFF_RET, /* mpu_l2 */ [0] = PWRSTS_OFF_RET, /* mpu_l2 */
......
...@@ -467,7 +467,7 @@ int prm_unregister(struct prm_ll_data *pld) ...@@ -467,7 +467,7 @@ int prm_unregister(struct prm_ll_data *pld)
return 0; return 0;
} }
static struct of_device_id omap_prcm_dt_match_table[] = { static const struct of_device_id omap_prcm_dt_match_table[] = {
{ .compatible = "ti,am3-prcm" }, { .compatible = "ti,am3-prcm" },
{ .compatible = "ti,am3-scrm" }, { .compatible = "ti,am3-scrm" },
{ .compatible = "ti,am4-prcm" }, { .compatible = "ti,am4-prcm" },
......
...@@ -141,7 +141,7 @@ static struct property device_disabled = { ...@@ -141,7 +141,7 @@ static struct property device_disabled = {
.value = "disabled", .value = "disabled",
}; };
static struct of_device_id omap_timer_match[] __initdata = { static const struct of_device_id omap_timer_match[] __initconst = {
{ .compatible = "ti,omap2420-timer", }, { .compatible = "ti,omap2420-timer", },
{ .compatible = "ti,omap3430-timer", }, { .compatible = "ti,omap3430-timer", },
{ .compatible = "ti,omap4430-timer", }, { .compatible = "ti,omap4430-timer", },
...@@ -162,7 +162,7 @@ static struct of_device_id omap_timer_match[] __initdata = { ...@@ -162,7 +162,7 @@ static struct of_device_id omap_timer_match[] __initdata = {
* the timer node in device-tree as disabled, to prevent the kernel from * the timer node in device-tree as disabled, to prevent the kernel from
* registering this timer as a platform device and so no one else can use it. * registering this timer as a platform device and so no one else can use it.
*/ */
static struct device_node * __init omap_get_timer_dt(struct of_device_id *match, static struct device_node * __init omap_get_timer_dt(const struct of_device_id *match,
const char *property) const char *property)
{ {
struct device_node *np; struct device_node *np;
...@@ -388,7 +388,7 @@ static u64 notrace dmtimer_read_sched_clock(void) ...@@ -388,7 +388,7 @@ static u64 notrace dmtimer_read_sched_clock(void)
return 0; return 0;
} }
static struct of_device_id omap_counter_match[] __initdata = { static const struct of_device_id omap_counter_match[] __initconst = {
{ .compatible = "ti,omap-counter32k", }, { .compatible = "ti,omap-counter32k", },
{ } { }
}; };
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
menuconfig PLAT_SPEAR menuconfig PLAT_SPEAR
bool "ST SPEAr Family" if ARCH_MULTI_V7 || ARCH_MULTI_V5 bool "ST SPEAr Family" if ARCH_MULTI_V7 || ARCH_MULTI_V5
default PLAT_SPEAR_SINGLE
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
select ARM_AMBA select ARM_AMBA
select CLKSRC_MMIO select CLKSRC_MMIO
...@@ -13,7 +12,7 @@ if PLAT_SPEAR ...@@ -13,7 +12,7 @@ if PLAT_SPEAR
config ARCH_SPEAR13XX config ARCH_SPEAR13XX
bool "ST SPEAr13xx" bool "ST SPEAr13xx"
depends on ARCH_MULTI_V7 || PLAT_SPEAR_SINGLE depends on ARCH_MULTI_V7
select ARM_GIC select ARM_GIC
select GPIO_SPEAR_SPICS select GPIO_SPEAR_SPICS
select HAVE_ARM_SCU if SMP select HAVE_ARM_SCU if SMP
...@@ -44,7 +43,7 @@ endif #ARCH_SPEAR13XX ...@@ -44,7 +43,7 @@ endif #ARCH_SPEAR13XX
config ARCH_SPEAR3XX config ARCH_SPEAR3XX
bool "ST SPEAr3xx" bool "ST SPEAr3xx"
depends on ARCH_MULTI_V5 || PLAT_SPEAR_SINGLE depends on ARCH_MULTI_V5
depends on !ARCH_SPEAR13XX depends on !ARCH_SPEAR13XX
select ARM_VIC select ARM_VIC
select PINCTRL select PINCTRL
...@@ -75,7 +74,7 @@ endif ...@@ -75,7 +74,7 @@ endif
config ARCH_SPEAR6XX config ARCH_SPEAR6XX
bool "ST SPEAr6XX" bool "ST SPEAr6XX"
depends on ARCH_MULTI_V5 || PLAT_SPEAR_SINGLE depends on ARCH_MULTI_V5
depends on !ARCH_SPEAR13XX depends on !ARCH_SPEAR13XX
select ARM_VIC select ARM_VIC
help help
...@@ -88,7 +87,7 @@ config MACH_SPEAR600 ...@@ -88,7 +87,7 @@ config MACH_SPEAR600
Supports ST SPEAr600 boards configured via the device-tree Supports ST SPEAr600 boards configured via the device-tree
config ARCH_SPEAR_AUTO config ARCH_SPEAR_AUTO
def_bool PLAT_SPEAR_SINGLE bool
depends on !ARCH_SPEAR13XX && !ARCH_SPEAR6XX depends on !ARCH_SPEAR13XX && !ARCH_SPEAR6XX
select ARCH_SPEAR3XX select ARCH_SPEAR3XX
......
...@@ -69,7 +69,7 @@ static void vt8500_power_off(void) ...@@ -69,7 +69,7 @@ static void vt8500_power_off(void)
{ {
local_irq_disable(); local_irq_disable();
writew(5, pmc_base + VT8500_HCR_REG); writew(5, pmc_base + VT8500_HCR_REG);
asm("mcr%? p15, 0, %0, c7, c0, 4" : : "r" (0)); asm("mcr p15, 0, %0, c7, c0, 4" : : "r" (0));
} }
static void __init vt8500_init(void) static void __init vt8500_init(void)
......
...@@ -299,7 +299,7 @@ config SATA_HIGHBANK ...@@ -299,7 +299,7 @@ config SATA_HIGHBANK
config SATA_MV config SATA_MV
tristate "Marvell SATA support" tristate "Marvell SATA support"
depends on PCI || ARCH_DOVE || ARCH_KIRKWOOD || ARCH_MV78XX0 || \ depends on PCI || ARCH_DOVE || ARCH_MV78XX0 || \
ARCH_MVEBU || ARCH_ORION5X || COMPILE_TEST ARCH_MVEBU || ARCH_ORION5X || COMPILE_TEST
select GENERIC_PHY select GENERIC_PHY
help help
......
...@@ -77,7 +77,7 @@ config ARM_EXYNOS5440_CPUFREQ ...@@ -77,7 +77,7 @@ config ARM_EXYNOS5440_CPUFREQ
config ARM_EXYNOS_CPU_FREQ_BOOST_SW config ARM_EXYNOS_CPU_FREQ_BOOST_SW
bool "EXYNOS Frequency Overclocking - Software" bool "EXYNOS Frequency Overclocking - Software"
depends on ARM_EXYNOS_CPUFREQ depends on ARM_EXYNOS_CPUFREQ && THERMAL
select CPU_FREQ_BOOST_SW select CPU_FREQ_BOOST_SW
select EXYNOS_THERMAL select EXYNOS_THERMAL
help help
...@@ -119,7 +119,7 @@ config ARM_INTEGRATOR ...@@ -119,7 +119,7 @@ config ARM_INTEGRATOR
If in doubt, say Y. If in doubt, say Y.
config ARM_KIRKWOOD_CPUFREQ config ARM_KIRKWOOD_CPUFREQ
def_bool ARCH_KIRKWOOD || MACH_KIRKWOOD def_bool MACH_KIRKWOOD
help help
This adds the CPUFreq driver for Marvell Kirkwood This adds the CPUFreq driver for Marvell Kirkwood
SoCs. SoCs.
......
...@@ -28,7 +28,7 @@ config ARM_HIGHBANK_CPUIDLE ...@@ -28,7 +28,7 @@ config ARM_HIGHBANK_CPUIDLE
config ARM_KIRKWOOD_CPUIDLE config ARM_KIRKWOOD_CPUIDLE
bool "CPU Idle Driver for Marvell Kirkwood SoCs" bool "CPU Idle Driver for Marvell Kirkwood SoCs"
depends on ARCH_KIRKWOOD || MACH_KIRKWOOD depends on MACH_KIRKWOOD
help help
This adds the CPU Idle driver for Marvell Kirkwood SoCs. This adds the CPU Idle driver for Marvell Kirkwood SoCs.
......
...@@ -410,7 +410,7 @@ config LEDS_MC13783 ...@@ -410,7 +410,7 @@ config LEDS_MC13783
config LEDS_NS2 config LEDS_NS2
tristate "LED support for Network Space v2 GPIO LEDs" tristate "LED support for Network Space v2 GPIO LEDs"
depends on LEDS_CLASS depends on LEDS_CLASS
depends on ARCH_KIRKWOOD || MACH_KIRKWOOD depends on MACH_KIRKWOOD
default y default y
help help
This option enable support for the dual-GPIO LED found on the This option enable support for the dual-GPIO LED found on the
...@@ -420,7 +420,7 @@ config LEDS_NS2 ...@@ -420,7 +420,7 @@ config LEDS_NS2
config LEDS_NETXBIG config LEDS_NETXBIG
tristate "LED support for Big Network series LEDs" tristate "LED support for Big Network series LEDs"
depends on LEDS_CLASS depends on LEDS_CLASS
depends on ARCH_KIRKWOOD || MACH_KIRKWOOD depends on MACH_KIRKWOOD
default y default y
help help
This option enable support for LEDs found on the LaCie 2Big This option enable support for LEDs found on the LaCie 2Big
......
...@@ -1198,7 +1198,7 @@ config RTC_DRV_TX4939 ...@@ -1198,7 +1198,7 @@ config RTC_DRV_TX4939
config RTC_DRV_MV config RTC_DRV_MV
tristate "Marvell SoC RTC" tristate "Marvell SoC RTC"
depends on ARCH_KIRKWOOD || ARCH_DOVE || ARCH_MVEBU depends on ARCH_DOVE || ARCH_MVEBU
help help
If you say yes here you will get support for the in-chip RTC If you say yes here you will get support for the in-chip RTC
that can be found in some of Marvell's SoC devices, such as that can be found in some of Marvell's SoC devices, such as
......
...@@ -143,7 +143,7 @@ config RCAR_THERMAL ...@@ -143,7 +143,7 @@ config RCAR_THERMAL
config KIRKWOOD_THERMAL config KIRKWOOD_THERMAL
tristate "Temperature sensor on Marvell Kirkwood SoCs" tristate "Temperature sensor on Marvell Kirkwood SoCs"
depends on ARCH_KIRKWOOD || MACH_KIRKWOOD depends on MACH_KIRKWOOD
depends on OF depends on OF
help help
Support for the Kirkwood thermal sensor driver into the Linux thermal Support for the Kirkwood thermal sensor driver into the Linux thermal
......
...@@ -301,7 +301,7 @@ config DAVINCI_WATCHDOG ...@@ -301,7 +301,7 @@ config DAVINCI_WATCHDOG
config ORION_WATCHDOG config ORION_WATCHDOG
tristate "Orion watchdog" tristate "Orion watchdog"
depends on ARCH_ORION5X || ARCH_KIRKWOOD || ARCH_DOVE || MACH_DOVE || ARCH_MVEBU depends on ARCH_ORION5X || ARCH_DOVE || MACH_DOVE || ARCH_MVEBU
select WATCHDOG_CORE select WATCHDOG_CORE
help help
Say Y here if to include support for the watchdog timer Say Y here if to include support for the watchdog timer
......
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