gpio: bcm281xx: GPIO driver
Subsystems (7)
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
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
@@ -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
@@ -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
@@ -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
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@@ -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.odrivers/gpio/gpio-bcm-kona.c new file +4
-0@@ -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
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
PATCH v7 2/3 ARM: bcm281xx: Enable GPIO driver
In reply to Markus MayerTurn 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
@@ -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
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
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
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@@ -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 helpReviewed-by Christian Daudt <[email protected]>
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
PATCH v7 3/3 ARM: bcm281xx: Add device node for the GPIO controller
In reply to Markus MayerAdd 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
@@ -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