* [Patch v6 0/7] Introduce keystone reset driver
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
These patches introduce keystone reset driver.
The keystone SoC can be rebooted in several ways. By external reset
pin, by soft and by watchdogs. This driver allows software reset and reset
by one of the watchdogs. Also added opportunity to set soft/hard reset type.
Based on linux-next/master
v6..v5
clock: keystone-pllctrl: add bindings for keystone pll controller
mfd: ti-keystone-devctrl: add bindings for device state control
power: reset: add bindings for keystone reset driver
ARM: dts: keystone: update reset node to work with reset driver
- for nodes s/device-state-control/device-state-control@02620000/g
- for nodes s/pll-controller/pll-controller@02310000/g
mfd: ti-keystone-devctrl: add bindings for device state control
- corrected description for reg property
v5..v4
power: reset: keystone-reset: introduce keystone reset driver
- changed to get rsmux and rspll offsets from DT
clock: keystone-pllctrl: add bindings for keystone pll controller
- new patch
mfd: ti-keystone-devctrl: add bindings for device state control
- new patch
power: reset: add bindings for keystone reset driver
- corrected description of "ti,syscon-pll", "ti,syscon-dev" properties
- corrected examples
ARM: dts: keystone: update reset node to work with reset driver
- added nodes for pll-controller and device-state-controll
- added offsets to "ti,syscon-pll", "ti,syscon-dev" properties
v4..v3
Power: reset: keystone-reset: introduce keystone reset driver
- changed to use syscon framework
- changed to use regmap to access registers
Power: reset: add bindings for keystone reset driver
- deleted properties "reg", "reg-names"
- added properties "ti,syscon-pll", "ti,syscon-dev"
ARM: dts: keystone: update reset node to work with reset driver
- deleted properties "reg", "reg-names"
- added properties "ti,syscon-pll", "ti,syscon-dev"
v2..v3
Power: reset: keystone-reset: introduce keystone reset driver
- no functional changes, only sanity
Power: reset: add bindings for keystone reset driver
- corrected WDT numeration in examples
- extended description of wdt_list property
v1..v2
- re based on v3.15-rc1 without changes
Ivan Khoronzhuk (7):
power: reset: keystone-reset: introduce keystone reset driver
clock: keystone-pllctrl: add bindings for keystone pll controller
mfd: ti-keystone-devctrl: add bindings for device state control
power: reset: add bindings for keystone reset driver
ARM: keystone: remove redundant reset stuff
ARM: dts: keystone: update reset node to work with reset driver
ARM: keystone: enable reset driver support
.../bindings/clock/ti-keystone-pllctrl.txt | 20 +++
.../bindings/mfd/ti-keystone-devctrl.txt | 19 +++
.../bindings/power/reset/keystone-reset.txt | 67 +++++++++
arch/arm/boot/dts/keystone.dtsi | 14 +-
arch/arm/configs/keystone_defconfig | 3 +
arch/arm/mach-keystone/keystone.c | 34 -----
drivers/power/reset/Kconfig | 8 +
drivers/power/reset/Makefile | 1 +
drivers/power/reset/keystone-reset.c | 166 +++++++++++++++++++++
9 files changed, 297 insertions(+), 35 deletions(-)
create mode 100644 Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
create mode 100644 Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
create mode 100644 Documentation/devicetree/bindings/power/reset/keystone-reset.txt
create mode 100644 drivers/power/reset/keystone-reset.c
--
1.8.3.2
^ permalink raw reply [flat|nested] 34+ messages in thread
* [Patch v6 0/7] Introduce keystone reset driver
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
These patches introduce keystone reset driver.
The keystone SoC can be rebooted in several ways. By external reset
pin, by soft and by watchdogs. This driver allows software reset and reset
by one of the watchdogs. Also added opportunity to set soft/hard reset type.
Based on linux-next/master
v6..v5
clock: keystone-pllctrl: add bindings for keystone pll controller
mfd: ti-keystone-devctrl: add bindings for device state control
power: reset: add bindings for keystone reset driver
ARM: dts: keystone: update reset node to work with reset driver
- for nodes s/device-state-control/device-state-control@02620000/g
- for nodes s/pll-controller/pll-controller@02310000/g
mfd: ti-keystone-devctrl: add bindings for device state control
- corrected description for reg property
v5..v4
power: reset: keystone-reset: introduce keystone reset driver
- changed to get rsmux and rspll offsets from DT
clock: keystone-pllctrl: add bindings for keystone pll controller
- new patch
mfd: ti-keystone-devctrl: add bindings for device state control
- new patch
power: reset: add bindings for keystone reset driver
- corrected description of "ti,syscon-pll", "ti,syscon-dev" properties
- corrected examples
ARM: dts: keystone: update reset node to work with reset driver
- added nodes for pll-controller and device-state-controll
- added offsets to "ti,syscon-pll", "ti,syscon-dev" properties
v4..v3
Power: reset: keystone-reset: introduce keystone reset driver
- changed to use syscon framework
- changed to use regmap to access registers
Power: reset: add bindings for keystone reset driver
- deleted properties "reg", "reg-names"
- added properties "ti,syscon-pll", "ti,syscon-dev"
ARM: dts: keystone: update reset node to work with reset driver
- deleted properties "reg", "reg-names"
- added properties "ti,syscon-pll", "ti,syscon-dev"
v2..v3
Power: reset: keystone-reset: introduce keystone reset driver
- no functional changes, only sanity
Power: reset: add bindings for keystone reset driver
- corrected WDT numeration in examples
- extended description of wdt_list property
v1..v2
- re based on v3.15-rc1 without changes
Ivan Khoronzhuk (7):
power: reset: keystone-reset: introduce keystone reset driver
clock: keystone-pllctrl: add bindings for keystone pll controller
mfd: ti-keystone-devctrl: add bindings for device state control
power: reset: add bindings for keystone reset driver
ARM: keystone: remove redundant reset stuff
ARM: dts: keystone: update reset node to work with reset driver
ARM: keystone: enable reset driver support
.../bindings/clock/ti-keystone-pllctrl.txt | 20 +++
.../bindings/mfd/ti-keystone-devctrl.txt | 19 +++
.../bindings/power/reset/keystone-reset.txt | 67 +++++++++
arch/arm/boot/dts/keystone.dtsi | 14 +-
arch/arm/configs/keystone_defconfig | 3 +
arch/arm/mach-keystone/keystone.c | 34 -----
drivers/power/reset/Kconfig | 8 +
drivers/power/reset/Makefile | 1 +
drivers/power/reset/keystone-reset.c | 166 +++++++++++++++++++++
9 files changed, 297 insertions(+), 35 deletions(-)
create mode 100644 Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
create mode 100644 Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
create mode 100644 Documentation/devicetree/bindings/power/reset/keystone-reset.txt
create mode 100644 drivers/power/reset/keystone-reset.c
--
1.8.3.2
^ permalink raw reply [flat|nested] 34+ messages in thread
* [Patch v6 0/7] Introduce keystone reset driver
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: linux-arm-kernel
These patches introduce keystone reset driver.
The keystone SoC can be rebooted in several ways. By external reset
pin, by soft and by watchdogs. This driver allows software reset and reset
by one of the watchdogs. Also added opportunity to set soft/hard reset type.
Based on linux-next/master
v6..v5
clock: keystone-pllctrl: add bindings for keystone pll controller
mfd: ti-keystone-devctrl: add bindings for device state control
power: reset: add bindings for keystone reset driver
ARM: dts: keystone: update reset node to work with reset driver
- for nodes s/device-state-control/device-state-control at 02620000/g
- for nodes s/pll-controller/pll-controller at 02310000/g
mfd: ti-keystone-devctrl: add bindings for device state control
- corrected description for reg property
v5..v4
power: reset: keystone-reset: introduce keystone reset driver
- changed to get rsmux and rspll offsets from DT
clock: keystone-pllctrl: add bindings for keystone pll controller
- new patch
mfd: ti-keystone-devctrl: add bindings for device state control
- new patch
power: reset: add bindings for keystone reset driver
- corrected description of "ti,syscon-pll", "ti,syscon-dev" properties
- corrected examples
ARM: dts: keystone: update reset node to work with reset driver
- added nodes for pll-controller and device-state-controll
- added offsets to "ti,syscon-pll", "ti,syscon-dev" properties
v4..v3
Power: reset: keystone-reset: introduce keystone reset driver
- changed to use syscon framework
- changed to use regmap to access registers
Power: reset: add bindings for keystone reset driver
- deleted properties "reg", "reg-names"
- added properties "ti,syscon-pll", "ti,syscon-dev"
ARM: dts: keystone: update reset node to work with reset driver
- deleted properties "reg", "reg-names"
- added properties "ti,syscon-pll", "ti,syscon-dev"
v2..v3
Power: reset: keystone-reset: introduce keystone reset driver
- no functional changes, only sanity
Power: reset: add bindings for keystone reset driver
- corrected WDT numeration in examples
- extended description of wdt_list property
v1..v2
- re based on v3.15-rc1 without changes
Ivan Khoronzhuk (7):
power: reset: keystone-reset: introduce keystone reset driver
clock: keystone-pllctrl: add bindings for keystone pll controller
mfd: ti-keystone-devctrl: add bindings for device state control
power: reset: add bindings for keystone reset driver
ARM: keystone: remove redundant reset stuff
ARM: dts: keystone: update reset node to work with reset driver
ARM: keystone: enable reset driver support
.../bindings/clock/ti-keystone-pllctrl.txt | 20 +++
.../bindings/mfd/ti-keystone-devctrl.txt | 19 +++
.../bindings/power/reset/keystone-reset.txt | 67 +++++++++
arch/arm/boot/dts/keystone.dtsi | 14 +-
arch/arm/configs/keystone_defconfig | 3 +
arch/arm/mach-keystone/keystone.c | 34 -----
drivers/power/reset/Kconfig | 8 +
drivers/power/reset/Makefile | 1 +
drivers/power/reset/keystone-reset.c | 166 +++++++++++++++++++++
9 files changed, 297 insertions(+), 35 deletions(-)
create mode 100644 Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
create mode 100644 Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
create mode 100644 Documentation/devicetree/bindings/power/reset/keystone-reset.txt
create mode 100644 drivers/power/reset/keystone-reset.c
--
1.8.3.2
^ permalink raw reply [flat|nested] 34+ messages in thread
* [Patch v6 1/7] power: reset: keystone-reset: introduce keystone reset driver
2014-05-22 16:44 ` Ivan Khoronzhuk
(?)
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
-1 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
The keystone SoC can be rebooted in several ways. By external reset
pin, by soft and by watchdogs. To allow keystone SoC reset if
watchdog is triggered we have to enable it in reset mux configuration
register regarding of watchdog configuration. Also we need to set
soft/hard reset we are going to use.
So add keystone reset driver to handle all this stuff.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
drivers/power/reset/Kconfig | 8 ++
drivers/power/reset/Makefile | 1 +
drivers/power/reset/keystone-reset.c | 166 +++++++++++++++++++++++++++++++++++
3 files changed, 175 insertions(+)
create mode 100644 drivers/power/reset/keystone-reset.c
diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
index fa0e4e0..d095e5b 100644
--- a/drivers/power/reset/Kconfig
+++ b/drivers/power/reset/Kconfig
@@ -57,3 +57,11 @@ config POWER_RESET_XGENE
depends on POWER_RESET
help
Reboot support for the APM SoC X-Gene Eval boards.
+
+config POWER_RESET_KEYSTONE
+ bool "Keystone reset driver"
+ depends on ARCH_KEYSTONE
+ select MFD_SYSCON
+ help
+ Reboot support for the KEYSTONE SoCs.
+
diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile
index a5b4a77..802a420 100644
--- a/drivers/power/reset/Makefile
+++ b/drivers/power/reset/Makefile
@@ -5,3 +5,4 @@ obj-$(CONFIG_POWER_RESET_QNAP) += qnap-poweroff.o
obj-$(CONFIG_POWER_RESET_RESTART) += restart-poweroff.o
obj-$(CONFIG_POWER_RESET_VEXPRESS) += vexpress-poweroff.o
obj-$(CONFIG_POWER_RESET_XGENE) += xgene-reboot.o
+obj-$(CONFIG_POWER_RESET_KEYSTONE) += keystone-reset.o
diff --git a/drivers/power/reset/keystone-reset.c b/drivers/power/reset/keystone-reset.c
new file mode 100644
index 0000000..ab96bd5
--- /dev/null
+++ b/drivers/power/reset/keystone-reset.c
@@ -0,0 +1,166 @@
+/*
+ * TI keystone reboot driver
+ *
+ * Copyright (C) 2014 Texas Instruments Incorporated. http://www.ti.com/
+ *
+ * Author: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/reboot.h>
+#include <linux/regmap.h>
+#include <asm/system_misc.h>
+#include <linux/mfd/syscon.h>
+#include <linux/of_platform.h>
+
+#define RSTYPE_RG 0x0
+#define RSCTRL_RG 0x4
+#define RSCFG_RG 0x8
+#define RSISO_RG 0xc
+
+#define RSCTRL_KEY_MASK 0x0000ffff
+#define RSCTRL_RESET_MASK BIT(16)
+#define RSCTRL_KEY 0x5a69
+
+#define RSMUX_OMODE_MASK 0xe
+#define RSMUX_OMODE_RESET_ON 0xa
+#define RSMUX_OMODE_RESET_OFF 0x0
+#define RSMUX_LOCK_MASK 0x1
+#define RSMUX_LOCK_SET 0x1
+
+#define RSCFG_RSTYPE_SOFT 0x300f
+#define RSCFG_RSTYPE_HARD 0x0
+
+#define WDT_MUX_NUMBER 0x4
+
+static int rspll_offset;
+static struct regmap *pllctrl_regs;
+
+/**
+ * rsctrl_enable_rspll_write - enable access to RSCTRL, RSCFG
+ * To be able to access to RSCTRL, RSCFG registers
+ * we have to write a key before
+ */
+static inline int rsctrl_enable_rspll_write(void)
+{
+ return regmap_update_bits(pllctrl_regs, rspll_offset + RSCTRL_RG,
+ RSCTRL_KEY_MASK, RSCTRL_KEY);
+}
+
+static void rsctrl_restart(enum reboot_mode mode, const char *cmd)
+{
+ /* enable write access to RSTCTRL */
+ rsctrl_enable_rspll_write();
+
+ /* reset the SOC */
+ regmap_update_bits(pllctrl_regs, rspll_offset + RSCTRL_RG,
+ RSCTRL_RESET_MASK, 0);
+}
+
+static struct of_device_id rsctrl_of_match[] = {
+ {.compatible = "ti,keystone-reset", },
+ {},
+};
+
+static int rsctrl_probe(struct platform_device *pdev)
+{
+ int i;
+ int ret;
+ u32 val;
+ unsigned int rg;
+ u32 rsmux_offset;
+ struct regmap *devctrl_regs;
+ struct device *dev = &pdev->dev;
+ struct device_node *np = dev->of_node;
+
+ if (!np)
+ return -ENODEV;
+
+ /* get regmaps */
+ pllctrl_regs = syscon_regmap_lookup_by_phandle(np, "ti,syscon-pll");
+ if (IS_ERR(pllctrl_regs))
+ return PTR_ERR(pllctrl_regs);
+
+ devctrl_regs = syscon_regmap_lookup_by_phandle(np, "ti,syscon-dev");
+ if (IS_ERR(devctrl_regs))
+ return PTR_ERR(devctrl_regs);
+
+ ret = of_property_read_u32_index(np, "ti,syscon-pll", 1, &rspll_offset);
+ if (ret) {
+ dev_err(dev, "couldn't read the reset pll offset!\n");
+ return -EINVAL;
+ }
+
+ ret = of_property_read_u32_index(np, "ti,syscon-dev", 1, &rsmux_offset);
+ if (ret) {
+ dev_err(dev, "couldn't read the rsmux offset!\n");
+ return -EINVAL;
+ }
+
+ /* set soft/hard reset */
+ val = of_property_read_bool(np, "ti,soft-reset");
+ val = val ? RSCFG_RSTYPE_SOFT : RSCFG_RSTYPE_HARD;
+
+ ret = rsctrl_enable_rspll_write();
+ if (ret)
+ return ret;
+
+ ret = regmap_write(pllctrl_regs, rspll_offset + RSCFG_RG, val);
+ if (ret)
+ return ret;
+
+ arm_pm_restart = rsctrl_restart;
+
+ /* disable a reset isolation for all module clocks */
+ ret = regmap_write(pllctrl_regs, rspll_offset + RSISO_RG, 0);
+ if (ret)
+ return ret;
+
+ /* enable a reset for watchdogs from wdt_list */
+ for (i = 0; i < WDT_MUX_NUMBER; i++) {
+ ret = of_property_read_u32_index(np, "ti,wdt_list", i, &val);
+ if (ret == -EOVERFLOW && !i) {
+ dev_err(dev, "ti,wdt_list property has to contain at"
+ "least one entry\n");
+ return -EINVAL;
+ } else if (ret) {
+ break;
+ }
+
+ if (val >= WDT_MUX_NUMBER) {
+ dev_err(dev, "ti,wdt_list property can contain"
+ "only numbers < 4\n");
+ return -EINVAL;
+ }
+
+ rg = rsmux_offset + val * 4;
+
+ ret = regmap_update_bits(devctrl_regs, rg, RSMUX_OMODE_MASK,
+ RSMUX_OMODE_RESET_ON |
+ RSMUX_LOCK_SET);
+ if (ret)
+ return ret;
+ }
+
+ return 0;
+}
+
+static struct platform_driver rsctrl_driver = {
+ .probe = rsctrl_probe,
+ .driver = {
+ .owner = THIS_MODULE,
+ .name = KBUILD_MODNAME,
+ .of_match_table = rsctrl_of_match,
+ },
+};
+module_platform_driver(rsctrl_driver);
+
+MODULE_AUTHOR("Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>");
+MODULE_DESCRIPTION("Texas Instruments keystone reset driver");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" KBUILD_MODNAME);
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 1/7] power: reset: keystone-reset: introduce keystone reset driver
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
The keystone SoC can be rebooted in several ways. By external reset
pin, by soft and by watchdogs. To allow keystone SoC reset if
watchdog is triggered we have to enable it in reset mux configuration
register regarding of watchdog configuration. Also we need to set
soft/hard reset we are going to use.
So add keystone reset driver to handle all this stuff.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
drivers/power/reset/Kconfig | 8 ++
drivers/power/reset/Makefile | 1 +
drivers/power/reset/keystone-reset.c | 166 +++++++++++++++++++++++++++++++++++
3 files changed, 175 insertions(+)
create mode 100644 drivers/power/reset/keystone-reset.c
diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
index fa0e4e0..d095e5b 100644
--- a/drivers/power/reset/Kconfig
+++ b/drivers/power/reset/Kconfig
@@ -57,3 +57,11 @@ config POWER_RESET_XGENE
depends on POWER_RESET
help
Reboot support for the APM SoC X-Gene Eval boards.
+
+config POWER_RESET_KEYSTONE
+ bool "Keystone reset driver"
+ depends on ARCH_KEYSTONE
+ select MFD_SYSCON
+ help
+ Reboot support for the KEYSTONE SoCs.
+
diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile
index a5b4a77..802a420 100644
--- a/drivers/power/reset/Makefile
+++ b/drivers/power/reset/Makefile
@@ -5,3 +5,4 @@ obj-$(CONFIG_POWER_RESET_QNAP) += qnap-poweroff.o
obj-$(CONFIG_POWER_RESET_RESTART) += restart-poweroff.o
obj-$(CONFIG_POWER_RESET_VEXPRESS) += vexpress-poweroff.o
obj-$(CONFIG_POWER_RESET_XGENE) += xgene-reboot.o
+obj-$(CONFIG_POWER_RESET_KEYSTONE) += keystone-reset.o
diff --git a/drivers/power/reset/keystone-reset.c b/drivers/power/reset/keystone-reset.c
new file mode 100644
index 0000000..ab96bd5
--- /dev/null
+++ b/drivers/power/reset/keystone-reset.c
@@ -0,0 +1,166 @@
+/*
+ * TI keystone reboot driver
+ *
+ * Copyright (C) 2014 Texas Instruments Incorporated. http://www.ti.com/
+ *
+ * Author: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/reboot.h>
+#include <linux/regmap.h>
+#include <asm/system_misc.h>
+#include <linux/mfd/syscon.h>
+#include <linux/of_platform.h>
+
+#define RSTYPE_RG 0x0
+#define RSCTRL_RG 0x4
+#define RSCFG_RG 0x8
+#define RSISO_RG 0xc
+
+#define RSCTRL_KEY_MASK 0x0000ffff
+#define RSCTRL_RESET_MASK BIT(16)
+#define RSCTRL_KEY 0x5a69
+
+#define RSMUX_OMODE_MASK 0xe
+#define RSMUX_OMODE_RESET_ON 0xa
+#define RSMUX_OMODE_RESET_OFF 0x0
+#define RSMUX_LOCK_MASK 0x1
+#define RSMUX_LOCK_SET 0x1
+
+#define RSCFG_RSTYPE_SOFT 0x300f
+#define RSCFG_RSTYPE_HARD 0x0
+
+#define WDT_MUX_NUMBER 0x4
+
+static int rspll_offset;
+static struct regmap *pllctrl_regs;
+
+/**
+ * rsctrl_enable_rspll_write - enable access to RSCTRL, RSCFG
+ * To be able to access to RSCTRL, RSCFG registers
+ * we have to write a key before
+ */
+static inline int rsctrl_enable_rspll_write(void)
+{
+ return regmap_update_bits(pllctrl_regs, rspll_offset + RSCTRL_RG,
+ RSCTRL_KEY_MASK, RSCTRL_KEY);
+}
+
+static void rsctrl_restart(enum reboot_mode mode, const char *cmd)
+{
+ /* enable write access to RSTCTRL */
+ rsctrl_enable_rspll_write();
+
+ /* reset the SOC */
+ regmap_update_bits(pllctrl_regs, rspll_offset + RSCTRL_RG,
+ RSCTRL_RESET_MASK, 0);
+}
+
+static struct of_device_id rsctrl_of_match[] = {
+ {.compatible = "ti,keystone-reset", },
+ {},
+};
+
+static int rsctrl_probe(struct platform_device *pdev)
+{
+ int i;
+ int ret;
+ u32 val;
+ unsigned int rg;
+ u32 rsmux_offset;
+ struct regmap *devctrl_regs;
+ struct device *dev = &pdev->dev;
+ struct device_node *np = dev->of_node;
+
+ if (!np)
+ return -ENODEV;
+
+ /* get regmaps */
+ pllctrl_regs = syscon_regmap_lookup_by_phandle(np, "ti,syscon-pll");
+ if (IS_ERR(pllctrl_regs))
+ return PTR_ERR(pllctrl_regs);
+
+ devctrl_regs = syscon_regmap_lookup_by_phandle(np, "ti,syscon-dev");
+ if (IS_ERR(devctrl_regs))
+ return PTR_ERR(devctrl_regs);
+
+ ret = of_property_read_u32_index(np, "ti,syscon-pll", 1, &rspll_offset);
+ if (ret) {
+ dev_err(dev, "couldn't read the reset pll offset!\n");
+ return -EINVAL;
+ }
+
+ ret = of_property_read_u32_index(np, "ti,syscon-dev", 1, &rsmux_offset);
+ if (ret) {
+ dev_err(dev, "couldn't read the rsmux offset!\n");
+ return -EINVAL;
+ }
+
+ /* set soft/hard reset */
+ val = of_property_read_bool(np, "ti,soft-reset");
+ val = val ? RSCFG_RSTYPE_SOFT : RSCFG_RSTYPE_HARD;
+
+ ret = rsctrl_enable_rspll_write();
+ if (ret)
+ return ret;
+
+ ret = regmap_write(pllctrl_regs, rspll_offset + RSCFG_RG, val);
+ if (ret)
+ return ret;
+
+ arm_pm_restart = rsctrl_restart;
+
+ /* disable a reset isolation for all module clocks */
+ ret = regmap_write(pllctrl_regs, rspll_offset + RSISO_RG, 0);
+ if (ret)
+ return ret;
+
+ /* enable a reset for watchdogs from wdt_list */
+ for (i = 0; i < WDT_MUX_NUMBER; i++) {
+ ret = of_property_read_u32_index(np, "ti,wdt_list", i, &val);
+ if (ret == -EOVERFLOW && !i) {
+ dev_err(dev, "ti,wdt_list property has to contain at"
+ "least one entry\n");
+ return -EINVAL;
+ } else if (ret) {
+ break;
+ }
+
+ if (val >= WDT_MUX_NUMBER) {
+ dev_err(dev, "ti,wdt_list property can contain"
+ "only numbers < 4\n");
+ return -EINVAL;
+ }
+
+ rg = rsmux_offset + val * 4;
+
+ ret = regmap_update_bits(devctrl_regs, rg, RSMUX_OMODE_MASK,
+ RSMUX_OMODE_RESET_ON |
+ RSMUX_LOCK_SET);
+ if (ret)
+ return ret;
+ }
+
+ return 0;
+}
+
+static struct platform_driver rsctrl_driver = {
+ .probe = rsctrl_probe,
+ .driver = {
+ .owner = THIS_MODULE,
+ .name = KBUILD_MODNAME,
+ .of_match_table = rsctrl_of_match,
+ },
+};
+module_platform_driver(rsctrl_driver);
+
+MODULE_AUTHOR("Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>");
+MODULE_DESCRIPTION("Texas Instruments keystone reset driver");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" KBUILD_MODNAME);
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 1/7] power: reset: keystone-reset: introduce keystone reset driver
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: linux-arm-kernel
The keystone SoC can be rebooted in several ways. By external reset
pin, by soft and by watchdogs. To allow keystone SoC reset if
watchdog is triggered we have to enable it in reset mux configuration
register regarding of watchdog configuration. Also we need to set
soft/hard reset we are going to use.
So add keystone reset driver to handle all this stuff.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
drivers/power/reset/Kconfig | 8 ++
drivers/power/reset/Makefile | 1 +
drivers/power/reset/keystone-reset.c | 166 +++++++++++++++++++++++++++++++++++
3 files changed, 175 insertions(+)
create mode 100644 drivers/power/reset/keystone-reset.c
diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
index fa0e4e0..d095e5b 100644
--- a/drivers/power/reset/Kconfig
+++ b/drivers/power/reset/Kconfig
@@ -57,3 +57,11 @@ config POWER_RESET_XGENE
depends on POWER_RESET
help
Reboot support for the APM SoC X-Gene Eval boards.
+
+config POWER_RESET_KEYSTONE
+ bool "Keystone reset driver"
+ depends on ARCH_KEYSTONE
+ select MFD_SYSCON
+ help
+ Reboot support for the KEYSTONE SoCs.
+
diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile
index a5b4a77..802a420 100644
--- a/drivers/power/reset/Makefile
+++ b/drivers/power/reset/Makefile
@@ -5,3 +5,4 @@ obj-$(CONFIG_POWER_RESET_QNAP) += qnap-poweroff.o
obj-$(CONFIG_POWER_RESET_RESTART) += restart-poweroff.o
obj-$(CONFIG_POWER_RESET_VEXPRESS) += vexpress-poweroff.o
obj-$(CONFIG_POWER_RESET_XGENE) += xgene-reboot.o
+obj-$(CONFIG_POWER_RESET_KEYSTONE) += keystone-reset.o
diff --git a/drivers/power/reset/keystone-reset.c b/drivers/power/reset/keystone-reset.c
new file mode 100644
index 0000000..ab96bd5
--- /dev/null
+++ b/drivers/power/reset/keystone-reset.c
@@ -0,0 +1,166 @@
+/*
+ * TI keystone reboot driver
+ *
+ * Copyright (C) 2014 Texas Instruments Incorporated. http://www.ti.com/
+ *
+ * Author: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/reboot.h>
+#include <linux/regmap.h>
+#include <asm/system_misc.h>
+#include <linux/mfd/syscon.h>
+#include <linux/of_platform.h>
+
+#define RSTYPE_RG 0x0
+#define RSCTRL_RG 0x4
+#define RSCFG_RG 0x8
+#define RSISO_RG 0xc
+
+#define RSCTRL_KEY_MASK 0x0000ffff
+#define RSCTRL_RESET_MASK BIT(16)
+#define RSCTRL_KEY 0x5a69
+
+#define RSMUX_OMODE_MASK 0xe
+#define RSMUX_OMODE_RESET_ON 0xa
+#define RSMUX_OMODE_RESET_OFF 0x0
+#define RSMUX_LOCK_MASK 0x1
+#define RSMUX_LOCK_SET 0x1
+
+#define RSCFG_RSTYPE_SOFT 0x300f
+#define RSCFG_RSTYPE_HARD 0x0
+
+#define WDT_MUX_NUMBER 0x4
+
+static int rspll_offset;
+static struct regmap *pllctrl_regs;
+
+/**
+ * rsctrl_enable_rspll_write - enable access to RSCTRL, RSCFG
+ * To be able to access to RSCTRL, RSCFG registers
+ * we have to write a key before
+ */
+static inline int rsctrl_enable_rspll_write(void)
+{
+ return regmap_update_bits(pllctrl_regs, rspll_offset + RSCTRL_RG,
+ RSCTRL_KEY_MASK, RSCTRL_KEY);
+}
+
+static void rsctrl_restart(enum reboot_mode mode, const char *cmd)
+{
+ /* enable write access to RSTCTRL */
+ rsctrl_enable_rspll_write();
+
+ /* reset the SOC */
+ regmap_update_bits(pllctrl_regs, rspll_offset + RSCTRL_RG,
+ RSCTRL_RESET_MASK, 0);
+}
+
+static struct of_device_id rsctrl_of_match[] = {
+ {.compatible = "ti,keystone-reset", },
+ {},
+};
+
+static int rsctrl_probe(struct platform_device *pdev)
+{
+ int i;
+ int ret;
+ u32 val;
+ unsigned int rg;
+ u32 rsmux_offset;
+ struct regmap *devctrl_regs;
+ struct device *dev = &pdev->dev;
+ struct device_node *np = dev->of_node;
+
+ if (!np)
+ return -ENODEV;
+
+ /* get regmaps */
+ pllctrl_regs = syscon_regmap_lookup_by_phandle(np, "ti,syscon-pll");
+ if (IS_ERR(pllctrl_regs))
+ return PTR_ERR(pllctrl_regs);
+
+ devctrl_regs = syscon_regmap_lookup_by_phandle(np, "ti,syscon-dev");
+ if (IS_ERR(devctrl_regs))
+ return PTR_ERR(devctrl_regs);
+
+ ret = of_property_read_u32_index(np, "ti,syscon-pll", 1, &rspll_offset);
+ if (ret) {
+ dev_err(dev, "couldn't read the reset pll offset!\n");
+ return -EINVAL;
+ }
+
+ ret = of_property_read_u32_index(np, "ti,syscon-dev", 1, &rsmux_offset);
+ if (ret) {
+ dev_err(dev, "couldn't read the rsmux offset!\n");
+ return -EINVAL;
+ }
+
+ /* set soft/hard reset */
+ val = of_property_read_bool(np, "ti,soft-reset");
+ val = val ? RSCFG_RSTYPE_SOFT : RSCFG_RSTYPE_HARD;
+
+ ret = rsctrl_enable_rspll_write();
+ if (ret)
+ return ret;
+
+ ret = regmap_write(pllctrl_regs, rspll_offset + RSCFG_RG, val);
+ if (ret)
+ return ret;
+
+ arm_pm_restart = rsctrl_restart;
+
+ /* disable a reset isolation for all module clocks */
+ ret = regmap_write(pllctrl_regs, rspll_offset + RSISO_RG, 0);
+ if (ret)
+ return ret;
+
+ /* enable a reset for watchdogs from wdt_list */
+ for (i = 0; i < WDT_MUX_NUMBER; i++) {
+ ret = of_property_read_u32_index(np, "ti,wdt_list", i, &val);
+ if (ret == -EOVERFLOW && !i) {
+ dev_err(dev, "ti,wdt_list property has to contain at"
+ "least one entry\n");
+ return -EINVAL;
+ } else if (ret) {
+ break;
+ }
+
+ if (val >= WDT_MUX_NUMBER) {
+ dev_err(dev, "ti,wdt_list property can contain"
+ "only numbers < 4\n");
+ return -EINVAL;
+ }
+
+ rg = rsmux_offset + val * 4;
+
+ ret = regmap_update_bits(devctrl_regs, rg, RSMUX_OMODE_MASK,
+ RSMUX_OMODE_RESET_ON |
+ RSMUX_LOCK_SET);
+ if (ret)
+ return ret;
+ }
+
+ return 0;
+}
+
+static struct platform_driver rsctrl_driver = {
+ .probe = rsctrl_probe,
+ .driver = {
+ .owner = THIS_MODULE,
+ .name = KBUILD_MODNAME,
+ .of_match_table = rsctrl_of_match,
+ },
+};
+module_platform_driver(rsctrl_driver);
+
+MODULE_AUTHOR("Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>");
+MODULE_DESCRIPTION("Texas Instruments keystone reset driver");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" KBUILD_MODNAME);
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 2/7] clock: keystone-pllctrl: add bindings for keystone pll controller
2014-05-22 16:44 ` Ivan Khoronzhuk
(?)
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
-1 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
The main pll controller used to drive theC66x CorePacs, the switch fabric,
and a majority of the peripheral clocks (all but the ARM CorePacs, DDR3 and
the NETCP modules) requires a PLL Controller to manage the various clock
divisions, gating, and synchronization.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
.../bindings/clock/ti-keystone-pllctrl.txt | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
create mode 100644 Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
diff --git a/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt b/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
new file mode 100644
index 0000000..3e6a81e
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
@@ -0,0 +1,20 @@
+* Device tree bindings for Texas Instruments keystone pll controller
+
+The main pll controller used to drive theC66x CorePacs, the switch fabric,
+and a majority of the peripheral clocks (all but the ARM CorePacs, DDR3 and
+the NETCP modules) requires a PLL Controller to manage the various clock
+divisions, gating, and synchronization.
+
+Required properties:
+
+- compatible: "ti,keystone-pllctrl", "syscon"
+
+- reg: contains offset/length value for pll controller
+ registers space.
+
+Example:
+
+pllctrl: pll-controller@0x02310000 {
+ compatible = "ti,keystone-pllctrl", "syscon";
+ reg = <0x02310000 0x200>;
+};
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 2/7] clock: keystone-pllctrl: add bindings for keystone pll controller
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
The main pll controller used to drive theC66x CorePacs, the switch fabric,
and a majority of the peripheral clocks (all but the ARM CorePacs, DDR3 and
the NETCP modules) requires a PLL Controller to manage the various clock
divisions, gating, and synchronization.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
.../bindings/clock/ti-keystone-pllctrl.txt | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
create mode 100644 Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
diff --git a/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt b/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
new file mode 100644
index 0000000..3e6a81e
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
@@ -0,0 +1,20 @@
+* Device tree bindings for Texas Instruments keystone pll controller
+
+The main pll controller used to drive theC66x CorePacs, the switch fabric,
+and a majority of the peripheral clocks (all but the ARM CorePacs, DDR3 and
+the NETCP modules) requires a PLL Controller to manage the various clock
+divisions, gating, and synchronization.
+
+Required properties:
+
+- compatible: "ti,keystone-pllctrl", "syscon"
+
+- reg: contains offset/length value for pll controller
+ registers space.
+
+Example:
+
+pllctrl: pll-controller@0x02310000 {
+ compatible = "ti,keystone-pllctrl", "syscon";
+ reg = <0x02310000 0x200>;
+};
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 2/7] clock: keystone-pllctrl: add bindings for keystone pll controller
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: linux-arm-kernel
The main pll controller used to drive theC66x CorePacs, the switch fabric,
and a majority of the peripheral clocks (all but the ARM CorePacs, DDR3 and
the NETCP modules) requires a PLL Controller to manage the various clock
divisions, gating, and synchronization.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
.../bindings/clock/ti-keystone-pllctrl.txt | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
create mode 100644 Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
diff --git a/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt b/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
new file mode 100644
index 0000000..3e6a81e
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt
@@ -0,0 +1,20 @@
+* Device tree bindings for Texas Instruments keystone pll controller
+
+The main pll controller used to drive theC66x CorePacs, the switch fabric,
+and a majority of the peripheral clocks (all but the ARM CorePacs, DDR3 and
+the NETCP modules) requires a PLL Controller to manage the various clock
+divisions, gating, and synchronization.
+
+Required properties:
+
+- compatible: "ti,keystone-pllctrl", "syscon"
+
+- reg: contains offset/length value for pll controller
+ registers space.
+
+Example:
+
+pllctrl: pll-controller at 0x02310000 {
+ compatible = "ti,keystone-pllctrl", "syscon";
+ reg = <0x02310000 0x200>;
+};
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 3/7] mfd: ti-keystone-devctrl: add bindings for device state control
2014-05-22 16:44 ` Ivan Khoronzhuk
(?)
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
-1 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
The Keystone II devices have a set of registers that are used to control
the status of its peripherals. This node is intended to allow access to
this functionality.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
.../devicetree/bindings/mfd/ti-keystone-devctrl.txt | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
diff --git a/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt b/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
new file mode 100644
index 0000000..20963c7
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
@@ -0,0 +1,19 @@
+* Device tree bindings for Texas Instruments keystone device state control
+
+The Keystone II devices have a set of registers that are used to control
+the status of its peripherals. This node is intended to allow access to
+this functionality.
+
+Required properties:
+
+- compatible: "ti,keystone-devctrl", "syscon"
+
+- reg: contains offset/length value for device state control
+ registers space.
+
+Example:
+
+devctrl: device-state-control@0x02620000 {
+ compatible = "ti,keystone-devctrl", "syscon";
+ reg = <0x02620000 0x1000>;
+};
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 3/7] mfd: ti-keystone-devctrl: add bindings for device state control
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
The Keystone II devices have a set of registers that are used to control
the status of its peripherals. This node is intended to allow access to
this functionality.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
.../devicetree/bindings/mfd/ti-keystone-devctrl.txt | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
diff --git a/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt b/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
new file mode 100644
index 0000000..20963c7
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
@@ -0,0 +1,19 @@
+* Device tree bindings for Texas Instruments keystone device state control
+
+The Keystone II devices have a set of registers that are used to control
+the status of its peripherals. This node is intended to allow access to
+this functionality.
+
+Required properties:
+
+- compatible: "ti,keystone-devctrl", "syscon"
+
+- reg: contains offset/length value for device state control
+ registers space.
+
+Example:
+
+devctrl: device-state-control@0x02620000 {
+ compatible = "ti,keystone-devctrl", "syscon";
+ reg = <0x02620000 0x1000>;
+};
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 3/7] mfd: ti-keystone-devctrl: add bindings for device state control
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: linux-arm-kernel
The Keystone II devices have a set of registers that are used to control
the status of its peripherals. This node is intended to allow access to
this functionality.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
.../devicetree/bindings/mfd/ti-keystone-devctrl.txt | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
diff --git a/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt b/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
new file mode 100644
index 0000000..20963c7
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
@@ -0,0 +1,19 @@
+* Device tree bindings for Texas Instruments keystone device state control
+
+The Keystone II devices have a set of registers that are used to control
+the status of its peripherals. This node is intended to allow access to
+this functionality.
+
+Required properties:
+
+- compatible: "ti,keystone-devctrl", "syscon"
+
+- reg: contains offset/length value for device state control
+ registers space.
+
+Example:
+
+devctrl: device-state-control at 0x02620000 {
+ compatible = "ti,keystone-devctrl", "syscon";
+ reg = <0x02620000 0x1000>;
+};
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 4/7] power: reset: add bindings for keystone reset driver
2014-05-22 16:44 ` Ivan Khoronzhuk
(?)
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
-1 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
This node is intended to allow SoC reset in case of software reset
or appropriate watchdogs.
The Keystone SoCs can contain up to 4 watchdog timers to reset
SoC. Each watchdog timer event input is connected to the Reset Mux
block. The Reset Mux block can be configured to cause reset or not.
Additionally soft or hard reset can be configured.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
.../bindings/power/reset/keystone-reset.txt | 67 ++++++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 Documentation/devicetree/bindings/power/reset/keystone-reset.txt
diff --git a/Documentation/devicetree/bindings/power/reset/keystone-reset.txt b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
new file mode 100644
index 0000000..a8a0c31
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
@@ -0,0 +1,67 @@
+* Device tree bindings for Texas Instruments keystone reset
+
+This node is intended to allow SoC reset in case of software reset
+of selected watchdogs.
+
+The Keystone SoCs can contain up to 4 watchdog timers to reset
+SoC. Each watchdog timer event input is connected to the Reset Mux
+block. The Reset Mux block can be configured to cause reset or not.
+
+Additionally soft or hard reset can be configured.
+
+Required properties:
+
+- compatible: ti,keystone-reset
+
+- 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.
+
+Optional properties:
+
+- ti,soft-reset: Boolean option indicating soft reset.
+ By default hard reset is used.
+
+- ti,wdt_list: WDT list that can cause SoC reset. It's not related
+ to WDT driver, it's just needed to enable a SoC related
+ reset that's triggered by one of WDTs. The list is
+ in format: <0>, <2>; It can be in random order and
+ begins from 0 to 3, as keystone can contain up to 4 SoC
+ reset watchdogs and can be in random order.
+
+Example 1:
+Setup keystone reset so that in case software reset or
+WDT0 is triggered it issues hard reset for SoC.
+
+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";
+ ti,syscon-pll = <&pllctrl 0xe4>;
+ ti,syscon-dev = <&devctrl 0x328>;
+ ti,wdt_list = <0>;
+};
+
+Example 2:
+Setup keystone reset so that in case of software reset or
+WDT0 or WDT2 is triggered it issues soft reset for SoC.
+
+rstctrl: reset-controller {
+ compatible = "ti,keystone-reset";
+ ti,syscon-pll = <&pllctrl 0xe4>;
+ ti,syscon-dev = <&devctrl 0x328>;
+ ti,wdt_list = <0>, <2>;
+ ti,soft-reset;
+};
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 4/7] power: reset: add bindings for keystone reset driver
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: devicetree, grygorii.strashko, linux, sergei.shtylyov, linux-doc,
w-kwok2, rdunlap, sboyd, linux-kernel, m-karicheri2, olof,
Ivan Khoronzhuk, linux-arm-kernel
This node is intended to allow SoC reset in case of software reset
or appropriate watchdogs.
The Keystone SoCs can contain up to 4 watchdog timers to reset
SoC. Each watchdog timer event input is connected to the Reset Mux
block. The Reset Mux block can be configured to cause reset or not.
Additionally soft or hard reset can be configured.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
.../bindings/power/reset/keystone-reset.txt | 67 ++++++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 Documentation/devicetree/bindings/power/reset/keystone-reset.txt
diff --git a/Documentation/devicetree/bindings/power/reset/keystone-reset.txt b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
new file mode 100644
index 0000000..a8a0c31
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
@@ -0,0 +1,67 @@
+* Device tree bindings for Texas Instruments keystone reset
+
+This node is intended to allow SoC reset in case of software reset
+of selected watchdogs.
+
+The Keystone SoCs can contain up to 4 watchdog timers to reset
+SoC. Each watchdog timer event input is connected to the Reset Mux
+block. The Reset Mux block can be configured to cause reset or not.
+
+Additionally soft or hard reset can be configured.
+
+Required properties:
+
+- compatible: ti,keystone-reset
+
+- 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.
+
+Optional properties:
+
+- ti,soft-reset: Boolean option indicating soft reset.
+ By default hard reset is used.
+
+- ti,wdt_list: WDT list that can cause SoC reset. It's not related
+ to WDT driver, it's just needed to enable a SoC related
+ reset that's triggered by one of WDTs. The list is
+ in format: <0>, <2>; It can be in random order and
+ begins from 0 to 3, as keystone can contain up to 4 SoC
+ reset watchdogs and can be in random order.
+
+Example 1:
+Setup keystone reset so that in case software reset or
+WDT0 is triggered it issues hard reset for SoC.
+
+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";
+ ti,syscon-pll = <&pllctrl 0xe4>;
+ ti,syscon-dev = <&devctrl 0x328>;
+ ti,wdt_list = <0>;
+};
+
+Example 2:
+Setup keystone reset so that in case of software reset or
+WDT0 or WDT2 is triggered it issues soft reset for SoC.
+
+rstctrl: reset-controller {
+ compatible = "ti,keystone-reset";
+ ti,syscon-pll = <&pllctrl 0xe4>;
+ ti,syscon-dev = <&devctrl 0x328>;
+ ti,wdt_list = <0>, <2>;
+ ti,soft-reset;
+};
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 4/7] power: reset: add bindings for keystone reset driver
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: linux-arm-kernel
This node is intended to allow SoC reset in case of software reset
or appropriate watchdogs.
The Keystone SoCs can contain up to 4 watchdog timers to reset
SoC. Each watchdog timer event input is connected to the Reset Mux
block. The Reset Mux block can be configured to cause reset or not.
Additionally soft or hard reset can be configured.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
.../bindings/power/reset/keystone-reset.txt | 67 ++++++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 Documentation/devicetree/bindings/power/reset/keystone-reset.txt
diff --git a/Documentation/devicetree/bindings/power/reset/keystone-reset.txt b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
new file mode 100644
index 0000000..a8a0c31
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
@@ -0,0 +1,67 @@
+* Device tree bindings for Texas Instruments keystone reset
+
+This node is intended to allow SoC reset in case of software reset
+of selected watchdogs.
+
+The Keystone SoCs can contain up to 4 watchdog timers to reset
+SoC. Each watchdog timer event input is connected to the Reset Mux
+block. The Reset Mux block can be configured to cause reset or not.
+
+Additionally soft or hard reset can be configured.
+
+Required properties:
+
+- compatible: ti,keystone-reset
+
+- 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.
+
+Optional properties:
+
+- ti,soft-reset: Boolean option indicating soft reset.
+ By default hard reset is used.
+
+- ti,wdt_list: WDT list that can cause SoC reset. It's not related
+ to WDT driver, it's just needed to enable a SoC related
+ reset that's triggered by one of WDTs. The list is
+ in format: <0>, <2>; It can be in random order and
+ begins from 0 to 3, as keystone can contain up to 4 SoC
+ reset watchdogs and can be in random order.
+
+Example 1:
+Setup keystone reset so that in case software reset or
+WDT0 is triggered it issues hard reset for SoC.
+
+pllctrl: pll-controller at 02310000 {
+ compatible = "ti,keystone-pllctrl", "syscon";
+ reg = <0x02310000 0x200>;
+};
+
+devctrl: device-state-control at 02620000 {
+ compatible = "ti,keystone-devctrl", "syscon";
+ reg = <0x02620000 0x1000>;
+};
+
+rstctrl: reset-controller {
+ compatible = "ti,keystone-reset";
+ ti,syscon-pll = <&pllctrl 0xe4>;
+ ti,syscon-dev = <&devctrl 0x328>;
+ ti,wdt_list = <0>;
+};
+
+Example 2:
+Setup keystone reset so that in case of software reset or
+WDT0 or WDT2 is triggered it issues soft reset for SoC.
+
+rstctrl: reset-controller {
+ compatible = "ti,keystone-reset";
+ ti,syscon-pll = <&pllctrl 0xe4>;
+ ti,syscon-dev = <&devctrl 0x328>;
+ ti,wdt_list = <0>, <2>;
+ ti,soft-reset;
+};
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 5/7] ARM: keystone: remove redundant reset stuff
2014-05-22 16:44 ` Ivan Khoronzhuk
(?)
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
-1 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
Remove reset stuff in flavour of using keystone reset driver:
driver/power/reset/keystone-reset.c
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/mach-keystone/keystone.c | 34 ----------------------------------
1 file changed, 34 deletions(-)
diff --git a/arch/arm/mach-keystone/keystone.c b/arch/arm/mach-keystone/keystone.c
index 59b8383..1f9ae89 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
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 5/7] ARM: keystone: remove redundant reset stuff
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
Remove reset stuff in flavour of using keystone reset driver:
driver/power/reset/keystone-reset.c
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/mach-keystone/keystone.c | 34 ----------------------------------
1 file changed, 34 deletions(-)
diff --git a/arch/arm/mach-keystone/keystone.c b/arch/arm/mach-keystone/keystone.c
index 59b8383..1f9ae89 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
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 5/7] ARM: keystone: remove redundant reset stuff
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: linux-arm-kernel
Remove reset stuff in flavour of using keystone reset driver:
driver/power/reset/keystone-reset.c
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/mach-keystone/keystone.c | 34 ----------------------------------
1 file changed, 34 deletions(-)
diff --git a/arch/arm/mach-keystone/keystone.c b/arch/arm/mach-keystone/keystone.c
index 59b8383..1f9ae89 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
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 6/7] ARM: dts: keystone: update reset node to work with reset driver
2014-05-22 16:44 ` Ivan Khoronzhuk
(?)
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
-1 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
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 <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/boot/dts/keystone.dtsi | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/keystone.dtsi b/arch/arm/boot/dts/keystone.dtsi
index d9f99e7..b05def6 100644
--- a/arch/arm/boot/dts/keystone.dtsi
+++ b/arch/arm/boot/dts/keystone.dtsi
@@ -66,9 +66,21 @@
ranges = <0x0 0x0 0x0 0xc0000000>;
dma-ranges = <0x80000000 0x8 0x00000000 0x80000000>;
+ 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"
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 6/7] ARM: dts: keystone: update reset node to work with reset driver
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
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 <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/boot/dts/keystone.dtsi | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/keystone.dtsi b/arch/arm/boot/dts/keystone.dtsi
index d9f99e7..b05def6 100644
--- a/arch/arm/boot/dts/keystone.dtsi
+++ b/arch/arm/boot/dts/keystone.dtsi
@@ -66,9 +66,21 @@
ranges = <0x0 0x0 0x0 0xc0000000>;
dma-ranges = <0x80000000 0x8 0x00000000 0x80000000>;
+ 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"
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 6/7] ARM: dts: keystone: update reset node to work with reset driver
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: linux-arm-kernel
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 <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/boot/dts/keystone.dtsi | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/keystone.dtsi b/arch/arm/boot/dts/keystone.dtsi
index d9f99e7..b05def6 100644
--- a/arch/arm/boot/dts/keystone.dtsi
+++ b/arch/arm/boot/dts/keystone.dtsi
@@ -66,9 +66,21 @@
ranges = <0x0 0x0 0x0 0xc0000000>;
dma-ranges = <0x80000000 0x8 0x00000000 0x80000000>;
+ pllctrl: pll-controller at 02310000 {
+ compatible = "ti,keystone-pllctrl", "syscon";
+ reg = <0x02310000 0x200>;
+ };
+
+ devctrl: device-state-control at 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"
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 7/7] ARM: keystone: enable reset driver support
2014-05-22 16:44 ` Ivan Khoronzhuk
(?)
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
-1 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
Enable reset driver support in order to have opportunity
to reboot SoC by watchdog and by software.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/configs/keystone_defconfig | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/configs/keystone_defconfig b/arch/arm/configs/keystone_defconfig
index 07b4327..dc0da3f 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
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 7/7] ARM: keystone: enable reset driver support
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: dbaryshkov, dwmw2, lee.jones, santosh.shilimkar, arnd, robh+dt,
pawel.moll, mark.rutland, ijc+devicetree, galak, grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2, sergei.shtylyov, Ivan Khoronzhuk
Enable reset driver support in order to have opportunity
to reboot SoC by watchdog and by software.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/configs/keystone_defconfig | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/configs/keystone_defconfig b/arch/arm/configs/keystone_defconfig
index 07b4327..dc0da3f 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
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Patch v6 7/7] ARM: keystone: enable reset driver support
@ 2014-05-22 16:44 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 16:44 UTC (permalink / raw)
To: linux-arm-kernel
Enable reset driver support in order to have opportunity
to reboot SoC by watchdog and by software.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
---
arch/arm/configs/keystone_defconfig | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/configs/keystone_defconfig b/arch/arm/configs/keystone_defconfig
index 07b4327..dc0da3f 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
--
1.8.3.2
^ permalink raw reply related [flat|nested] 34+ messages in thread
* Re: [Patch v6 3/7] mfd: ti-keystone-devctrl: add bindings for device state control
2014-05-22 16:44 ` Ivan Khoronzhuk
@ 2014-05-22 17:11 ` Lee Jones
-1 siblings, 0 replies; 34+ messages in thread
From: Lee Jones @ 2014-05-22 17:11 UTC (permalink / raw)
To: Ivan Khoronzhuk
Cc: dbaryshkov, dwmw2, santosh.shilimkar, arnd, robh+dt, pawel.moll,
mark.rutland, ijc+devicetree, galak, grant.likely, rdunlap,
linux, grygorii.strashko, olof, w-kwok2, sboyd, devicetree,
linux-doc, linux-kernel, linux-arm-kernel, m-karicheri2,
sergei.shtylyov
On Thu, 22 May 2014, Ivan Khoronzhuk wrote:
> The Keystone II devices have a set of registers that are used to control
> the status of its peripherals. This node is intended to allow access to
> this functionality.
>
> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
> ---
> .../devicetree/bindings/mfd/ti-keystone-devctrl.txt | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
Applied, thanks.
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 34+ messages in thread
* [Patch v6 3/7] mfd: ti-keystone-devctrl: add bindings for device state control
@ 2014-05-22 17:11 ` Lee Jones
0 siblings, 0 replies; 34+ messages in thread
From: Lee Jones @ 2014-05-22 17:11 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, 22 May 2014, Ivan Khoronzhuk wrote:
> The Keystone II devices have a set of registers that are used to control
> the status of its peripherals. This node is intended to allow access to
> this functionality.
>
> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
> ---
> .../devicetree/bindings/mfd/ti-keystone-devctrl.txt | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
Applied, thanks.
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Patch v6 3/7] mfd: ti-keystone-devctrl: add bindings for device state control
2014-05-22 17:11 ` Lee Jones
(?)
@ 2014-05-22 17:16 ` Ivan Khoronzhuk
-1 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 17:16 UTC (permalink / raw)
To: Lee Jones
Cc: dbaryshkov, dwmw2, santosh.shilimkar, arnd, robh+dt, pawel.moll,
mark.rutland, ijc+devicetree, galak, grant.likely, rdunlap,
linux, grygorii.strashko, olof, w-kwok2, sboyd, devicetree,
linux-doc, linux-kernel, linux-arm-kernel, m-karicheri2,
sergei.shtylyov
On 05/22/2014 08:11 PM, Lee Jones wrote:
> On Thu, 22 May 2014, Ivan Khoronzhuk wrote:
>
>> The Keystone II devices have a set of registers that are used to control
>> the status of its peripherals. This node is intended to allow access to
>> this functionality.
>>
>> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
>> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
>> ---
>> .../devicetree/bindings/mfd/ti-keystone-devctrl.txt | 19 +++++++++++++++++++
>> 1 file changed, 19 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
> Applied, thanks.
>
Thanks.
--
Regards,
Ivan Khoronzhuk
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Patch v6 3/7] mfd: ti-keystone-devctrl: add bindings for device state control
@ 2014-05-22 17:16 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 17:16 UTC (permalink / raw)
To: Lee Jones
Cc: dbaryshkov, dwmw2, santosh.shilimkar, arnd, robh+dt, pawel.moll,
mark.rutland, ijc+devicetree, galak, grant.likely, rdunlap,
linux, grygorii.strashko, olof, w-kwok2, sboyd, devicetree,
linux-doc, linux-kernel, linux-arm-kernel, m-karicheri2,
sergei.shtylyov
On 05/22/2014 08:11 PM, Lee Jones wrote:
> On Thu, 22 May 2014, Ivan Khoronzhuk wrote:
>
>> The Keystone II devices have a set of registers that are used to control
>> the status of its peripherals. This node is intended to allow access to
>> this functionality.
>>
>> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
>> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
>> ---
>> .../devicetree/bindings/mfd/ti-keystone-devctrl.txt | 19 +++++++++++++++++++
>> 1 file changed, 19 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
> Applied, thanks.
>
Thanks.
--
Regards,
Ivan Khoronzhuk
^ permalink raw reply [flat|nested] 34+ messages in thread
* [Patch v6 3/7] mfd: ti-keystone-devctrl: add bindings for device state control
@ 2014-05-22 17:16 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 17:16 UTC (permalink / raw)
To: linux-arm-kernel
On 05/22/2014 08:11 PM, Lee Jones wrote:
> On Thu, 22 May 2014, Ivan Khoronzhuk wrote:
>
>> The Keystone II devices have a set of registers that are used to control
>> the status of its peripherals. This node is intended to allow access to
>> this functionality.
>>
>> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
>> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
>> ---
>> .../devicetree/bindings/mfd/ti-keystone-devctrl.txt | 19 +++++++++++++++++++
>> 1 file changed, 19 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt
> Applied, thanks.
>
Thanks.
--
Regards,
Ivan Khoronzhuk
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Patch v6 4/7] power: reset: add bindings for keystone reset driver
2014-05-22 16:44 ` Ivan Khoronzhuk
@ 2014-05-22 18:03 ` Sergei Shtylyov
-1 siblings, 0 replies; 34+ messages in thread
From: Sergei Shtylyov @ 2014-05-22 18:03 UTC (permalink / raw)
To: Ivan Khoronzhuk, dbaryshkov, dwmw2, lee.jones, santosh.shilimkar,
arnd, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2
Hello.
On 05/22/2014 08:44 PM, Ivan Khoronzhuk wrote:
> This node is intended to allow SoC reset in case of software reset
> or appropriate watchdogs.
> The Keystone SoCs can contain up to 4 watchdog timers to reset
> SoC. Each watchdog timer event input is connected to the Reset Mux
> block. The Reset Mux block can be configured to cause reset or not.
> Additionally soft or hard reset can be configured.
> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
> ---
> .../bindings/power/reset/keystone-reset.txt | 67 ++++++++++++++++++++++
> 1 file changed, 67 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/power/reset/keystone-reset.txt
> diff --git a/Documentation/devicetree/bindings/power/reset/keystone-reset.txt b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
> new file mode 100644
> index 0000000..a8a0c31
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
> @@ -0,0 +1,67 @@
> +* Device tree bindings for Texas Instruments keystone reset
> +
> +This node is intended to allow SoC reset in case of software reset
> +of selected watchdogs.
> +
> +The Keystone SoCs can contain up to 4 watchdog timers to reset
> +SoC. Each watchdog timer event input is connected to the Reset Mux
> +block. The Reset Mux block can be configured to cause reset or not.
> +
> +Additionally soft or hard reset can be configured.
> +
> +Required properties:
> +
> +- compatible: ti,keystone-reset
> +
> +- 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.
> +
> +Optional properties:
> +
> +- ti,soft-reset: Boolean option indicating soft reset.
> + By default hard reset is used.
> +
> +- ti,wdt_list: WDT list that can cause SoC reset. It's not related
Hm, why underscore in this property while hyphens are used in the others?
Hyphen is generally preferrable in the device tree names...
> + to WDT driver, it's just needed to enable a SoC related
> + reset that's triggered by one of WDTs. The list is
> + in format: <0>, <2>; It can be in random order and
> + begins from 0 to 3, as keystone can contain up to 4 SoC
> + reset watchdogs and can be in random order.
WBR, Sergei
^ permalink raw reply [flat|nested] 34+ messages in thread
* [Patch v6 4/7] power: reset: add bindings for keystone reset driver
@ 2014-05-22 18:03 ` Sergei Shtylyov
0 siblings, 0 replies; 34+ messages in thread
From: Sergei Shtylyov @ 2014-05-22 18:03 UTC (permalink / raw)
To: linux-arm-kernel
Hello.
On 05/22/2014 08:44 PM, Ivan Khoronzhuk wrote:
> This node is intended to allow SoC reset in case of software reset
> or appropriate watchdogs.
> The Keystone SoCs can contain up to 4 watchdog timers to reset
> SoC. Each watchdog timer event input is connected to the Reset Mux
> block. The Reset Mux block can be configured to cause reset or not.
> Additionally soft or hard reset can be configured.
> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
> ---
> .../bindings/power/reset/keystone-reset.txt | 67 ++++++++++++++++++++++
> 1 file changed, 67 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/power/reset/keystone-reset.txt
> diff --git a/Documentation/devicetree/bindings/power/reset/keystone-reset.txt b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
> new file mode 100644
> index 0000000..a8a0c31
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
> @@ -0,0 +1,67 @@
> +* Device tree bindings for Texas Instruments keystone reset
> +
> +This node is intended to allow SoC reset in case of software reset
> +of selected watchdogs.
> +
> +The Keystone SoCs can contain up to 4 watchdog timers to reset
> +SoC. Each watchdog timer event input is connected to the Reset Mux
> +block. The Reset Mux block can be configured to cause reset or not.
> +
> +Additionally soft or hard reset can be configured.
> +
> +Required properties:
> +
> +- compatible: ti,keystone-reset
> +
> +- 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.
> +
> +Optional properties:
> +
> +- ti,soft-reset: Boolean option indicating soft reset.
> + By default hard reset is used.
> +
> +- ti,wdt_list: WDT list that can cause SoC reset. It's not related
Hm, why underscore in this property while hyphens are used in the others?
Hyphen is generally preferrable in the device tree names...
> + to WDT driver, it's just needed to enable a SoC related
> + reset that's triggered by one of WDTs. The list is
> + in format: <0>, <2>; It can be in random order and
> + begins from 0 to 3, as keystone can contain up to 4 SoC
> + reset watchdogs and can be in random order.
WBR, Sergei
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Patch v6 4/7] power: reset: add bindings for keystone reset driver
2014-05-22 18:03 ` Sergei Shtylyov
(?)
@ 2014-05-22 18:19 ` Ivan Khoronzhuk
-1 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 18:19 UTC (permalink / raw)
To: Sergei Shtylyov, dbaryshkov, dwmw2, lee.jones, santosh.shilimkar,
arnd, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2
On 05/22/2014 09:03 PM, Sergei Shtylyov wrote:
> Hello.
>
> On 05/22/2014 08:44 PM, Ivan Khoronzhuk wrote:
>
>> This node is intended to allow SoC reset in case of software reset
>> or appropriate watchdogs.
>
>> The Keystone SoCs can contain up to 4 watchdog timers to reset
>> SoC. Each watchdog timer event input is connected to the Reset Mux
>> block. The Reset Mux block can be configured to cause reset or not.
>
>> Additionally soft or hard reset can be configured.
>
>> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
>> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
>> ---
>> .../bindings/power/reset/keystone-reset.txt | 67
>> ++++++++++++++++++++++
>> 1 file changed, 67 insertions(+)
>> create mode 100644
>> Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>
>> diff --git
>> a/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>> b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>> new file mode 100644
>> index 0000000..a8a0c31
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>> @@ -0,0 +1,67 @@
>> +* Device tree bindings for Texas Instruments keystone reset
>> +
>> +This node is intended to allow SoC reset in case of software reset
>> +of selected watchdogs.
>> +
>> +The Keystone SoCs can contain up to 4 watchdog timers to reset
>> +SoC. Each watchdog timer event input is connected to the Reset Mux
>> +block. The Reset Mux block can be configured to cause reset or not.
>> +
>> +Additionally soft or hard reset can be configured.
>> +
>> +Required properties:
>> +
>> +- compatible: ti,keystone-reset
>> +
>> +- 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.
>> +
>> +Optional properties:
>> +
>> +- ti,soft-reset: Boolean option indicating soft reset.
>> + By default hard reset is used.
>> +
>> +- ti,wdt_list: WDT list that can cause SoC reset. It's not
>> related
>
> Hm, why underscore in this property while hyphens are used in the
> others? Hyphen is generally preferrable in the device tree names...
Yes. You are right. I'll correct
Thanks!
>
>> + to WDT driver, it's just needed to enable a SoC related
>> + reset that's triggered by one of WDTs. The list is
>> + in format: <0>, <2>; It can be in random order and
>> + begins from 0 to 3, as keystone can contain up to 4 SoC
>> + reset watchdogs and can be in random order.
>
> WBR, Sergei
>
--
Regards,
Ivan Khoronzhuk
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Patch v6 4/7] power: reset: add bindings for keystone reset driver
@ 2014-05-22 18:19 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 18:19 UTC (permalink / raw)
To: Sergei Shtylyov, dbaryshkov, dwmw2, lee.jones, santosh.shilimkar,
arnd, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
grant.likely
Cc: rdunlap, linux, grygorii.strashko, olof, w-kwok2, sboyd,
devicetree, linux-doc, linux-kernel, linux-arm-kernel,
m-karicheri2
On 05/22/2014 09:03 PM, Sergei Shtylyov wrote:
> Hello.
>
> On 05/22/2014 08:44 PM, Ivan Khoronzhuk wrote:
>
>> This node is intended to allow SoC reset in case of software reset
>> or appropriate watchdogs.
>
>> The Keystone SoCs can contain up to 4 watchdog timers to reset
>> SoC. Each watchdog timer event input is connected to the Reset Mux
>> block. The Reset Mux block can be configured to cause reset or not.
>
>> Additionally soft or hard reset can be configured.
>
>> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
>> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
>> ---
>> .../bindings/power/reset/keystone-reset.txt | 67
>> ++++++++++++++++++++++
>> 1 file changed, 67 insertions(+)
>> create mode 100644
>> Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>
>> diff --git
>> a/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>> b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>> new file mode 100644
>> index 0000000..a8a0c31
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>> @@ -0,0 +1,67 @@
>> +* Device tree bindings for Texas Instruments keystone reset
>> +
>> +This node is intended to allow SoC reset in case of software reset
>> +of selected watchdogs.
>> +
>> +The Keystone SoCs can contain up to 4 watchdog timers to reset
>> +SoC. Each watchdog timer event input is connected to the Reset Mux
>> +block. The Reset Mux block can be configured to cause reset or not.
>> +
>> +Additionally soft or hard reset can be configured.
>> +
>> +Required properties:
>> +
>> +- compatible: ti,keystone-reset
>> +
>> +- 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.
>> +
>> +Optional properties:
>> +
>> +- ti,soft-reset: Boolean option indicating soft reset.
>> + By default hard reset is used.
>> +
>> +- ti,wdt_list: WDT list that can cause SoC reset. It's not
>> related
>
> Hm, why underscore in this property while hyphens are used in the
> others? Hyphen is generally preferrable in the device tree names...
Yes. You are right. I'll correct
Thanks!
>
>> + to WDT driver, it's just needed to enable a SoC related
>> + reset that's triggered by one of WDTs. The list is
>> + in format: <0>, <2>; It can be in random order and
>> + begins from 0 to 3, as keystone can contain up to 4 SoC
>> + reset watchdogs and can be in random order.
>
> WBR, Sergei
>
--
Regards,
Ivan Khoronzhuk
^ permalink raw reply [flat|nested] 34+ messages in thread
* [Patch v6 4/7] power: reset: add bindings for keystone reset driver
@ 2014-05-22 18:19 ` Ivan Khoronzhuk
0 siblings, 0 replies; 34+ messages in thread
From: Ivan Khoronzhuk @ 2014-05-22 18:19 UTC (permalink / raw)
To: linux-arm-kernel
On 05/22/2014 09:03 PM, Sergei Shtylyov wrote:
> Hello.
>
> On 05/22/2014 08:44 PM, Ivan Khoronzhuk wrote:
>
>> This node is intended to allow SoC reset in case of software reset
>> or appropriate watchdogs.
>
>> The Keystone SoCs can contain up to 4 watchdog timers to reset
>> SoC. Each watchdog timer event input is connected to the Reset Mux
>> block. The Reset Mux block can be configured to cause reset or not.
>
>> Additionally soft or hard reset can be configured.
>
>> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
>> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
>> ---
>> .../bindings/power/reset/keystone-reset.txt | 67
>> ++++++++++++++++++++++
>> 1 file changed, 67 insertions(+)
>> create mode 100644
>> Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>
>> diff --git
>> a/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>> b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>> new file mode 100644
>> index 0000000..a8a0c31
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt
>> @@ -0,0 +1,67 @@
>> +* Device tree bindings for Texas Instruments keystone reset
>> +
>> +This node is intended to allow SoC reset in case of software reset
>> +of selected watchdogs.
>> +
>> +The Keystone SoCs can contain up to 4 watchdog timers to reset
>> +SoC. Each watchdog timer event input is connected to the Reset Mux
>> +block. The Reset Mux block can be configured to cause reset or not.
>> +
>> +Additionally soft or hard reset can be configured.
>> +
>> +Required properties:
>> +
>> +- compatible: ti,keystone-reset
>> +
>> +- 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.
>> +
>> +Optional properties:
>> +
>> +- ti,soft-reset: Boolean option indicating soft reset.
>> + By default hard reset is used.
>> +
>> +- ti,wdt_list: WDT list that can cause SoC reset. It's not
>> related
>
> Hm, why underscore in this property while hyphens are used in the
> others? Hyphen is generally preferrable in the device tree names...
Yes. You are right. I'll correct
Thanks!
>
>> + to WDT driver, it's just needed to enable a SoC related
>> + reset that's triggered by one of WDTs. The list is
>> + in format: <0>, <2>; It can be in random order and
>> + begins from 0 to 3, as keystone can contain up to 4 SoC
>> + reset watchdogs and can be in random order.
>
> WBR, Sergei
>
--
Regards,
Ivan Khoronzhuk
^ permalink raw reply [flat|nested] 34+ messages in thread
end of thread, other threads:[~2014-05-22 18:21 UTC | newest]
Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-22 16:44 [Patch v6 0/7] Introduce keystone reset driver Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` [Patch v6 1/7] power: reset: keystone-reset: introduce " Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` [Patch v6 2/7] clock: keystone-pllctrl: add bindings for keystone pll controller Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` [Patch v6 3/7] mfd: ti-keystone-devctrl: add bindings for device state control Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 17:11 ` Lee Jones
2014-05-22 17:11 ` Lee Jones
2014-05-22 17:16 ` Ivan Khoronzhuk
2014-05-22 17:16 ` Ivan Khoronzhuk
2014-05-22 17:16 ` Ivan Khoronzhuk
2014-05-22 16:44 ` [Patch v6 4/7] power: reset: add bindings for keystone reset driver Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 18:03 ` Sergei Shtylyov
2014-05-22 18:03 ` Sergei Shtylyov
2014-05-22 18:19 ` Ivan Khoronzhuk
2014-05-22 18:19 ` Ivan Khoronzhuk
2014-05-22 18:19 ` Ivan Khoronzhuk
2014-05-22 16:44 ` [Patch v6 5/7] ARM: keystone: remove redundant reset stuff Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` [Patch v6 6/7] ARM: dts: keystone: update reset node to work with reset driver Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` [Patch v6 7/7] ARM: keystone: enable reset driver support Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
2014-05-22 16:44 ` Ivan Khoronzhuk
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.