Message ID | 1463002582-6875-2-git-send-email-chris.brand@broadcom.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Le 11/05/2016 14:36, Chris Brand a écrit : > This driver supports reset on both BCM21664 and BCM23550. > Code is being moved from arch/arm/mach-bcm/board_bcm21664.c > > Signed-off-by: Chris Brand <chris.brand@broadcom.com> Sebastian, Dmitry, I know we are in the merge window, let me know if you would want me to take this patch and the 5 others in the next arm-soc pull request, or if you prefer to take this one in your own tree. Thanks!
Hi Florian, On Sat, May 21, 2016 at 10:09:07AM -0700, Florian Fainelli wrote: > Le 11/05/2016 14:36, Chris Brand a écrit : > > This driver supports reset on both BCM21664 and BCM23550. > > Code is being moved from arch/arm/mach-bcm/board_bcm21664.c > > > > Signed-off-by: Chris Brand <chris.brand@broadcom.com> > Sebastian, Dmitry, I know we are in the merge window, let me know if you > would want me to take this patch and the 5 others in the next arm-soc > pull request, or if you prefer to take this one in your own tree. Feel free to queue it via arm-soc with Acked-By: Sebastian Reichel <sre@kernel.org> If I didn't overlook it, it's missing DT documentation, though. -- Sebastian
On Thu, Jun 2, 2016 at 7:38 PM, Sebastian Reichel <sre@kernel.org> wrote: > Feel free to queue it via arm-soc with > > Acked-By: Sebastian Reichel <sre@kernel.org> > > If I didn't overlook it, it's missing DT documentation, though. Thanks, Sebastian. Because this is effectively a move of code from arch/arm rather than new code, there's already dt documentation in Documentation/devicetree/bindings/reset/brcm,bcm21664-resetmgr.txt Chris
Hi, On Mon, Jun 06, 2016 at 09:42:03AM -0700, Chris Brand wrote: > On Thu, Jun 2, 2016 at 7:38 PM, Sebastian Reichel <sre@kernel.org> wrote: > > Feel free to queue it via arm-soc with > > > > Acked-By: Sebastian Reichel <sre@kernel.org> > > > > If I didn't overlook it, it's missing DT documentation, though. > > Thanks, Sebastian. Because this is effectively a move of code from > arch/arm rather than new code, there's already dt documentation in > Documentation/devicetree/bindings/reset/brcm,bcm21664-resetmgr.txt Ok. That directory is usually used for periphal reset controller. Board/System reset controllers are usually documented in .../bindings/power/reset (following kernel strucuture [drivers/reset and drivers/power/reset]). -- Sebastian
On Mon, Jun 6, 2016 at 6:50 PM, Sebastian Reichel <sre@kernel.org> wrote: > Hi, > > On Mon, Jun 06, 2016 at 09:42:03AM -0700, Chris Brand wrote: >> On Thu, Jun 2, 2016 at 7:38 PM, Sebastian Reichel <sre@kernel.org> wrote: >> > Feel free to queue it via arm-soc with >> > >> > Acked-By: Sebastian Reichel <sre@kernel.org> >> > >> > If I didn't overlook it, it's missing DT documentation, though. >> >> Thanks, Sebastian. Because this is effectively a move of code from >> arch/arm rather than new code, there's already dt documentation in >> Documentation/devicetree/bindings/reset/brcm,bcm21664-resetmgr.txt > > Ok. That directory is usually used for periphal reset controller. > Board/System reset controllers are usually documented in > .../bindings/power/reset (following kernel strucuture > [drivers/reset and drivers/power/reset]). > > -- Sebastian Would you like me to send a separate patch to move that file ? Chris
Hi, On Tue, Jun 07, 2016 at 12:40:41PM -0700, Chris Brand wrote: > On Mon, Jun 6, 2016 at 6:50 PM, Sebastian Reichel <sre@kernel.org> wrote: > > Hi, > > > > On Mon, Jun 06, 2016 at 09:42:03AM -0700, Chris Brand wrote: > >> On Thu, Jun 2, 2016 at 7:38 PM, Sebastian Reichel <sre@kernel.org> wrote: > >> > Feel free to queue it via arm-soc with > >> > > >> > Acked-By: Sebastian Reichel <sre@kernel.org> > >> > > >> > If I didn't overlook it, it's missing DT documentation, though. > >> > >> Thanks, Sebastian. Because this is effectively a move of code from > >> arch/arm rather than new code, there's already dt documentation in > >> Documentation/devicetree/bindings/reset/brcm,bcm21664-resetmgr.txt > > > > Ok. That directory is usually used for periphal reset controller. > > Board/System reset controllers are usually documented in > > .../bindings/power/reset (following kernel strucuture > > [drivers/reset and drivers/power/reset]). > > > > -- Sebastian > > Would you like me to send a separate patch to move that file ? That would nice, thanks! -- Sebastian
diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig index 0a6408a39c66..1a7c49f3650a 100644 --- a/drivers/power/reset/Kconfig +++ b/drivers/power/reset/Kconfig @@ -38,6 +38,16 @@ config POWER_RESET_AXXIA Say Y if you have an Axxia family SoC. +config POWER_RESET_BRCMKONA + bool "Broadcom Kona reset driver" + depends on ARM || COMPILE_TEST + default ARCH_BCM_MOBILE + help + This driver provides restart support for Broadcom Kona chips. + + Say Y here if you have a Broadcom Kona-based board and you wish + to have restart support. + config POWER_RESET_BRCMSTB bool "Broadcom STB reset driver" depends on ARM || MIPS || COMPILE_TEST diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile index 096fa67047f6..ddb9a5b35480 100644 --- a/drivers/power/reset/Makefile +++ b/drivers/power/reset/Makefile @@ -2,6 +2,7 @@ obj-$(CONFIG_POWER_RESET_AS3722) += as3722-poweroff.o obj-$(CONFIG_POWER_RESET_AT91_POWEROFF) += at91-poweroff.o obj-$(CONFIG_POWER_RESET_AT91_RESET) += at91-reset.o obj-$(CONFIG_POWER_RESET_AXXIA) += axxia-reset.o +obj-$(CONFIG_POWER_RESET_BRCMKONA) += brcm-kona-reset.o obj-$(CONFIG_POWER_RESET_BRCMSTB) += brcmstb-reboot.o obj-$(CONFIG_POWER_RESET_GPIO) += gpio-poweroff.o obj-$(CONFIG_POWER_RESET_GPIO_RESTART) += gpio-restart.o diff --git a/drivers/power/reset/brcm-kona-reset.c b/drivers/power/reset/brcm-kona-reset.c new file mode 100644 index 000000000000..d6f2070be89c --- /dev/null +++ b/drivers/power/reset/brcm-kona-reset.c @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2016 Broadcom + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation version 2. + * + * This program is distributed "as is" WITHOUT ANY WARRANTY of any + * kind, whether express or implied; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <linux/io.h> +#include <linux/of_address.h> +#include <linux/of_platform.h> +#include <linux/reboot.h> + +#include <asm/mach/arch.h> + +#define RSTMGR_REG_WR_ACCESS_OFFSET 0 +#define RSTMGR_REG_CHIP_SOFT_RST_OFFSET 4 + +#define RSTMGR_WR_PASSWORD 0xa5a5 +#define RSTMGR_WR_PASSWORD_SHIFT 8 +#define RSTMGR_WR_ACCESS_ENABLE 1 + +static void __iomem *kona_reset_base; + +static int kona_reset_handler(struct notifier_block *this, + unsigned long mode, void *cmd) +{ + /* + * A soft reset is triggered by writing a 0 to bit 0 of the soft reset + * register. To write to that register we must first write the password + * and the enable bit in the write access enable register. + */ + writel((RSTMGR_WR_PASSWORD << RSTMGR_WR_PASSWORD_SHIFT) | + RSTMGR_WR_ACCESS_ENABLE, + kona_reset_base + RSTMGR_REG_WR_ACCESS_OFFSET); + writel(0, kona_reset_base + RSTMGR_REG_CHIP_SOFT_RST_OFFSET); + + return NOTIFY_DONE; +} + +static struct notifier_block kona_reset_nb = { + .notifier_call = kona_reset_handler, + .priority = 128, +}; + +static int kona_reset_probe(struct platform_device *pdev) +{ + struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + + kona_reset_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(kona_reset_base)) + return PTR_ERR(kona_reset_base); + + return register_restart_handler(&kona_reset_nb); +} + +static const struct of_device_id of_match[] = { + { .compatible = "brcm,bcm21664-resetmgr" }, + {}, +}; + +static struct platform_driver bcm_kona_reset_driver = { + .probe = kona_reset_probe, + .driver = { + .name = "brcm-kona-reset", + .of_match_table = of_match, + }, +}; + +builtin_platform_driver(bcm_kona_reset_driver);
This driver supports reset on both BCM21664 and BCM23550. Code is being moved from arch/arm/mach-bcm/board_bcm21664.c Signed-off-by: Chris Brand <chris.brand@broadcom.com> --- drivers/power/reset/Kconfig | 10 +++++ drivers/power/reset/Makefile | 1 + drivers/power/reset/brcm-kona-reset.c | 75 +++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 drivers/power/reset/brcm-kona-reset.c