1 From 94e975060ece510ef20c619d3a022cbf1978c2ef Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.org>
3 Date: Tue, 6 Oct 2015 10:16:58 +0100
4 Subject: [PATCH 198/222] bcm2835-gpiomem: Fix for ARCH_BCM2835 builds
6 Build on ARCH_BCM2835, and fail to probe if no IO resource.
8 See: https://github.com/raspberrypi/linux/issues/1154
10 drivers/char/broadcom/bcm2835-gpiomem.c | 25 ++++++++++---------------
11 1 file changed, 10 insertions(+), 15 deletions(-)
13 --- a/drivers/char/broadcom/bcm2835-gpiomem.c
14 +++ b/drivers/char/broadcom/bcm2835-gpiomem.c
15 @@ -143,7 +143,6 @@ static int bcm2835_gpiomem_probe(struct
18 struct device *dev = &pdev->dev;
19 - struct device_node *node = dev->of_node;
20 struct resource *ioresource;
22 /* Allocate buffers and instance data */
23 @@ -157,6 +156,15 @@ static int bcm2835_gpiomem_probe(struct
27 + ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
29 + inst->gpio_regs_phys = ioresource->start;
31 + dev_err(inst->dev, "failed to get IO resource");
33 + goto failed_get_resource;
36 /* Create character device entries */
38 err = alloc_chrdev_region(&bcm2835_gpiomem_devid,
39 @@ -187,20 +195,6 @@ static int bcm2835_gpiomem_probe(struct
41 goto failed_device_create;
43 - /* Get address from device tree if available (*_resource() correctly
44 - converts the bus address in device tree to a physical address),
45 - or use hardcoded offset + BCM2708_PERI_BASE if not.
46 - (In spite of its name 2708 actually seems to have the correct
47 - mach-dependent value on 2709 etc, as it is defined in
48 - mach-bcm270x/platform.h) */
51 - ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
52 - inst->gpio_regs_phys = ioresource->start;
54 - inst->gpio_regs_phys = GPIO_BASE;
57 dev_info(inst->dev, "Initialised: Registers at 0x%08lx",
58 inst->gpio_regs_phys);
60 @@ -214,6 +208,7 @@ failed_class_create:
62 unregister_chrdev_region(bcm2835_gpiomem_devid, 1);
67 dev_err(inst->dev, "could not load bcm2835_gpiomem");