Jelajahi Sumber

Merge tag 'arm-soc/for-4.8/drivers' of http://github.com/Broadcom/stblinux into next/drivers

This pull request contains drivers related changes for Broadcom SoCs:

- Florian moves drivers/soc/brcmstb to drivers/soc/bcm/brcmstb to be consistent with
  how other SoCs are doing it

- Chris provides a reset driver which is common to the BCM21664 and BCM23550 SoCs

- Ben fixes a warning by providing the appropriate include file

* tag 'arm-soc/for-4.8/drivers' of http://github.com/Broadcom/stblinux:
  soc: brcmstb: fix warning from missing include
  power: Introduce Broadcom kona reset driver
  soc: Move brcmstb to bcm/brcmstb

Signed-off-by: Olof Johansson <olof@lixom.net>
Olof Johansson 9 tahun lalu
induk
melakukan
13d0b76b93

+ 1 - 0
MAINTAINERS

@@ -2489,6 +2489,7 @@ F:	arch/arm64/boot/dts/broadcom/
 F:	arch/arm/configs/bcm_defconfig
 F:	arch/arm/configs/bcm_defconfig
 F:	drivers/mmc/host/sdhci-bcm-kona.c
 F:	drivers/mmc/host/sdhci-bcm-kona.c
 F:	drivers/clocksource/bcm_kona_timer.c
 F:	drivers/clocksource/bcm_kona_timer.c
+F:	drivers/power/reset/brcm-kona-reset.c
 
 
 BROADCOM BCM2835 ARM ARCHITECTURE
 BROADCOM BCM2835 ARM ARCHITECTURE
 M:	Stephen Warren <swarren@wwwdotorg.org>
 M:	Stephen Warren <swarren@wwwdotorg.org>

+ 10 - 0
drivers/power/reset/Kconfig

@@ -46,6 +46,16 @@ config POWER_RESET_AXXIA
 
 
 	  Say Y if you have an Axxia family SoC.
 	  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
 config POWER_RESET_BRCMSTB
 	bool "Broadcom STB reset driver"
 	bool "Broadcom STB reset driver"
 	depends on ARM || MIPS || COMPILE_TEST
 	depends on ARM || MIPS || COMPILE_TEST

+ 1 - 0
drivers/power/reset/Makefile

@@ -3,6 +3,7 @@ obj-$(CONFIG_POWER_RESET_AT91_POWEROFF) += at91-poweroff.o
 obj-$(CONFIG_POWER_RESET_AT91_RESET) += at91-reset.o
 obj-$(CONFIG_POWER_RESET_AT91_RESET) += at91-reset.o
 obj-$(CONFIG_POWER_RESET_AT91_SAMA5D2_SHDWC) += at91-sama5d2_shdwc.o
 obj-$(CONFIG_POWER_RESET_AT91_SAMA5D2_SHDWC) += at91-sama5d2_shdwc.o
 obj-$(CONFIG_POWER_RESET_AXXIA) += axxia-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_BRCMSTB) += brcmstb-reboot.o
 obj-$(CONFIG_POWER_RESET_GPIO) += gpio-poweroff.o
 obj-$(CONFIG_POWER_RESET_GPIO) += gpio-poweroff.o
 obj-$(CONFIG_POWER_RESET_GPIO_RESTART) += gpio-restart.o
 obj-$(CONFIG_POWER_RESET_GPIO_RESTART) += gpio-restart.o

+ 73 - 0
drivers/power/reset/brcm-kona-reset.c

@@ -0,0 +1,73 @@
+/*
+ * 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>
+
+#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);

+ 0 - 1
drivers/soc/Kconfig

@@ -1,7 +1,6 @@
 menu "SOC (System On Chip) specific Drivers"
 menu "SOC (System On Chip) specific Drivers"
 
 
 source "drivers/soc/bcm/Kconfig"
 source "drivers/soc/bcm/Kconfig"
-source "drivers/soc/brcmstb/Kconfig"
 source "drivers/soc/fsl/qe/Kconfig"
 source "drivers/soc/fsl/qe/Kconfig"
 source "drivers/soc/mediatek/Kconfig"
 source "drivers/soc/mediatek/Kconfig"
 source "drivers/soc/qcom/Kconfig"
 source "drivers/soc/qcom/Kconfig"

+ 0 - 1
drivers/soc/Makefile

@@ -3,7 +3,6 @@
 #
 #
 
 
 obj-y				+= bcm/
 obj-y				+= bcm/
-obj-$(CONFIG_SOC_BRCMSTB)	+= brcmstb/
 obj-$(CONFIG_ARCH_DOVE)		+= dove/
 obj-$(CONFIG_ARCH_DOVE)		+= dove/
 obj-$(CONFIG_MACH_DOVE)		+= dove/
 obj-$(CONFIG_MACH_DOVE)		+= dove/
 obj-y				+= fsl/
 obj-y				+= fsl/

+ 15 - 0
drivers/soc/bcm/Kconfig

@@ -1,3 +1,5 @@
+menu "Broadcom SoC drivers"
+
 config RASPBERRYPI_POWER
 config RASPBERRYPI_POWER
 	bool "Raspberry Pi power domain driver"
 	bool "Raspberry Pi power domain driver"
 	depends on ARCH_BCM2835 || COMPILE_TEST
 	depends on ARCH_BCM2835 || COMPILE_TEST
@@ -7,3 +9,16 @@ config RASPBERRYPI_POWER
 	help
 	help
 	  This enables support for the RPi power domains which can be enabled
 	  This enables support for the RPi power domains which can be enabled
 	  or disabled via the RPi firmware.
 	  or disabled via the RPi firmware.
+
+config SOC_BRCMSTB
+	bool "Broadcom STB SoC drivers"
+	depends on ARM
+	select SOC_BUS
+	help
+	  Enables drivers for the Broadcom Set-Top Box (STB) series of chips.
+	  This option alone enables only some support code, while the drivers
+	  can be enabled individually within this menu.
+
+	  If unsure, say N.
+
+endmenu

+ 1 - 0
drivers/soc/bcm/Makefile

@@ -1 +1,2 @@
 obj-$(CONFIG_RASPBERRYPI_POWER)	+= raspberrypi-power.o
 obj-$(CONFIG_RASPBERRYPI_POWER)	+= raspberrypi-power.o
+obj-$(CONFIG_SOC_BRCMSTB)	+= brcmstb/

+ 0 - 0
drivers/soc/brcmstb/Makefile → drivers/soc/bcm/brcmstb/Makefile


+ 1 - 0
drivers/soc/brcmstb/biuctrl.c → drivers/soc/bcm/brcmstb/biuctrl.c

@@ -19,6 +19,7 @@
 #include <linux/io.h>
 #include <linux/io.h>
 #include <linux/of_address.h>
 #include <linux/of_address.h>
 #include <linux/syscore_ops.h>
 #include <linux/syscore_ops.h>
+#include <linux/soc/brcmstb/brcmstb.h>
 
 
 #define CPU_CREDIT_REG_OFFSET			0x184
 #define CPU_CREDIT_REG_OFFSET			0x184
 #define  CPU_CREDIT_REG_MCPx_WR_PAIRING_EN_MASK	0x70000000
 #define  CPU_CREDIT_REG_MCPx_WR_PAIRING_EN_MASK	0x70000000

+ 0 - 0
drivers/soc/brcmstb/common.c → drivers/soc/bcm/brcmstb/common.c


+ 0 - 10
drivers/soc/brcmstb/Kconfig

@@ -1,10 +0,0 @@
-menuconfig SOC_BRCMSTB
-	bool "Broadcom STB SoC drivers"
-	depends on ARM
-	select SOC_BUS
-	help
-	  Enables drivers for the Broadcom Set-Top Box (STB) series of chips.
-	  This option alone enables only some support code, while the drivers
-	  can be enabled individually within this menu.
-
-	  If unsure, say N.