From b7ae8bf7bf3c9db304aa582e5c26fc74ae636998 Mon Sep 17 00:00:00 2001 From: Ivan Khoronzhuk Date: Fri, 23 May 2014 16:53:58 -0400 Subject: ARM: keystone: remove redundant reset stuff Remove reset stuff in flavour of using keystone reset driver: driver/power/reset/keystone-reset.c Reviewed-by: Arnd Bergmann Signed-off-by: Ivan Khoronzhuk Signed-off-by: Santosh Shilimkar --- arch/arm/mach-keystone/keystone.c | 34 ---------------------------------- 1 file changed, 34 deletions(-) (limited to 'arch') diff --git a/arch/arm/mach-keystone/keystone.c b/arch/arm/mach-keystone/keystone.c index 59b8383cbdb0..1f9ae89ee06d 100644 --- a/arch/arm/mach-keystone/keystone.c +++ b/arch/arm/mach-keystone/keystone.c @@ -26,11 +26,6 @@ #include "keystone.h" -#define PLL_RESET_WRITE_KEY_MASK 0xffff0000 -#define PLL_RESET_WRITE_KEY 0x5a69 -#define PLL_RESET BIT(16) - -static void __iomem *keystone_rstctrl; static struct notifier_block platform_nb; static unsigned long keystone_dma_pfn_offset __read_mostly; @@ -55,16 +50,6 @@ static int keystone_platform_notifier(struct notifier_block *nb, static void __init keystone_init(void) { - struct device_node *node; - - node = of_find_compatible_node(NULL, NULL, "ti,keystone-reset"); - if (WARN_ON(!node)) - pr_warn("ti,keystone-reset node undefined\n"); - - keystone_rstctrl = of_iomap(node, 0); - if (WARN_ON(!keystone_rstctrl)) - pr_warn("ti,keystone-reset iomap error\n"); - keystone_pm_runtime_init(); if (platform_nb.notifier_call) bus_register_notifier(&platform_bus_type, &platform_nb); @@ -123,24 +108,6 @@ static const char *keystone_match[] __initconst = { NULL, }; -void keystone_restart(enum reboot_mode mode, const char *cmd) -{ - u32 val; - - BUG_ON(!keystone_rstctrl); - - /* Enable write access to RSTCTRL */ - val = readl(keystone_rstctrl); - val &= PLL_RESET_WRITE_KEY_MASK; - val |= PLL_RESET_WRITE_KEY; - writel(val, keystone_rstctrl); - - /* Reset the SOC */ - val = readl(keystone_rstctrl); - val &= ~PLL_RESET; - writel(val, keystone_rstctrl); -} - DT_MACHINE_START(KEYSTONE, "Keystone") #if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE) .dma_zone_size = SZ_2G, @@ -148,6 +115,5 @@ DT_MACHINE_START(KEYSTONE, "Keystone") .smp = smp_ops(keystone_smp_ops), .init_machine = keystone_init, .dt_compat = keystone_match, - .restart = keystone_restart, .init_meminfo = keystone_init_meminfo, MACHINE_END -- cgit v1.2.3 From ded79bebcace01c803c8b71871fd13c90ca5cffd Mon Sep 17 00:00:00 2001 From: Ivan Khoronzhuk Date: Fri, 23 May 2014 16:34:55 -0400 Subject: ARM: dts: keystone: update reset node to work with reset driver The pll controller register set and device state control registers include sets of registers with different purposes, so it's logically to add syscon entry to be able to access them from appropriate places. So added pll controller and device state control syscon entries. The keystone driver requires the next additional properties: "ti,syscon-pll" - phandle/offset pair. The phandle to syscon used to access pll controller registers and the offset to use reset control registers. "ti,syscon-dev" - phandle/offset pair. The phandle to syscon used to access device state control registers and the offset in order to use mux block registers for all watchdogs. "ti,wdt-list" - option to declare what watchdogs are used to reboot the SoC, so set "0" WDT as default. Reviewed-by: Arnd Bergmann Signed-off-by: Ivan Khoronzhuk Signed-off-by: Santosh Shilimkar --- arch/arm/boot/dts/keystone.dtsi | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'arch') diff --git a/arch/arm/boot/dts/keystone.dtsi b/arch/arm/boot/dts/keystone.dtsi index 90823eb90c1b..a8052fd657e5 100644 --- a/arch/arm/boot/dts/keystone.dtsi +++ b/arch/arm/boot/dts/keystone.dtsi @@ -67,9 +67,21 @@ interrupt-parent = <&gic>; ranges = <0x0 0x0 0x0 0xc0000000>; + pllctrl: pll-controller@02310000 { + compatible = "ti,keystone-pllctrl", "syscon"; + reg = <0x02310000 0x200>; + }; + + devctrl: device-state-control@02620000 { + compatible = "ti,keystone-devctrl", "syscon"; + reg = <0x02620000 0x1000>; + }; + rstctrl: reset-controller { compatible = "ti,keystone-reset"; - reg = <0x023100e8 4>; /* pll reset control reg */ + ti,syscon-pll = <&pllctrl 0xe4>; + ti,syscon-dev = <&devctrl 0x328>; + ti,wdt-list = <0>; }; /include/ "keystone-clocks.dtsi" -- cgit v1.2.3 From 6234ca670d5703ee4d22042e974657c57fe8364b Mon Sep 17 00:00:00 2001 From: Ivan Khoronzhuk Date: Fri, 23 May 2014 16:34:55 -0400 Subject: ARM: configs: keystone: enable reset driver support Enable reset driver support in order to have opportunity to reboot SoC by watchdog and by software. Reviewed-by: Arnd Bergmann Signed-off-by: Ivan Khoronzhuk [santosh.shilimkar@ti.com: Fixed the subject line] Signed-off-by: Santosh Shilimkar --- arch/arm/configs/keystone_defconfig | 3 +++ 1 file changed, 3 insertions(+) (limited to 'arch') diff --git a/arch/arm/configs/keystone_defconfig b/arch/arm/configs/keystone_defconfig index 07b43277ccd3..dc0da3f455e5 100644 --- a/arch/arm/configs/keystone_defconfig +++ b/arch/arm/configs/keystone_defconfig @@ -132,6 +132,9 @@ CONFIG_SPI=y CONFIG_SPI_DAVINCI=y CONFIG_SPI_SPIDEV=y # CONFIG_HWMON is not set +CONFIG_POWER_SUPPLY=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_KEYSTONE=y CONFIG_WATCHDOG=y CONFIG_WATCHDOG_CORE=y CONFIG_DAVINCI_WATCHDOG=y -- cgit v1.2.3