All of lore.kernel.org
 help / color / mirror / Atom feed
From: Scott Branden <sbranden@broadcom.com>
To: <bcm-kernel-feedback-list@broadcom.com>,
	Rob Herring <robh+dt@kernel.org>, Pawel Moll <pawel.moll@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	"Ian Campbell" <ijc+devicetree@hellion.org.uk>,
	Kumar Gala <galak@codeaurora.org>, Matt Mackall <mpm@selenic.com>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	Grant Likely <grant.likely@linaro.org>
Cc: Ray Jui <rjui@broadcom.com>,
	Jonathan Richardson <jonathar@broadcom.com>,
	Dmitry Torokhov <dtor@google.com>,
	Anatol Pomazao <anatol@google.com>, <devicetree@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>,
	Scott Branden <sbranden@broadcom.com>
Subject: [PATCH 1/2] hwrng: iproc-rng200 - Add Broadcom IPROC RNG driver
Date: Mon, 9 Feb 2015 16:07:09 -0800	[thread overview]
Message-ID: <1423526830-29516-2-git-send-email-sbranden@broadcom.com> (raw)
In-Reply-To: <1423526830-29516-1-git-send-email-sbranden@broadcom.com>

This adds a driver for random number generator present on Broadcom
IPROC devices.

Reviewed-by: Ray Jui <rjui@broadcom.com>
Signed-off-by: Scott Branden <sbranden@broadcom.com>
---
 drivers/char/hw_random/Kconfig        |  13 ++
 drivers/char/hw_random/Makefile       |   1 +
 drivers/char/hw_random/iproc-rng200.c | 239 ++++++++++++++++++++++++++++++++++
 3 files changed, 253 insertions(+)
 create mode 100644 drivers/char/hw_random/iproc-rng200.c

diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index de57b38..f48cf11 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -101,6 +101,19 @@ config HW_RANDOM_BCM2835
 
 	  If unsure, say Y.
 
+config HW_RANDOM_IPROC_RNG200
+	tristate "Broadcom iProc RNG200 support"
+	depends on ARCH_BCM_IPROC
+	default HW_RANDOM
+	---help---
+	  This driver provides kernel-side support for the RNG200
+	  hardware found on the Broadcom iProc SoCs.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called iproc-rng200
+
+	  If unsure, say Y.
+
 config HW_RANDOM_GEODE
 	tristate "AMD Geode HW Random Number Generator support"
 	depends on X86_32 && PCI
diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile
index 0b4cd57..055bb01 100644
--- a/drivers/char/hw_random/Makefile
+++ b/drivers/char/hw_random/Makefile
@@ -28,5 +28,6 @@ obj-$(CONFIG_HW_RANDOM_POWERNV) += powernv-rng.o
 obj-$(CONFIG_HW_RANDOM_EXYNOS)	+= exynos-rng.o
 obj-$(CONFIG_HW_RANDOM_TPM) += tpm-rng.o
 obj-$(CONFIG_HW_RANDOM_BCM2835) += bcm2835-rng.o
+obj-$(CONFIG_HW_RANDOM_IPROC_RNG200) += iproc-rng200.o
 obj-$(CONFIG_HW_RANDOM_MSM) += msm-rng.o
 obj-$(CONFIG_HW_RANDOM_XGENE) += xgene-rng.o
diff --git a/drivers/char/hw_random/iproc-rng200.c b/drivers/char/hw_random/iproc-rng200.c
new file mode 100644
index 0000000..0fef15d
--- /dev/null
+++ b/drivers/char/hw_random/iproc-rng200.c
@@ -0,0 +1,239 @@
+/*
+* Copyright (C) 2014 Broadcom Corporation
+*
+* 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.
+*/
+/*
+ * DESCRIPTION: The Broadcom iProc RNG200 Driver
+ */
+
+#include <linux/hw_random.h>
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of_address.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/delay.h>
+
+
+/* Registers */
+#define RNG_CTRL_OFFSET					0x00
+#define RNG_CTRL_RNG_RBGEN_MASK				0x00001FFF
+#define RNG_CTRL_RNG_RBGEN_ENABLE			0x00000001
+#define RNG_CTRL_RNG_RBGEN_DISABLE			0x00000000
+
+#define RNG_SOFT_RESET_OFFSET				0x04
+#define RNG_SOFT_RESET_RNG_SOFT_RESET_MASK		0x00000001
+#define RNG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE		0x00000001
+#define RNG_SOFT_RESET_RNG_SOFT_RESET_CLEAR		0x00000000
+
+#define RBG_SOFT_RESET_OFFSET				0x08
+#define RBG_SOFT_RESET_RNG_SOFT_RESET_MASK		0x00000001
+#define RBG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE		0x00000001
+#define RBG_SOFT_RESET_RNG_SOFT_RESET_CLEAR		0x00000000
+
+#define RNG_INT_STATUS_OFFSET				0x18
+#define RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK	0x80000000
+#define RNG_INT_STATUS_STARTUP_TRANSITIONS_MET_IRQ_MASK	0x00020000
+#define RNG_INT_STATUS_NIST_FAIL_IRQ_MASK		0x00000020
+#define RNG_INT_STATUS_TOTAL_BITS_COUNT_IRQ_MASK	0x00000001
+
+#define RNG_FIFO_DATA_OFFSET				0x20
+
+#define RNG_FIFO_COUNT_OFFSET				0x24
+#define RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK		0x000000FF
+
+static void iproc_rng200_restart(void __iomem *rng_base)
+{
+	uint32_t val;
+
+	/* Disable RBG */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_DISABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+
+	/* Clear all interrupt status */
+	iowrite32(0xFFFFFFFFUL, rng_base + RNG_INT_STATUS_OFFSET);
+
+	/* Reset RNG and RBG */
+	val = ioread32(rng_base + RBG_SOFT_RESET_OFFSET);
+	val &= ~RBG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RBG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE;
+	iowrite32(val, rng_base + RBG_SOFT_RESET_OFFSET);
+
+	val = ioread32(rng_base + RNG_SOFT_RESET_OFFSET);
+	val &= ~RNG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RNG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE;
+	iowrite32(val, rng_base + RNG_SOFT_RESET_OFFSET);
+
+	val = ioread32(rng_base + RNG_SOFT_RESET_OFFSET);
+	val &= ~RNG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RNG_SOFT_RESET_RNG_SOFT_RESET_CLEAR;
+	iowrite32(val, rng_base + RNG_SOFT_RESET_OFFSET);
+
+	val = ioread32(rng_base + RBG_SOFT_RESET_OFFSET);
+	val &= ~RBG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RBG_SOFT_RESET_RNG_SOFT_RESET_CLEAR;
+	iowrite32(val, rng_base + RBG_SOFT_RESET_OFFSET);
+
+	/* Enable RBG */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_ENABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+}
+
+static int iproc_rng200_read(struct hwrng *rng, void *buf, size_t max,
+			       bool wait)
+{
+	uint32_t status = 0;
+	uint32_t num_remaining = max;
+
+	#define MAX_RESETS_PER_READ	1
+	uint32_t num_resets = 0;
+
+	#define MAX_IDLE_TIME	(1 * HZ)
+	unsigned long idle_endtime = jiffies + MAX_IDLE_TIME;
+
+	/* Retrieve HW RNG registers base address. */
+	void __iomem *rng_base = (void __iomem *)rng->priv;
+
+	while ((num_remaining > 0) && time_before(jiffies, idle_endtime)) {
+
+		/* Is RNG sane? If not, reset it. */
+		status = ioread32(rng_base + RNG_INT_STATUS_OFFSET);
+		if ((status & (RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK |
+			RNG_INT_STATUS_NIST_FAIL_IRQ_MASK)) != 0) {
+
+			if (num_resets >= MAX_RESETS_PER_READ)
+				return max - num_remaining;
+
+			iproc_rng200_restart(rng_base);
+			num_resets++;
+		}
+
+		/* Are there any random numbers available? */
+		if ((ioread32(rng_base + RNG_FIFO_COUNT_OFFSET) &
+				RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK) > 0) {
+
+			if (num_remaining >= sizeof(uint32_t)) {
+				/* Buffer has room to store entire word */
+				*(uint32_t *)buf = ioread32(rng_base +
+							RNG_FIFO_DATA_OFFSET);
+				buf += sizeof(uint32_t);
+				num_remaining -= sizeof(uint32_t);
+			} else {
+				/* Buffer can only store partial word */
+				uint32_t rnd_number = ioread32(rng_base +
+							RNG_FIFO_DATA_OFFSET);
+				memcpy(buf, &rnd_number, num_remaining);
+				buf += num_remaining;
+				num_remaining = 0;
+			}
+
+			/* Reset the IDLE timeout */
+			idle_endtime = jiffies + MAX_IDLE_TIME;
+		} else {
+			if (!wait)
+				/* Cannot wait, return immediately */
+				return max - num_remaining;
+
+			/* Can wait, give others chance to run */
+			cpu_relax();
+		}
+	}
+
+	return max - num_remaining;
+}
+
+static struct hwrng iproc_rng200_ops = {
+	.name	= "iproc-rng200",
+	.read	= iproc_rng200_read,
+};
+
+static int iproc_rng200_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+	void __iomem *rng_base = 0;
+	uint32_t val = 0;
+	int err = 0;
+
+	/* Map peripheral */
+	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+
+	if (!res) {
+		dev_err(dev, "failed to get rng resources");
+		return -ENODEV;
+	}
+
+	rng_base = devm_ioremap_resource(dev, res);
+	if (!rng_base) {
+		dev_err(dev, "failed to remap rng regs");
+		return -ENODEV;
+	}
+
+	iproc_rng200_ops.priv = (unsigned long)rng_base;
+
+	/* Setup RNG. */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_ENABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+
+	/* Register driver */
+	err = hwrng_register(&iproc_rng200_ops);
+	if (err) {
+		dev_err(dev, "hwrng registration failed\n");
+		return err;
+	}
+	dev_info(dev, "hwrng registered\n");
+
+	return 0;
+}
+
+static int iproc_rng200_remove(struct platform_device *pdev)
+{
+	uint32_t val = 0;
+	void __iomem *rng_base = (void __iomem *)iproc_rng200_ops.priv;
+
+	/* Unregister driver */
+	hwrng_unregister(&iproc_rng200_ops);
+
+	/* Disable RNG hardware */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_DISABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+
+	return 0;
+}
+
+static const struct of_device_id iproc_rng200_of_match[] = {
+	{ .compatible = "brcm,iproc-rng200", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, iproc_rng200_of_match);
+
+static struct platform_driver iproc_rng200_driver = {
+	.driver = {
+		.name = "iproc-rng200",
+		.of_match_table = iproc_rng200_of_match,
+	},
+	.probe		= iproc_rng200_probe,
+	.remove		= iproc_rng200_remove,
+};
+module_platform_driver(iproc_rng200_driver);
+
+MODULE_AUTHOR("Broadcom");
+MODULE_DESCRIPTION("iProc RNG200 Random Number Generator driver");
+MODULE_LICENSE("GPL v2");
-- 
2.2.2


WARNING: multiple messages have this Message-ID (diff)
From: Scott Branden <sbranden-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
To: bcm-kernel-feedback-list-dY08KVG/lbpWk0Htik3J/w@public.gmane.org,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Ian Campbell
	<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
	Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Matt Mackall <mpm-VDJrAJ4Gl5ZBDgjK7y7TUQ@public.gmane.org>,
	Herbert Xu
	<herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>,
	Grant Likely
	<grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Ray Jui <rjui-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
	Jonathan Richardson
	<jonathar-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
	Dmitry Torokhov <dtor-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	Anatol Pomazao <anatol-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Scott Branden <sbranden-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
Subject: [PATCH 1/2] hwrng: iproc-rng200 - Add Broadcom IPROC RNG driver
Date: Mon, 9 Feb 2015 16:07:09 -0800	[thread overview]
Message-ID: <1423526830-29516-2-git-send-email-sbranden@broadcom.com> (raw)
In-Reply-To: <1423526830-29516-1-git-send-email-sbranden-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>

This adds a driver for random number generator present on Broadcom
IPROC devices.

Reviewed-by: Ray Jui <rjui-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
Signed-off-by: Scott Branden <sbranden-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
---
 drivers/char/hw_random/Kconfig        |  13 ++
 drivers/char/hw_random/Makefile       |   1 +
 drivers/char/hw_random/iproc-rng200.c | 239 ++++++++++++++++++++++++++++++++++
 3 files changed, 253 insertions(+)
 create mode 100644 drivers/char/hw_random/iproc-rng200.c

diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index de57b38..f48cf11 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -101,6 +101,19 @@ config HW_RANDOM_BCM2835
 
 	  If unsure, say Y.
 
+config HW_RANDOM_IPROC_RNG200
+	tristate "Broadcom iProc RNG200 support"
+	depends on ARCH_BCM_IPROC
+	default HW_RANDOM
+	---help---
+	  This driver provides kernel-side support for the RNG200
+	  hardware found on the Broadcom iProc SoCs.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called iproc-rng200
+
+	  If unsure, say Y.
+
 config HW_RANDOM_GEODE
 	tristate "AMD Geode HW Random Number Generator support"
 	depends on X86_32 && PCI
diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile
index 0b4cd57..055bb01 100644
--- a/drivers/char/hw_random/Makefile
+++ b/drivers/char/hw_random/Makefile
@@ -28,5 +28,6 @@ obj-$(CONFIG_HW_RANDOM_POWERNV) += powernv-rng.o
 obj-$(CONFIG_HW_RANDOM_EXYNOS)	+= exynos-rng.o
 obj-$(CONFIG_HW_RANDOM_TPM) += tpm-rng.o
 obj-$(CONFIG_HW_RANDOM_BCM2835) += bcm2835-rng.o
+obj-$(CONFIG_HW_RANDOM_IPROC_RNG200) += iproc-rng200.o
 obj-$(CONFIG_HW_RANDOM_MSM) += msm-rng.o
 obj-$(CONFIG_HW_RANDOM_XGENE) += xgene-rng.o
diff --git a/drivers/char/hw_random/iproc-rng200.c b/drivers/char/hw_random/iproc-rng200.c
new file mode 100644
index 0000000..0fef15d
--- /dev/null
+++ b/drivers/char/hw_random/iproc-rng200.c
@@ -0,0 +1,239 @@
+/*
+* Copyright (C) 2014 Broadcom Corporation
+*
+* 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.
+*/
+/*
+ * DESCRIPTION: The Broadcom iProc RNG200 Driver
+ */
+
+#include <linux/hw_random.h>
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of_address.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/delay.h>
+
+
+/* Registers */
+#define RNG_CTRL_OFFSET					0x00
+#define RNG_CTRL_RNG_RBGEN_MASK				0x00001FFF
+#define RNG_CTRL_RNG_RBGEN_ENABLE			0x00000001
+#define RNG_CTRL_RNG_RBGEN_DISABLE			0x00000000
+
+#define RNG_SOFT_RESET_OFFSET				0x04
+#define RNG_SOFT_RESET_RNG_SOFT_RESET_MASK		0x00000001
+#define RNG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE		0x00000001
+#define RNG_SOFT_RESET_RNG_SOFT_RESET_CLEAR		0x00000000
+
+#define RBG_SOFT_RESET_OFFSET				0x08
+#define RBG_SOFT_RESET_RNG_SOFT_RESET_MASK		0x00000001
+#define RBG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE		0x00000001
+#define RBG_SOFT_RESET_RNG_SOFT_RESET_CLEAR		0x00000000
+
+#define RNG_INT_STATUS_OFFSET				0x18
+#define RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK	0x80000000
+#define RNG_INT_STATUS_STARTUP_TRANSITIONS_MET_IRQ_MASK	0x00020000
+#define RNG_INT_STATUS_NIST_FAIL_IRQ_MASK		0x00000020
+#define RNG_INT_STATUS_TOTAL_BITS_COUNT_IRQ_MASK	0x00000001
+
+#define RNG_FIFO_DATA_OFFSET				0x20
+
+#define RNG_FIFO_COUNT_OFFSET				0x24
+#define RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK		0x000000FF
+
+static void iproc_rng200_restart(void __iomem *rng_base)
+{
+	uint32_t val;
+
+	/* Disable RBG */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_DISABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+
+	/* Clear all interrupt status */
+	iowrite32(0xFFFFFFFFUL, rng_base + RNG_INT_STATUS_OFFSET);
+
+	/* Reset RNG and RBG */
+	val = ioread32(rng_base + RBG_SOFT_RESET_OFFSET);
+	val &= ~RBG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RBG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE;
+	iowrite32(val, rng_base + RBG_SOFT_RESET_OFFSET);
+
+	val = ioread32(rng_base + RNG_SOFT_RESET_OFFSET);
+	val &= ~RNG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RNG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE;
+	iowrite32(val, rng_base + RNG_SOFT_RESET_OFFSET);
+
+	val = ioread32(rng_base + RNG_SOFT_RESET_OFFSET);
+	val &= ~RNG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RNG_SOFT_RESET_RNG_SOFT_RESET_CLEAR;
+	iowrite32(val, rng_base + RNG_SOFT_RESET_OFFSET);
+
+	val = ioread32(rng_base + RBG_SOFT_RESET_OFFSET);
+	val &= ~RBG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RBG_SOFT_RESET_RNG_SOFT_RESET_CLEAR;
+	iowrite32(val, rng_base + RBG_SOFT_RESET_OFFSET);
+
+	/* Enable RBG */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_ENABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+}
+
+static int iproc_rng200_read(struct hwrng *rng, void *buf, size_t max,
+			       bool wait)
+{
+	uint32_t status = 0;
+	uint32_t num_remaining = max;
+
+	#define MAX_RESETS_PER_READ	1
+	uint32_t num_resets = 0;
+
+	#define MAX_IDLE_TIME	(1 * HZ)
+	unsigned long idle_endtime = jiffies + MAX_IDLE_TIME;
+
+	/* Retrieve HW RNG registers base address. */
+	void __iomem *rng_base = (void __iomem *)rng->priv;
+
+	while ((num_remaining > 0) && time_before(jiffies, idle_endtime)) {
+
+		/* Is RNG sane? If not, reset it. */
+		status = ioread32(rng_base + RNG_INT_STATUS_OFFSET);
+		if ((status & (RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK |
+			RNG_INT_STATUS_NIST_FAIL_IRQ_MASK)) != 0) {
+
+			if (num_resets >= MAX_RESETS_PER_READ)
+				return max - num_remaining;
+
+			iproc_rng200_restart(rng_base);
+			num_resets++;
+		}
+
+		/* Are there any random numbers available? */
+		if ((ioread32(rng_base + RNG_FIFO_COUNT_OFFSET) &
+				RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK) > 0) {
+
+			if (num_remaining >= sizeof(uint32_t)) {
+				/* Buffer has room to store entire word */
+				*(uint32_t *)buf = ioread32(rng_base +
+							RNG_FIFO_DATA_OFFSET);
+				buf += sizeof(uint32_t);
+				num_remaining -= sizeof(uint32_t);
+			} else {
+				/* Buffer can only store partial word */
+				uint32_t rnd_number = ioread32(rng_base +
+							RNG_FIFO_DATA_OFFSET);
+				memcpy(buf, &rnd_number, num_remaining);
+				buf += num_remaining;
+				num_remaining = 0;
+			}
+
+			/* Reset the IDLE timeout */
+			idle_endtime = jiffies + MAX_IDLE_TIME;
+		} else {
+			if (!wait)
+				/* Cannot wait, return immediately */
+				return max - num_remaining;
+
+			/* Can wait, give others chance to run */
+			cpu_relax();
+		}
+	}
+
+	return max - num_remaining;
+}
+
+static struct hwrng iproc_rng200_ops = {
+	.name	= "iproc-rng200",
+	.read	= iproc_rng200_read,
+};
+
+static int iproc_rng200_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+	void __iomem *rng_base = 0;
+	uint32_t val = 0;
+	int err = 0;
+
+	/* Map peripheral */
+	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+
+	if (!res) {
+		dev_err(dev, "failed to get rng resources");
+		return -ENODEV;
+	}
+
+	rng_base = devm_ioremap_resource(dev, res);
+	if (!rng_base) {
+		dev_err(dev, "failed to remap rng regs");
+		return -ENODEV;
+	}
+
+	iproc_rng200_ops.priv = (unsigned long)rng_base;
+
+	/* Setup RNG. */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_ENABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+
+	/* Register driver */
+	err = hwrng_register(&iproc_rng200_ops);
+	if (err) {
+		dev_err(dev, "hwrng registration failed\n");
+		return err;
+	}
+	dev_info(dev, "hwrng registered\n");
+
+	return 0;
+}
+
+static int iproc_rng200_remove(struct platform_device *pdev)
+{
+	uint32_t val = 0;
+	void __iomem *rng_base = (void __iomem *)iproc_rng200_ops.priv;
+
+	/* Unregister driver */
+	hwrng_unregister(&iproc_rng200_ops);
+
+	/* Disable RNG hardware */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_DISABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+
+	return 0;
+}
+
+static const struct of_device_id iproc_rng200_of_match[] = {
+	{ .compatible = "brcm,iproc-rng200", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, iproc_rng200_of_match);
+
+static struct platform_driver iproc_rng200_driver = {
+	.driver = {
+		.name = "iproc-rng200",
+		.of_match_table = iproc_rng200_of_match,
+	},
+	.probe		= iproc_rng200_probe,
+	.remove		= iproc_rng200_remove,
+};
+module_platform_driver(iproc_rng200_driver);
+
+MODULE_AUTHOR("Broadcom");
+MODULE_DESCRIPTION("iProc RNG200 Random Number Generator driver");
+MODULE_LICENSE("GPL v2");
-- 
2.2.2

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: sbranden@broadcom.com (Scott Branden)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/2] hwrng: iproc-rng200 - Add Broadcom IPROC RNG driver
Date: Mon, 9 Feb 2015 16:07:09 -0800	[thread overview]
Message-ID: <1423526830-29516-2-git-send-email-sbranden@broadcom.com> (raw)
In-Reply-To: <1423526830-29516-1-git-send-email-sbranden@broadcom.com>

This adds a driver for random number generator present on Broadcom
IPROC devices.

Reviewed-by: Ray Jui <rjui@broadcom.com>
Signed-off-by: Scott Branden <sbranden@broadcom.com>
---
 drivers/char/hw_random/Kconfig        |  13 ++
 drivers/char/hw_random/Makefile       |   1 +
 drivers/char/hw_random/iproc-rng200.c | 239 ++++++++++++++++++++++++++++++++++
 3 files changed, 253 insertions(+)
 create mode 100644 drivers/char/hw_random/iproc-rng200.c

diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index de57b38..f48cf11 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -101,6 +101,19 @@ config HW_RANDOM_BCM2835
 
 	  If unsure, say Y.
 
+config HW_RANDOM_IPROC_RNG200
+	tristate "Broadcom iProc RNG200 support"
+	depends on ARCH_BCM_IPROC
+	default HW_RANDOM
+	---help---
+	  This driver provides kernel-side support for the RNG200
+	  hardware found on the Broadcom iProc SoCs.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called iproc-rng200
+
+	  If unsure, say Y.
+
 config HW_RANDOM_GEODE
 	tristate "AMD Geode HW Random Number Generator support"
 	depends on X86_32 && PCI
diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile
index 0b4cd57..055bb01 100644
--- a/drivers/char/hw_random/Makefile
+++ b/drivers/char/hw_random/Makefile
@@ -28,5 +28,6 @@ obj-$(CONFIG_HW_RANDOM_POWERNV) += powernv-rng.o
 obj-$(CONFIG_HW_RANDOM_EXYNOS)	+= exynos-rng.o
 obj-$(CONFIG_HW_RANDOM_TPM) += tpm-rng.o
 obj-$(CONFIG_HW_RANDOM_BCM2835) += bcm2835-rng.o
+obj-$(CONFIG_HW_RANDOM_IPROC_RNG200) += iproc-rng200.o
 obj-$(CONFIG_HW_RANDOM_MSM) += msm-rng.o
 obj-$(CONFIG_HW_RANDOM_XGENE) += xgene-rng.o
diff --git a/drivers/char/hw_random/iproc-rng200.c b/drivers/char/hw_random/iproc-rng200.c
new file mode 100644
index 0000000..0fef15d
--- /dev/null
+++ b/drivers/char/hw_random/iproc-rng200.c
@@ -0,0 +1,239 @@
+/*
+* Copyright (C) 2014 Broadcom Corporation
+*
+* 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.
+*/
+/*
+ * DESCRIPTION: The Broadcom iProc RNG200 Driver
+ */
+
+#include <linux/hw_random.h>
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of_address.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/delay.h>
+
+
+/* Registers */
+#define RNG_CTRL_OFFSET					0x00
+#define RNG_CTRL_RNG_RBGEN_MASK				0x00001FFF
+#define RNG_CTRL_RNG_RBGEN_ENABLE			0x00000001
+#define RNG_CTRL_RNG_RBGEN_DISABLE			0x00000000
+
+#define RNG_SOFT_RESET_OFFSET				0x04
+#define RNG_SOFT_RESET_RNG_SOFT_RESET_MASK		0x00000001
+#define RNG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE		0x00000001
+#define RNG_SOFT_RESET_RNG_SOFT_RESET_CLEAR		0x00000000
+
+#define RBG_SOFT_RESET_OFFSET				0x08
+#define RBG_SOFT_RESET_RNG_SOFT_RESET_MASK		0x00000001
+#define RBG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE		0x00000001
+#define RBG_SOFT_RESET_RNG_SOFT_RESET_CLEAR		0x00000000
+
+#define RNG_INT_STATUS_OFFSET				0x18
+#define RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK	0x80000000
+#define RNG_INT_STATUS_STARTUP_TRANSITIONS_MET_IRQ_MASK	0x00020000
+#define RNG_INT_STATUS_NIST_FAIL_IRQ_MASK		0x00000020
+#define RNG_INT_STATUS_TOTAL_BITS_COUNT_IRQ_MASK	0x00000001
+
+#define RNG_FIFO_DATA_OFFSET				0x20
+
+#define RNG_FIFO_COUNT_OFFSET				0x24
+#define RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK		0x000000FF
+
+static void iproc_rng200_restart(void __iomem *rng_base)
+{
+	uint32_t val;
+
+	/* Disable RBG */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_DISABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+
+	/* Clear all interrupt status */
+	iowrite32(0xFFFFFFFFUL, rng_base + RNG_INT_STATUS_OFFSET);
+
+	/* Reset RNG and RBG */
+	val = ioread32(rng_base + RBG_SOFT_RESET_OFFSET);
+	val &= ~RBG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RBG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE;
+	iowrite32(val, rng_base + RBG_SOFT_RESET_OFFSET);
+
+	val = ioread32(rng_base + RNG_SOFT_RESET_OFFSET);
+	val &= ~RNG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RNG_SOFT_RESET_RNG_SOFT_RESET_ACTIVE;
+	iowrite32(val, rng_base + RNG_SOFT_RESET_OFFSET);
+
+	val = ioread32(rng_base + RNG_SOFT_RESET_OFFSET);
+	val &= ~RNG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RNG_SOFT_RESET_RNG_SOFT_RESET_CLEAR;
+	iowrite32(val, rng_base + RNG_SOFT_RESET_OFFSET);
+
+	val = ioread32(rng_base + RBG_SOFT_RESET_OFFSET);
+	val &= ~RBG_SOFT_RESET_RNG_SOFT_RESET_MASK;
+	val |= RBG_SOFT_RESET_RNG_SOFT_RESET_CLEAR;
+	iowrite32(val, rng_base + RBG_SOFT_RESET_OFFSET);
+
+	/* Enable RBG */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_ENABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+}
+
+static int iproc_rng200_read(struct hwrng *rng, void *buf, size_t max,
+			       bool wait)
+{
+	uint32_t status = 0;
+	uint32_t num_remaining = max;
+
+	#define MAX_RESETS_PER_READ	1
+	uint32_t num_resets = 0;
+
+	#define MAX_IDLE_TIME	(1 * HZ)
+	unsigned long idle_endtime = jiffies + MAX_IDLE_TIME;
+
+	/* Retrieve HW RNG registers base address. */
+	void __iomem *rng_base = (void __iomem *)rng->priv;
+
+	while ((num_remaining > 0) && time_before(jiffies, idle_endtime)) {
+
+		/* Is RNG sane? If not, reset it. */
+		status = ioread32(rng_base + RNG_INT_STATUS_OFFSET);
+		if ((status & (RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK |
+			RNG_INT_STATUS_NIST_FAIL_IRQ_MASK)) != 0) {
+
+			if (num_resets >= MAX_RESETS_PER_READ)
+				return max - num_remaining;
+
+			iproc_rng200_restart(rng_base);
+			num_resets++;
+		}
+
+		/* Are there any random numbers available? */
+		if ((ioread32(rng_base + RNG_FIFO_COUNT_OFFSET) &
+				RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK) > 0) {
+
+			if (num_remaining >= sizeof(uint32_t)) {
+				/* Buffer has room to store entire word */
+				*(uint32_t *)buf = ioread32(rng_base +
+							RNG_FIFO_DATA_OFFSET);
+				buf += sizeof(uint32_t);
+				num_remaining -= sizeof(uint32_t);
+			} else {
+				/* Buffer can only store partial word */
+				uint32_t rnd_number = ioread32(rng_base +
+							RNG_FIFO_DATA_OFFSET);
+				memcpy(buf, &rnd_number, num_remaining);
+				buf += num_remaining;
+				num_remaining = 0;
+			}
+
+			/* Reset the IDLE timeout */
+			idle_endtime = jiffies + MAX_IDLE_TIME;
+		} else {
+			if (!wait)
+				/* Cannot wait, return immediately */
+				return max - num_remaining;
+
+			/* Can wait, give others chance to run */
+			cpu_relax();
+		}
+	}
+
+	return max - num_remaining;
+}
+
+static struct hwrng iproc_rng200_ops = {
+	.name	= "iproc-rng200",
+	.read	= iproc_rng200_read,
+};
+
+static int iproc_rng200_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+	void __iomem *rng_base = 0;
+	uint32_t val = 0;
+	int err = 0;
+
+	/* Map peripheral */
+	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+
+	if (!res) {
+		dev_err(dev, "failed to get rng resources");
+		return -ENODEV;
+	}
+
+	rng_base = devm_ioremap_resource(dev, res);
+	if (!rng_base) {
+		dev_err(dev, "failed to remap rng regs");
+		return -ENODEV;
+	}
+
+	iproc_rng200_ops.priv = (unsigned long)rng_base;
+
+	/* Setup RNG. */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_ENABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+
+	/* Register driver */
+	err = hwrng_register(&iproc_rng200_ops);
+	if (err) {
+		dev_err(dev, "hwrng registration failed\n");
+		return err;
+	}
+	dev_info(dev, "hwrng registered\n");
+
+	return 0;
+}
+
+static int iproc_rng200_remove(struct platform_device *pdev)
+{
+	uint32_t val = 0;
+	void __iomem *rng_base = (void __iomem *)iproc_rng200_ops.priv;
+
+	/* Unregister driver */
+	hwrng_unregister(&iproc_rng200_ops);
+
+	/* Disable RNG hardware */
+	val = ioread32(rng_base + RNG_CTRL_OFFSET);
+	val &= ~RNG_CTRL_RNG_RBGEN_MASK;
+	val |= RNG_CTRL_RNG_RBGEN_DISABLE;
+	iowrite32(val, rng_base + RNG_CTRL_OFFSET);
+
+	return 0;
+}
+
+static const struct of_device_id iproc_rng200_of_match[] = {
+	{ .compatible = "brcm,iproc-rng200", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, iproc_rng200_of_match);
+
+static struct platform_driver iproc_rng200_driver = {
+	.driver = {
+		.name = "iproc-rng200",
+		.of_match_table = iproc_rng200_of_match,
+	},
+	.probe		= iproc_rng200_probe,
+	.remove		= iproc_rng200_remove,
+};
+module_platform_driver(iproc_rng200_driver);
+
+MODULE_AUTHOR("Broadcom");
+MODULE_DESCRIPTION("iProc RNG200 Random Number Generator driver");
+MODULE_LICENSE("GPL v2");
-- 
2.2.2

  reply	other threads:[~2015-02-10  0:07 UTC|newest]

Thread overview: 659+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Scott Branden <sbranden@broadcom.com>
2014-10-08  5:26 ` [PATCH V3 0/6] Add initial support for Broadcom Cygnus SoC Scott Branden
2014-10-08  5:26   ` Scott Branden
2014-10-08  5:26   ` Scott Branden
2014-10-08  5:27   ` [PATCH 1/6] ARM: cygnus: Initial " Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-08  7:54     ` Arnd Bergmann
2014-10-08  7:54       ` Arnd Bergmann
2014-10-08  7:54       ` Arnd Bergmann
2014-10-08 12:27       ` Scott Branden
2014-10-08 12:27         ` Scott Branden
2014-10-08 12:27         ` Scott Branden
2014-10-08 13:28         ` Arnd Bergmann
2014-10-08 13:28           ` Arnd Bergmann
2014-10-08 16:27           ` Scott Branden
2014-10-08 16:27             ` Scott Branden
2014-10-08 16:27             ` Scott Branden
2014-10-08 18:12             ` Arnd Bergmann
2014-10-08 18:12               ` Arnd Bergmann
2014-10-08 18:12               ` Arnd Bergmann
2014-10-08 18:45               ` Scott Branden
2014-10-08 18:45                 ` Scott Branden
2014-10-08 18:45                 ` Scott Branden
2014-10-08 22:16               ` Scott Branden
2014-10-08 22:16                 ` Scott Branden
2014-10-08 22:16                 ` Scott Branden
2014-10-09  7:32                 ` Arnd Bergmann
2014-10-09  7:32                   ` Arnd Bergmann
2014-10-09  7:32                   ` Arnd Bergmann
2014-10-08  8:11     ` Russell King - ARM Linux
2014-10-08  8:11       ` Russell King - ARM Linux
2014-10-08 11:17       ` Scott Branden
2014-10-08 11:17         ` Scott Branden
2014-10-08 11:17         ` Scott Branden
2014-10-08 11:41         ` Russell King - ARM Linux
2014-10-08 11:41           ` Russell King - ARM Linux
2014-10-08 13:10     ` Rob Herring
2014-10-08 13:10       ` Rob Herring
2014-10-08 13:10       ` Rob Herring
2014-10-08 16:34       ` Scott Branden
2014-10-08 16:34         ` Scott Branden
2014-10-08 16:34         ` Scott Branden
2014-10-08  5:27   ` [PATCH 2/6] clk: Clock driver " Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-08  5:27   ` [PATCH 3/6] dt-bindings: Document Broadcom Cygnus SoC and clock driver Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-08  7:57     ` Arnd Bergmann
2014-10-08  7:57       ` Arnd Bergmann
2014-10-08  7:57       ` Arnd Bergmann
2014-10-08 10:58       ` Scott Branden
2014-10-08 10:58         ` Scott Branden
2014-10-08 10:58         ` Scott Branden
2014-10-08 13:35         ` Arnd Bergmann
2014-10-08 13:35           ` Arnd Bergmann
2014-10-08 13:35           ` Arnd Bergmann
2014-10-08  5:27   ` [PATCH 4/6] ARM: cygnus defconfig : Initial defconfig for Broadcom Cygnus SoC Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-08  7:58     ` Arnd Bergmann
2014-10-08  7:58       ` Arnd Bergmann
2014-10-08  7:58       ` Arnd Bergmann
2014-10-08 11:01       ` Scott Branden
2014-10-08 11:01         ` Scott Branden
2014-10-08 11:01         ` Scott Branden
2014-10-08  5:27   ` [PATCH 5/6] ARM: dts: Enable " Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-08  5:27   ` [PATCH 6/6] MAINTAINERS: Entry for Cygnus/iproc arm architecture and clock drivers Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-08  5:27     ` Scott Branden
2014-10-09 22:44 ` [PATCH V4 0/7] Add initial support for Broadcom Cygnus SoC Scott Branden
2014-10-09 22:44   ` Scott Branden
2014-10-09 22:44   ` Scott Branden
2014-10-09 22:44   ` [PATCH V4 1/7] ARM: cygnus: Initial " Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-10  9:50     ` Arnd Bergmann
2014-10-10  9:50       ` Arnd Bergmann
2014-10-10  9:50       ` Arnd Bergmann
2014-10-10 19:08       ` Scott Branden
2014-10-10 19:08         ` Scott Branden
2014-10-10 19:08         ` Scott Branden
2014-10-09 22:44   ` [PATCH V4 2/7] clk: Clock driver " Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-09 22:44   ` [PATCH V4 3/7] dt-bindings: Document Broadcom Cygnus SoC and clock driver Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-09 22:44   ` [PATCH V4 4/7] ARM: cygnus defconfig : Initial defconfig for Broadcom Cygnus SoC Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-09 22:44   ` [PATCH V4 5/7] ARM: dts: Enable " Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-10 10:08     ` Arnd Bergmann
2014-10-10 10:08       ` Arnd Bergmann
2014-10-10 19:11       ` Scott Branden
2014-10-10 19:11         ` Scott Branden
2014-10-10 19:11         ` Scott Branden
2014-10-09 22:44   ` [PATCH V4 6/7] MAINTAINERS: Entry for Cygnus/iproc arm architecture and clock drivers Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-09 23:00     ` Joe Perches
2014-10-09 23:00       ` Joe Perches
2014-10-09 23:18       ` Scott Branden
2014-10-09 23:18         ` Scott Branden
2014-10-09 23:18         ` Scott Branden
2014-10-09 22:44   ` [PATCH V4 7/7] ARM: multi_v7_defconfig: Enable ARCH_BCM_CYGNUS config Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-09 22:44     ` Scott Branden
2014-10-10  9:59     ` Arnd Bergmann
2014-10-10  9:59       ` Arnd Bergmann
2014-10-10  9:59       ` Arnd Bergmann
2014-10-10 19:12       ` Scott Branden
2014-10-10 19:12         ` Scott Branden
2014-10-10 19:12         ` Scott Branden
2014-10-15  2:01 ` [PATCH 0/1] sdhci-bcm2835: added quirk and removed udelay in write ops Scott Branden
2014-10-15  2:01   ` Scott Branden
2014-10-15  2:01   ` [PATCH 1/1] mmc: " Scott Branden
2014-10-15  2:01     ` Scott Branden
2014-10-17  2:50     ` Stephen Warren
2014-10-15  2:58 ` [PATCH v5 0/6] Add initial support for Broadcom Cygnus SoC Scott Branden
2014-10-15  2:58   ` Scott Branden
2014-10-15  2:58   ` Scott Branden
2014-10-15  2:58   ` [PATCH v5 1/6] ARM: cygnus: Initial " Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-20 19:55     ` Arnd Bergmann
2014-10-20 19:55       ` Arnd Bergmann
2014-10-20 19:55       ` Arnd Bergmann
2014-10-20 22:59       ` Scott Branden
2014-10-20 22:59         ` Scott Branden
2014-10-20 22:59         ` Scott Branden
2014-10-21  5:48         ` Arnd Bergmann
2014-10-21  5:48           ` Arnd Bergmann
2014-10-21  5:48           ` Arnd Bergmann
2014-10-22  0:11           ` Scott Branden
2014-10-22  0:11             ` Scott Branden
2014-10-22  0:11             ` Scott Branden
2014-10-22  8:22             ` Arnd Bergmann
2014-10-22  8:22               ` Arnd Bergmann
2014-10-22 17:12               ` Scott Branden
2014-10-22 17:12                 ` Scott Branden
2014-10-22 17:12                 ` Scott Branden
2014-10-15  2:58   ` [PATCH v5 2/6] dt-bindings: Document Broadcom Cygnus SoC and clocks Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-15  2:58   ` [PATCH v5 3/6] ARM: cygnus defconfig : Initial defconfig for Broadcom Cygnus SoC Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-15  2:58   ` [PATCH v5 4/6] ARM: dts: Enable " Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-15  2:58   ` [PATCH v5 5/6] MAINTAINERS: Entry for Cygnus/iproc arm architecture Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-15  2:58   ` [PATCH v5 6/6] ARM: mach-bcm: Consolidate currently supported IPROC SoCs Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-15  2:58     ` Scott Branden
2014-10-15 15:54 ` [PATCH 1/1] MAINTAINERS: corrected bcm2835 search Scott Branden
2014-10-15 18:12   ` Stephen Warren
2014-10-15 16:43 ` [PATCH 1/1] mmc: sdhci-bcm2835: added quirk and removed udelay in write ops Scott Branden
2014-10-15 16:43   ` Scott Branden
2014-10-18  2:37   ` Stephen Warren
2014-10-18  6:40     ` Scott Branden
2014-10-18  6:40       ` Scott Branden
2014-10-22  2:09 ` [PATCH v6 0/6] Add initial support for Broadcom Cygnus SoC Scott Branden
2014-10-22  2:09   ` Scott Branden
2014-10-22  2:09   ` Scott Branden
2014-10-22  2:09   ` [PATCH v6 1/6] ARM: cygnus: Initial " Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22  2:09   ` [PATCH v6 2/6] dt-bindings: Document Broadcom Cygnus SoC and clocks Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22  2:09   ` [PATCH v6 3/6] ARM: cygnus defconfig : Initial defconfig for Broadcom Cygnus SoC Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22  2:09   ` [PATCH v6 4/6] ARM: dts: Enable " Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22  2:09   ` [PATCH v6 5/6] MAINTAINERS: Entry for Cygnus/iproc arm architecture Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22  2:09   ` [PATCH v6 6/6] ARM: mach-bcm: Consolidate currently supported IPROC SoCs Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22  2:09     ` Scott Branden
2014-10-22 20:57 ` [PATCH v7 0/7] Add initial support for Broadcom Cygnus SoC Scott Branden
2014-10-22 20:57   ` Scott Branden
2014-10-22 20:57   ` Scott Branden
2014-10-22 20:57   ` [PATCH v7 1/7] ARM: cygnus: Initial " Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57   ` [PATCH v7 2/7] dt-bindings: Document Broadcom Cygnus SoC and clocks Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57   ` [PATCH v7 3/7] ARM: cygnus defconfig : Initial defconfig for Broadcom Cygnus SoC Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57   ` [PATCH v7 4/7] ARM: dts: Enable " Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-28 16:10     ` Arnd Bergmann
2014-10-28 16:10       ` Arnd Bergmann
2014-10-28 19:41       ` Scott Branden
2014-10-28 19:41         ` Scott Branden
2014-10-28 19:41         ` Scott Branden
2014-10-22 20:57   ` [PATCH v7 5/7] MAINTAINERS: Entry for Cygnus/iproc arm architecture Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57   ` [PATCH v7 6/7] ARM: mach-bcm: Consolidate currently supported IPROC SoCs Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57   ` [PATCH v7 7/7] ARM: mach-bcm: ARCH_BCM_MOBILE: remove one level of menu from Kconfig Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-22 20:57     ` Scott Branden
2014-10-28 19:53 ` [PATCH v8 0/8] Add initial support for Broadcom Cygnus SoC Scott Branden
2014-10-28 19:53   ` Scott Branden
2014-10-28 19:53   ` Scott Branden
2014-10-28 19:53   ` [PATCH v8 1/8] ARM: cygnus: Initial " Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53   ` [PATCH v8 2/8] dt-bindings: Document Broadcom Cygnus SoC and clocks Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53   ` [PATCH v8 3/8] ARM: cygnus defconfig : Initial defconfig for Broadcom Cygnus SoC Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53   ` [PATCH v8 4/8] ARM: dts: Enable " Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-11-09  0:22     ` Olof Johansson
2014-11-09  0:22       ` Olof Johansson
2014-11-09  0:22       ` Olof Johansson
2014-11-09  6:13       ` Scott Branden
2014-11-09  6:13         ` Scott Branden
2014-11-09  6:13         ` Scott Branden
2014-11-09  6:49         ` Olof Johansson
2014-11-09  6:49           ` Olof Johansson
2014-11-09  6:49           ` Olof Johansson
2014-11-09 17:23           ` Greg Kroah-Hartman
2014-11-09 17:23             ` Greg Kroah-Hartman
2014-11-09 17:23             ` Greg Kroah-Hartman
2014-11-09 20:38             ` Arnd Bergmann
2014-11-09 20:38               ` Arnd Bergmann
2014-11-09 20:38               ` Arnd Bergmann
2014-11-10  5:17               ` Scott Branden
2014-11-10  5:17                 ` Scott Branden
2014-11-10  5:17                 ` Scott Branden
2014-11-10  8:11                 ` Arnd Bergmann
2014-11-10  8:11                   ` Arnd Bergmann
2014-11-10  8:11                   ` Arnd Bergmann
2014-11-10 18:28                   ` Scott Branden
2014-11-10 18:28                     ` Scott Branden
2014-11-10 18:28                     ` Scott Branden
2014-10-28 19:53   ` [PATCH v8 5/8] MAINTAINERS: Entry for Cygnus/iproc arm architecture Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53   ` [PATCH v8 6/8] ARM: mach-bcm: Consolidate currently supported IPROC SoCs Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53   ` [PATCH v8 7/8] ARM: mach-bcm: ARCH_BCM_MOBILE: remove one level of menu from Kconfig Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53   ` [PATCH v8 8/8] ARM: multi_v7_defconfig: Enable Broadcom Cygnus Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 19:53     ` Scott Branden
2014-10-28 20:01     ` Arnd Bergmann
2014-10-28 20:01       ` Arnd Bergmann
2014-10-28 20:06       ` Scott Branden
2014-10-28 20:06         ` Scott Branden
2014-10-28 20:06         ` Scott Branden
2014-10-28 20:13         ` Arnd Bergmann
2014-10-28 20:13           ` Arnd Bergmann
2014-10-28 23:15 ` [PATCH v9 0/8] Add initial support for Broadcom Cygnus SoC Scott Branden
2014-10-28 23:15   ` Scott Branden
2014-10-28 23:15   ` Scott Branden
2014-10-28 23:15   ` [PATCH v9 1/8] ARM: cygnus: Initial " Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15   ` [PATCH v9 2/8] dt-bindings: Document Broadcom Cygnus SoC and clocks Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-11-20  1:05     ` Mike Turquette
2014-11-20  1:05       ` Mike Turquette
2014-11-20  1:05       ` Mike Turquette
2014-10-28 23:15   ` [PATCH v9 3/8] ARM: cygnus defconfig : Initial defconfig for Broadcom Cygnus SoC Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15   ` [PATCH v9 4/8] ARM: dts: Enable " Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-11-10 10:50     ` Paul Bolle
2014-11-10 10:50       ` Paul Bolle
2014-11-10 18:35       ` Olof Johansson
2014-11-10 18:35         ` Olof Johansson
2014-11-10 18:35         ` Olof Johansson
2014-11-10 19:23         ` Paul Bolle
2014-11-10 19:23           ` Paul Bolle
2014-11-10 19:23           ` Paul Bolle
2014-10-28 23:15   ` [PATCH v9 5/8] MAINTAINERS: Entry for Cygnus/iproc arm architecture Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15   ` [PATCH v9 6/8] ARM: mach-bcm: Consolidate currently supported IPROC SoCs Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15   ` [PATCH v9 7/8] ARM: mach-bcm: ARCH_BCM_MOBILE: remove one level of menu from Kconfig Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15   ` [PATCH v9 8/8] ARM: multi_v7_defconfig: Enable Broadcom Cygnus Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-28 23:15     ` Scott Branden
2014-10-30  6:36 ` [PATCHv2 0/5] sdhci-bcm2835: added quirk and removed udelay in write ops Scott Branden
2014-10-30  6:36   ` Scott Branden
2014-10-30  6:36   ` [PATCHv2 1/5] mmc: sdhci-bcm2835: group read and write functions to improve readability Scott Branden
2014-10-30  6:36     ` Scott Branden
2014-10-30  6:36   ` [PATCHv2 2/5] mmc: sdhci-bcm2835: make shift calculations consistent Scott Branden
2014-10-30  6:36     ` Scott Branden
2014-11-05  4:48     ` Stephen Warren
2014-11-05  5:19       ` Scott Branden
2014-11-05  5:19         ` Scott Branden
2014-10-30  6:36   ` [PATCHv2 3/5] mmc: shdci-bcm2835: add efficient back-to-back write workaround Scott Branden
2014-10-30  6:36     ` Scott Branden
2014-11-05  4:57     ` Stephen Warren
2014-11-05  6:55       ` Scott Branden
2014-11-05  6:55         ` Scott Branden
2014-11-06  4:48         ` Stephen Warren
2014-11-07 18:29           ` Scott Branden
2014-11-07 18:29             ` Scott Branden
2014-10-30  6:36   ` [PATCHv2 4/5] mmc: shdci-bcm2835: add verify for 32-bit back-to-back workaround Scott Branden
2014-10-30  6:36     ` Scott Branden
2014-11-05  4:44     ` Stephen Warren
2014-11-05  5:26       ` Scott Branden
2014-11-05  5:26         ` Scott Branden
2014-11-05  4:59     ` Stephen Warren
2014-11-05  7:00       ` Scott Branden
2014-11-05  7:00         ` Scott Branden
2014-11-06  5:01         ` Stephen Warren
2014-11-07 18:31           ` Scott Branden
2014-11-07 18:31             ` Scott Branden
2015-12-22 15:55             ` Stefan Wahren
2015-12-22 19:23               ` Scott Branden
2015-12-22 19:23                 ` Scott Branden
2015-12-22 20:13                 ` Stefan Wahren
2014-10-30  6:36   ` [PATCHv2 5/5] mmc: sdhci-bcm2835: add sdhci quirk SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 Scott Branden
2014-10-30  6:36     ` Scott Branden
2014-11-05  5:00     ` Stephen Warren
2014-11-05  7:02       ` Scott Branden
2014-11-05  7:02         ` Scott Branden
2014-11-06  4:50         ` Stephen Warren
2014-11-07 18:30           ` Scott Branden
2014-11-07 18:30             ` Scott Branden
2014-11-10  5:55 ` [PATCH 1/2] ARM: multi_v7_defconfig: remove one level of menu from Kconfig Scott Branden
2014-11-10  5:55   ` Scott Branden
2014-11-10  5:55   ` [PATCH 2/2] ARM: multi_v7_defconfig: Enable Broadcom Cygnus Scott Branden
2014-11-10  5:55     ` Scott Branden
2014-11-14 18:29 ` [PATCH 0/4] pwm: kona: Drivers fixes Scott Branden
2014-11-14 18:29   ` Scott Branden
2014-11-14 18:29   ` [PATCH 1/4] pwm: kona: Remove setting default smooth type and polarity for all channels Scott Branden
2014-11-14 18:29     ` Scott Branden
2014-11-14 18:29   ` [PATCH 2/4] pwm: kona: Fix incorrect enable after channel polarity change Scott Branden
2014-11-14 18:29     ` Scott Branden
2014-11-14 18:29   ` [PATCH 3/4] pwm: kona: Fix enable, disable and config procedures Scott Branden
2014-11-14 18:29     ` Scott Branden
2014-11-14 18:30   ` [PATCH 4/4] pwm: kona: Update dependency to ARCH_BCM Scott Branden
2014-11-14 18:30     ` Scott Branden
2014-11-17 12:52     ` Thierry Reding
2014-11-17 17:33       ` Scott Branden
2014-11-17 17:33         ` Scott Branden
2014-11-17 12:41   ` [PATCH 0/4] pwm: kona: Drivers fixes Thierry Reding
2014-11-20 19:18 ` [PATCH] mtd: nand: added nand_shutdown Scott Branden
2014-11-20 19:18   ` Scott Branden
2014-11-26  9:10   ` Brian Norris
2014-11-26  9:10     ` Brian Norris
2014-11-27 18:28     ` Scott Branden
2014-11-27 18:28       ` Scott Branden
2014-11-28  0:30     ` Scott Branden
2014-11-28  0:30       ` Scott Branden
2014-12-04 22:38     ` Scott Branden
2014-12-04 22:38       ` Scott Branden
2014-11-25 19:40 ` [PATCH v2 0/4] pwm: kona: Drivers fixes Scott Branden
2014-11-25 19:40   ` Scott Branden
2014-11-25 19:40   ` [PATCH v2 1/4] pwm: kona: Remove setting default smooth type and polarity for all channels Scott Branden
2014-11-25 19:40     ` Scott Branden
2014-11-26  5:51     ` Tim Kryger
2014-11-28 23:47       ` Arun Ramamurthy
2014-11-28 23:47         ` Arun Ramamurthy
2014-11-29  1:08         ` Tim Kryger
2014-11-29  1:19           ` Arun Ramamurthy
2014-11-29  1:19             ` Arun Ramamurthy
2014-11-29  3:19             ` Tim Kryger
2014-12-01 19:37               ` Arun Ramamurthy
2014-12-01 19:37                 ` Arun Ramamurthy
2014-12-04 20:22               ` Jonathan Richardson
2014-12-04 20:22                 ` Jonathan Richardson
2014-12-06 23:13                 ` Tim Kryger
2014-12-10 19:57                   ` Jonathan Richardson
2014-12-10 19:57                     ` Jonathan Richardson
2014-11-25 19:40   ` [PATCH v2 2/4] pwm: kona: Fix incorrect enable after channel polarity change Scott Branden
2014-11-25 19:40     ` Scott Branden
2014-11-26  6:22     ` Tim Kryger
2014-11-28 23:48       ` Arun Ramamurthy
2014-11-28 23:48         ` Arun Ramamurthy
2014-11-29  2:02         ` Tim Kryger
2014-12-04 20:33           ` Jonathan Richardson
2014-12-04 20:33             ` Jonathan Richardson
2014-11-25 19:40   ` [PATCH v2 3/4] pwm: kona: Fix enable, disable and config procedures Scott Branden
2014-11-25 19:40     ` Scott Branden
2014-11-26  7:29     ` Tim Kryger
2014-11-27 23:30       ` Scott Branden
2014-11-27 23:30         ` Scott Branden
2014-11-28 23:49       ` Arun Ramamurthy
2014-11-28 23:49         ` Arun Ramamurthy
2014-11-29  2:30         ` Tim Kryger
2014-12-01 19:37           ` Arun Ramamurthy
2014-12-01 19:37             ` Arun Ramamurthy
2014-12-02  4:29             ` Tim Kryger
2014-12-04 20:26       ` Jonathan Richardson
2014-12-04 20:26         ` Jonathan Richardson
2014-11-25 19:40   ` [PATCH v2 4/4] pwm: kona: Update dependency to ARCH_BCM Scott Branden
2014-11-25 19:40     ` Scott Branden
2014-12-04 22:37 ` [PATCH] mtd: add reboot notifier to mtdcore and register nand_shutdown with notifier Scott Branden
2014-12-04 22:37   ` Scott Branden
2014-12-05  0:13   ` Scott Branden
2014-12-05  0:13     ` Scott Branden
2014-12-05  2:31     ` Brian Norris
2014-12-05  2:31       ` Brian Norris
2014-12-05  0:11 ` [PATCH] mmc: sdhci: add quirk for ACMD23 broken Scott Branden
2014-12-05  0:11   ` Scott Branden
2014-12-05  0:16 ` [PATCH v2] " Scott Branden
2014-12-05  0:16   ` Scott Branden
2014-12-17 18:36   ` Scott Branden
2014-12-17 18:36     ` Scott Branden
2014-12-17 19:48   ` Chris Ball
2014-12-17 19:48     ` Chris Ball
2014-12-17 20:42     ` Scott Branden
2014-12-17 20:42       ` Scott Branden
2015-02-10  0:06 ` [PATCH 0/4] Add support for IPROC SDHCI controller Scott Branden
2015-02-10  0:06   ` Scott Branden
2015-02-10  0:06   ` Scott Branden
2015-02-10  0:06   ` [PATCH 1/4] mmc: sdhci: add quirk for ACMD23 broken Scott Branden
2015-02-10  0:06     ` Scott Branden
2015-02-10  0:06     ` Scott Branden
2015-02-10  0:06   ` [PATCH 2/4] mmc: sdhci: do not set AUTO_CMD12 for multi-block CMD53 Scott Branden
2015-02-10  0:06     ` Scott Branden
2015-02-10  0:06     ` Scott Branden
2015-02-10  0:06   ` [PATCH 3/4] mmc: sdhci-iproc: add IPROC SDHCI driver Scott Branden
2015-02-10  0:06     ` Scott Branden
2015-02-10  0:06     ` Scott Branden
2015-02-10  0:06   ` [PATCH 4/4] mmc: sdhci-iproc: add device tree bindings Scott Branden
2015-02-10  0:06     ` Scott Branden
2015-02-10  0:06     ` Scott Branden
2015-03-02 23:50     ` Florian Fainelli
2015-03-02 23:50       ` Florian Fainelli
2015-03-04 23:14       ` Scott Branden
2015-03-04 23:14         ` Scott Branden
2015-03-04 23:14         ` Scott Branden
2015-02-26 17:28   ` [PATCH 0/4] Add support for IPROC SDHCI controller Scott Branden
2015-02-26 17:28     ` Scott Branden
2015-02-26 17:28     ` Scott Branden
2015-02-10  0:07 ` [PATCH 0/2] Add support for Broadcom RNG200 Scott Branden
2015-02-10  0:07   ` Scott Branden
2015-02-10  0:07   ` Scott Branden
2015-02-10  0:07   ` Scott Branden [this message]
2015-02-10  0:07     ` [PATCH 1/2] hwrng: iproc-rng200 - Add Broadcom IPROC RNG driver Scott Branden
2015-02-10  0:07     ` Scott Branden
2015-02-10  0:27     ` Joe Perches
2015-02-10  0:27       ` Joe Perches
2015-02-10  0:27       ` Joe Perches
2015-02-14 16:36       ` Scott Branden
2015-02-14 16:36         ` Scott Branden
2015-02-14 16:36         ` Scott Branden
2015-02-14 17:02         ` Scott Branden
2015-02-14 17:02           ` Scott Branden
2015-02-14 17:02           ` Scott Branden
2015-02-10  0:07   ` [PATCH 2/2] hwrng: iproc-rng200 - Add device tree bindings Scott Branden
2015-02-10  0:07     ` Scott Branden
2015-02-10  0:07     ` Scott Branden
2015-02-10  0:07 ` [PATCH 0/2] Add support for Broadcom keypad controller Scott Branden
2015-02-10  0:07   ` Scott Branden
2015-02-10  0:07   ` Scott Branden
2015-02-10  0:07   ` [PATCH 1/2] Input: bcm-keypad: add device tree bindings Scott Branden
2015-02-10  0:07     ` Scott Branden
2015-02-10  0:07     ` Scott Branden
2015-02-10  0:51     ` Dmitry Torokhov
2015-02-10  0:51       ` Dmitry Torokhov
2015-02-10  0:51       ` Dmitry Torokhov
2015-02-14 16:49       ` Scott Branden
2015-02-14 16:49         ` Scott Branden
2015-02-14 16:49         ` Scott Branden
2015-02-16  5:17         ` Dmitry Torokhov
2015-02-16  5:17           ` Dmitry Torokhov
2015-02-16  5:17           ` Dmitry Torokhov
2015-02-23 17:49           ` Dmitry Torokhov
2015-02-23 17:49             ` Dmitry Torokhov
2015-02-23 17:49             ` Dmitry Torokhov
2015-02-26 16:13             ` Scott Branden
2015-02-26 16:13               ` Scott Branden
2015-02-26 16:13               ` Scott Branden
2015-02-10  0:07   ` [PATCH 2/2] Input: bcm-keypad: Add Broadcom keypad controller Scott Branden
2015-02-10  0:07     ` Scott Branden
2015-02-10  0:07     ` Scott Branden
2015-02-10  1:02     ` Dmitry Torokhov
2015-02-10  1:02       ` Dmitry Torokhov
2015-02-14 17:12       ` Scott Branden
2015-02-14 17:12         ` Scott Branden
2015-02-14 17:12         ` Scott Branden
2015-02-25 18:16 ` [PATCH v2 0/2] Add support for Broadcom RNG200 Scott Branden
2015-02-25 18:16   ` Scott Branden
2015-02-25 18:16   ` Scott Branden
2015-02-25 18:16   ` [PATCH v2 1/2] hwrng: iproc-rng200 - Add device tree bindings Scott Branden
2015-02-25 18:16     ` Scott Branden
2015-02-25 18:16     ` Scott Branden
2015-03-02 23:47     ` Florian Fainelli
2015-03-02 23:47       ` Florian Fainelli
2015-02-25 18:16   ` [PATCH v2 2/2] hwrng: iproc-rng200 - Add Broadcom IPROC RNG driver Scott Branden
2015-02-25 18:16     ` Scott Branden
2015-02-25 18:16     ` Scott Branden
2015-02-25 18:43     ` Dmitry Torokhov
2015-02-25 18:43       ` Dmitry Torokhov
2015-03-03  0:50       ` Scott Branden
2015-03-03  0:50         ` Scott Branden
2015-03-03  0:50         ` Scott Branden
2015-02-25 19:17     ` Arnd Bergmann
2015-02-25 19:17       ` Arnd Bergmann
2015-02-25 19:17       ` Arnd Bergmann
2015-02-26 19:37       ` Scott Branden
2015-02-26 19:37         ` Scott Branden
2015-02-26 19:37         ` Scott Branden
2015-02-26 20:15         ` Arnd Bergmann
2015-02-26 20:15           ` Arnd Bergmann
2015-02-26 22:26           ` Scott Branden
2015-02-26 22:26             ` Scott Branden
2015-02-26 22:26             ` Scott Branden
2015-02-27  9:14             ` Arnd Bergmann
2015-02-27  9:14               ` Arnd Bergmann
2015-02-27  9:14               ` Arnd Bergmann
2015-02-28 16:01               ` Scott Branden
2015-02-28 16:01                 ` Scott Branden
2015-02-28 16:01                 ` Scott Branden
2015-02-28 19:31                 ` Arnd Bergmann
2015-02-28 19:31                   ` Arnd Bergmann
2015-03-02 19:41                   ` Scott Branden
2015-03-02 19:41                     ` Scott Branden
2015-03-02 19:41                     ` Scott Branden
2015-03-02 10:23   ` [PATCH v2 0/2] Add support for Broadcom RNG200 Herbert Xu
2015-03-02 10:23     ` Herbert Xu
2015-03-02 10:23     ` Herbert Xu
2015-02-26 16:08 ` [PATCH v2 0/2] Add support for Broadcom keypad controller Scott Branden
2015-02-26 16:08   ` Scott Branden
2015-02-26 16:08   ` Scott Branden
2015-02-26 16:08   ` [PATCH v2 1/2] Input: bcm-keypad: add device tree bindings Scott Branden
2015-02-26 16:08     ` Scott Branden
2015-02-26 16:08     ` Scott Branden
2015-02-27 23:39     ` Dmitry Torokhov
2015-02-27 23:39       ` Dmitry Torokhov
2015-02-27 23:39       ` Dmitry Torokhov
2015-02-28 15:41       ` Scott Branden
2015-02-28 15:41         ` Scott Branden
2015-02-28 15:41         ` Scott Branden
2015-02-26 16:08   ` [PATCH v2 2/2] Input: bcm-keypad: Add Broadcom keypad controller Scott Branden
2015-02-26 16:08     ` Scott Branden
2015-02-26 16:08     ` Scott Branden
2015-02-27 23:44     ` Dmitry Torokhov
2015-02-27 23:44       ` Dmitry Torokhov
2015-02-27 23:44       ` Dmitry Torokhov
2015-02-28 15:52       ` Scott Branden
2015-02-28 15:52         ` Scott Branden
2015-02-28 15:52         ` Scott Branden
2015-02-28 14:16     ` Paul Bolle
2015-02-28 14:16       ` Paul Bolle
2015-02-28 15:36       ` Scott Branden
2015-02-28 15:36         ` Scott Branden
2015-02-28 15:36         ` Scott Branden
2015-02-28 16:03 ` [PATCH v3 0/2] Add support for " Scott Branden
2015-02-28 16:03   ` Scott Branden
2015-02-28 16:03   ` Scott Branden
2015-02-28 16:03   ` [PATCH v3 1/2] Input: bcm-keypad: add device tree bindings Scott Branden
2015-02-28 16:03     ` Scott Branden
2015-02-28 16:03     ` Scott Branden
2015-02-28 16:03   ` [PATCH v3 2/2] Input: bcm-keypad: Add Broadcom keypad controller Scott Branden
2015-02-28 16:03     ` Scott Branden
2015-02-28 16:03     ` Scott Branden
2015-02-28 16:35 ` [PATCH v4 0/2] Add support for " Scott Branden
2015-02-28 16:35   ` Scott Branden
2015-02-28 16:35   ` Scott Branden
2015-02-28 16:35   ` [PATCH v4 1/2] Input: bcm-keypad: add device tree bindings Scott Branden
2015-02-28 16:35     ` Scott Branden
2015-02-28 16:35     ` Scott Branden
2015-03-03  0:04     ` Dmitry Torokhov
2015-03-03  0:04       ` Dmitry Torokhov
2015-03-03  0:04       ` Dmitry Torokhov
2015-02-28 16:35   ` [PATCH v4 2/2] Input: bcm-keypad: Add Broadcom keypad controller Scott Branden
2015-02-28 16:35     ` Scott Branden
2015-02-28 16:35     ` Scott Branden
2015-02-28 22:10     ` Dmitry Torokhov
2015-02-28 22:10       ` Dmitry Torokhov
2015-02-28 22:10       ` Dmitry Torokhov
2015-02-28 22:15       ` Dmitry Torokhov
2015-02-28 22:15         ` Dmitry Torokhov
2015-02-28 22:15         ` Dmitry Torokhov
2015-03-02 19:37         ` Scott Branden
2015-03-02 19:37           ` Scott Branden
2015-03-02 19:37           ` Scott Branden
2015-03-02 20:23           ` Dmitry Torokhov
2015-03-02 20:23             ` Dmitry Torokhov
2015-03-02 21:59             ` Scott Branden
2015-03-02 21:59               ` Scott Branden
2015-03-02 21:59               ` Scott Branden
2015-03-02 19:38         ` Scott Branden
2015-03-02 19:38           ` Scott Branden
2015-03-02 19:38           ` Scott Branden
2015-03-04 20:42 ` [PATCH v3 0/2] Add support for Broadcom RNG200 Scott Branden
2015-03-04 20:42   ` Scott Branden
2015-03-04 20:42   ` Scott Branden
2015-03-04 20:42   ` [PATCH v3 1/2] hwrng: iproc-rng200 - Add device tree bindings Scott Branden
2015-03-04 20:42     ` Scott Branden
2015-03-04 20:42     ` Scott Branden
2015-03-04 20:42   ` [PATCH v3 2/2] hwrng: iproc-rng200 - Add Broadcom IPROC RNG driver Scott Branden
2015-03-04 20:42     ` Scott Branden
2015-03-04 20:42     ` Scott Branden
2015-03-06 11:53   ` [PATCH v3 0/2] Add support for Broadcom RNG200 Herbert Xu
2015-03-06 11:53     ` Herbert Xu
2015-03-05 15:59 ` [PATCH RESEND 0/4] Add support for IPROC SDHCI controller Scott Branden
2015-03-05 15:59   ` Scott Branden
2015-03-05 15:59   ` Scott Branden
2015-03-05 15:59   ` [PATCH 1/4] mmc: sdhci: add quirk for ACMD23 broken Scott Branden
2015-03-05 15:59     ` Scott Branden
2015-03-05 15:59     ` Scott Branden
2015-03-05 15:59   ` [PATCH 2/4] mmc: sdhci: do not set AUTO_CMD12 for multi-block CMD53 Scott Branden
2015-03-05 15:59     ` Scott Branden
2015-03-05 15:59     ` Scott Branden
2015-03-05 15:59   ` [PATCH 3/4] mmc: sdhci-iproc: add IPROC SDHCI driver Scott Branden
2015-03-05 15:59     ` Scott Branden
2015-03-05 15:59     ` Scott Branden
2015-03-05 15:59   ` [PATCH 4/4] mmc: sdhci-iproc: add device tree bindings Scott Branden
2015-03-05 15:59     ` Scott Branden
2015-03-05 15:59     ` Scott Branden
2015-03-05 16:16   ` [PATCH RESEND 0/4] Add support for IPROC SDHCI controller Ulf Hansson
2015-03-05 16:16     ` Ulf Hansson
2015-03-05 16:16     ` Ulf Hansson
2015-03-05 19:57     ` Florian Fainelli
2015-03-05 19:57       ` Florian Fainelli
2015-03-05 19:57       ` Florian Fainelli
2015-03-10 18:35 ` [PATCH] mmc: sdhci: fix card presence logic in sdhci_request function Scott Branden
2015-03-10 18:35   ` Scott Branden
2015-03-13 10:14   ` Ulf Hansson
2015-03-16 17:59 ` [PATCH] wireless: rt2x00: add new rt2800usb device DWA 130 Scott Branden
2015-03-20  6:45   ` Kalle Valo
2015-03-16 18:19 ` [PATCH] ARM: amba: Increase number of IRQs Scott Branden
2015-03-16 18:19   ` Scott Branden
2015-03-16 21:08   ` Russell King - ARM Linux
2015-03-16 21:08     ` Russell King - ARM Linux
2015-03-16 21:18     ` Scott Branden
2015-03-16 21:18       ` Scott Branden
2015-03-16 21:16 ` [PATCH v2 1/1] " Scott Branden
2015-03-16 21:16   ` Scott Branden

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1423526830-29516-2-git-send-email-sbranden@broadcom.com \
    --to=sbranden@broadcom.com \
    --cc=anatol@google.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dtor@google.com \
    --cc=galak@codeaurora.org \
    --cc=grant.likely@linaro.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=jonathar@broadcom.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mpm@selenic.com \
    --cc=pawel.moll@arm.com \
    --cc=rjui@broadcom.com \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.