All of lore.kernel.org
 help / color / mirror / Atom feed
From: Scott Branden <sbranden@broadcom.com>
To: <bcm-kernel-feedback-list@broadcom.com>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Chris Ball <chris@printf.net>, 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>,
	Grant Likely <grant.likely@linaro.org>
Cc: Ray Jui <rjui@broadcom.com>,
	Jonathan Richardson <jonathar@broadcom.com>,
	Corneliu Doban <cdoban@broadcom.com>,
	Dmitry Torokhov <dtor@google.com>,
	Anatol Pomazao <anatol@google.com>, <linux-mmc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	Scott Branden <sbranden@broadcom.com>
Subject: [PATCH 3/4] mmc: sdhci-iproc: add IPROC SDHCI driver
Date: Mon, 9 Feb 2015 16:06:30 -0800	[thread overview]
Message-ID: <1423526791-29453-4-git-send-email-sbranden@broadcom.com> (raw)
In-Reply-To: <1423526791-29453-1-git-send-email-sbranden@broadcom.com>

Add IPROC SDHCI driver for IPROC family of Broadcom devices.

Acked-by: Ray Jui <rjui@broadcom.com>
Signed-off-by: Corneliu Doban <cdoban@broadcom.com>
Signed-off-by: Scott Branden <sbranden@broadcom.com>
---
 drivers/mmc/host/Kconfig       |  14 +++
 drivers/mmc/host/Makefile      |   1 +
 drivers/mmc/host/sdhci-iproc.c | 241 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 256 insertions(+)
 create mode 100644 drivers/mmc/host/sdhci-iproc.c

diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 2d6fbdd..d6a2ff1 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -292,6 +292,20 @@ config MMC_SDHCI_BCM2835
 
 	  If unsure, say N.
 
+config MMC_SDHCI_IPROC
+	tristate "SDHCI platform support for the iProc SD/MMC Controller"
+	depends on ARCH_BCM_IPROC || COMPILE_TEST
+	depends on MMC_SDHCI_PLTFM
+	default ARCH_BCM_IPROC
+	select MMC_SDHCI_IO_ACCESSORS
+	help
+	  This selects the iProc SD/MMC controller.
+
+	  If you have an IPROC platform with SD or MMC devices,
+	  say Y or M here.
+
+	  If unsure, say N.
+
 config MMC_MOXART
 	tristate "MOXART SD/MMC Host Controller support"
 	depends on ARCH_MOXART && MMC
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index f7b0a77..32f24bd 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -70,6 +70,7 @@ obj-$(CONFIG_MMC_SDHCI_OF_ESDHC)	+= sdhci-of-esdhc.o
 obj-$(CONFIG_MMC_SDHCI_OF_HLWD)		+= sdhci-of-hlwd.o
 obj-$(CONFIG_MMC_SDHCI_BCM_KONA)	+= sdhci-bcm-kona.o
 obj-$(CONFIG_MMC_SDHCI_BCM2835)		+= sdhci-bcm2835.o
+obj-$(CONFIG_MMC_SDHCI_IPROC)		+= sdhci-iproc.o
 obj-$(CONFIG_MMC_SDHCI_MSM)		+= sdhci-msm.o
 obj-$(CONFIG_MMC_SDHCI_ST)		+= sdhci-st.o
 
diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
new file mode 100644
index 0000000..4139d34
--- /dev/null
+++ b/drivers/mmc/host/sdhci-iproc.c
@@ -0,0 +1,241 @@
+/*
+ * 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.
+ */
+
+/*
+ * iProc SDHCI platform driver
+ */
+
+#include <linux/delay.h>
+#include <linux/module.h>
+#include <linux/mmc/host.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include "sdhci-pltfm.h"
+
+struct sdhci_iproc_data {
+	const struct sdhci_pltfm_data *pdata;
+	u32 caps;
+	u32 caps1;
+};
+
+struct sdhci_iproc_host {
+	const struct sdhci_iproc_data *data;
+	u32 shadow_cmd;
+	u32 shadow_blk;
+};
+
+#define REG_OFFSET_IN_BITS(reg) ((reg) << 3 & 0x18)
+
+static inline u32 sdhci_iproc_readl(struct sdhci_host *host, int reg)
+{
+	u32 val = readl(host->ioaddr + reg);
+
+	pr_debug("%s: readl [0x%02x] 0x%08x\n",
+		 mmc_hostname(host->mmc), reg, val);
+	return val;
+}
+
+static u16 sdhci_iproc_readw(struct sdhci_host *host, int reg)
+{
+	u32 val = sdhci_iproc_readl(host, (reg & ~3));
+	u16 word = val >> REG_OFFSET_IN_BITS(reg) & 0xffff;
+	return word;
+}
+
+static u8 sdhci_iproc_readb(struct sdhci_host *host, int reg)
+{
+	u32 val = sdhci_iproc_readl(host, (reg & ~3));
+	u8 byte = val >> REG_OFFSET_IN_BITS(reg) & 0xff;
+	return byte;
+}
+
+static inline void sdhci_iproc_writel(struct sdhci_host *host, u32 val, int reg)
+{
+	pr_debug("%s: writel [0x%02x] 0x%08x\n",
+		 mmc_hostname(host->mmc), reg, val);
+
+	writel(val, host->ioaddr + reg);
+
+	if (host->clock <= 400000) {
+		/* Round up to micro-second four SD clock delay */
+		if (host->clock)
+			udelay((4 * 1000000 + host->clock - 1) / host->clock);
+		else
+			udelay(10);
+	}
+}
+
+/*
+ * The Arasan has a bugette whereby it may lose the content of successive
+ * writes to the same register that are within two SD-card clock cycles of
+ * each other (a clock domain crossing problem). The data
+ * register does not have this problem, which is just as well - otherwise we'd
+ * have to nobble the DMA engine too.
+ *
+ * This wouldn't be a problem with the code except that we can only write the
+ * controller with 32-bit writes.  So two different 16-bit registers are
+ * written back to back creates the problem.
+ *
+ * In reality, this only happens when SDHCI_BLOCK_SIZE and SDHCI_BLOCK_COUNT
+ * are written followed by SDHCI_TRANSFER_MODE and SDHCI_COMMAND.
+ * The BLOCK_SIZE and BLOCK_COUNT are meaningless until a command issued so
+ * the work around can be further optimized. We can keep shadow values of
+ * BLOCK_SIZE, BLOCK_COUNT, and TRANSFER_MODE until a COMMAND is issued.
+ * Then, write the BLOCK_SIZE+BLOCK_COUNT in a single 32-bit write followed
+ * by the TRANSFER+COMMAND in another 32-bit write.
+ */
+static void sdhci_iproc_writew(struct sdhci_host *host, u16 val, int reg)
+{
+	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
+	struct sdhci_iproc_host *iproc_host = pltfm_host->priv;
+	u32 word_shift = REG_OFFSET_IN_BITS(reg);
+	u32 mask = 0xffff << word_shift;
+	u32 oldval, newval;
+
+	if (reg == SDHCI_COMMAND) {
+		/* Write the block now as we are issuing a command */
+		if (iproc_host->shadow_blk != 0) {
+			sdhci_iproc_writel(host, iproc_host->shadow_blk,
+				SDHCI_BLOCK_SIZE);
+			iproc_host->shadow_blk = 0;
+		}
+		oldval = iproc_host->shadow_cmd;
+	} else if (reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) {
+		/* Block size and count are stored in shadow reg */
+		oldval = iproc_host->shadow_blk;
+	} else {
+		/* Read reg, all other registers are not shadowed */
+		oldval = sdhci_iproc_readl(host, (reg & ~3));
+	}
+	newval = (oldval & ~mask) | (val << word_shift);
+
+	if (reg == SDHCI_TRANSFER_MODE) {
+		/* Save the transfer mode until the command is issued */
+		iproc_host->shadow_cmd = newval;
+	} else if (reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) {
+		/* Save the block info until the command is issued */
+		iproc_host->shadow_blk = newval;
+	} else {
+		/* Command or other regular 32-bit write */
+		sdhci_iproc_writel(host, newval, reg & ~3);
+	}
+}
+
+static void sdhci_iproc_writeb(struct sdhci_host *host, u8 val, int reg)
+{
+	u32 oldval = sdhci_iproc_readl(host, (reg & ~3));
+	u32 byte_shift = REG_OFFSET_IN_BITS(reg);
+	u32 mask = 0xff << byte_shift;
+	u32 newval = (oldval & ~mask) | (val << byte_shift);
+
+	sdhci_iproc_writel(host, newval, reg & ~3);
+}
+
+static const struct sdhci_ops sdhci_iproc_ops = {
+	.read_l = sdhci_iproc_readl,
+	.read_w = sdhci_iproc_readw,
+	.read_b = sdhci_iproc_readb,
+	.write_l = sdhci_iproc_writel,
+	.write_w = sdhci_iproc_writew,
+	.write_b = sdhci_iproc_writeb,
+	.set_clock = sdhci_set_clock,
+	.get_max_clock = sdhci_pltfm_clk_get_max_clock,
+	.set_bus_width = sdhci_set_bus_width,
+	.reset = sdhci_reset,
+	.set_uhs_signaling = sdhci_set_uhs_signaling,
+};
+
+static const struct sdhci_pltfm_data sdhci_iproc_pltfm_data = {
+	.quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK,
+	.quirks2 = SDHCI_QUIRK2_ACMD23_BROKEN,
+	.ops = &sdhci_iproc_ops,
+};
+
+static const struct sdhci_iproc_data iproc_data = {
+	.pdata = &sdhci_iproc_pltfm_data,
+	.caps = 0x05E90000,
+	.caps1 = 0x00000064,
+};
+
+static const struct of_device_id sdhci_iproc_of_match[] = {
+	{ .compatible = "brcm,sdhci-iproc-cygnus", .data = &iproc_data },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, sdhci_iproc_of_match);
+
+static int sdhci_iproc_probe(struct platform_device *pdev)
+{
+	const struct of_device_id *match;
+	const struct sdhci_iproc_data *iproc_data;
+	struct sdhci_host *host;
+	struct sdhci_iproc_host *iproc_host;
+	struct sdhci_pltfm_host *pltfm_host;
+	int ret;
+
+	match = of_match_device(sdhci_iproc_of_match, &pdev->dev);
+	if (!match)
+		return -EINVAL;
+	iproc_data = match->data;
+
+	host = sdhci_pltfm_init(pdev, iproc_data->pdata, sizeof(*iproc_host));
+	if (IS_ERR(host))
+		return PTR_ERR(host);
+
+	pltfm_host = sdhci_priv(host);
+	iproc_host = sdhci_pltfm_priv(pltfm_host);
+
+	iproc_host->data = iproc_data;
+
+	mmc_of_parse(host->mmc);
+	sdhci_get_of_property(pdev);
+
+	/* Enable EMMC 1/8V DDR capable */
+	host->mmc->caps |= MMC_CAP_1_8V_DDR;
+
+	pltfm_host->clk = devm_clk_get(&pdev->dev, NULL);
+	if (IS_ERR(pltfm_host->clk)) {
+		ret = PTR_ERR(pltfm_host->clk);
+		goto err;
+	}
+
+	if (iproc_host->data->pdata->quirks & SDHCI_QUIRK_MISSING_CAPS) {
+		host->caps = iproc_host->data->caps;
+		host->caps1 = iproc_host->data->caps1;
+	}
+
+	return sdhci_add_host(host);
+
+err:
+	sdhci_pltfm_free(pdev);
+	return ret;
+}
+
+static int sdhci_iproc_remove(struct platform_device *pdev)
+{
+	return sdhci_pltfm_unregister(pdev);
+}
+
+static struct platform_driver sdhci_iproc_driver = {
+	.driver = {
+		.name = "sdhci-iproc",
+		.of_match_table = sdhci_iproc_of_match,
+		.pm = SDHCI_PLTFM_PMOPS,
+	},
+	.probe = sdhci_iproc_probe,
+	.remove = sdhci_iproc_remove,
+};
+module_platform_driver(sdhci_iproc_driver);
+
+MODULE_AUTHOR("Broadcom");
+MODULE_DESCRIPTION("IPROC SDHCI driver");
+MODULE_LICENSE("GPL v2");
-- 
2.2.2


WARNING: multiple messages have this Message-ID (diff)
From: Scott Branden <sbranden@broadcom.com>
To: bcm-kernel-feedback-list@broadcom.com,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Chris Ball <chris@printf.net>, 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>,
	Grant Likely <grant.likely@linaro.org>
Cc: Ray Jui <rjui@broadcom.com>,
	Jonathan Richardson <jonathar@broadcom.com>,
	Corneliu Doban <cdoban@broadcom.com>,
	Dmitry Torokhov <dtor@google.com>,
	Anatol Pomazao <anatol@google.com>,
	linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	Scott Branden <sbranden@broadcom.com>
Subject: [PATCH 3/4] mmc: sdhci-iproc: add IPROC SDHCI driver
Date: Mon, 9 Feb 2015 16:06:30 -0800	[thread overview]
Message-ID: <1423526791-29453-4-git-send-email-sbranden@broadcom.com> (raw)
In-Reply-To: <1423526791-29453-1-git-send-email-sbranden@broadcom.com>

Add IPROC SDHCI driver for IPROC family of Broadcom devices.

Acked-by: Ray Jui <rjui@broadcom.com>
Signed-off-by: Corneliu Doban <cdoban@broadcom.com>
Signed-off-by: Scott Branden <sbranden@broadcom.com>
---
 drivers/mmc/host/Kconfig       |  14 +++
 drivers/mmc/host/Makefile      |   1 +
 drivers/mmc/host/sdhci-iproc.c | 241 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 256 insertions(+)
 create mode 100644 drivers/mmc/host/sdhci-iproc.c

diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 2d6fbdd..d6a2ff1 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -292,6 +292,20 @@ config MMC_SDHCI_BCM2835
 
 	  If unsure, say N.
 
+config MMC_SDHCI_IPROC
+	tristate "SDHCI platform support for the iProc SD/MMC Controller"
+	depends on ARCH_BCM_IPROC || COMPILE_TEST
+	depends on MMC_SDHCI_PLTFM
+	default ARCH_BCM_IPROC
+	select MMC_SDHCI_IO_ACCESSORS
+	help
+	  This selects the iProc SD/MMC controller.
+
+	  If you have an IPROC platform with SD or MMC devices,
+	  say Y or M here.
+
+	  If unsure, say N.
+
 config MMC_MOXART
 	tristate "MOXART SD/MMC Host Controller support"
 	depends on ARCH_MOXART && MMC
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index f7b0a77..32f24bd 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -70,6 +70,7 @@ obj-$(CONFIG_MMC_SDHCI_OF_ESDHC)	+= sdhci-of-esdhc.o
 obj-$(CONFIG_MMC_SDHCI_OF_HLWD)		+= sdhci-of-hlwd.o
 obj-$(CONFIG_MMC_SDHCI_BCM_KONA)	+= sdhci-bcm-kona.o
 obj-$(CONFIG_MMC_SDHCI_BCM2835)		+= sdhci-bcm2835.o
+obj-$(CONFIG_MMC_SDHCI_IPROC)		+= sdhci-iproc.o
 obj-$(CONFIG_MMC_SDHCI_MSM)		+= sdhci-msm.o
 obj-$(CONFIG_MMC_SDHCI_ST)		+= sdhci-st.o
 
diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
new file mode 100644
index 0000000..4139d34
--- /dev/null
+++ b/drivers/mmc/host/sdhci-iproc.c
@@ -0,0 +1,241 @@
+/*
+ * 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.
+ */
+
+/*
+ * iProc SDHCI platform driver
+ */
+
+#include <linux/delay.h>
+#include <linux/module.h>
+#include <linux/mmc/host.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include "sdhci-pltfm.h"
+
+struct sdhci_iproc_data {
+	const struct sdhci_pltfm_data *pdata;
+	u32 caps;
+	u32 caps1;
+};
+
+struct sdhci_iproc_host {
+	const struct sdhci_iproc_data *data;
+	u32 shadow_cmd;
+	u32 shadow_blk;
+};
+
+#define REG_OFFSET_IN_BITS(reg) ((reg) << 3 & 0x18)
+
+static inline u32 sdhci_iproc_readl(struct sdhci_host *host, int reg)
+{
+	u32 val = readl(host->ioaddr + reg);
+
+	pr_debug("%s: readl [0x%02x] 0x%08x\n",
+		 mmc_hostname(host->mmc), reg, val);
+	return val;
+}
+
+static u16 sdhci_iproc_readw(struct sdhci_host *host, int reg)
+{
+	u32 val = sdhci_iproc_readl(host, (reg & ~3));
+	u16 word = val >> REG_OFFSET_IN_BITS(reg) & 0xffff;
+	return word;
+}
+
+static u8 sdhci_iproc_readb(struct sdhci_host *host, int reg)
+{
+	u32 val = sdhci_iproc_readl(host, (reg & ~3));
+	u8 byte = val >> REG_OFFSET_IN_BITS(reg) & 0xff;
+	return byte;
+}
+
+static inline void sdhci_iproc_writel(struct sdhci_host *host, u32 val, int reg)
+{
+	pr_debug("%s: writel [0x%02x] 0x%08x\n",
+		 mmc_hostname(host->mmc), reg, val);
+
+	writel(val, host->ioaddr + reg);
+
+	if (host->clock <= 400000) {
+		/* Round up to micro-second four SD clock delay */
+		if (host->clock)
+			udelay((4 * 1000000 + host->clock - 1) / host->clock);
+		else
+			udelay(10);
+	}
+}
+
+/*
+ * The Arasan has a bugette whereby it may lose the content of successive
+ * writes to the same register that are within two SD-card clock cycles of
+ * each other (a clock domain crossing problem). The data
+ * register does not have this problem, which is just as well - otherwise we'd
+ * have to nobble the DMA engine too.
+ *
+ * This wouldn't be a problem with the code except that we can only write the
+ * controller with 32-bit writes.  So two different 16-bit registers are
+ * written back to back creates the problem.
+ *
+ * In reality, this only happens when SDHCI_BLOCK_SIZE and SDHCI_BLOCK_COUNT
+ * are written followed by SDHCI_TRANSFER_MODE and SDHCI_COMMAND.
+ * The BLOCK_SIZE and BLOCK_COUNT are meaningless until a command issued so
+ * the work around can be further optimized. We can keep shadow values of
+ * BLOCK_SIZE, BLOCK_COUNT, and TRANSFER_MODE until a COMMAND is issued.
+ * Then, write the BLOCK_SIZE+BLOCK_COUNT in a single 32-bit write followed
+ * by the TRANSFER+COMMAND in another 32-bit write.
+ */
+static void sdhci_iproc_writew(struct sdhci_host *host, u16 val, int reg)
+{
+	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
+	struct sdhci_iproc_host *iproc_host = pltfm_host->priv;
+	u32 word_shift = REG_OFFSET_IN_BITS(reg);
+	u32 mask = 0xffff << word_shift;
+	u32 oldval, newval;
+
+	if (reg == SDHCI_COMMAND) {
+		/* Write the block now as we are issuing a command */
+		if (iproc_host->shadow_blk != 0) {
+			sdhci_iproc_writel(host, iproc_host->shadow_blk,
+				SDHCI_BLOCK_SIZE);
+			iproc_host->shadow_blk = 0;
+		}
+		oldval = iproc_host->shadow_cmd;
+	} else if (reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) {
+		/* Block size and count are stored in shadow reg */
+		oldval = iproc_host->shadow_blk;
+	} else {
+		/* Read reg, all other registers are not shadowed */
+		oldval = sdhci_iproc_readl(host, (reg & ~3));
+	}
+	newval = (oldval & ~mask) | (val << word_shift);
+
+	if (reg == SDHCI_TRANSFER_MODE) {
+		/* Save the transfer mode until the command is issued */
+		iproc_host->shadow_cmd = newval;
+	} else if (reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) {
+		/* Save the block info until the command is issued */
+		iproc_host->shadow_blk = newval;
+	} else {
+		/* Command or other regular 32-bit write */
+		sdhci_iproc_writel(host, newval, reg & ~3);
+	}
+}
+
+static void sdhci_iproc_writeb(struct sdhci_host *host, u8 val, int reg)
+{
+	u32 oldval = sdhci_iproc_readl(host, (reg & ~3));
+	u32 byte_shift = REG_OFFSET_IN_BITS(reg);
+	u32 mask = 0xff << byte_shift;
+	u32 newval = (oldval & ~mask) | (val << byte_shift);
+
+	sdhci_iproc_writel(host, newval, reg & ~3);
+}
+
+static const struct sdhci_ops sdhci_iproc_ops = {
+	.read_l = sdhci_iproc_readl,
+	.read_w = sdhci_iproc_readw,
+	.read_b = sdhci_iproc_readb,
+	.write_l = sdhci_iproc_writel,
+	.write_w = sdhci_iproc_writew,
+	.write_b = sdhci_iproc_writeb,
+	.set_clock = sdhci_set_clock,
+	.get_max_clock = sdhci_pltfm_clk_get_max_clock,
+	.set_bus_width = sdhci_set_bus_width,
+	.reset = sdhci_reset,
+	.set_uhs_signaling = sdhci_set_uhs_signaling,
+};
+
+static const struct sdhci_pltfm_data sdhci_iproc_pltfm_data = {
+	.quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK,
+	.quirks2 = SDHCI_QUIRK2_ACMD23_BROKEN,
+	.ops = &sdhci_iproc_ops,
+};
+
+static const struct sdhci_iproc_data iproc_data = {
+	.pdata = &sdhci_iproc_pltfm_data,
+	.caps = 0x05E90000,
+	.caps1 = 0x00000064,
+};
+
+static const struct of_device_id sdhci_iproc_of_match[] = {
+	{ .compatible = "brcm,sdhci-iproc-cygnus", .data = &iproc_data },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, sdhci_iproc_of_match);
+
+static int sdhci_iproc_probe(struct platform_device *pdev)
+{
+	const struct of_device_id *match;
+	const struct sdhci_iproc_data *iproc_data;
+	struct sdhci_host *host;
+	struct sdhci_iproc_host *iproc_host;
+	struct sdhci_pltfm_host *pltfm_host;
+	int ret;
+
+	match = of_match_device(sdhci_iproc_of_match, &pdev->dev);
+	if (!match)
+		return -EINVAL;
+	iproc_data = match->data;
+
+	host = sdhci_pltfm_init(pdev, iproc_data->pdata, sizeof(*iproc_host));
+	if (IS_ERR(host))
+		return PTR_ERR(host);
+
+	pltfm_host = sdhci_priv(host);
+	iproc_host = sdhci_pltfm_priv(pltfm_host);
+
+	iproc_host->data = iproc_data;
+
+	mmc_of_parse(host->mmc);
+	sdhci_get_of_property(pdev);
+
+	/* Enable EMMC 1/8V DDR capable */
+	host->mmc->caps |= MMC_CAP_1_8V_DDR;
+
+	pltfm_host->clk = devm_clk_get(&pdev->dev, NULL);
+	if (IS_ERR(pltfm_host->clk)) {
+		ret = PTR_ERR(pltfm_host->clk);
+		goto err;
+	}
+
+	if (iproc_host->data->pdata->quirks & SDHCI_QUIRK_MISSING_CAPS) {
+		host->caps = iproc_host->data->caps;
+		host->caps1 = iproc_host->data->caps1;
+	}
+
+	return sdhci_add_host(host);
+
+err:
+	sdhci_pltfm_free(pdev);
+	return ret;
+}
+
+static int sdhci_iproc_remove(struct platform_device *pdev)
+{
+	return sdhci_pltfm_unregister(pdev);
+}
+
+static struct platform_driver sdhci_iproc_driver = {
+	.driver = {
+		.name = "sdhci-iproc",
+		.of_match_table = sdhci_iproc_of_match,
+		.pm = SDHCI_PLTFM_PMOPS,
+	},
+	.probe = sdhci_iproc_probe,
+	.remove = sdhci_iproc_remove,
+};
+module_platform_driver(sdhci_iproc_driver);
+
+MODULE_AUTHOR("Broadcom");
+MODULE_DESCRIPTION("IPROC SDHCI driver");
+MODULE_LICENSE("GPL v2");
-- 
2.2.2


WARNING: multiple messages have this Message-ID (diff)
From: sbranden@broadcom.com (Scott Branden)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/4] mmc: sdhci-iproc: add IPROC SDHCI driver
Date: Mon, 9 Feb 2015 16:06:30 -0800	[thread overview]
Message-ID: <1423526791-29453-4-git-send-email-sbranden@broadcom.com> (raw)
In-Reply-To: <1423526791-29453-1-git-send-email-sbranden@broadcom.com>

Add IPROC SDHCI driver for IPROC family of Broadcom devices.

Acked-by: Ray Jui <rjui@broadcom.com>
Signed-off-by: Corneliu Doban <cdoban@broadcom.com>
Signed-off-by: Scott Branden <sbranden@broadcom.com>
---
 drivers/mmc/host/Kconfig       |  14 +++
 drivers/mmc/host/Makefile      |   1 +
 drivers/mmc/host/sdhci-iproc.c | 241 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 256 insertions(+)
 create mode 100644 drivers/mmc/host/sdhci-iproc.c

diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 2d6fbdd..d6a2ff1 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -292,6 +292,20 @@ config MMC_SDHCI_BCM2835
 
 	  If unsure, say N.
 
+config MMC_SDHCI_IPROC
+	tristate "SDHCI platform support for the iProc SD/MMC Controller"
+	depends on ARCH_BCM_IPROC || COMPILE_TEST
+	depends on MMC_SDHCI_PLTFM
+	default ARCH_BCM_IPROC
+	select MMC_SDHCI_IO_ACCESSORS
+	help
+	  This selects the iProc SD/MMC controller.
+
+	  If you have an IPROC platform with SD or MMC devices,
+	  say Y or M here.
+
+	  If unsure, say N.
+
 config MMC_MOXART
 	tristate "MOXART SD/MMC Host Controller support"
 	depends on ARCH_MOXART && MMC
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index f7b0a77..32f24bd 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -70,6 +70,7 @@ obj-$(CONFIG_MMC_SDHCI_OF_ESDHC)	+= sdhci-of-esdhc.o
 obj-$(CONFIG_MMC_SDHCI_OF_HLWD)		+= sdhci-of-hlwd.o
 obj-$(CONFIG_MMC_SDHCI_BCM_KONA)	+= sdhci-bcm-kona.o
 obj-$(CONFIG_MMC_SDHCI_BCM2835)		+= sdhci-bcm2835.o
+obj-$(CONFIG_MMC_SDHCI_IPROC)		+= sdhci-iproc.o
 obj-$(CONFIG_MMC_SDHCI_MSM)		+= sdhci-msm.o
 obj-$(CONFIG_MMC_SDHCI_ST)		+= sdhci-st.o
 
diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
new file mode 100644
index 0000000..4139d34
--- /dev/null
+++ b/drivers/mmc/host/sdhci-iproc.c
@@ -0,0 +1,241 @@
+/*
+ * 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.
+ */
+
+/*
+ * iProc SDHCI platform driver
+ */
+
+#include <linux/delay.h>
+#include <linux/module.h>
+#include <linux/mmc/host.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include "sdhci-pltfm.h"
+
+struct sdhci_iproc_data {
+	const struct sdhci_pltfm_data *pdata;
+	u32 caps;
+	u32 caps1;
+};
+
+struct sdhci_iproc_host {
+	const struct sdhci_iproc_data *data;
+	u32 shadow_cmd;
+	u32 shadow_blk;
+};
+
+#define REG_OFFSET_IN_BITS(reg) ((reg) << 3 & 0x18)
+
+static inline u32 sdhci_iproc_readl(struct sdhci_host *host, int reg)
+{
+	u32 val = readl(host->ioaddr + reg);
+
+	pr_debug("%s: readl [0x%02x] 0x%08x\n",
+		 mmc_hostname(host->mmc), reg, val);
+	return val;
+}
+
+static u16 sdhci_iproc_readw(struct sdhci_host *host, int reg)
+{
+	u32 val = sdhci_iproc_readl(host, (reg & ~3));
+	u16 word = val >> REG_OFFSET_IN_BITS(reg) & 0xffff;
+	return word;
+}
+
+static u8 sdhci_iproc_readb(struct sdhci_host *host, int reg)
+{
+	u32 val = sdhci_iproc_readl(host, (reg & ~3));
+	u8 byte = val >> REG_OFFSET_IN_BITS(reg) & 0xff;
+	return byte;
+}
+
+static inline void sdhci_iproc_writel(struct sdhci_host *host, u32 val, int reg)
+{
+	pr_debug("%s: writel [0x%02x] 0x%08x\n",
+		 mmc_hostname(host->mmc), reg, val);
+
+	writel(val, host->ioaddr + reg);
+
+	if (host->clock <= 400000) {
+		/* Round up to micro-second four SD clock delay */
+		if (host->clock)
+			udelay((4 * 1000000 + host->clock - 1) / host->clock);
+		else
+			udelay(10);
+	}
+}
+
+/*
+ * The Arasan has a bugette whereby it may lose the content of successive
+ * writes to the same register that are within two SD-card clock cycles of
+ * each other (a clock domain crossing problem). The data
+ * register does not have this problem, which is just as well - otherwise we'd
+ * have to nobble the DMA engine too.
+ *
+ * This wouldn't be a problem with the code except that we can only write the
+ * controller with 32-bit writes.  So two different 16-bit registers are
+ * written back to back creates the problem.
+ *
+ * In reality, this only happens when SDHCI_BLOCK_SIZE and SDHCI_BLOCK_COUNT
+ * are written followed by SDHCI_TRANSFER_MODE and SDHCI_COMMAND.
+ * The BLOCK_SIZE and BLOCK_COUNT are meaningless until a command issued so
+ * the work around can be further optimized. We can keep shadow values of
+ * BLOCK_SIZE, BLOCK_COUNT, and TRANSFER_MODE until a COMMAND is issued.
+ * Then, write the BLOCK_SIZE+BLOCK_COUNT in a single 32-bit write followed
+ * by the TRANSFER+COMMAND in another 32-bit write.
+ */
+static void sdhci_iproc_writew(struct sdhci_host *host, u16 val, int reg)
+{
+	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
+	struct sdhci_iproc_host *iproc_host = pltfm_host->priv;
+	u32 word_shift = REG_OFFSET_IN_BITS(reg);
+	u32 mask = 0xffff << word_shift;
+	u32 oldval, newval;
+
+	if (reg == SDHCI_COMMAND) {
+		/* Write the block now as we are issuing a command */
+		if (iproc_host->shadow_blk != 0) {
+			sdhci_iproc_writel(host, iproc_host->shadow_blk,
+				SDHCI_BLOCK_SIZE);
+			iproc_host->shadow_blk = 0;
+		}
+		oldval = iproc_host->shadow_cmd;
+	} else if (reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) {
+		/* Block size and count are stored in shadow reg */
+		oldval = iproc_host->shadow_blk;
+	} else {
+		/* Read reg, all other registers are not shadowed */
+		oldval = sdhci_iproc_readl(host, (reg & ~3));
+	}
+	newval = (oldval & ~mask) | (val << word_shift);
+
+	if (reg == SDHCI_TRANSFER_MODE) {
+		/* Save the transfer mode until the command is issued */
+		iproc_host->shadow_cmd = newval;
+	} else if (reg == SDHCI_BLOCK_SIZE || reg == SDHCI_BLOCK_COUNT) {
+		/* Save the block info until the command is issued */
+		iproc_host->shadow_blk = newval;
+	} else {
+		/* Command or other regular 32-bit write */
+		sdhci_iproc_writel(host, newval, reg & ~3);
+	}
+}
+
+static void sdhci_iproc_writeb(struct sdhci_host *host, u8 val, int reg)
+{
+	u32 oldval = sdhci_iproc_readl(host, (reg & ~3));
+	u32 byte_shift = REG_OFFSET_IN_BITS(reg);
+	u32 mask = 0xff << byte_shift;
+	u32 newval = (oldval & ~mask) | (val << byte_shift);
+
+	sdhci_iproc_writel(host, newval, reg & ~3);
+}
+
+static const struct sdhci_ops sdhci_iproc_ops = {
+	.read_l = sdhci_iproc_readl,
+	.read_w = sdhci_iproc_readw,
+	.read_b = sdhci_iproc_readb,
+	.write_l = sdhci_iproc_writel,
+	.write_w = sdhci_iproc_writew,
+	.write_b = sdhci_iproc_writeb,
+	.set_clock = sdhci_set_clock,
+	.get_max_clock = sdhci_pltfm_clk_get_max_clock,
+	.set_bus_width = sdhci_set_bus_width,
+	.reset = sdhci_reset,
+	.set_uhs_signaling = sdhci_set_uhs_signaling,
+};
+
+static const struct sdhci_pltfm_data sdhci_iproc_pltfm_data = {
+	.quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK,
+	.quirks2 = SDHCI_QUIRK2_ACMD23_BROKEN,
+	.ops = &sdhci_iproc_ops,
+};
+
+static const struct sdhci_iproc_data iproc_data = {
+	.pdata = &sdhci_iproc_pltfm_data,
+	.caps = 0x05E90000,
+	.caps1 = 0x00000064,
+};
+
+static const struct of_device_id sdhci_iproc_of_match[] = {
+	{ .compatible = "brcm,sdhci-iproc-cygnus", .data = &iproc_data },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, sdhci_iproc_of_match);
+
+static int sdhci_iproc_probe(struct platform_device *pdev)
+{
+	const struct of_device_id *match;
+	const struct sdhci_iproc_data *iproc_data;
+	struct sdhci_host *host;
+	struct sdhci_iproc_host *iproc_host;
+	struct sdhci_pltfm_host *pltfm_host;
+	int ret;
+
+	match = of_match_device(sdhci_iproc_of_match, &pdev->dev);
+	if (!match)
+		return -EINVAL;
+	iproc_data = match->data;
+
+	host = sdhci_pltfm_init(pdev, iproc_data->pdata, sizeof(*iproc_host));
+	if (IS_ERR(host))
+		return PTR_ERR(host);
+
+	pltfm_host = sdhci_priv(host);
+	iproc_host = sdhci_pltfm_priv(pltfm_host);
+
+	iproc_host->data = iproc_data;
+
+	mmc_of_parse(host->mmc);
+	sdhci_get_of_property(pdev);
+
+	/* Enable EMMC 1/8V DDR capable */
+	host->mmc->caps |= MMC_CAP_1_8V_DDR;
+
+	pltfm_host->clk = devm_clk_get(&pdev->dev, NULL);
+	if (IS_ERR(pltfm_host->clk)) {
+		ret = PTR_ERR(pltfm_host->clk);
+		goto err;
+	}
+
+	if (iproc_host->data->pdata->quirks & SDHCI_QUIRK_MISSING_CAPS) {
+		host->caps = iproc_host->data->caps;
+		host->caps1 = iproc_host->data->caps1;
+	}
+
+	return sdhci_add_host(host);
+
+err:
+	sdhci_pltfm_free(pdev);
+	return ret;
+}
+
+static int sdhci_iproc_remove(struct platform_device *pdev)
+{
+	return sdhci_pltfm_unregister(pdev);
+}
+
+static struct platform_driver sdhci_iproc_driver = {
+	.driver = {
+		.name = "sdhci-iproc",
+		.of_match_table = sdhci_iproc_of_match,
+		.pm = SDHCI_PLTFM_PMOPS,
+	},
+	.probe = sdhci_iproc_probe,
+	.remove = sdhci_iproc_remove,
+};
+module_platform_driver(sdhci_iproc_driver);
+
+MODULE_AUTHOR("Broadcom");
+MODULE_DESCRIPTION("IPROC SDHCI driver");
+MODULE_LICENSE("GPL v2");
-- 
2.2.2

  parent 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   ` Scott Branden [this message]
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   ` [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   ` [PATCH 1/2] hwrng: iproc-rng200 - Add Broadcom IPROC RNG driver Scott Branden
2015-02-10  0:07     ` 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=1423526791-29453-4-git-send-email-sbranden@broadcom.com \
    --to=sbranden@broadcom.com \
    --cc=anatol@google.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=cdoban@broadcom.com \
    --cc=chris@printf.net \
    --cc=devicetree@vger.kernel.org \
    --cc=dtor@google.com \
    --cc=galak@codeaurora.org \
    --cc=grant.likely@linaro.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=jonathar@broadcom.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=pawel.moll@arm.com \
    --cc=rjui@broadcom.com \
    --cc=robh+dt@kernel.org \
    --cc=ulf.hansson@linaro.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.