Skip to contentSkip to conversation

gpio: bcm281xx: GPIO driver

PATCH Superseded Markus Mayer 3 participants 8 messages Aug 30, 2013 – Sep 6, 2013

Subsystems (7)

v7 of 9 Superseded Latest is v9 →

lore
Share & tools
lore
#0 lore raw

v7 cover gpio: bcm281xx: GPIO driver

This patch series adds the GPIO driver, and its device tree bindings, for the Broadcom bcm281xx family of mobile SoCs.

Changes since v6:
- Broke out arch/arm/mach-bcm/Kconfig into its own patch
- Changed commit title messages accordingly

Markus Mayer (3):
gpio: bcm281xx: Add GPIO driver
ARM: bcm281xx: Enable GPIO driver
ARM: bcm281xx: Add device node for the GPIO controller

 .../devicetree/bindings/gpio/gpio-bcm-kona.txt     |   52 ++
 arch/arm/boot/dts/bcm11351.dtsi                    |   16 +
 arch/arm/mach-bcm/Kconfig                          |    2 +-
 drivers/gpio/Kconfig                               |    5 +
 drivers/gpio/Makefile                              |    1 +
 drivers/gpio/gpio-bcm-kona.c                       |  631 ++++++++++++++++++++
 6 files changed, 706 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt
 create mode 100644 drivers/gpio/gpio-bcm-kona.c
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH v7 1/3 gpio: bcm281xx: Add GPIO driver

From: Markus Mayer <[email protected]>

Add the GPIO driver for the Broadcom bcm281xx family of mobile SoCs. These GPIO controllers may contain up to 8 banks where each bank includes 32 pins that can be driven high or low and act as an edge sensitive interrupt.

---
 .../devicetree/bindings/gpio/gpio-bcm-kona.txt     |   52 ++
 drivers/gpio/Kconfig                               |    5 +
 drivers/gpio/Makefile                              |    1 +
 drivers/gpio/gpio-bcm-kona.c                       |  631 ++++++++++++++++++++
 4 files changed, 689 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt
 create mode 100644 drivers/gpio/gpio-bcm-kona.c
Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt new file +52 -0
new file mode 100644
index 0000000..4a63bc9
@@ -0,0 +1,52 @@
+Broadcom Kona Family GPIO
+=========================
+
+This GPIO driver is used in the following Broadcom SoCs:
+  BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
+
+The Broadcom GPIO Controller IP can be configured prior to synthesis to
+support up to 8 banks of 32 GPIOs where each bank has its own IRQ. The
+GPIO controller only supports edge, not level, triggering of interrupts.
+
+Required properties
+-------------------
+
+- compatible: "brcm,bcm11351-gpio", "brcm,kona-gpio"
+- reg: Physical base address and length of the controller's registers.
+- interrupts: The interrupt outputs from the controller. There is one GPIO
+  interrupt per GPIO bank. The number of interrupts listed depends on the
+  number of GPIO banks on the SoC. The interrupts must be ordered by bank,
+  starting with bank 0. There is always a 1:1 mapping between banks and
+  IRQs.
+- #gpio-cells: Should be <2>. The first cell is the pin number, the second
+  cell is used to specify optional parameters:
+  - bit 0 specifies polarity (0 for normal, 1 for inverted)
+  See also "gpio-specifier" in .../devicetree/bindings/gpio/gpio.txt.
+- #interrupt-cells: Should be <2>. The first cell is the GPIO number. The
+  second cell is used to specify flags. The following subset of flags is
+  supported:
+  - trigger type (bits[1:0]):
+      1 = low-to-high edge triggered.
+      2 = high-to-low edge triggered.
+      3 = low-to-high or high-to-low edge triggered
+      Valid values are 1, 2, 3
+  See also .../devicetree/bindings/interrupt-controller/interrupts.txt.
+- gpio-controller: Marks the device node as a GPIO controller.
+- interrupt-controller: Marks the device node as an interrupt controller.
+
+Example:
+	gpio: gpio at 35003000 {
+		compatible = "brcm,bcm11351-gpio", "brcm,kona-gpio";
+		reg = <0x35003000 0x800>;
+		interrupts =
+		       <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH
+			GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH
+			GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH
+			GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH
+			GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH
+			GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+		#gpio-cells = <2>;
+		#interrupt-cells = <2>;
+		gpio-controller;
+		interrupt-controller;
+	};
drivers/gpio/Kconfig +5 -0
index b2450ba..b68e9b5 100644
@@ -714,6 +714,11 @@ config GPIO_MSIC
 	  Enable support for GPIO on intel MSIC controllers found in
 	  intel MID devices
 
+config GPIO_BCM_KONA
+	bool "Broadcom Kona GPIO"
+	help
+	  Turn on GPIO support for Broadcom "Kona" chips.
+
 comment "USB GPIO expanders:"
 
 config GPIO_VIPERBOARD
drivers/gpio/Makefile +1 -0
index ef3e983..fcd0751 100644
@@ -16,6 +16,7 @@ obj-$(CONFIG_GPIO_ADP5520)	+= gpio-adp5520.o
 obj-$(CONFIG_GPIO_ADP5588)	+= gpio-adp5588.o
 obj-$(CONFIG_GPIO_AMD8111)	+= gpio-amd8111.o
 obj-$(CONFIG_GPIO_ARIZONA)	+= gpio-arizona.o
+obj-$(CONFIG_GPIO_BCM_KONA)	+= gpio-bcm-kona.o
 obj-$(CONFIG_GPIO_BT8XX)	+= gpio-bt8xx.o
 obj-$(CONFIG_GPIO_CLPS711X)	+= gpio-clps711x.o
 obj-$(CONFIG_GPIO_CS5535)	+= gpio-cs5535.o
drivers/gpio/gpio-bcm-kona.c new file +631 -0

631 lines not on this page · raw message

Signature · 1 line
1.7.9.5
#2 lore raw

PATCH v7 1/3 gpio: bcm281xx: Add GPIO driver

On Fri, Aug 30, 2013 at 10:15:12AM -0700, Markus Mayer wrote:

<snip>

Quoted 22 lines
drivers/gpio/Makefile +1 -0
index ef3e983..fcd0751 100644
@@ -16,6 +16,7 @@ obj-$(CONFIG_GPIO_ADP5520)	+= gpio-adp5520.o
 obj-$(CONFIG_GPIO_ADP5588)	+= gpio-adp5588.o
 obj-$(CONFIG_GPIO_AMD8111)	+= gpio-amd8111.o
 obj-$(CONFIG_GPIO_ARIZONA)	+= gpio-arizona.o
+obj-$(CONFIG_GPIO_BCM_KONA)	+= gpio-bcm-kona.o
 obj-$(CONFIG_GPIO_BT8XX)	+= gpio-bt8xx.o
 obj-$(CONFIG_GPIO_CLPS711X)	+= gpio-clps711x.o
 obj-$(CONFIG_GPIO_CS5535)	+= gpio-cs5535.o
drivers/gpio/gpio-bcm-kona.c new file +4 -0
new file mode 100644
index 0000000..f0f7a96
@@ -0,0 +1,631 @@
+/*
+ * Copyright (C) 2012-2013 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or

drivers/gpio/gpio-bcm-kona.c line 14

Quoted 10 lines
drivers/gpio/gpio-bcm-kona.c new file +10 -0
+ * 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.
+ */
+
+#include <linux/bitops.h>

Need #include <linux/err.h>

Quoted 7 lines
drivers/gpio/gpio-bcm-kona.c new file +7 -0
+#include <linux/io.h>
+#include <linux/gpio.h>
+#include <linux/of_device.h>
+#include <linux/of_irq.h>
+#include <linux/module.h>
+#include <linux/irqdomain.h>
+#include <linux/irqchip/chained_irq.h>

<snip>

drivers/gpio/gpio-bcm-kona.c line 568

Quoted 12 lines
drivers/gpio/gpio-bcm-kona.c new file +12 -0
+	kona_gpio->irq_domain = irq_domain_add_linear(dev->of_node,
+						      chip->ngpio,
+						      &bcm_kona_irq_ops,
+						      kona_gpio);
+	if (!kona_gpio->irq_domain) {
+		dev_err(dev, "Couldn't allocate IRQ domain\n");
+		return -ENXIO;
+	}
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	kona_gpio->reg_base = devm_ioremap_resource(dev, res);
+	if (IS_ERR(kona_gpio->reg_base)) {

gpio-bcm-kona.c:568:2: error: implicit declaration of function ?IS_ERR?

-Matt

#3 lore raw

PATCH v7 1/3 gpio: bcm281xx: Add GPIO driver

Quoted 11 lines
Quoted 11 lines
drivers/gpio/gpio-bcm-kona.c new file +8 -0
@@ -0,0 +1,631 @@
+/*
+ * Copyright (C) 2012-2013 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
Quoted 8 lines

drivers/gpio/gpio-bcm-kona.c line 14

Quoted 6 lines
drivers/gpio/gpio-bcm-kona.c new file +6 -0
+ * 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.
+ */
+
+#include <linux/bitops.h>

Need #include <linux/err.h>

Thanks, Matt. A new version has been posted.

-Markus

#4 lore raw

PATCH v7 2/3 ARM: bcm281xx: Enable GPIO driver

In reply to Markus Mayer

Turn on the bcm281xx GPIO driver in the kernel configuration.

---
 arch/arm/mach-bcm/Kconfig |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-bcm/Kconfig +1 -1
index f112895..5819126 100644
@@ -9,7 +9,7 @@ config ARCH_BCM
 	select CLKSRC_OF
 	select GENERIC_CLOCKEVENTS
 	select GENERIC_TIME
-	select GPIO_BCM
+	select GPIO_BCM_KONA
 	select SPARSE_IRQ
 	select TICK_ONESHOT
 	help
Signature · 1 line
1.7.9.5
#5 lore raw

PATCH v7 2/3 ARM: bcm281xx: Enable GPIO driver

Quoted 10 lines · Markus Mayer

Turn on the bcm281xx GPIO driver in the kernel configuration.

---
  arch/arm/mach-bcm/Kconfig |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-bcm/Kconfig +0 -0
index f112895..5819126 100644

arch/arm/mach-bcm/Kconfig config ARCH_BCM · line 15

Quoted 8 lines
arch/arm/mach-bcm/Kconfig +1 -1
@@ -9,7 +9,7 @@ config ARCH_BCM
  	select CLKSRC_OF
  	select GENERIC_CLOCKEVENTS
  	select GENERIC_TIME
-	select GPIO_BCM
+	select GPIO_BCM_KONA
  	select SPARSE_IRQ
  	select TICK_ONESHOT
  	help

Thanks,
csd

#6 lore raw

PATCH v7 2/3 ARM: bcm281xx: Enable GPIO driver

Quoted 7 lines · Christian Daudt
Quoted 6 lines · Markus Mayer

Turn on the bcm281xx GPIO driver in the kernel configuration.

---
  arch/arm/mach-bcm/Kconfig |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
Quoted 15 lines

arch/arm/mach-bcm/Kconfig config ARCH_BCM · line 15

Quoted 13 lines
arch/arm/mach-bcm/Kconfig +1 -1
index f112895..5819126 100644
@@ -9,7 +9,7 @@ config ARCH_BCM
        select CLKSRC_OF
        select GENERIC_CLOCKEVENTS
        select GENERIC_TIME
-       select GPIO_BCM
+       select GPIO_BCM_KONA
        select SPARSE_IRQ
        select TICK_ONESHOT
        help

Also

Looks like I forgot to add the sign-off to this re-introduced patch. Please let me know if you want me to re-send rather than just adding it here on the mailing list.

Regards,
-Markus

Signature · 2 lines
Markus Mayer
Broadcom Landing Team
#7 lore raw

PATCH v7 3/3 ARM: bcm281xx: Add device node for the GPIO controller

In reply to Markus Mayer

Add the GPIO controller device node for the Broadcom bcm281xx family of mobile SoCs.

---
 arch/arm/boot/dts/bcm11351.dtsi |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)
arch/arm/boot/dts/bcm11351.dtsi +16 -0
index c0cdf66..a3945e3 100644
@@ -63,6 +63,22 @@
 		clock-frequency = <32768>;
 	};
 
+	gpio: gpio at 35003000 {
+		compatible = "brcm,bcm11351-gpio", "brcm,kona-gpio";
+		reg = <0x35003000 0x800>;
+		interrupts =
+		       <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH
+			GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH
+			GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH
+			GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH
+			GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH
+			GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+		#gpio-cells = <2>;
+		#interrupt-cells = <2>;
+		gpio-controller;
+		interrupt-controller;
+	};
+
 	sdio0: sdio at 0x3f180000 {
 		compatible = "bcm,kona-sdhci";
 		reg = <0x3f180000 0x10000>;
Signature · 1 line
1.7.9.5