* [PATCH V3 0/3] Enable X-Gene platform reboot driver. @ 2014-01-15 1:07 Feng Kan 2014-01-15 1:07 ` [PATCH V3 1/3] arm64: add reboot dts entry for X-Gene platform Feng Kan ` (2 more replies) 0 siblings, 3 replies; 6+ messages in thread From: Feng Kan @ 2014-01-15 1:07 UTC (permalink / raw) To: linux-arm-kernel, linux-kernel, devicetree; +Cc: Feng Kan Enable X-Gene platform driver for the X-Gene platform. Change the driver to use syscon to access the system clock unit's system reset register. V2 Change: - Add support for using ACPI resource. V3 Change: - Remove the reboot driver's use of acpi resource patch. - Change the reboot driver to use syscon to parse out system clock register. Remove the old method of getting register from the reboot driver directly. - Remove documentation since its now simple. Feng Kan (3): arm64: add reboot dts entry for X-Gene platform. arm64: Enable system reset via arch Kconfig for X-Gene system. power: reset: use syscon driver to parse reboot register from scu arch/arm64/Kconfig | 2 ++ arch/arm64/boot/dts/apm-storm.dtsi | 10 ++++++++++ drivers/power/reset/xgene-reboot.c | 33 +++++++++++++++++---------------- 3 files changed, 29 insertions(+), 16 deletions(-) -- 1.7.6.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH V3 1/3] arm64: add reboot dts entry for X-Gene platform. 2014-01-15 1:07 [PATCH V3 0/3] Enable X-Gene platform reboot driver Feng Kan @ 2014-01-15 1:07 ` Feng Kan 2014-01-15 1:07 ` [PATCH V3 2/3] arm64: Enable system reset via arch Kconfig for X-Gene system Feng Kan 2014-01-15 1:07 ` [PATCH V3 3/3] power: reset: use syscon driver to parse reboot register from scu Feng Kan 2 siblings, 0 replies; 6+ messages in thread From: Feng Kan @ 2014-01-15 1:07 UTC (permalink / raw) To: linux-arm-kernel, linux-kernel, devicetree; +Cc: Feng Kan Add missing dts entries for the X-Gene reboot driver. Signed-off-by: Feng Kan <fkan@apm.com> --- arch/arm64/boot/dts/apm-storm.dtsi | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi index d37d736..7beac9d 100644 --- a/arch/arm64/boot/dts/apm-storm.dtsi +++ b/arch/arm64/boot/dts/apm-storm.dtsi @@ -103,6 +103,11 @@ #size-cells = <2>; ranges; + scu: system-clk-controller@17000000 { + compatible = "apm,xgene-scu","syscon"; + reg = <0x0 0x17000000 0x0 0x400>; + }; + clocks { #address-cells = <2>; #size-cells = <2>; @@ -187,5 +192,10 @@ interrupt-parent = <&gic>; interrupts = <0x0 0x4c 0x4>; }; + + reboot@17000014 { + compatible = "apm,xgene-reboot"; + apm,scu = <&scu>; + }; }; }; -- 1.7.6.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH V3 2/3] arm64: Enable system reset via arch Kconfig for X-Gene system. 2014-01-15 1:07 [PATCH V3 0/3] Enable X-Gene platform reboot driver Feng Kan 2014-01-15 1:07 ` [PATCH V3 1/3] arm64: add reboot dts entry for X-Gene platform Feng Kan @ 2014-01-15 1:07 ` Feng Kan 2014-01-15 1:07 ` [PATCH V3 3/3] power: reset: use syscon driver to parse reboot register from scu Feng Kan 2 siblings, 0 replies; 6+ messages in thread From: Feng Kan @ 2014-01-15 1:07 UTC (permalink / raw) To: linux-arm-kernel, linux-kernel, devicetree; +Cc: Feng Kan Select X-Gene reboot driver for X-Gene platform. Signed-off-by: Feng Kan <fkan@apm.com> --- arch/arm64/Kconfig | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 249acb9..bfdf029 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -122,6 +122,8 @@ config ARCH_VEXPRESS config ARCH_XGENE bool "AppliedMicro X-Gene SOC Family" + select POWER_RESET_XGENE + select MFD_SYSCON help This enables support for AppliedMicro X-Gene SOC Family -- 1.7.6.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH V3 3/3] power: reset: use syscon driver to parse reboot register from scu 2014-01-15 1:07 [PATCH V3 0/3] Enable X-Gene platform reboot driver Feng Kan 2014-01-15 1:07 ` [PATCH V3 1/3] arm64: add reboot dts entry for X-Gene platform Feng Kan 2014-01-15 1:07 ` [PATCH V3 2/3] arm64: Enable system reset via arch Kconfig for X-Gene system Feng Kan @ 2014-01-15 1:07 ` Feng Kan 2014-01-17 16:52 ` Arnd Bergmann 2 siblings, 1 reply; 6+ messages in thread From: Feng Kan @ 2014-01-15 1:07 UTC (permalink / raw) To: linux-arm-kernel, linux-kernel, devicetree; +Cc: Feng Kan Use the syscon driver to parse out the reboot register map and issue reboot via the regmap function. Signed-off-by: Feng Kan <fkan@apm.com> --- drivers/power/reset/xgene-reboot.c | 75 +++++++++--------------------------- 1 files changed, 19 insertions(+), 56 deletions(-) diff --git a/drivers/power/reset/xgene-reboot.c b/drivers/power/reset/xgene-reboot.c index ecd55f8..660ed8a 100644 --- a/drivers/power/reset/xgene-reboot.c +++ b/drivers/power/reset/xgene-reboot.c @@ -24,80 +24,43 @@ * For system shutdown, this is board specify. If a board designer * implements GPIO shutdown, use the gpio-poweroff.c driver. */ -#include <linux/io.h> #include <linux/of_device.h> #include <linux/of_address.h> #include <linux/platform_device.h> -#include <linux/stat.h> -#include <linux/slab.h> +#include <linux/mfd/syscon.h> +#include <linux/regmap.h> +#include <linux/reboot.h> #include <asm/system_misc.h> -struct xgene_reboot_context { - struct platform_device *pdev; - void *csr; - u32 mask; -}; +#define SCU_SRST 0x14 -static struct xgene_reboot_context *xgene_restart_ctx; - -static void xgene_restart(char str, const char *cmd) +static void xgene_restart(enum reboot_mode reboot_mode, const char *cmd) { - struct xgene_reboot_context *ctx = xgene_restart_ctx; unsigned long timeout; + struct regmap *map; + unsigned int ret; + struct device_node *dn; + + dn = of_find_node_by_name(NULL, "reboot"); + map = syscon_regmap_lookup_by_phandle(dn, "apm,scu"); + if (IS_ERR(map)) { + ret = PTR_ERR(map); + pr_err("Reboot driver failed to get scu regmap: %d\n", ret); + return; + } - /* Issue the reboot */ - if (ctx) - writel(ctx->mask, ctx->csr); + regmap_write(map, SCU_SRST, 0x1); timeout = jiffies + HZ; while (time_before(jiffies, timeout)) cpu_relax(); - dev_emerg(&ctx->pdev->dev, "Unable to restart system\n"); + pr_emerg("Unable to restart system\n"); } -static int xgene_reboot_probe(struct platform_device *pdev) +static int __init xgene_reboot_init(void) { - struct xgene_reboot_context *ctx; - - ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); - if (!ctx) { - dev_err(&pdev->dev, "out of memory for context\n"); - return -ENODEV; - } - - ctx->csr = of_iomap(pdev->dev.of_node, 0); - if (!ctx->csr) { - devm_kfree(&pdev->dev, ctx); - dev_err(&pdev->dev, "can not map resource\n"); - return -ENODEV; - } - - if (of_property_read_u32(pdev->dev.of_node, "mask", &ctx->mask)) - ctx->mask = 0xFFFFFFFF; - - ctx->pdev = pdev; arm_pm_restart = xgene_restart; - xgene_restart_ctx = ctx; - return 0; } - -static struct of_device_id xgene_reboot_of_match[] = { - { .compatible = "apm,xgene-reboot" }, - {} -}; - -static struct platform_driver xgene_reboot_driver = { - .probe = xgene_reboot_probe, - .driver = { - .name = "xgene-reboot", - .of_match_table = xgene_reboot_of_match, - }, -}; - -static int __init xgene_reboot_init(void) -{ - return platform_driver_register(&xgene_reboot_driver); -} device_initcall(xgene_reboot_init); -- 1.7.6.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH V3 3/3] power: reset: use syscon driver to parse reboot register from scu 2014-01-15 1:07 ` [PATCH V3 3/3] power: reset: use syscon driver to parse reboot register from scu Feng Kan @ 2014-01-17 16:52 ` Arnd Bergmann 2014-01-17 16:59 ` Alexander Shiyan 0 siblings, 1 reply; 6+ messages in thread From: Arnd Bergmann @ 2014-01-17 16:52 UTC (permalink / raw) To: linux-arm-kernel; +Cc: Feng Kan, linux-kernel, devicetree On Wednesday 15 January 2014, Feng Kan wrote: > +static int __init xgene_reboot_init(void) > { > arm_pm_restart = xgene_restart; > return 0; > } > device_initcall(xgene_reboot_init); This won't work on a generic kernel, since you unconditionally set the pm_restart function to your own, which is broken for everything else. Please keep the platform_driver to attach to the reboot device as you had before. It might be good to turn this into a generic "syscon-reset" driver that gets both the register number and the contents to write from the device node. Arnd ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V3 3/3] power: reset: use syscon driver to parse reboot register from scu 2014-01-17 16:52 ` Arnd Bergmann @ 2014-01-17 16:59 ` Alexander Shiyan 0 siblings, 0 replies; 6+ messages in thread From: Alexander Shiyan @ 2014-01-17 16:59 UTC (permalink / raw) To: Arnd Bergmann; +Cc: Feng Kan, linux-kernel, linux-arm-kernel, devicetree Пятница, 17 января 2014, 17:52 +01:00 от Arnd Bergmann <arnd@arndb.de>: > On Wednesday 15 January 2014, Feng Kan wrote: > > +static int __init xgene_reboot_init(void) > > { > > arm_pm_restart = xgene_restart; > > return 0; > > } > > device_initcall(xgene_reboot_init); > > This won't work on a generic kernel, since you unconditionally set the > pm_restart function to your own, which is broken for everything else. > > Please keep the platform_driver to attach to the reboot device > as you had before. It might be good to turn this into a generic > "syscon-reset" driver that gets both the register number and > the contents to write from the device node. I am not sure but think the new driver for SYSCON GPIOs can be reused for such purpose: http://www.spinics.net/lists/devicetree/msg18221.html --- _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-01-17 16:59 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-01-15 1:07 [PATCH V3 0/3] Enable X-Gene platform reboot driver Feng Kan 2014-01-15 1:07 ` [PATCH V3 1/3] arm64: add reboot dts entry for X-Gene platform Feng Kan 2014-01-15 1:07 ` [PATCH V3 2/3] arm64: Enable system reset via arch Kconfig for X-Gene system Feng Kan 2014-01-15 1:07 ` [PATCH V3 3/3] power: reset: use syscon driver to parse reboot register from scu Feng Kan 2014-01-17 16:52 ` Arnd Bergmann 2014-01-17 16:59 ` Alexander Shiyan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).