diff options
author | John Crispin <john@openwrt.org> | 2015-10-26 09:01:05 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2015-10-26 09:01:05 +0000 |
commit | bf28fb50bf705fdd12f749c57abce1796b8c1024 (patch) | |
tree | ea7c899e5461e9a403c8f17543cbe66f89ba2925 /target/linux/brcm2708/patches-4.1/0198-bcm2835-gpiomem-Fix-for-ARCH_BCM2835-builds.patch | |
parent | 63a50eeba30cb773e7abbd71c5e0727171ea740a (diff) | |
download | mtk-20170518-bf28fb50bf705fdd12f749c57abce1796b8c1024.zip mtk-20170518-bf28fb50bf705fdd12f749c57abce1796b8c1024.tar.gz mtk-20170518-bf28fb50bf705fdd12f749c57abce1796b8c1024.tar.bz2 |
brcm2708: update 4.1 patches
As usual, this patches were taken (and rebased) from
https://github.com/raspberrypi/linux/commits/rpi-4.1.y
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
SVN-Revision: 47258
Diffstat (limited to 'target/linux/brcm2708/patches-4.1/0198-bcm2835-gpiomem-Fix-for-ARCH_BCM2835-builds.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.1/0198-bcm2835-gpiomem-Fix-for-ARCH_BCM2835-builds.patch | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.1/0198-bcm2835-gpiomem-Fix-for-ARCH_BCM2835-builds.patch b/target/linux/brcm2708/patches-4.1/0198-bcm2835-gpiomem-Fix-for-ARCH_BCM2835-builds.patch new file mode 100644 index 0000000..643ed2c --- /dev/null +++ b/target/linux/brcm2708/patches-4.1/0198-bcm2835-gpiomem-Fix-for-ARCH_BCM2835-builds.patch @@ -0,0 +1,67 @@ +From 6413adc1fbf4c3e9a2bcd707dd7776f419988d7c Mon Sep 17 00:00:00 2001 +From: Phil Elwell <phil@raspberrypi.org> +Date: Tue, 6 Oct 2015 10:16:58 +0100 +Subject: [PATCH 198/203] bcm2835-gpiomem: Fix for ARCH_BCM2835 builds + +Build on ARCH_BCM2835, and fail to probe if no IO resource. + +See: https://github.com/raspberrypi/linux/issues/1154 +--- + drivers/char/broadcom/bcm2835-gpiomem.c | 25 ++++++++++--------------- + 1 file changed, 10 insertions(+), 15 deletions(-) + +--- a/drivers/char/broadcom/bcm2835-gpiomem.c ++++ b/drivers/char/broadcom/bcm2835-gpiomem.c +@@ -143,7 +143,6 @@ static int bcm2835_gpiomem_probe(struct + int err; + void *ptr_err; + struct device *dev = &pdev->dev; +- struct device_node *node = dev->of_node; + struct resource *ioresource; + + /* Allocate buffers and instance data */ +@@ -157,6 +156,15 @@ static int bcm2835_gpiomem_probe(struct + + inst->dev = dev; + ++ ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 0); ++ if (ioresource) { ++ inst->gpio_regs_phys = ioresource->start; ++ } else { ++ dev_err(inst->dev, "failed to get IO resource"); ++ err = -ENOENT; ++ goto failed_get_resource; ++ } ++ + /* Create character device entries */ + + err = alloc_chrdev_region(&bcm2835_gpiomem_devid, +@@ -187,20 +195,6 @@ static int bcm2835_gpiomem_probe(struct + if (IS_ERR(ptr_err)) + goto failed_device_create; + +- /* Get address from device tree if available (*_resource() correctly +- converts the bus address in device tree to a physical address), +- or use hardcoded offset + BCM2708_PERI_BASE if not. +- (In spite of its name 2708 actually seems to have the correct +- mach-dependent value on 2709 etc, as it is defined in +- mach-bcm270x/platform.h) */ +- +- if (node) { +- ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 0); +- inst->gpio_regs_phys = ioresource->start; +- } else { +- inst->gpio_regs_phys = GPIO_BASE; +- } +- + dev_info(inst->dev, "Initialised: Registers at 0x%08lx", + inst->gpio_regs_phys); + +@@ -214,6 +208,7 @@ failed_class_create: + failed_cdev_add: + unregister_chrdev_region(bcm2835_gpiomem_devid, 1); + failed_alloc_chrdev: ++failed_get_resource: + kfree(inst); + failed_inst_alloc: + dev_err(inst->dev, "could not load bcm2835_gpiomem"); |