Update bcm238x patch

This commit is contained in:
Peter Robinson 2016-04-11 12:15:38 +01:00
parent 0ef5eed437
commit 1fd1a427cc
3 changed files with 107 additions and 6 deletions

View File

@ -1,7 +1,7 @@
From 1039ba1b91421a9018312f5901855fe03fbb0d1f Mon Sep 17 00:00:00 2001
From 19778e51ab57b1a7e310c2efedbe8d9df1b81672 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Wed, 30 Mar 2016 10:32:41 +0100
Subject: [PATCH] bcm283x: Pull upstream fixes
Date: Mon, 11 Apr 2016 11:10:17 +0100
Subject: [PATCH] bcm283x: Pull upstream fixes plus iproc mmc driver
---
.../devicetree/bindings/arm/bcm/brcm,bcm2835.txt | 4 +
@ -27,10 +27,12 @@ Subject: [PATCH] bcm283x: Pull upstream fixes
drivers/gpu/drm/vc4/vc4_plane.c | 603 +++++++++++++++++++--
drivers/gpu/drm/vc4/vc4_regs.h | 120 +++-
drivers/gpu/drm/vc4/vc4_v3d.c | 1 +
drivers/mmc/host/Kconfig | 6 +-
drivers/mmc/host/sdhci-iproc.c | 33 +-
drivers/tty/serial/8250/8250_bcm2835aux.c | 146 +++++
drivers/tty/serial/8250/Kconfig | 24 +
drivers/tty/serial/8250/Makefile | 1 +
26 files changed, 1361 insertions(+), 122 deletions(-)
28 files changed, 1394 insertions(+), 128 deletions(-)
create mode 100644 Documentation/devicetree/bindings/serial/brcm,bcm2835-aux-uart.txt
create mode 100644 arch/arm/boot/dts/bcm2835-rpi-a.dts
create mode 100644 arch/arm/boot/dts/bcm2837-rpi-3-b.dts
@ -1946,6 +1948,103 @@ index 31de5d1..e6d3c60 100644
{ .compatible = "brcm,vc4-v3d" },
{}
};
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 1526b8a..60de1e4 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -318,15 +318,15 @@ config MMC_SDHCI_F_SDH30
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
+ tristate "SDHCI support for the BCM2835 & iProc SD/MMC Controller"
+ depends on ARCH_BCM2835 || 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,
+ If you have a BCM2835 or IPROC platform with SD or MMC devices,
say Y or M here.
If unsure, say N.
diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
index 3b423b0..871c92c 100644
--- a/drivers/mmc/host/sdhci-iproc.c
+++ b/drivers/mmc/host/sdhci-iproc.c
@@ -26,6 +26,7 @@ struct sdhci_iproc_data {
const struct sdhci_pltfm_data *pdata;
u32 caps;
u32 caps1;
+ u32 mmc_caps;
};
struct sdhci_iproc_host {
@@ -165,9 +166,25 @@ static const struct sdhci_iproc_data iproc_data = {
.pdata = &sdhci_iproc_pltfm_data,
.caps = 0x05E90000,
.caps1 = 0x00000064,
+ .mmc_caps = MMC_CAP_1_8V_DDR,
+};
+
+static const struct sdhci_pltfm_data sdhci_bcm2835_pltfm_data = {
+ .quirks = SDHCI_QUIRK_BROKEN_CARD_DETECTION |
+ SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
+ SDHCI_QUIRK_MISSING_CAPS,
+ .ops = &sdhci_iproc_ops,
+};
+
+static const struct sdhci_iproc_data bcm2835_data = {
+ .pdata = &sdhci_bcm2835_pltfm_data,
+ .caps = SDHCI_CAN_VDD_330,
+ .caps1 = 0x00000000,
+ .mmc_caps = 0x00000000,
};
static const struct of_device_id sdhci_iproc_of_match[] = {
+ { .compatible = "brcm,bcm2835-sdhci", .data = &bcm2835_data },
{ .compatible = "brcm,sdhci-iproc-cygnus", .data = &iproc_data },
{ }
};
@@ -199,22 +216,32 @@ static int sdhci_iproc_probe(struct platform_device *pdev)
mmc_of_parse(host->mmc);
sdhci_get_of_property(pdev);
- /* Enable EMMC 1/8V DDR capable */
- host->mmc->caps |= MMC_CAP_1_8V_DDR;
+ host->mmc->caps |= iproc_host->data->mmc_caps;
pltfm_host->clk = devm_clk_get(&pdev->dev, NULL);
if (IS_ERR(pltfm_host->clk)) {
ret = PTR_ERR(pltfm_host->clk);
goto err;
}
+ ret = clk_prepare_enable(pltfm_host->clk);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to enable host clk\n");
+ 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);
+ ret = sdhci_add_host(host);
+ if (ret)
+ goto err_clk;
+
+ return 0;
+err_clk:
+ clk_disable_unprepare(pltfm_host->clk);
err:
sdhci_pltfm_free(pdev);
return ret;
diff --git a/drivers/tty/serial/8250/8250_bcm2835aux.c b/drivers/tty/serial/8250/8250_bcm2835aux.c
new file mode 100644
index 0000000..ecf89f1

View File

@ -242,7 +242,8 @@ CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_SERIAL_8250_BCM2835AUX=y
CONFIG_DMA_BCM2835=m
CONFIG_MMC_SDHCI_BCM2835=m
# CONFIG_MMC_SDHCI_BCM2835 is not set
CONFIG_MMC_SDHCI_IPROC=m
CONFIG_BCM2835_MBOX=m
CONFIG_PWM_BCM2835=m
CONFIG_HW_RANDOM_BCM2835=m

View File

@ -520,7 +520,7 @@ Patch431: arm-i.MX6-Utilite-device-dtb.patch
# http://www.spinics.net/lists/linux-tegra/msg25152.html
Patch432: Fix-tegra-to-use-stdout-path-for-serial-console.patch
Patch433: bcm283x-Pull-upstream-fixes.patch
Patch433: bcm283x-Pull-upstream-fixes-plus-iproc-mmc-driver.patch
# http://www.spinics.net/lists/netdev/msg369442.html
Patch434: revert-stmmac-Fix-eth0-No-PHY-found-regression.patch
@ -2215,6 +2215,7 @@ fi
%changelog
* Mon Apr 11 2016 Peter Robinson <pbrobinson@fedoraproject.org>
- Add upstream patch to fix IDIV issue when booting on Cortex-A7/15/17 devices
- Update bcm238x patch
* Thu Apr 07 2016 Justin M. Forbes <jforbes@fedoraproject.org>
- Enable Full Randomization on 32bit x86 CVE-2016-3672 (rhbz 1324749 1324750)