linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/11] Generalized broadcom cygnus gpio driver
@ 2015-10-19  5:43 Pramod Kumar
  2015-10-19  5:43 ` [PATCH 01/11] dt-bindings: pinctrl: Optional DT property to support pin mappings Pramod Kumar
                   ` (10 more replies)
  0 siblings, 11 replies; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

Generalized pinctrl-cygnus-gpio driver so that it could be used for all
iProc architecture based future SoCs having same gpio pin controller.
Generalization process made the below changes in driver-

1. Removed pin mapping from driver and addressed this via DT through
"gpio-ranges" property.
2. Addressed number of pins from DT through "ngpios" property and removed
from driver.
3. Since all iProc based SoCs would use this driver hence renamed all
variables/macros/functions and even file name on iproc.

This patchset applies on v4.3-rc4 and is tested on cygnus SVK and could be
find at-
https://github.com/Broadcom/arm64-linux/tree/iproc-gpio-v1

Pramod Kumar (11):
  dt-bindings: pinctrl: Optional DT property to support pin mappings
  pinctrl: Remove GPIO to Pinctrl pin mapping from driver
  dts: pinctrl: Add GPIO to Pinctrl pin mapping in DT
  dt-binding: Add new compatible string for gpio controller driver
  dt-binding: Add ngpios property to GPIO controller node
  dts: define ngpios property in gpio controller's node
  pinctrl: use ngpios propety from DT
  pinctrl: Add new compatible string to GPIO controller driver
  gpio: Rename func/macro/var to IP-block,iproc
  Documentation: Rename gpio controller name from cygnus to iproc
  pinctrl: Rename gpio driver from cygnus to iproc

 .../{brcm,cygnus-gpio.txt => brcm,iproc-gpio.txt}  |  25 +-
 arch/arm/boot/dts/bcm-cygnus.dtsi                  |  56 +-
 drivers/pinctrl/bcm/Kconfig                        |  30 +-
 drivers/pinctrl/bcm/Makefile                       |   2 +-
 drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c          | 909 ---------------------
 drivers/pinctrl/bcm/pinctrl-iproc-gpio.c           | 759 +++++++++++++++++
 6 files changed, 854 insertions(+), 927 deletions(-)
 rename Documentation/devicetree/bindings/pinctrl/{brcm,cygnus-gpio.txt => brcm,iproc-gpio.txt} (75%)
 delete mode 100644 drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
 create mode 100644 drivers/pinctrl/bcm/pinctrl-iproc-gpio.c

-- 
1.9.1


^ permalink raw reply	[flat|nested] 41+ messages in thread

* [PATCH 01/11] dt-bindings: pinctrl: Optional DT property to support pin mappings
  2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
@ 2015-10-19  5:43 ` Pramod Kumar
  2015-10-22 18:45   ` Rob Herring
  2015-10-27  9:43   ` Linus Walleij
  2015-10-19  5:43 ` [PATCH 02/11] pinctrl: Remove GPIO to Pinctrl pin mapping from driver Pramod Kumar
                   ` (9 subsequent siblings)
  10 siblings, 2 replies; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

If GPIO controller's pins are muxed, pin-controller subsystem
need to be intimated by defining mapping between gpio and
pinmux controller. This patch adds required properties to
define this mapping via DT.

Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
---
 .../devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt         | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
index 6540ca5..25a5002 100644
--- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
+++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
@@ -26,9 +26,13 @@ Optional properties:
 - interrupt-controller:
     Specifies that the node is an interrupt controller
 
-- pinmux:
-    Specifies the phandle to the IOMUX device, where pins can be individually
-muxed to GPIO
+- gpio-ranges:
+    Specifies the mapping between gpio controller and pin-controllers pins.
+    This requires 4 fields in cells defined as -
+    1. Phandle of pin-controller.
+    2. GPIO base pin offset.
+    3  Pin-control base pin offset.
+    4. number of gpio pins which are linearly mapped from pin base.
 
 Supported generic PINCONF properties in child nodes:
 
@@ -78,6 +82,8 @@ Example:
 		gpio-controller;
 		interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-controller;
+		gpio-ranges = <&pinctrl 0 42 1>,
+				<&pinctrl 1 44 3>;
 	};
 
 	/*
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 02/11] pinctrl: Remove GPIO to Pinctrl pin mapping from driver
  2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
  2015-10-19  5:43 ` [PATCH 01/11] dt-bindings: pinctrl: Optional DT property to support pin mappings Pramod Kumar
@ 2015-10-19  5:43 ` Pramod Kumar
  2015-10-27  9:45   ` Linus Walleij
  2015-10-19  5:43 ` [PATCH 03/11] dts: pinctrl: Add GPIO to Pinctrl pin mapping in DT Pramod Kumar
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

Remove gpio to pinctrl pin mapping code from driver and
address this through standard property "gpio-ranges".

Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
---
 drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c | 131 +-----------------------------
 1 file changed, 3 insertions(+), 128 deletions(-)

diff --git a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
index 1ca7830..12a48f4 100644
--- a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
@@ -29,7 +29,6 @@
 #include <linux/of_device.h>
 #include <linux/of_irq.h>
 #include <linux/pinctrl/pinctrl.h>
-#include <linux/pinctrl/pinmux.h>
 #include <linux/pinctrl/pinconf.h>
 #include <linux/pinctrl/pinconf-generic.h>
 
@@ -597,127 +596,6 @@ static const struct pinconf_ops cygnus_pconf_ops = {
 };
 
 /*
- * Map a GPIO in the local gpio_chip pin space to a pin in the Cygnus IOMUX
- * pinctrl pin space
- */
-struct cygnus_gpio_pin_range {
-	unsigned offset;
-	unsigned pin_base;
-	unsigned num_pins;
-};
-
-#define CYGNUS_PINRANGE(o, p, n) { .offset = o, .pin_base = p, .num_pins = n }
-
-/*
- * Pin mapping table for mapping local GPIO pins to Cygnus IOMUX pinctrl pins
- */
-static const struct cygnus_gpio_pin_range cygnus_gpio_pintable[] = {
-	CYGNUS_PINRANGE(0, 42, 1),
-	CYGNUS_PINRANGE(1, 44, 3),
-	CYGNUS_PINRANGE(4, 48, 1),
-	CYGNUS_PINRANGE(5, 50, 3),
-	CYGNUS_PINRANGE(8, 126, 1),
-	CYGNUS_PINRANGE(9, 155, 1),
-	CYGNUS_PINRANGE(10, 152, 1),
-	CYGNUS_PINRANGE(11, 154, 1),
-	CYGNUS_PINRANGE(12, 153, 1),
-	CYGNUS_PINRANGE(13, 127, 3),
-	CYGNUS_PINRANGE(16, 140, 1),
-	CYGNUS_PINRANGE(17, 145, 7),
-	CYGNUS_PINRANGE(24, 130, 10),
-	CYGNUS_PINRANGE(34, 141, 4),
-	CYGNUS_PINRANGE(38, 54, 1),
-	CYGNUS_PINRANGE(39, 56, 3),
-	CYGNUS_PINRANGE(42, 60, 3),
-	CYGNUS_PINRANGE(45, 64, 3),
-	CYGNUS_PINRANGE(48, 68, 2),
-	CYGNUS_PINRANGE(50, 84, 6),
-	CYGNUS_PINRANGE(56, 94, 6),
-	CYGNUS_PINRANGE(62, 72, 1),
-	CYGNUS_PINRANGE(63, 70, 1),
-	CYGNUS_PINRANGE(64, 80, 1),
-	CYGNUS_PINRANGE(65, 74, 3),
-	CYGNUS_PINRANGE(68, 78, 1),
-	CYGNUS_PINRANGE(69, 82, 1),
-	CYGNUS_PINRANGE(70, 156, 17),
-	CYGNUS_PINRANGE(87, 104, 12),
-	CYGNUS_PINRANGE(99, 102, 2),
-	CYGNUS_PINRANGE(101, 90, 4),
-	CYGNUS_PINRANGE(105, 116, 6),
-	CYGNUS_PINRANGE(111, 100, 2),
-	CYGNUS_PINRANGE(113, 122, 4),
-	CYGNUS_PINRANGE(123, 11, 1),
-	CYGNUS_PINRANGE(124, 38, 4),
-	CYGNUS_PINRANGE(128, 43, 1),
-	CYGNUS_PINRANGE(129, 47, 1),
-	CYGNUS_PINRANGE(130, 49, 1),
-	CYGNUS_PINRANGE(131, 53, 1),
-	CYGNUS_PINRANGE(132, 55, 1),
-	CYGNUS_PINRANGE(133, 59, 1),
-	CYGNUS_PINRANGE(134, 63, 1),
-	CYGNUS_PINRANGE(135, 67, 1),
-	CYGNUS_PINRANGE(136, 71, 1),
-	CYGNUS_PINRANGE(137, 73, 1),
-	CYGNUS_PINRANGE(138, 77, 1),
-	CYGNUS_PINRANGE(139, 79, 1),
-	CYGNUS_PINRANGE(140, 81, 1),
-	CYGNUS_PINRANGE(141, 83, 1),
-	CYGNUS_PINRANGE(142, 10, 1)
-};
-
-/*
- * The Cygnus IOMUX controller mainly supports group based mux configuration,
- * but certain pins can be muxed to GPIO individually. Only the ASIU GPIO
- * controller can support this, so it's an optional configuration
- *
- * Return -ENODEV means no support and that's fine
- */
-static int cygnus_gpio_pinmux_add_range(struct cygnus_gpio *chip)
-{
-	struct device_node *node = chip->dev->of_node;
-	struct device_node *pinmux_node;
-	struct platform_device *pinmux_pdev;
-	struct gpio_chip *gc = &chip->gc;
-	int i, ret = 0;
-
-	/* parse DT to find the phandle to the pinmux controller */
-	pinmux_node = of_parse_phandle(node, "pinmux", 0);
-	if (!pinmux_node)
-		return -ENODEV;
-
-	pinmux_pdev = of_find_device_by_node(pinmux_node);
-	/* no longer need the pinmux node */
-	of_node_put(pinmux_node);
-	if (!pinmux_pdev) {
-		dev_err(chip->dev, "failed to get pinmux device\n");
-		return -EINVAL;
-	}
-
-	/* now need to create the mapping between local GPIO and PINMUX pins */
-	for (i = 0; i < ARRAY_SIZE(cygnus_gpio_pintable); i++) {
-		ret = gpiochip_add_pin_range(gc, dev_name(&pinmux_pdev->dev),
-					     cygnus_gpio_pintable[i].offset,
-					     cygnus_gpio_pintable[i].pin_base,
-					     cygnus_gpio_pintable[i].num_pins);
-		if (ret) {
-			dev_err(chip->dev, "unable to add GPIO pin range\n");
-			goto err_put_device;
-		}
-	}
-
-	chip->pinmux_is_supported = true;
-
-	/* no need for pinmux_pdev device reference anymore */
-	put_device(&pinmux_pdev->dev);
-	return 0;
-
-err_put_device:
-	put_device(&pinmux_pdev->dev);
-	gpiochip_remove_pin_ranges(gc);
-	return ret;
-}
-
-/*
  * Cygnus GPIO controller supports some PINCONF related configurations such as
  * pull up, pull down, and drive strength, when the pin is configured to GPIO
  *
@@ -851,18 +729,15 @@ static int cygnus_gpio_probe(struct platform_device *pdev)
 	gc->set = cygnus_gpio_set;
 	gc->get = cygnus_gpio_get;
 
+	chip->pinmux_is_supported = of_property_read_bool(dev->of_node,
+							"gpio-ranges");
+
 	ret = gpiochip_add(gc);
 	if (ret < 0) {
 		dev_err(dev, "unable to add GPIO chip\n");
 		return ret;
 	}
 
-	ret = cygnus_gpio_pinmux_add_range(chip);
-	if (ret && ret != -ENODEV) {
-		dev_err(dev, "unable to add GPIO pin range\n");
-		goto err_rm_gpiochip;
-	}
-
 	ret = cygnus_gpio_register_pinconf(chip);
 	if (ret) {
 		dev_err(dev, "unable to register pinconf\n");
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 03/11] dts: pinctrl: Add GPIO to Pinctrl pin mapping in DT
  2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
  2015-10-19  5:43 ` [PATCH 01/11] dt-bindings: pinctrl: Optional DT property to support pin mappings Pramod Kumar
  2015-10-19  5:43 ` [PATCH 02/11] pinctrl: Remove GPIO to Pinctrl pin mapping from driver Pramod Kumar
@ 2015-10-19  5:43 ` Pramod Kumar
  2015-10-27  9:46   ` Linus Walleij
  2015-11-18 18:39   ` Florian Fainelli
  2015-10-19  5:43 ` [PATCH 04/11] dt-binding: Add new compatible string for gpio controller driver Pramod Kumar
                   ` (7 subsequent siblings)
  10 siblings, 2 replies; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

ASIU gpio controller's pins are muxed with pin-cntroller.
Add this mapping through property "gpio-ranges".

Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
---
 arch/arm/boot/dts/bcm-cygnus.dtsi | 53 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 51 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/bcm-cygnus.dtsi b/arch/arm/boot/dts/bcm-cygnus.dtsi
index e1ac07a..6621f13 100644
--- a/arch/arm/boot/dts/bcm-cygnus.dtsi
+++ b/arch/arm/boot/dts/bcm-cygnus.dtsi
@@ -84,10 +84,59 @@
 		#gpio-cells = <2>;
 		gpio-controller;
 
-		pinmux = <&pinctrl>;
-
 		interrupt-controller;
 		interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
+		gpio-ranges = <&pinctrl 0 42 1>,
+				<&pinctrl 1 44 3>,
+				<&pinctrl 4 48 1>,
+				<&pinctrl 5 50 3>,
+				<&pinctrl 8 126 1>,
+				<&pinctrl 9 155 1>,
+				<&pinctrl 10 152 1>,
+				<&pinctrl 11 154 1>,
+				<&pinctrl 12 153 1>,
+				<&pinctrl 13 127 3>,
+				<&pinctrl 16 140 1>,
+				<&pinctrl 17 145 7>,
+				<&pinctrl 24 130 10>,
+				<&pinctrl 34 141 4>,
+				<&pinctrl 38 54 1>,
+				<&pinctrl 39 56 3>,
+				<&pinctrl 42 60 3>,
+				<&pinctrl 45 64 3>,
+				<&pinctrl 48 68 2>,
+				<&pinctrl 50 84 6>,
+				<&pinctrl 56 94 6>,
+				<&pinctrl 62 72 1>,
+				<&pinctrl 63 70 1>,
+				<&pinctrl 64 80 1>,
+				<&pinctrl 65 74 3>,
+				<&pinctrl 68 78 1>,
+				<&pinctrl 69 82 1>,
+				<&pinctrl 70 156 17>,
+				<&pinctrl 87 104 12>,
+				<&pinctrl 99 102 2>,
+				<&pinctrl 101 90 4>,
+				<&pinctrl 105 116 6>,
+				<&pinctrl 111 100 2>,
+				<&pinctrl 113 122 4>,
+				<&pinctrl 123 11 1>,
+				<&pinctrl 124 38 4>,
+				<&pinctrl 128 43 1>,
+				<&pinctrl 129 47 1>,
+				<&pinctrl 130 49 1>,
+				<&pinctrl 131 53 1>,
+				<&pinctrl 132 55 1>,
+				<&pinctrl 133 59 1>,
+				<&pinctrl 134 63 1>,
+				<&pinctrl 135 67 1>,
+				<&pinctrl 136 71 1>,
+				<&pinctrl 137 73 1>,
+				<&pinctrl 138 77 1>,
+				<&pinctrl 139 79 1>,
+				<&pinctrl 140 81 1>,
+				<&pinctrl 141 83 1>,
+				<&pinctrl 142 10 1>;
 	};
 
 	amba {
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 04/11] dt-binding: Add new compatible string for gpio controller driver
  2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
                   ` (2 preceding siblings ...)
  2015-10-19  5:43 ` [PATCH 03/11] dts: pinctrl: Add GPIO to Pinctrl pin mapping in DT Pramod Kumar
@ 2015-10-19  5:43 ` Pramod Kumar
  2015-10-22 18:40   ` Rob Herring
  2015-10-27  9:49   ` Linus Walleij
  2015-10-19  5:43 ` [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node Pramod Kumar
                   ` (6 subsequent siblings)
  10 siblings, 2 replies; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

This new compatible string, "brcm,iproc-gpio", should be used for
all new iproc-based future SoCs.

Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
---
 Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
index 25a5002..f92b833 100644
--- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
+++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
@@ -3,8 +3,8 @@ Broadcom Cygnus GPIO/PINCONF Controller
 Required properties:
 
 - compatible:
-    Must be "brcm,cygnus-ccm-gpio", "brcm,cygnus-asiu-gpio", or
-    "brcm,cygnus-crmu-gpio"
+    Must be "brcm,cygnus-ccm-gpio", "brcm,cygnus-asiu-gpio",
+"brcm,cygnus-crmu-gpio" or "brcm,iproc-gpio"
 
 - reg:
     Define the base and range of the I/O address space that contains the Cygnus
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
                   ` (3 preceding siblings ...)
  2015-10-19  5:43 ` [PATCH 04/11] dt-binding: Add new compatible string for gpio controller driver Pramod Kumar
@ 2015-10-19  5:43 ` Pramod Kumar
  2015-10-22 18:43   ` Rob Herring
  2015-10-27  9:41   ` Linus Walleij
  2015-10-19  5:43 ` [PATCH 06/11] dts: define ngpios property in gpio controller's node Pramod Kumar
                   ` (5 subsequent siblings)
  10 siblings, 2 replies; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

Add ngpios property to the gpio controller's DT node so that controller
driver extracts total number of gpio lines present in controller
from DT and removes dependency on driver.

Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
---
 Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
index f92b833..655a8d7 100644
--- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
+++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
@@ -10,6 +10,9 @@ Required properties:
     Define the base and range of the I/O address space that contains the Cygnus
 GPIO/PINCONF controller registers
 
+- ngpios:
+    Total number of GPIOs the controller provides
+
 - #gpio-cells:
     Must be two. The first cell is the GPIO pin number (within the
 controller's pin space) and the second cell is used for the following:
@@ -57,6 +60,7 @@ Example:
 		compatible = "brcm,cygnus-ccm-gpio";
 		reg = <0x1800a000 0x50>,
 		      <0x0301d164 0x20>;
+		ngpios = <24>;
 		#gpio-cells = <2>;
 		gpio-controller;
 		interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
@@ -78,6 +82,7 @@ Example:
 	gpio_asiu: gpio@180a5000 {
 		compatible = "brcm,cygnus-asiu-gpio";
 		reg = <0x180a5000 0x668>;
+		ngpios = <146>;
 		#gpio-cells = <2>;
 		gpio-controller;
 		interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 06/11] dts: define ngpios property in gpio controller's node
  2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
                   ` (4 preceding siblings ...)
  2015-10-19  5:43 ` [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node Pramod Kumar
@ 2015-10-19  5:43 ` Pramod Kumar
  2015-10-19  5:43 ` [PATCH 07/11] pinctrl: use ngpios propety from DT Pramod Kumar
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

Add ngpios property in cygnus ASIU, CCM and CRMU gpio controller's
node.

Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
---
 arch/arm/boot/dts/bcm-cygnus.dtsi | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/boot/dts/bcm-cygnus.dtsi b/arch/arm/boot/dts/bcm-cygnus.dtsi
index 6621f13..d0fd050 100644
--- a/arch/arm/boot/dts/bcm-cygnus.dtsi
+++ b/arch/arm/boot/dts/bcm-cygnus.dtsi
@@ -64,6 +64,7 @@
 		compatible = "brcm,cygnus-crmu-gpio";
 		reg = <0x03024800 0x50>,
 		      <0x03024008 0x18>;
+		ngpios = <6>;
 		#gpio-cells = <2>;
 		gpio-controller;
 	};
@@ -72,6 +73,7 @@
 		compatible = "brcm,cygnus-ccm-gpio";
 		reg = <0x1800a000 0x50>,
 		      <0x0301d164 0x20>;
+		ngpios = <24>;
 		#gpio-cells = <2>;
 		gpio-controller;
 		interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
@@ -81,6 +83,7 @@
 	gpio_asiu: gpio@180a5000 {
 		compatible = "brcm,cygnus-asiu-gpio";
 		reg = <0x180a5000 0x668>;
+		ngpios = <146>;
 		#gpio-cells = <2>;
 		gpio-controller;
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 07/11] pinctrl: use ngpios propety from DT
  2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
                   ` (5 preceding siblings ...)
  2015-10-19  5:43 ` [PATCH 06/11] dts: define ngpios property in gpio controller's node Pramod Kumar
@ 2015-10-19  5:43 ` Pramod Kumar
  2015-10-27  9:51   ` Linus Walleij
  2015-10-19  5:43 ` [PATCH 08/11] pinctrl: Add new compatible string to GPIO controller driver Pramod Kumar
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

Since identical hardware is used in several instances and all pins
are not routed to pinctrl hence getting total number of gpios from
DT make more sense hence stop using total number of gpios pins from
drivers and extract it from DT.

Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
---
 drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c | 45 +++++++------------------------
 1 file changed, 9 insertions(+), 36 deletions(-)

diff --git a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
index 12a48f4..498a58a 100644
--- a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
@@ -642,35 +642,11 @@ static void cygnus_gpio_unregister_pinconf(struct cygnus_gpio *chip)
 		pinctrl_unregister(chip->pctl);
 }
 
-struct cygnus_gpio_data {
-	unsigned num_gpios;
-};
-
-static const struct cygnus_gpio_data cygnus_cmm_gpio_data = {
-	.num_gpios = 24,
-};
-
-static const struct cygnus_gpio_data cygnus_asiu_gpio_data = {
-	.num_gpios = 146,
-};
-
-static const struct cygnus_gpio_data cygnus_crmu_gpio_data = {
-	.num_gpios = 6,
-};
-
 static const struct of_device_id cygnus_gpio_of_match[] = {
-	{
-		.compatible = "brcm,cygnus-ccm-gpio",
-		.data = &cygnus_cmm_gpio_data,
-	},
-	{
-		.compatible = "brcm,cygnus-asiu-gpio",
-		.data = &cygnus_asiu_gpio_data,
-	},
-	{
-		.compatible = "brcm,cygnus-crmu-gpio",
-		.data = &cygnus_crmu_gpio_data,
-	}
+	{ .compatible = "brcm,cygnus-ccm-gpio" },
+	{ .compatible = "brcm,cygnus-asiu-gpio" },
+	{ .compatible = "brcm,cygnus-crmu-gpio" },
+	{ }
 };
 
 static int cygnus_gpio_probe(struct platform_device *pdev)
@@ -681,14 +657,6 @@ static int cygnus_gpio_probe(struct platform_device *pdev)
 	struct gpio_chip *gc;
 	u32 ngpios;
 	int irq, ret;
-	const struct of_device_id *match;
-	const struct cygnus_gpio_data *gpio_data;
-
-	match = of_match_device(cygnus_gpio_of_match, dev);
-	if (!match)
-		return -ENODEV;
-	gpio_data = match->data;
-	ngpios = gpio_data->num_gpios;
 
 	chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL);
 	if (!chip)
@@ -713,6 +681,11 @@ static int cygnus_gpio_probe(struct platform_device *pdev)
 		}
 	}
 
+	if (of_property_read_u32(dev->of_node, "ngpios", &ngpios)) {
+		dev_err(&pdev->dev, "missing ngpios DT property\n");
+		return -ENODEV;
+	}
+
 	spin_lock_init(&chip->lock);
 
 	gc = &chip->gc;
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 08/11] pinctrl: Add new compatible string to GPIO controller driver
  2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
                   ` (6 preceding siblings ...)
  2015-10-19  5:43 ` [PATCH 07/11] pinctrl: use ngpios propety from DT Pramod Kumar
@ 2015-10-19  5:43 ` Pramod Kumar
  2015-10-27  9:54   ` Linus Walleij
  2015-10-19  5:43 ` [PATCH 09/11] gpio: Rename func/macro/var to IP-block,iproc Pramod Kumar
                   ` (2 subsequent siblings)
  10 siblings, 1 reply; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

This compatible string should be used for all new iproc based future
SoCs having the same GPIO controller hardware.

Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
---
 drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
index 498a58a..d0d788f 100644
--- a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
@@ -646,6 +646,7 @@ static const struct of_device_id cygnus_gpio_of_match[] = {
 	{ .compatible = "brcm,cygnus-ccm-gpio" },
 	{ .compatible = "brcm,cygnus-asiu-gpio" },
 	{ .compatible = "brcm,cygnus-crmu-gpio" },
+	{ .compatible = "brcm,iproc-gpio" },
 	{ }
 };
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 09/11] gpio: Rename func/macro/var to IP-block,iproc
  2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
                   ` (7 preceding siblings ...)
  2015-10-19  5:43 ` [PATCH 08/11] pinctrl: Add new compatible string to GPIO controller driver Pramod Kumar
@ 2015-10-19  5:43 ` Pramod Kumar
  2015-10-19  5:43 ` [PATCH 10/11] Documentation: Rename gpio controller name from cygnus to iproc Pramod Kumar
  2015-10-19  5:43 ` [PATCH 11/11] pinctrl: Rename gpio driver " Pramod Kumar
  10 siblings, 0 replies; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

Change functions, macros and variables name from cygnus to IP block,
iproc, so that it could be used in all iproc based future SoCs having
same GPIO controller block.

Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
---
 drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c | 306 +++++++++++++++---------------
 1 file changed, 154 insertions(+), 152 deletions(-)

diff --git a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
index d0d788f..ed21ab2 100644
--- a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
@@ -10,14 +10,16 @@
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
- * This file contains the Broadcom Cygnus GPIO driver that supports 3
- * GPIO controllers on Cygnus including the ASIU GPIO controller, the
+ * This file contains the Broadcom Iproc GPIO driver that supports 3
+ * GPIO controllers on Iproc including the ASIU GPIO controller, the
  * chipCommonG GPIO controller, and the always-on GPIO controller. Basic
  * PINCONF such as bias pull up/down, and drive strength are also supported
  * in this driver.
  *
- * Pins from the ASIU GPIO can be individually muxed to GPIO function,
- * through the interaction with the Cygnus IOMUX controller
+ * It provides the functionality where pins from the GPIO can be
+ * individually muxed to GPIO function, if individual pad
+ * configuration is supported, through the interaction with respective
+ * SoCs IOMUX controller.
  */
 
 #include <linux/kernel.h>
@@ -34,42 +36,42 @@
 
 #include "../pinctrl-utils.h"
 
-#define CYGNUS_GPIO_DATA_IN_OFFSET   0x00
-#define CYGNUS_GPIO_DATA_OUT_OFFSET  0x04
-#define CYGNUS_GPIO_OUT_EN_OFFSET    0x08
-#define CYGNUS_GPIO_INT_TYPE_OFFSET  0x0c
-#define CYGNUS_GPIO_INT_DE_OFFSET    0x10
-#define CYGNUS_GPIO_INT_EDGE_OFFSET  0x14
-#define CYGNUS_GPIO_INT_MSK_OFFSET   0x18
-#define CYGNUS_GPIO_INT_STAT_OFFSET  0x1c
-#define CYGNUS_GPIO_INT_MSTAT_OFFSET 0x20
-#define CYGNUS_GPIO_INT_CLR_OFFSET   0x24
-#define CYGNUS_GPIO_PAD_RES_OFFSET   0x34
-#define CYGNUS_GPIO_RES_EN_OFFSET    0x38
+#define IPROC_GPIO_DATA_IN_OFFSET   0x00
+#define IPROC_GPIO_DATA_OUT_OFFSET  0x04
+#define IPROC_GPIO_OUT_EN_OFFSET    0x08
+#define IPROC_GPIO_INT_TYPE_OFFSET  0x0c
+#define IPROC_GPIO_INT_DE_OFFSET    0x10
+#define IPROC_GPIO_INT_EDGE_OFFSET  0x14
+#define IPROC_GPIO_INT_MSK_OFFSET   0x18
+#define IPROC_GPIO_INT_STAT_OFFSET  0x1c
+#define IPROC_GPIO_INT_MSTAT_OFFSET 0x20
+#define IPROC_GPIO_INT_CLR_OFFSET   0x24
+#define IPROC_GPIO_PAD_RES_OFFSET   0x34
+#define IPROC_GPIO_RES_EN_OFFSET    0x38
 
 /* drive strength control for ASIU GPIO */
-#define CYGNUS_GPIO_ASIU_DRV0_CTRL_OFFSET 0x58
+#define IPROC_GPIO_ASIU_DRV0_CTRL_OFFSET 0x58
 
 /* drive strength control for CCM/CRMU (AON) GPIO */
-#define CYGNUS_GPIO_DRV0_CTRL_OFFSET  0x00
+#define IPROC_GPIO_DRV0_CTRL_OFFSET  0x00
 
 #define GPIO_BANK_SIZE 0x200
 #define NGPIOS_PER_BANK 32
 #define GPIO_BANK(pin) ((pin) / NGPIOS_PER_BANK)
 
-#define CYGNUS_GPIO_REG(pin, reg) (GPIO_BANK(pin) * GPIO_BANK_SIZE + (reg))
-#define CYGNUS_GPIO_SHIFT(pin) ((pin) % NGPIOS_PER_BANK)
+#define IPROC_GPIO_REG(pin, reg) (GPIO_BANK(pin) * GPIO_BANK_SIZE + (reg))
+#define IPROC_GPIO_SHIFT(pin) ((pin) % NGPIOS_PER_BANK)
 
 #define GPIO_DRV_STRENGTH_BIT_SHIFT  20
 #define GPIO_DRV_STRENGTH_BITS       3
 #define GPIO_DRV_STRENGTH_BIT_MASK   ((1 << GPIO_DRV_STRENGTH_BITS) - 1)
 
 /*
- * Cygnus GPIO core
+ * Iproc GPIO core
  *
  * @dev: pointer to device
- * @base: I/O register base for Cygnus GPIO controller
- * @io_ctrl: I/O register base for certain type of Cygnus GPIO controller that
+ * @base: I/O register base for Iproc GPIO controller
+ * @io_ctrl: I/O register base for certain type of Iproc GPIO controller that
  * has the PINCONF support implemented outside of the GPIO block
  * @lock: lock to protect access to I/O registers
  * @gc: GPIO chip
@@ -79,7 +81,7 @@
  * @pctl: pointer to pinctrl_dev
  * @pctldesc: pinctrl descriptor
  */
-struct cygnus_gpio {
+struct iproc_gpio {
 	struct device *dev;
 
 	void __iomem *base;
@@ -96,33 +98,33 @@ struct cygnus_gpio {
 	struct pinctrl_desc pctldesc;
 };
 
-static inline struct cygnus_gpio *to_cygnus_gpio(struct gpio_chip *gc)
+static inline struct iproc_gpio *to_iproc_gpio(struct gpio_chip *gc)
 {
-	return container_of(gc, struct cygnus_gpio, gc);
+	return container_of(gc, struct iproc_gpio, gc);
 }
 
 /*
  * Mapping from PINCONF pins to GPIO pins is 1-to-1
  */
-static inline unsigned cygnus_pin_to_gpio(unsigned pin)
+static inline unsigned iproc_pin_to_gpio(unsigned pin)
 {
 	return pin;
 }
 
 /**
- *  cygnus_set_bit - set or clear one bit (corresponding to the GPIO pin) in a
- *  Cygnus GPIO register
+ *  iproc_set_bit - set or clear one bit (corresponding to the GPIO pin) in a
+ *  Iproc GPIO register
  *
- *  @cygnus_gpio: Cygnus GPIO device
+ *  @iproc_gpio: Iproc GPIO device
  *  @reg: register offset
  *  @gpio: GPIO pin
  *  @set: set or clear
  */
-static inline void cygnus_set_bit(struct cygnus_gpio *chip, unsigned int reg,
+static inline void iproc_set_bit(struct iproc_gpio *chip, unsigned int reg,
 				  unsigned gpio, bool set)
 {
-	unsigned int offset = CYGNUS_GPIO_REG(gpio, reg);
-	unsigned int shift = CYGNUS_GPIO_SHIFT(gpio);
+	unsigned int offset = IPROC_GPIO_REG(gpio, reg);
+	unsigned int shift = IPROC_GPIO_SHIFT(gpio);
 	u32 val;
 
 	val = readl(chip->base + offset);
@@ -133,19 +135,19 @@ static inline void cygnus_set_bit(struct cygnus_gpio *chip, unsigned int reg,
 	writel(val, chip->base + offset);
 }
 
-static inline bool cygnus_get_bit(struct cygnus_gpio *chip, unsigned int reg,
+static inline bool iproc_get_bit(struct iproc_gpio *chip, unsigned int reg,
 				  unsigned gpio)
 {
-	unsigned int offset = CYGNUS_GPIO_REG(gpio, reg);
-	unsigned int shift = CYGNUS_GPIO_SHIFT(gpio);
+	unsigned int offset = IPROC_GPIO_REG(gpio, reg);
+	unsigned int shift = IPROC_GPIO_SHIFT(gpio);
 
 	return !!(readl(chip->base + offset) & BIT(shift));
 }
 
-static void cygnus_gpio_irq_handler(struct irq_desc *desc)
+static void iproc_gpio_irq_handler(struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
 	struct irq_chip *irq_chip = irq_desc_get_chip(desc);
 	int i, bit;
 
@@ -154,7 +156,7 @@ static void cygnus_gpio_irq_handler(struct irq_desc *desc)
 	/* go through the entire GPIO banks and handle all interrupts */
 	for (i = 0; i < chip->num_banks; i++) {
 		unsigned long val = readl(chip->base + (i * GPIO_BANK_SIZE) +
-					  CYGNUS_GPIO_INT_MSTAT_OFFSET);
+					  IPROC_GPIO_INT_MSTAT_OFFSET);
 
 		for_each_set_bit(bit, &val, NGPIOS_PER_BANK) {
 			unsigned pin = NGPIOS_PER_BANK * i + bit;
@@ -165,7 +167,7 @@ static void cygnus_gpio_irq_handler(struct irq_desc *desc)
 			 * handler, so we do not leave any window
 			 */
 			writel(BIT(bit), chip->base + (i * GPIO_BANK_SIZE) +
-			       CYGNUS_GPIO_INT_CLR_OFFSET);
+			       IPROC_GPIO_INT_CLR_OFFSET);
 
 			generic_handle_irq(child_irq);
 		}
@@ -175,60 +177,60 @@ static void cygnus_gpio_irq_handler(struct irq_desc *desc)
 }
 
 
-static void cygnus_gpio_irq_ack(struct irq_data *d)
+static void iproc_gpio_irq_ack(struct irq_data *d)
 {
 	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
 	unsigned gpio = d->hwirq;
-	unsigned int offset = CYGNUS_GPIO_REG(gpio,
-			CYGNUS_GPIO_INT_CLR_OFFSET);
-	unsigned int shift = CYGNUS_GPIO_SHIFT(gpio);
+	unsigned int offset = IPROC_GPIO_REG(gpio,
+			IPROC_GPIO_INT_CLR_OFFSET);
+	unsigned int shift = IPROC_GPIO_SHIFT(gpio);
 	u32 val = BIT(shift);
 
 	writel(val, chip->base + offset);
 }
 
 /**
- *  cygnus_gpio_irq_set_mask - mask/unmask a GPIO interrupt
+ *  iproc_gpio_irq_set_mask - mask/unmask a GPIO interrupt
  *
  *  @d: IRQ chip data
  *  @unmask: mask/unmask GPIO interrupt
  */
-static void cygnus_gpio_irq_set_mask(struct irq_data *d, bool unmask)
+static void iproc_gpio_irq_set_mask(struct irq_data *d, bool unmask)
 {
 	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
 	unsigned gpio = d->hwirq;
 
-	cygnus_set_bit(chip, CYGNUS_GPIO_INT_MSK_OFFSET, gpio, unmask);
+	iproc_set_bit(chip, IPROC_GPIO_INT_MSK_OFFSET, gpio, unmask);
 }
 
-static void cygnus_gpio_irq_mask(struct irq_data *d)
+static void iproc_gpio_irq_mask(struct irq_data *d)
 {
 	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
 	unsigned long flags;
 
 	spin_lock_irqsave(&chip->lock, flags);
-	cygnus_gpio_irq_set_mask(d, false);
+	iproc_gpio_irq_set_mask(d, false);
 	spin_unlock_irqrestore(&chip->lock, flags);
 }
 
-static void cygnus_gpio_irq_unmask(struct irq_data *d)
+static void iproc_gpio_irq_unmask(struct irq_data *d)
 {
 	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
 	unsigned long flags;
 
 	spin_lock_irqsave(&chip->lock, flags);
-	cygnus_gpio_irq_set_mask(d, true);
+	iproc_gpio_irq_set_mask(d, true);
 	spin_unlock_irqrestore(&chip->lock, flags);
 }
 
-static int cygnus_gpio_irq_set_type(struct irq_data *d, unsigned int type)
+static int iproc_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 {
 	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
 	unsigned gpio = d->hwirq;
 	bool level_triggered = false;
 	bool dual_edge = false;
@@ -263,10 +265,10 @@ static int cygnus_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	}
 
 	spin_lock_irqsave(&chip->lock, flags);
-	cygnus_set_bit(chip, CYGNUS_GPIO_INT_TYPE_OFFSET, gpio,
+	iproc_set_bit(chip, IPROC_GPIO_INT_TYPE_OFFSET, gpio,
 		       level_triggered);
-	cygnus_set_bit(chip, CYGNUS_GPIO_INT_DE_OFFSET, gpio, dual_edge);
-	cygnus_set_bit(chip, CYGNUS_GPIO_INT_EDGE_OFFSET, gpio,
+	iproc_set_bit(chip, IPROC_GPIO_INT_DE_OFFSET, gpio, dual_edge);
+	iproc_set_bit(chip, IPROC_GPIO_INT_EDGE_OFFSET, gpio,
 		       rising_or_high);
 	spin_unlock_irqrestore(&chip->lock, flags);
 
@@ -277,32 +279,32 @@ static int cygnus_gpio_irq_set_type(struct irq_data *d, unsigned int type)
 	return 0;
 }
 
-static struct irq_chip cygnus_gpio_irq_chip = {
-	.name = "bcm-cygnus-gpio",
-	.irq_ack = cygnus_gpio_irq_ack,
-	.irq_mask = cygnus_gpio_irq_mask,
-	.irq_unmask = cygnus_gpio_irq_unmask,
-	.irq_set_type = cygnus_gpio_irq_set_type,
+static struct irq_chip iproc_gpio_irq_chip = {
+	.name = "bcm-iproc-gpio",
+	.irq_ack = iproc_gpio_irq_ack,
+	.irq_mask = iproc_gpio_irq_mask,
+	.irq_unmask = iproc_gpio_irq_unmask,
+	.irq_set_type = iproc_gpio_irq_set_type,
 };
 
 /*
- * Request the Cygnus IOMUX pinmux controller to mux individual pins to GPIO
+ * Request the Iproc IOMUX pinmux controller to mux individual pins to GPIO
  */
-static int cygnus_gpio_request(struct gpio_chip *gc, unsigned offset)
+static int iproc_gpio_request(struct gpio_chip *gc, unsigned offset)
 {
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
 	unsigned gpio = gc->base + offset;
 
-	/* not all Cygnus GPIO pins can be muxed individually */
+	/* not all Iproc GPIO pins can be muxed individually */
 	if (!chip->pinmux_is_supported)
 		return 0;
 
 	return pinctrl_request_gpio(gpio);
 }
 
-static void cygnus_gpio_free(struct gpio_chip *gc, unsigned offset)
+static void iproc_gpio_free(struct gpio_chip *gc, unsigned offset)
 {
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
 	unsigned gpio = gc->base + offset;
 
 	if (!chip->pinmux_is_supported)
@@ -311,13 +313,13 @@ static void cygnus_gpio_free(struct gpio_chip *gc, unsigned offset)
 	pinctrl_free_gpio(gpio);
 }
 
-static int cygnus_gpio_direction_input(struct gpio_chip *gc, unsigned gpio)
+static int iproc_gpio_direction_input(struct gpio_chip *gc, unsigned gpio)
 {
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
 	unsigned long flags;
 
 	spin_lock_irqsave(&chip->lock, flags);
-	cygnus_set_bit(chip, CYGNUS_GPIO_OUT_EN_OFFSET, gpio, false);
+	iproc_set_bit(chip, IPROC_GPIO_OUT_EN_OFFSET, gpio, false);
 	spin_unlock_irqrestore(&chip->lock, flags);
 
 	dev_dbg(chip->dev, "gpio:%u set input\n", gpio);
@@ -325,15 +327,15 @@ static int cygnus_gpio_direction_input(struct gpio_chip *gc, unsigned gpio)
 	return 0;
 }
 
-static int cygnus_gpio_direction_output(struct gpio_chip *gc, unsigned gpio,
+static int iproc_gpio_direction_output(struct gpio_chip *gc, unsigned gpio,
 					int val)
 {
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
 	unsigned long flags;
 
 	spin_lock_irqsave(&chip->lock, flags);
-	cygnus_set_bit(chip, CYGNUS_GPIO_OUT_EN_OFFSET, gpio, true);
-	cygnus_set_bit(chip, CYGNUS_GPIO_DATA_OUT_OFFSET, gpio, !!(val));
+	iproc_set_bit(chip, IPROC_GPIO_OUT_EN_OFFSET, gpio, true);
+	iproc_set_bit(chip, IPROC_GPIO_DATA_OUT_OFFSET, gpio, !!(val));
 	spin_unlock_irqrestore(&chip->lock, flags);
 
 	dev_dbg(chip->dev, "gpio:%u set output, value:%d\n", gpio, val);
@@ -341,29 +343,29 @@ static int cygnus_gpio_direction_output(struct gpio_chip *gc, unsigned gpio,
 	return 0;
 }
 
-static void cygnus_gpio_set(struct gpio_chip *gc, unsigned gpio, int val)
+static void iproc_gpio_set(struct gpio_chip *gc, unsigned gpio, int val)
 {
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
 	unsigned long flags;
 
 	spin_lock_irqsave(&chip->lock, flags);
-	cygnus_set_bit(chip, CYGNUS_GPIO_DATA_OUT_OFFSET, gpio, !!(val));
+	iproc_set_bit(chip, IPROC_GPIO_DATA_OUT_OFFSET, gpio, !!(val));
 	spin_unlock_irqrestore(&chip->lock, flags);
 
 	dev_dbg(chip->dev, "gpio:%u set, value:%d\n", gpio, val);
 }
 
-static int cygnus_gpio_get(struct gpio_chip *gc, unsigned gpio)
+static int iproc_gpio_get(struct gpio_chip *gc, unsigned gpio)
 {
-	struct cygnus_gpio *chip = to_cygnus_gpio(gc);
-	unsigned int offset = CYGNUS_GPIO_REG(gpio,
-					      CYGNUS_GPIO_DATA_IN_OFFSET);
-	unsigned int shift = CYGNUS_GPIO_SHIFT(gpio);
+	struct iproc_gpio *chip = to_iproc_gpio(gc);
+	unsigned int offset = IPROC_GPIO_REG(gpio,
+					      IPROC_GPIO_DATA_IN_OFFSET);
+	unsigned int shift = IPROC_GPIO_SHIFT(gpio);
 
 	return !!(readl(chip->base + offset) & BIT(shift));
 }
 
-static int cygnus_get_groups_count(struct pinctrl_dev *pctldev)
+static int iproc_get_groups_count(struct pinctrl_dev *pctldev)
 {
 	return 1;
 }
@@ -372,20 +374,20 @@ static int cygnus_get_groups_count(struct pinctrl_dev *pctldev)
  * Only one group: "gpio_grp", since this local pinctrl device only performs
  * GPIO specific PINCONF configurations
  */
-static const char *cygnus_get_group_name(struct pinctrl_dev *pctldev,
+static const char *iproc_get_group_name(struct pinctrl_dev *pctldev,
 					 unsigned selector)
 {
 	return "gpio_grp";
 }
 
-static const struct pinctrl_ops cygnus_pctrl_ops = {
-	.get_groups_count = cygnus_get_groups_count,
-	.get_group_name = cygnus_get_group_name,
+static const struct pinctrl_ops iproc_pctrl_ops = {
+	.get_groups_count = iproc_get_groups_count,
+	.get_group_name = iproc_get_group_name,
 	.dt_node_to_map = pinconf_generic_dt_node_to_map_pin,
 	.dt_free_map = pinctrl_utils_dt_free_map,
 };
 
-static int cygnus_gpio_set_pull(struct cygnus_gpio *chip, unsigned gpio,
+static int iproc_gpio_set_pull(struct iproc_gpio *chip, unsigned gpio,
 				bool disable, bool pull_up)
 {
 	unsigned long flags;
@@ -393,11 +395,11 @@ static int cygnus_gpio_set_pull(struct cygnus_gpio *chip, unsigned gpio,
 	spin_lock_irqsave(&chip->lock, flags);
 
 	if (disable) {
-		cygnus_set_bit(chip, CYGNUS_GPIO_RES_EN_OFFSET, gpio, false);
+		iproc_set_bit(chip, IPROC_GPIO_RES_EN_OFFSET, gpio, false);
 	} else {
-		cygnus_set_bit(chip, CYGNUS_GPIO_PAD_RES_OFFSET, gpio,
+		iproc_set_bit(chip, IPROC_GPIO_PAD_RES_OFFSET, gpio,
 			       pull_up);
-		cygnus_set_bit(chip, CYGNUS_GPIO_RES_EN_OFFSET, gpio, true);
+		iproc_set_bit(chip, IPROC_GPIO_RES_EN_OFFSET, gpio, true);
 	}
 
 	spin_unlock_irqrestore(&chip->lock, flags);
@@ -407,18 +409,18 @@ static int cygnus_gpio_set_pull(struct cygnus_gpio *chip, unsigned gpio,
 	return 0;
 }
 
-static void cygnus_gpio_get_pull(struct cygnus_gpio *chip, unsigned gpio,
+static void iproc_gpio_get_pull(struct iproc_gpio *chip, unsigned gpio,
 				 bool *disable, bool *pull_up)
 {
 	unsigned long flags;
 
 	spin_lock_irqsave(&chip->lock, flags);
-	*disable = !cygnus_get_bit(chip, CYGNUS_GPIO_RES_EN_OFFSET, gpio);
-	*pull_up = cygnus_get_bit(chip, CYGNUS_GPIO_PAD_RES_OFFSET, gpio);
+	*disable = !iproc_get_bit(chip, IPROC_GPIO_RES_EN_OFFSET, gpio);
+	*pull_up = iproc_get_bit(chip, IPROC_GPIO_PAD_RES_OFFSET, gpio);
 	spin_unlock_irqrestore(&chip->lock, flags);
 }
 
-static int cygnus_gpio_set_strength(struct cygnus_gpio *chip, unsigned gpio,
+static int iproc_gpio_set_strength(struct iproc_gpio *chip, unsigned gpio,
 				    unsigned strength)
 {
 	void __iomem *base;
@@ -432,14 +434,14 @@ static int cygnus_gpio_set_strength(struct cygnus_gpio *chip, unsigned gpio,
 
 	if (chip->io_ctrl) {
 		base = chip->io_ctrl;
-		offset = CYGNUS_GPIO_DRV0_CTRL_OFFSET;
+		offset = IPROC_GPIO_DRV0_CTRL_OFFSET;
 	} else {
 		base = chip->base;
-		offset = CYGNUS_GPIO_REG(gpio,
-					 CYGNUS_GPIO_ASIU_DRV0_CTRL_OFFSET);
+		offset = IPROC_GPIO_REG(gpio,
+					 IPROC_GPIO_ASIU_DRV0_CTRL_OFFSET);
 	}
 
-	shift = CYGNUS_GPIO_SHIFT(gpio);
+	shift = IPROC_GPIO_SHIFT(gpio);
 
 	dev_dbg(chip->dev, "gpio:%u set drive strength:%d mA\n", gpio,
 		strength);
@@ -458,7 +460,7 @@ static int cygnus_gpio_set_strength(struct cygnus_gpio *chip, unsigned gpio,
 	return 0;
 }
 
-static int cygnus_gpio_get_strength(struct cygnus_gpio *chip, unsigned gpio,
+static int iproc_gpio_get_strength(struct iproc_gpio *chip, unsigned gpio,
 				    u16 *strength)
 {
 	void __iomem *base;
@@ -468,14 +470,14 @@ static int cygnus_gpio_get_strength(struct cygnus_gpio *chip, unsigned gpio,
 
 	if (chip->io_ctrl) {
 		base = chip->io_ctrl;
-		offset = CYGNUS_GPIO_DRV0_CTRL_OFFSET;
+		offset = IPROC_GPIO_DRV0_CTRL_OFFSET;
 	} else {
 		base = chip->base;
-		offset = CYGNUS_GPIO_REG(gpio,
-					 CYGNUS_GPIO_ASIU_DRV0_CTRL_OFFSET);
+		offset = IPROC_GPIO_REG(gpio,
+					 IPROC_GPIO_ASIU_DRV0_CTRL_OFFSET);
 	}
 
-	shift = CYGNUS_GPIO_SHIFT(gpio);
+	shift = IPROC_GPIO_SHIFT(gpio);
 
 	spin_lock_irqsave(&chip->lock, flags);
 	*strength = 0;
@@ -493,40 +495,40 @@ static int cygnus_gpio_get_strength(struct cygnus_gpio *chip, unsigned gpio,
 	return 0;
 }
 
-static int cygnus_pin_config_get(struct pinctrl_dev *pctldev, unsigned pin,
+static int iproc_pin_config_get(struct pinctrl_dev *pctldev, unsigned pin,
 				 unsigned long *config)
 {
-	struct cygnus_gpio *chip = pinctrl_dev_get_drvdata(pctldev);
+	struct iproc_gpio *chip = pinctrl_dev_get_drvdata(pctldev);
 	enum pin_config_param param = pinconf_to_config_param(*config);
-	unsigned gpio = cygnus_pin_to_gpio(pin);
+	unsigned gpio = iproc_pin_to_gpio(pin);
 	u16 arg;
 	bool disable, pull_up;
 	int ret;
 
 	switch (param) {
 	case PIN_CONFIG_BIAS_DISABLE:
-		cygnus_gpio_get_pull(chip, gpio, &disable, &pull_up);
+		iproc_gpio_get_pull(chip, gpio, &disable, &pull_up);
 		if (disable)
 			return 0;
 		else
 			return -EINVAL;
 
 	case PIN_CONFIG_BIAS_PULL_UP:
-		cygnus_gpio_get_pull(chip, gpio, &disable, &pull_up);
+		iproc_gpio_get_pull(chip, gpio, &disable, &pull_up);
 		if (!disable && pull_up)
 			return 0;
 		else
 			return -EINVAL;
 
 	case PIN_CONFIG_BIAS_PULL_DOWN:
-		cygnus_gpio_get_pull(chip, gpio, &disable, &pull_up);
+		iproc_gpio_get_pull(chip, gpio, &disable, &pull_up);
 		if (!disable && !pull_up)
 			return 0;
 		else
 			return -EINVAL;
 
 	case PIN_CONFIG_DRIVE_STRENGTH:
-		ret = cygnus_gpio_get_strength(chip, gpio, &arg);
+		ret = iproc_gpio_get_strength(chip, gpio, &arg);
 		if (ret)
 			return ret;
 		else
@@ -541,13 +543,13 @@ static int cygnus_pin_config_get(struct pinctrl_dev *pctldev, unsigned pin,
 	return -ENOTSUPP;
 }
 
-static int cygnus_pin_config_set(struct pinctrl_dev *pctldev, unsigned pin,
+static int iproc_pin_config_set(struct pinctrl_dev *pctldev, unsigned pin,
 				 unsigned long *configs, unsigned num_configs)
 {
-	struct cygnus_gpio *chip = pinctrl_dev_get_drvdata(pctldev);
+	struct iproc_gpio *chip = pinctrl_dev_get_drvdata(pctldev);
 	enum pin_config_param param;
 	u16 arg;
-	unsigned i, gpio = cygnus_pin_to_gpio(pin);
+	unsigned i, gpio = iproc_pin_to_gpio(pin);
 	int ret = -ENOTSUPP;
 
 	for (i = 0; i < num_configs; i++) {
@@ -556,25 +558,25 @@ static int cygnus_pin_config_set(struct pinctrl_dev *pctldev, unsigned pin,
 
 		switch (param) {
 		case PIN_CONFIG_BIAS_DISABLE:
-			ret = cygnus_gpio_set_pull(chip, gpio, true, false);
+			ret = iproc_gpio_set_pull(chip, gpio, true, false);
 			if (ret < 0)
 				goto out;
 			break;
 
 		case PIN_CONFIG_BIAS_PULL_UP:
-			ret = cygnus_gpio_set_pull(chip, gpio, false, true);
+			ret = iproc_gpio_set_pull(chip, gpio, false, true);
 			if (ret < 0)
 				goto out;
 			break;
 
 		case PIN_CONFIG_BIAS_PULL_DOWN:
-			ret = cygnus_gpio_set_pull(chip, gpio, false, false);
+			ret = iproc_gpio_set_pull(chip, gpio, false, false);
 			if (ret < 0)
 				goto out;
 			break;
 
 		case PIN_CONFIG_DRIVE_STRENGTH:
-			ret = cygnus_gpio_set_strength(chip, gpio, arg);
+			ret = iproc_gpio_set_strength(chip, gpio, arg);
 			if (ret < 0)
 				goto out;
 			break;
@@ -589,20 +591,20 @@ out:
 	return ret;
 }
 
-static const struct pinconf_ops cygnus_pconf_ops = {
+static const struct pinconf_ops iproc_pconf_ops = {
 	.is_generic = true,
-	.pin_config_get = cygnus_pin_config_get,
-	.pin_config_set = cygnus_pin_config_set,
+	.pin_config_get = iproc_pin_config_get,
+	.pin_config_set = iproc_pin_config_set,
 };
 
 /*
- * Cygnus GPIO controller supports some PINCONF related configurations such as
+ * Iproc GPIO controller supports some PINCONF related configurations such as
  * pull up, pull down, and drive strength, when the pin is configured to GPIO
  *
  * Here a local pinctrl device is created with simple 1-to-1 pin mapping to the
  * local GPIO pins
  */
-static int cygnus_gpio_register_pinconf(struct cygnus_gpio *chip)
+static int iproc_gpio_register_pinconf(struct iproc_gpio *chip)
 {
 	struct pinctrl_desc *pctldesc = &chip->pctldesc;
 	struct pinctrl_pin_desc *pins;
@@ -622,10 +624,10 @@ static int cygnus_gpio_register_pinconf(struct cygnus_gpio *chip)
 	}
 
 	pctldesc->name = dev_name(chip->dev);
-	pctldesc->pctlops = &cygnus_pctrl_ops;
+	pctldesc->pctlops = &iproc_pctrl_ops;
 	pctldesc->pins = pins;
 	pctldesc->npins = gc->ngpio;
-	pctldesc->confops = &cygnus_pconf_ops;
+	pctldesc->confops = &iproc_pconf_ops;
 
 	chip->pctl = pinctrl_register(pctldesc, chip->dev, chip);
 	if (IS_ERR(chip->pctl)) {
@@ -636,13 +638,13 @@ static int cygnus_gpio_register_pinconf(struct cygnus_gpio *chip)
 	return 0;
 }
 
-static void cygnus_gpio_unregister_pinconf(struct cygnus_gpio *chip)
+static void iproc_gpio_unregister_pinconf(struct iproc_gpio *chip)
 {
 	if (chip->pctl)
 		pinctrl_unregister(chip->pctl);
 }
 
-static const struct of_device_id cygnus_gpio_of_match[] = {
+static const struct of_device_id iproc_gpio_of_match[] = {
 	{ .compatible = "brcm,cygnus-ccm-gpio" },
 	{ .compatible = "brcm,cygnus-asiu-gpio" },
 	{ .compatible = "brcm,cygnus-crmu-gpio" },
@@ -650,11 +652,11 @@ static const struct of_device_id cygnus_gpio_of_match[] = {
 	{ }
 };
 
-static int cygnus_gpio_probe(struct platform_device *pdev)
+static int iproc_gpio_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
 	struct resource *res;
-	struct cygnus_gpio *chip;
+	struct iproc_gpio *chip;
 	struct gpio_chip *gc;
 	u32 ngpios;
 	int irq, ret;
@@ -696,12 +698,12 @@ static int cygnus_gpio_probe(struct platform_device *pdev)
 	gc->label = dev_name(dev);
 	gc->dev = dev;
 	gc->of_node = dev->of_node;
-	gc->request = cygnus_gpio_request;
-	gc->free = cygnus_gpio_free;
-	gc->direction_input = cygnus_gpio_direction_input;
-	gc->direction_output = cygnus_gpio_direction_output;
-	gc->set = cygnus_gpio_set;
-	gc->get = cygnus_gpio_get;
+	gc->request = iproc_gpio_request;
+	gc->free = iproc_gpio_free;
+	gc->direction_input = iproc_gpio_direction_input;
+	gc->direction_output = iproc_gpio_direction_output;
+	gc->set = iproc_gpio_set;
+	gc->get = iproc_gpio_get;
 
 	chip->pinmux_is_supported = of_property_read_bool(dev->of_node,
 							"gpio-ranges");
@@ -712,7 +714,7 @@ static int cygnus_gpio_probe(struct platform_device *pdev)
 		return ret;
 	}
 
-	ret = cygnus_gpio_register_pinconf(chip);
+	ret = iproc_gpio_register_pinconf(chip);
 	if (ret) {
 		dev_err(dev, "unable to register pinconf\n");
 		goto err_rm_gpiochip;
@@ -721,21 +723,21 @@ static int cygnus_gpio_probe(struct platform_device *pdev)
 	/* optional GPIO interrupt support */
 	irq = platform_get_irq(pdev, 0);
 	if (irq) {
-		ret = gpiochip_irqchip_add(gc, &cygnus_gpio_irq_chip, 0,
+		ret = gpiochip_irqchip_add(gc, &iproc_gpio_irq_chip, 0,
 					   handle_simple_irq, IRQ_TYPE_NONE);
 		if (ret) {
 			dev_err(dev, "no GPIO irqchip\n");
 			goto err_unregister_pinconf;
 		}
 
-		gpiochip_set_chained_irqchip(gc, &cygnus_gpio_irq_chip, irq,
-					     cygnus_gpio_irq_handler);
+		gpiochip_set_chained_irqchip(gc, &iproc_gpio_irq_chip, irq,
+					     iproc_gpio_irq_handler);
 	}
 
 	return 0;
 
 err_unregister_pinconf:
-	cygnus_gpio_unregister_pinconf(chip);
+	iproc_gpio_unregister_pinconf(chip);
 
 err_rm_gpiochip:
 	gpiochip_remove(gc);
@@ -743,16 +745,16 @@ err_rm_gpiochip:
 	return ret;
 }
 
-static struct platform_driver cygnus_gpio_driver = {
+static struct platform_driver iproc_gpio_driver = {
 	.driver = {
-		.name = "cygnus-gpio",
-		.of_match_table = cygnus_gpio_of_match,
+		.name = "iproc-gpio",
+		.of_match_table = iproc_gpio_of_match,
 	},
-	.probe = cygnus_gpio_probe,
+	.probe = iproc_gpio_probe,
 };
 
-static int __init cygnus_gpio_init(void)
+static int __init iproc_gpio_init(void)
 {
-	return platform_driver_probe(&cygnus_gpio_driver, cygnus_gpio_probe);
+	return platform_driver_probe(&iproc_gpio_driver, iproc_gpio_probe);
 }
-arch_initcall_sync(cygnus_gpio_init);
+arch_initcall_sync(iproc_gpio_init);
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 10/11] Documentation: Rename gpio controller name from cygnus to iproc
  2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
                   ` (8 preceding siblings ...)
  2015-10-19  5:43 ` [PATCH 09/11] gpio: Rename func/macro/var to IP-block,iproc Pramod Kumar
@ 2015-10-19  5:43 ` Pramod Kumar
  2015-10-22 18:41   ` Rob Herring
  2015-10-19  5:43 ` [PATCH 11/11] pinctrl: Rename gpio driver " Pramod Kumar
  10 siblings, 1 reply; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

Renamed gpio controller's driver name from cygnus to iproc to make it
more generic so that all iProc based SoCs having the same gpio controller
could use this.

Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
---
 .../bindings/pinctrl/{brcm,cygnus-gpio.txt => brcm,iproc-gpio.txt}    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
 rename Documentation/devicetree/bindings/pinctrl/{brcm,cygnus-gpio.txt => brcm,iproc-gpio.txt} (97%)

diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt
similarity index 97%
rename from Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
rename to Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt
index 655a8d7..7fb4621 100644
--- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
+++ b/Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt
@@ -1,4 +1,4 @@
-Broadcom Cygnus GPIO/PINCONF Controller
+Broadcom iProc GPIO/PINCONF Controller
 
 Required properties:
 
@@ -7,7 +7,7 @@ Required properties:
 "brcm,cygnus-crmu-gpio" or "brcm,iproc-gpio"
 
 - reg:
-    Define the base and range of the I/O address space that contains the Cygnus
+    Define the base and range of the I/O address space that contains SoC
 GPIO/PINCONF controller registers
 
 - ngpios:
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* [PATCH 11/11] pinctrl: Rename gpio driver from cygnus to iproc
  2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
                   ` (9 preceding siblings ...)
  2015-10-19  5:43 ` [PATCH 10/11] Documentation: Rename gpio controller name from cygnus to iproc Pramod Kumar
@ 2015-10-19  5:43 ` Pramod Kumar
  10 siblings, 0 replies; 41+ messages in thread
From: Pramod Kumar @ 2015-10-19  5:43 UTC (permalink / raw)
  To: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski, Pramod Kumar

Rename gpio driver file name from pinctrl-cygnus-gpio.c to
pinctrl-iproc-gpio.c to make it more generic so that all
iproc based future SoCs using the same gpio block could
use this driver.

Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
Reviewed-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
---
 drivers/pinctrl/bcm/Kconfig                        | 30 ++++++++++++++++------
 drivers/pinctrl/bcm/Makefile                       |  2 +-
 ...{pinctrl-cygnus-gpio.c => pinctrl-iproc-gpio.c} |  3 +--
 3 files changed, 24 insertions(+), 11 deletions(-)
 rename drivers/pinctrl/bcm/{pinctrl-cygnus-gpio.c => pinctrl-iproc-gpio.c} (99%)

diff --git a/drivers/pinctrl/bcm/Kconfig b/drivers/pinctrl/bcm/Kconfig
index cd11d4d..5949547 100644
--- a/drivers/pinctrl/bcm/Kconfig
+++ b/drivers/pinctrl/bcm/Kconfig
@@ -20,27 +20,41 @@ config PINCTRL_BCM2835
 	select PINMUX
 	select PINCONF
 
-config PINCTRL_CYGNUS_GPIO
-	bool "Broadcom Cygnus GPIO (with PINCONF) driver"
-	depends on OF_GPIO && ARCH_BCM_CYGNUS
+config PINCTRL_IPROC_GPIO
+	bool "Broadcom iProc GPIO (with PINCONF) driver"
+	depends on OF_GPIO && (ARCH_BCM_IPROC || COMPILE_TEST)
 	select GPIOLIB_IRQCHIP
 	select PINCONF
 	select GENERIC_PINCONF
-	default ARCH_BCM_CYGNUS
+	default ARCH_BCM_IPROC
 	help
-	  Say yes here to enable the Broadcom Cygnus GPIO driver.
+	  Say yes here to enable the Broadcom iProc GPIO driver.
+
+	  The Broadcom iProc based SoCs- Cygnus, NS2, NSP and Stingray, use
+	  same GPIO Controller IP hence this driver could be used for all.
 
 	  The Broadcom Cygnus SoC has 3 GPIO controllers including the ASIU
 	  GPIO controller (ASIU), the chipCommonG GPIO controller (CCM), and
 	  the always-ON GPIO controller (CRMU/AON). All 3 GPIO controllers are
 	  supported by this driver.
 
-	  All 3 Cygnus GPIO controllers support basic PINCONF functions such
+	  The Broadcom NSP has two GPIO controllers including the ChipcommonA
+	  GPIO, the ChipcommonB GPIO. Later controller is supported by this
+	  driver.
+
+	  The Broadcom NS2 has two GPIO controller including the CRMU GPIO,
+	  the ChipcommonG GPIO. Both controllers are supported by this driver.
+
+	  The Broadcom Stingray GPIO controllers are supported by this driver.
+
+	  All above SoCs GPIO controllers support basic PINCONF functions such
 	  as bias pull up, pull down, and drive strength configurations, when
 	  these pins are muxed to GPIO.
 
-	  Pins from the ASIU GPIO can be individually muxed to GPIO function,
-	  through interaction with the Cygnus IOMUX controller.
+	  It provides the framework where pins from the individual GPIO can be
+	  individually muxed to GPIO function, through interaction with the
+	  SoCs IOMUX controller. This features could be used only on SoCs which
+	  support individual pin muxing.
 
 config PINCTRL_CYGNUS_MUX
 	bool "Broadcom Cygnus IOMUX driver"
diff --git a/drivers/pinctrl/bcm/Makefile b/drivers/pinctrl/bcm/Makefile
index 2b2f70e..9ac6370 100644
--- a/drivers/pinctrl/bcm/Makefile
+++ b/drivers/pinctrl/bcm/Makefile
@@ -2,5 +2,5 @@
 
 obj-$(CONFIG_PINCTRL_BCM281XX)		+= pinctrl-bcm281xx.o
 obj-$(CONFIG_PINCTRL_BCM2835)		+= pinctrl-bcm2835.o
-obj-$(CONFIG_PINCTRL_CYGNUS_GPIO)	+= pinctrl-cygnus-gpio.o
+obj-$(CONFIG_PINCTRL_IPROC_GPIO)	+= pinctrl-iproc-gpio.o
 obj-$(CONFIG_PINCTRL_CYGNUS_MUX)	+= pinctrl-cygnus-mux.o
diff --git a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c b/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
similarity index 99%
rename from drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
rename to drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
index ed21ab2..de09859 100644
--- a/drivers/pinctrl/bcm/pinctrl-cygnus-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
@@ -531,8 +531,7 @@ static int iproc_pin_config_get(struct pinctrl_dev *pctldev, unsigned pin,
 		ret = iproc_gpio_get_strength(chip, gpio, &arg);
 		if (ret)
 			return ret;
-		else
-			*config = pinconf_to_config_packed(param, arg);
+		*config = pinconf_to_config_packed(param, arg);
 
 		return 0;
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 41+ messages in thread

* Re: [PATCH 04/11] dt-binding: Add new compatible string for gpio controller driver
  2015-10-19  5:43 ` [PATCH 04/11] dt-binding: Add new compatible string for gpio controller driver Pramod Kumar
@ 2015-10-22 18:40   ` Rob Herring
  2015-10-27  9:49   ` Linus Walleij
  1 sibling, 0 replies; 41+ messages in thread
From: Rob Herring @ 2015-10-22 18:40 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Ray Jui,
	Scott Branden, Russell King, Linus Walleij, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:
> This new compatible string, "brcm,iproc-gpio", should be used for
> all new iproc-based future SoCs.

Can't predict the future and crazy whims of hardware designers.

This is fine for matching, but you should also have a SOC specific string.

> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>
> ---
>  Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> index 25a5002..f92b833 100644
> --- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> @@ -3,8 +3,8 @@ Broadcom Cygnus GPIO/PINCONF Controller
>  Required properties:
>
>  - compatible:
> -    Must be "brcm,cygnus-ccm-gpio", "brcm,cygnus-asiu-gpio", or
> -    "brcm,cygnus-crmu-gpio"
> +    Must be "brcm,cygnus-ccm-gpio", "brcm,cygnus-asiu-gpio",
> +"brcm,cygnus-crmu-gpio" or "brcm,iproc-gpio"
>
>  - reg:
>      Define the base and range of the I/O address space that contains the Cygnus
> --
> 1.9.1
>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 10/11] Documentation: Rename gpio controller name from cygnus to iproc
  2015-10-19  5:43 ` [PATCH 10/11] Documentation: Rename gpio controller name from cygnus to iproc Pramod Kumar
@ 2015-10-22 18:41   ` Rob Herring
  0 siblings, 0 replies; 41+ messages in thread
From: Rob Herring @ 2015-10-22 18:41 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Ray Jui,
	Scott Branden, Russell King, Linus Walleij, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:
> Renamed gpio controller's driver name from cygnus to iproc to make it
> more generic so that all iProc based SoCs having the same gpio controller
> could use this.
>
> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>

Acked-by: Rob Herring <robh@kernel.org>

> ---
>  .../bindings/pinctrl/{brcm,cygnus-gpio.txt => brcm,iproc-gpio.txt}    | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>  rename Documentation/devicetree/bindings/pinctrl/{brcm,cygnus-gpio.txt => brcm,iproc-gpio.txt} (97%)
>
> diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt
> similarity index 97%
> rename from Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> rename to Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt
> index 655a8d7..7fb4621 100644
> --- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt
> @@ -1,4 +1,4 @@
> -Broadcom Cygnus GPIO/PINCONF Controller
> +Broadcom iProc GPIO/PINCONF Controller
>
>  Required properties:
>
> @@ -7,7 +7,7 @@ Required properties:
>  "brcm,cygnus-crmu-gpio" or "brcm,iproc-gpio"
>
>  - reg:
> -    Define the base and range of the I/O address space that contains the Cygnus
> +    Define the base and range of the I/O address space that contains SoC
>  GPIO/PINCONF controller registers
>
>  - ngpios:
> --
> 1.9.1
>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-19  5:43 ` [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node Pramod Kumar
@ 2015-10-22 18:43   ` Rob Herring
  2015-10-22 18:52     ` Ray Jui
  2015-10-27  9:41   ` Linus Walleij
  1 sibling, 1 reply; 41+ messages in thread
From: Rob Herring @ 2015-10-22 18:43 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Ray Jui,
	Scott Branden, Russell King, Linus Walleij, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:
> Add ngpios property to the gpio controller's DT node so that controller
> driver extracts total number of gpio lines present in controller
> from DT and removes dependency on driver.
>
> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>
> ---
>  Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> index f92b833..655a8d7 100644
> --- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> @@ -10,6 +10,9 @@ Required properties:
>      Define the base and range of the I/O address space that contains the Cygnus
>  GPIO/PINCONF controller registers
>
> +- ngpios:
> +    Total number of GPIOs the controller provides

This must be optional for compatibility and the driver needs to handle
it not present.

> +
>  - #gpio-cells:
>      Must be two. The first cell is the GPIO pin number (within the
>  controller's pin space) and the second cell is used for the following:
> @@ -57,6 +60,7 @@ Example:
>                 compatible = "brcm,cygnus-ccm-gpio";
>                 reg = <0x1800a000 0x50>,
>                       <0x0301d164 0x20>;
> +               ngpios = <24>;
>                 #gpio-cells = <2>;
>                 gpio-controller;
>                 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
> @@ -78,6 +82,7 @@ Example:
>         gpio_asiu: gpio@180a5000 {
>                 compatible = "brcm,cygnus-asiu-gpio";
>                 reg = <0x180a5000 0x668>;
> +               ngpios = <146>;
>                 #gpio-cells = <2>;
>                 gpio-controller;
>                 interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
> --
> 1.9.1
>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 01/11] dt-bindings: pinctrl: Optional DT property to support pin mappings
  2015-10-19  5:43 ` [PATCH 01/11] dt-bindings: pinctrl: Optional DT property to support pin mappings Pramod Kumar
@ 2015-10-22 18:45   ` Rob Herring
  2015-10-27  9:43   ` Linus Walleij
  1 sibling, 0 replies; 41+ messages in thread
From: Rob Herring @ 2015-10-22 18:45 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala, Ray Jui,
	Scott Branden, Russell King, Linus Walleij, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:
> If GPIO controller's pins are muxed, pin-controller subsystem
> need to be intimated by defining mapping between gpio and
> pinmux controller. This patch adds required properties to
> define this mapping via DT.
>
> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>

Acked-by: Rob Herring <robh@kernel.org>

> ---
>  .../devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt         | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> index 6540ca5..25a5002 100644
> --- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> @@ -26,9 +26,13 @@ Optional properties:
>  - interrupt-controller:
>      Specifies that the node is an interrupt controller
>
> -- pinmux:
> -    Specifies the phandle to the IOMUX device, where pins can be individually
> -muxed to GPIO
> +- gpio-ranges:
> +    Specifies the mapping between gpio controller and pin-controllers pins.
> +    This requires 4 fields in cells defined as -
> +    1. Phandle of pin-controller.
> +    2. GPIO base pin offset.
> +    3  Pin-control base pin offset.
> +    4. number of gpio pins which are linearly mapped from pin base.
>
>  Supported generic PINCONF properties in child nodes:
>
> @@ -78,6 +82,8 @@ Example:
>                 gpio-controller;
>                 interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
>                 interrupt-controller;
> +               gpio-ranges = <&pinctrl 0 42 1>,
> +                               <&pinctrl 1 44 3>;
>         };
>
>         /*
> --
> 1.9.1
>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-22 18:43   ` Rob Herring
@ 2015-10-22 18:52     ` Ray Jui
  2015-10-22 23:41       ` Rob Herring
  0 siblings, 1 reply; 41+ messages in thread
From: Ray Jui @ 2015-10-22 18:52 UTC (permalink / raw)
  To: Rob Herring, Pramod Kumar
  Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Scott Branden, Russell King, Linus Walleij, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski



On 10/22/2015 11:43 AM, Rob Herring wrote:
> On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:
>> Add ngpios property to the gpio controller's DT node so that controller
>> driver extracts total number of gpio lines present in controller
>> from DT and removes dependency on driver.
>>
>> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>> ---
>>   Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 5 +++++
>>   1 file changed, 5 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>> index f92b833..655a8d7 100644
>> --- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>> @@ -10,6 +10,9 @@ Required properties:
>>       Define the base and range of the I/O address space that contains the Cygnus
>>   GPIO/PINCONF controller registers
>>
>> +- ngpios:
>> +    Total number of GPIOs the controller provides
>
> This must be optional for compatibility and the driver needs to handle
> it not present.
>

You meant to be compatible with existing Cygnus devices, correct?

Just to clarify, here you suggest we still leave the existing hard coded 
ngpios in the driver, in order to be compatible with all existing Cygnus 
devices (while the Cygnus device tree changes to use ngpio is still 
being merged and through different maintainer), and have all new iProc 
SoCs switch to use ngpios from device tree, right?

Thanks,

Ray

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-22 18:52     ` Ray Jui
@ 2015-10-22 23:41       ` Rob Herring
  2015-10-23  9:08         ` Laurent Pinchart
  0 siblings, 1 reply; 41+ messages in thread
From: Rob Herring @ 2015-10-22 23:41 UTC (permalink / raw)
  To: Ray Jui
  Cc: Pramod Kumar, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Scott Branden, Russell King, Linus Walleij, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Thu, Oct 22, 2015 at 1:52 PM, Ray Jui <rjui@broadcom.com> wrote:
>
>
> On 10/22/2015 11:43 AM, Rob Herring wrote:
>>
>> On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar <pramodku@broadcom.com>
>> wrote:
>>>
>>> Add ngpios property to the gpio controller's DT node so that controller
>>> driver extracts total number of gpio lines present in controller
>>> from DT and removes dependency on driver.
>>>
>>> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>>> ---
>>>   Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 5
>>> +++++
>>>   1 file changed, 5 insertions(+)
>>>
>>> diff --git
>>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>>> b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>>> index f92b833..655a8d7 100644
>>> --- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>>> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>>> @@ -10,6 +10,9 @@ Required properties:
>>>       Define the base and range of the I/O address space that contains
>>> the Cygnus
>>>   GPIO/PINCONF controller registers
>>>
>>> +- ngpios:
>>> +    Total number of GPIOs the controller provides
>>
>>
>> This must be optional for compatibility and the driver needs to handle
>> it not present.
>>
>
> You meant to be compatible with existing Cygnus devices, correct?
>
> Just to clarify, here you suggest we still leave the existing hard coded
> ngpios in the driver, in order to be compatible with all existing Cygnus
> devices (while the Cygnus device tree changes to use ngpio is still being
> merged and through different maintainer), and have all new iProc SoCs switch
> to use ngpios from device tree, right?

Yes, an existing dtb should continue to work with a new kernel. You
can add the DT property to the older devices too and then eventually
remove the hard coded values some time in the future. That could be
immediately (don't care about compatibility at all), a couple of
kernel cycles, never... It all depends on users of the impacted
platforms.

Rob

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-22 23:41       ` Rob Herring
@ 2015-10-23  9:08         ` Laurent Pinchart
  2015-10-23 11:51           ` Rob Herring
  0 siblings, 1 reply; 41+ messages in thread
From: Laurent Pinchart @ 2015-10-23  9:08 UTC (permalink / raw)
  To: Rob Herring
  Cc: Ray Jui, Pramod Kumar, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Scott Branden, Russell King, Linus Walleij,
	linux-gpio, BCM Kernel Feedback, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Thursday 22 October 2015 18:41:05 Rob Herring wrote:
> On Thu, Oct 22, 2015 at 1:52 PM, Ray Jui wrote:
> > On 10/22/2015 11:43 AM, Rob Herring wrote:
> >> On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar wrote:
> >>> Add ngpios property to the gpio controller's DT node so that controller
> >>> driver extracts total number of gpio lines present in controller
> >>> from DT and removes dependency on driver.
> >>> 
> >>> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> >>> Reviewed-by: Ray Jui <rjui@broadcom.com>
> >>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
> >>> ---
> >>> 
> >>>  Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 5 +++
> >>>  1 file changed, 5 insertions(+)
> >>> 
> >>> diff --git
> >>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> >>> b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> >>> index f92b833..655a8d7 100644
> >>> --- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> >>> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> >>> 
> >>> @@ -10,6 +10,9 @@ Required properties:
> >>>       Define the base and range of the I/O address space that contains
> >>> the Cygnus
> >>>   GPIO/PINCONF controller registers
> >>> 
> >>> +- ngpios:
> >>> +    Total number of GPIOs the controller provides
> >> 
> >> This must be optional for compatibility and the driver needs to handle
> >> it not present.
> > 
> > You meant to be compatible with existing Cygnus devices, correct?
> > 
> > Just to clarify, here you suggest we still leave the existing hard coded
> > ngpios in the driver, in order to be compatible with all existing Cygnus
> > devices (while the Cygnus device tree changes to use ngpio is still being
> > merged and through different maintainer), and have all new iProc SoCs
> > switch to use ngpios from device tree, right?
> 
> Yes, an existing dtb should continue to work with a new kernel. You
> can add the DT property to the older devices too and then eventually
> remove the hard coded values some time in the future. That could be
> immediately (don't care about compatibility at all), a couple of
> kernel cycles, never... It all depends on users of the impacted
> platforms.

But shouldn't the property still be documented as required to ensure that new 
DTs always include it ?

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-23  9:08         ` Laurent Pinchart
@ 2015-10-23 11:51           ` Rob Herring
  2015-10-23 13:02             ` Laurent Pinchart
  0 siblings, 1 reply; 41+ messages in thread
From: Rob Herring @ 2015-10-23 11:51 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: Ray Jui, Pramod Kumar, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Scott Branden, Russell King, Linus Walleij,
	linux-gpio, BCM Kernel Feedback, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Fri, Oct 23, 2015 at 4:08 AM, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> On Thursday 22 October 2015 18:41:05 Rob Herring wrote:
>> On Thu, Oct 22, 2015 at 1:52 PM, Ray Jui wrote:
>> > On 10/22/2015 11:43 AM, Rob Herring wrote:
>> >> On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar wrote:
>> >>> Add ngpios property to the gpio controller's DT node so that controller
>> >>> driver extracts total number of gpio lines present in controller
>> >>> from DT and removes dependency on driver.
>> >>>
>> >>> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
>> >>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>> >>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>> >>> ---
>> >>>
>> >>>  Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 5 +++
>> >>>  1 file changed, 5 insertions(+)
>> >>>
>> >>> diff --git
>> >>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>> >>> b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>> >>> index f92b833..655a8d7 100644
>> >>> --- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>> >>> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>> >>>
>> >>> @@ -10,6 +10,9 @@ Required properties:
>> >>>       Define the base and range of the I/O address space that contains
>> >>> the Cygnus
>> >>>   GPIO/PINCONF controller registers
>> >>>
>> >>> +- ngpios:
>> >>> +    Total number of GPIOs the controller provides
>> >>
>> >> This must be optional for compatibility and the driver needs to handle
>> >> it not present.
>> >
>> > You meant to be compatible with existing Cygnus devices, correct?
>> >
>> > Just to clarify, here you suggest we still leave the existing hard coded
>> > ngpios in the driver, in order to be compatible with all existing Cygnus
>> > devices (while the Cygnus device tree changes to use ngpio is still being
>> > merged and through different maintainer), and have all new iProc SoCs
>> > switch to use ngpios from device tree, right?
>>
>> Yes, an existing dtb should continue to work with a new kernel. You
>> can add the DT property to the older devices too and then eventually
>> remove the hard coded values some time in the future. That could be
>> immediately (don't care about compatibility at all), a couple of
>> kernel cycles, never... It all depends on users of the impacted
>> platforms.
>
> But shouldn't the property still be documented as required to ensure that new
> DTs always include it ?

Good point. If the intent is to eventually remove it from the driver,
then yes. We probably need "required for new designs" as a category or
maybe "recommended"? The wording is not so important here, but I'm
thinking about as we try to standardize the naming.

Rob

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-23 11:51           ` Rob Herring
@ 2015-10-23 13:02             ` Laurent Pinchart
  2015-10-23 16:08               ` Ray Jui
  0 siblings, 1 reply; 41+ messages in thread
From: Laurent Pinchart @ 2015-10-23 13:02 UTC (permalink / raw)
  To: Rob Herring
  Cc: Ray Jui, Pramod Kumar, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Scott Branden, Russell King, Linus Walleij,
	linux-gpio, BCM Kernel Feedback, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

Hi Rob,

On Friday 23 October 2015 06:51:28 Rob Herring wrote:
> On Fri, Oct 23, 2015 at 4:08 AM, Laurent Pinchart wrote:
> > On Thursday 22 October 2015 18:41:05 Rob Herring wrote:
> >> On Thu, Oct 22, 2015 at 1:52 PM, Ray Jui wrote:
> >>> On 10/22/2015 11:43 AM, Rob Herring wrote:
> >>>> On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar wrote:
> >>>>> Add ngpios property to the gpio controller's DT node so that
> >>>>> controller driver extracts total number of gpio lines present in
> >>>>> controller from DT and removes dependency on driver.
> >>>>> 
> >>>>> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> >>>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
> >>>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
> >>>>> ---
> >>>>> 
> >>>>>  Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 5
> >>>>>  +++
> >>>>>  1 file changed, 5 insertions(+)
> >>>>> 
> >>>>> diff --git
> >>>>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> >>>>> b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> >>>>> index f92b833..655a8d7 100644
> >>>>> --- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> >>>>> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> >>>>> 
> >>>>> @@ -10,6 +10,9 @@ Required properties:
> >>>>>       Define the base and range of the I/O address space that
> >>>>>       contains
> >>>>> 
> >>>>> the Cygnus
> >>>>> 
> >>>>>   GPIO/PINCONF controller registers
> >>>>> 
> >>>>> +- ngpios:
> >>>> +    Total number of GPIOs the controller provides
> >>>> 
> >>>> This must be optional for compatibility and the driver needs to handle
> >>>> it not present.
> >>> 
> >>> You meant to be compatible with existing Cygnus devices, correct?
> >>> 
> >>> Just to clarify, here you suggest we still leave the existing hard
> >>> coded ngpios in the driver, in order to be compatible with all existing
> >>> Cygnus devices (while the Cygnus device tree changes to use ngpio is
> >>> still being merged and through different maintainer), and have all new
> >>> iProc SoCs switch to use ngpios from device tree, right?
> >> 
> >> Yes, an existing dtb should continue to work with a new kernel. You
> >> can add the DT property to the older devices too and then eventually
> >> remove the hard coded values some time in the future. That could be
> >> immediately (don't care about compatibility at all), a couple of
> >> kernel cycles, never... It all depends on users of the impacted
> >> platforms.
> > 
> > But shouldn't the property still be documented as required to ensure that
> > new DTs always include it ?
> 
> Good point. If the intent is to eventually remove it from the driver,
> then yes. We probably need "required for new designs" as a category or
> maybe "recommended"? The wording is not so important here, but I'm
> thinking about as we try to standardize the naming.

Required for new designs sounds better than recommended. Or maybe something 
like "Required (optional for backward compatibility)".

-- 
Regards,

Laurent Pinchart


^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-23 13:02             ` Laurent Pinchart
@ 2015-10-23 16:08               ` Ray Jui
  2015-10-26 17:08                 ` Pramod Kumar
  0 siblings, 1 reply; 41+ messages in thread
From: Ray Jui @ 2015-10-23 16:08 UTC (permalink / raw)
  To: Laurent Pinchart, Rob Herring
  Cc: Pramod Kumar, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Scott Branden, Russell King, Linus Walleij, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	devicetree, linux-arm-kernel, linux-kernel, Jonas Gorski



On 10/23/2015 6:02 AM, Laurent Pinchart wrote:
> Hi Rob,
>
> On Friday 23 October 2015 06:51:28 Rob Herring wrote:
>> On Fri, Oct 23, 2015 at 4:08 AM, Laurent Pinchart wrote:
>>> On Thursday 22 October 2015 18:41:05 Rob Herring wrote:
>>>> On Thu, Oct 22, 2015 at 1:52 PM, Ray Jui wrote:
>>>>> On 10/22/2015 11:43 AM, Rob Herring wrote:
>>>>>> On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar wrote:
>>>>>>> Add ngpios property to the gpio controller's DT node so that
>>>>>>> controller driver extracts total number of gpio lines present in
>>>>>>> controller from DT and removes dependency on driver.
>>>>>>>
>>>>>>> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
>>>>>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>>>>>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>>>>>>> ---
>>>>>>>
>>>>>>>   Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 5
>>>>>>>   +++
>>>>>>>   1 file changed, 5 insertions(+)
>>>>>>>
>>>>>>> diff --git
>>>>>>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>>>>>>> b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>>>>>>> index f92b833..655a8d7 100644
>>>>>>> --- a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>>>>>>> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>>>>>>>
>>>>>>> @@ -10,6 +10,9 @@ Required properties:
>>>>>>>        Define the base and range of the I/O address space that
>>>>>>>        contains
>>>>>>>
>>>>>>> the Cygnus
>>>>>>>
>>>>>>>    GPIO/PINCONF controller registers
>>>>>>>
>>>>>>> +- ngpios:
>>>>>> +    Total number of GPIOs the controller provides
>>>>>>
>>>>>> This must be optional for compatibility and the driver needs to handle
>>>>>> it not present.
>>>>>
>>>>> You meant to be compatible with existing Cygnus devices, correct?
>>>>>
>>>>> Just to clarify, here you suggest we still leave the existing hard
>>>>> coded ngpios in the driver, in order to be compatible with all existing
>>>>> Cygnus devices (while the Cygnus device tree changes to use ngpio is
>>>>> still being merged and through different maintainer), and have all new
>>>>> iProc SoCs switch to use ngpios from device tree, right?
>>>>
>>>> Yes, an existing dtb should continue to work with a new kernel. You
>>>> can add the DT property to the older devices too and then eventually
>>>> remove the hard coded values some time in the future. That could be
>>>> immediately (don't care about compatibility at all), a couple of
>>>> kernel cycles, never... It all depends on users of the impacted
>>>> platforms.
>>>
>>> But shouldn't the property still be documented as required to ensure that
>>> new DTs always include it ?
>>
>> Good point. If the intent is to eventually remove it from the driver,
>> then yes. We probably need "required for new designs" as a category or
>> maybe "recommended"? The wording is not so important here, but I'm
>> thinking about as we try to standardize the naming.
>
> Required for new designs sounds better than recommended. Or maybe something
> like "Required (optional for backward compatibility)".
>

Yes, it should be phrased as "required for new designs" because all new 
iProc SoCs using this GPIO driver need to have this in DT.

Thanks,

Ray

^ permalink raw reply	[flat|nested] 41+ messages in thread

* RE: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-23 16:08               ` Ray Jui
@ 2015-10-26 17:08                 ` Pramod Kumar
  2015-10-26 17:12                   ` Ray Jui
  0 siblings, 1 reply; 41+ messages in thread
From: Pramod Kumar @ 2015-10-26 17:08 UTC (permalink / raw)
  To: Ray Jui, Laurent Pinchart, Rob Herring
  Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Scott Branden, Russell King, Linus Walleij, linux-gpio,
	bcm-kernel-feedback-list, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski



> -----Original Message-----
> From: Ray Jui [mailto:rjui@broadcom.com]
> Sent: 23 October 2015 21:38
> To: Laurent Pinchart; Rob Herring
> Cc: Pramod Kumar; Pawel Moll; Mark Rutland; Ian Campbell; Kumar Gala; Scott
> Branden; Russell King; Linus Walleij; linux-gpio@vger.kernel.org; bcm-kernel-
> feedback-list; Jason Uy; Masahiro Yamada; Thomas Gleixner;
> devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-
> kernel@vger.kernel.org; Jonas Gorski
> Subject: Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller
> node
> 
> 
> 
> On 10/23/2015 6:02 AM, Laurent Pinchart wrote:
> > Hi Rob,
> >
> > On Friday 23 October 2015 06:51:28 Rob Herring wrote:
> >> On Fri, Oct 23, 2015 at 4:08 AM, Laurent Pinchart wrote:
> >>> On Thursday 22 October 2015 18:41:05 Rob Herring wrote:
> >>>> On Thu, Oct 22, 2015 at 1:52 PM, Ray Jui wrote:
> >>>>> On 10/22/2015 11:43 AM, Rob Herring wrote:
> >>>>>> On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar wrote:
> >>>>>>> Add ngpios property to the gpio controller's DT node so that
> >>>>>>> controller driver extracts total number of gpio lines present in
> >>>>>>> controller from DT and removes dependency on driver.
> >>>>>>>
> >>>>>>> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> >>>>>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
> >>>>>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
> >>>>>>> ---
> >>>>>>>
> >>>>>>>   Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 5
> >>>>>>>   +++
> >>>>>>>   1 file changed, 5 insertions(+)
> >>>>>>>
> >>>>>>> diff --git
> >>>>>>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> >>>>>>> b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> >>>>>>> index f92b833..655a8d7 100644
> >>>>>>> ---
> >>>>>>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> >>>>>>> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio
> >>>>>>> +++ .txt
> >>>>>>>
> >>>>>>> @@ -10,6 +10,9 @@ Required properties:
> >>>>>>>        Define the base and range of the I/O address space that
> >>>>>>>        contains
> >>>>>>>
> >>>>>>> the Cygnus
> >>>>>>>
> >>>>>>>    GPIO/PINCONF controller registers
> >>>>>>>
> >>>>>>> +- ngpios:
> >>>>>> +    Total number of GPIOs the controller provides
> >>>>>>
> >>>>>> This must be optional for compatibility and the driver needs to
> >>>>>> handle it not present.
> >>>>>
> >>>>> You meant to be compatible with existing Cygnus devices, correct?
> >>>>>
> >>>>> Just to clarify, here you suggest we still leave the existing hard
> >>>>> coded ngpios in the driver, in order to be compatible with all
> >>>>> existing Cygnus devices (while the Cygnus device tree changes to
> >>>>> use ngpio is still being merged and through different maintainer),
> >>>>> and have all new iProc SoCs switch to use ngpios from device tree, right?
> >>>>
> >>>> Yes, an existing dtb should continue to work with a new kernel. You
> >>>> can add the DT property to the older devices too and then
> >>>> eventually remove the hard coded values some time in the future.
> >>>> That could be immediately (don't care about compatibility at all),
> >>>> a couple of kernel cycles, never... It all depends on users of the
> >>>> impacted platforms.
> >>>
> >>> But shouldn't the property still be documented as required to ensure
> >>> that new DTs always include it ?
> >>
> >> Good point. If the intent is to eventually remove it from the driver,
> >> then yes. We probably need "required for new designs" as a category
> >> or maybe "recommended"? The wording is not so important here, but I'm
> >> thinking about as we try to standardize the naming.
> >
> > Required for new designs sounds better than recommended. Or maybe
> > something like "Required (optional for backward compatibility)".
> >
> 
> Yes, it should be phrased as "required for new designs" because all new iProc
> SoCs using this GPIO driver need to have this in DT.
> 
> Thanks,
> 
> Ray

Thanks for providing feedback. I'll make sure to use this property under phrase " required for new designs " in next patch set.

Regards,
Pramod

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-26 17:08                 ` Pramod Kumar
@ 2015-10-26 17:12                   ` Ray Jui
  2015-10-26 18:06                     ` Pramod Kumar
  0 siblings, 1 reply; 41+ messages in thread
From: Ray Jui @ 2015-10-26 17:12 UTC (permalink / raw)
  To: Pramod Kumar, Laurent Pinchart, Rob Herring
  Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Scott Branden, Russell King, Linus Walleij, linux-gpio,
	bcm-kernel-feedback-list, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

Hi Pramod,

On 10/26/2015 10:08 AM, Pramod Kumar wrote:
>
>
>> -----Original Message-----
>> From: Ray Jui [mailto:rjui@broadcom.com]
>> Sent: 23 October 2015 21:38
>> To: Laurent Pinchart; Rob Herring
>> Cc: Pramod Kumar; Pawel Moll; Mark Rutland; Ian Campbell; Kumar Gala; Scott
>> Branden; Russell King; Linus Walleij; linux-gpio@vger.kernel.org; bcm-kernel-
>> feedback-list; Jason Uy; Masahiro Yamada; Thomas Gleixner;
>> devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-
>> kernel@vger.kernel.org; Jonas Gorski
>> Subject: Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller
>> node
>>
>>
>>
>> On 10/23/2015 6:02 AM, Laurent Pinchart wrote:
>>> Hi Rob,
>>>
>>> On Friday 23 October 2015 06:51:28 Rob Herring wrote:
>>>> On Fri, Oct 23, 2015 at 4:08 AM, Laurent Pinchart wrote:
>>>>> On Thursday 22 October 2015 18:41:05 Rob Herring wrote:
>>>>>> On Thu, Oct 22, 2015 at 1:52 PM, Ray Jui wrote:
>>>>>>> On 10/22/2015 11:43 AM, Rob Herring wrote:
>>>>>>>> On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar wrote:
>>>>>>>>> Add ngpios property to the gpio controller's DT node so that
>>>>>>>>> controller driver extracts total number of gpio lines present in
>>>>>>>>> controller from DT and removes dependency on driver.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
>>>>>>>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>>>>>>>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>>>>>>>>> ---
>>>>>>>>>
>>>>>>>>>    Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt | 5
>>>>>>>>>    +++
>>>>>>>>>    1 file changed, 5 insertions(+)
>>>>>>>>>
>>>>>>>>> diff --git
>>>>>>>>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>>>>>>>>> b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>>>>>>>>> index f92b833..655a8d7 100644
>>>>>>>>> ---
>>>>>>>>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>>>>>>>>> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio
>>>>>>>>> +++ .txt
>>>>>>>>>
>>>>>>>>> @@ -10,6 +10,9 @@ Required properties:
>>>>>>>>>         Define the base and range of the I/O address space that
>>>>>>>>>         contains
>>>>>>>>>
>>>>>>>>> the Cygnus
>>>>>>>>>
>>>>>>>>>     GPIO/PINCONF controller registers
>>>>>>>>>
>>>>>>>>> +- ngpios:
>>>>>>>> +    Total number of GPIOs the controller provides
>>>>>>>>
>>>>>>>> This must be optional for compatibility and the driver needs to
>>>>>>>> handle it not present.
>>>>>>>
>>>>>>> You meant to be compatible with existing Cygnus devices, correct?
>>>>>>>
>>>>>>> Just to clarify, here you suggest we still leave the existing hard
>>>>>>> coded ngpios in the driver, in order to be compatible with all
>>>>>>> existing Cygnus devices (while the Cygnus device tree changes to
>>>>>>> use ngpio is still being merged and through different maintainer),
>>>>>>> and have all new iProc SoCs switch to use ngpios from device tree, right?
>>>>>>
>>>>>> Yes, an existing dtb should continue to work with a new kernel. You
>>>>>> can add the DT property to the older devices too and then
>>>>>> eventually remove the hard coded values some time in the future.
>>>>>> That could be immediately (don't care about compatibility at all),
>>>>>> a couple of kernel cycles, never... It all depends on users of the
>>>>>> impacted platforms.
>>>>>
>>>>> But shouldn't the property still be documented as required to ensure
>>>>> that new DTs always include it ?
>>>>
>>>> Good point. If the intent is to eventually remove it from the driver,
>>>> then yes. We probably need "required for new designs" as a category
>>>> or maybe "recommended"? The wording is not so important here, but I'm
>>>> thinking about as we try to standardize the naming.
>>>
>>> Required for new designs sounds better than recommended. Or maybe
>>> something like "Required (optional for backward compatibility)".
>>>
>>
>> Yes, it should be phrased as "required for new designs" because all new iProc
>> SoCs using this GPIO driver need to have this in DT.
>>
>> Thanks,
>>
>> Ray
>
> Thanks for providing feedback. I'll make sure to use this property under phrase " required for new designs " in next patch set.
>
> Regards,
> Pramod
>

To confirm, is your plan:

1) Continue to support hardcoded ngpios in the driver for the current 
SoC Cygnus
2) Proceed with Cygnus DTS changes to switch to DT based ngpios 
configuration
3) Modify the document to make DT ngpios a required property for all new 
SoCs including NSP, NS2, and etc.

?

Thanks,

Ray

^ permalink raw reply	[flat|nested] 41+ messages in thread

* RE: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-26 17:12                   ` Ray Jui
@ 2015-10-26 18:06                     ` Pramod Kumar
  2015-10-26 18:08                       ` Ray Jui
  0 siblings, 1 reply; 41+ messages in thread
From: Pramod Kumar @ 2015-10-26 18:06 UTC (permalink / raw)
  To: Ray Jui, Laurent Pinchart, Rob Herring
  Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Scott Branden, Russell King, Linus Walleij, linux-gpio,
	bcm-kernel-feedback-list, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

Hi Ray,

> -----Original Message-----
> From: Ray Jui [mailto:rjui@broadcom.com]
> Sent: 26 October 2015 22:43
> To: Pramod Kumar; Laurent Pinchart; Rob Herring
> Cc: Pawel Moll; Mark Rutland; Ian Campbell; Kumar Gala; Scott Branden; Russell
> King; Linus Walleij; linux-gpio@vger.kernel.org; bcm-kernel-feedback-list; Jason
> Uy; Masahiro Yamada; Thomas Gleixner; devicetree@vger.kernel.org; linux-
> arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Jonas Gorski
> Subject: Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller
> node
> 
> Hi Pramod,
> 
> On 10/26/2015 10:08 AM, Pramod Kumar wrote:
> >
> >
> >> -----Original Message-----
> >> From: Ray Jui [mailto:rjui@broadcom.com]
> >> Sent: 23 October 2015 21:38
> >> To: Laurent Pinchart; Rob Herring
> >> Cc: Pramod Kumar; Pawel Moll; Mark Rutland; Ian Campbell; Kumar Gala;
> >> Scott Branden; Russell King; Linus Walleij;
> >> linux-gpio@vger.kernel.org; bcm-kernel- feedback-list; Jason Uy;
> >> Masahiro Yamada; Thomas Gleixner; devicetree@vger.kernel.org;
> >> linux-arm-kernel@lists.infradead.org; linux- kernel@vger.kernel.org;
> >> Jonas Gorski
> >> Subject: Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO
> >> controller node
> >>
> >>
> >>
> >> On 10/23/2015 6:02 AM, Laurent Pinchart wrote:
> >>> Hi Rob,
> >>>
> >>> On Friday 23 October 2015 06:51:28 Rob Herring wrote:
> >>>> On Fri, Oct 23, 2015 at 4:08 AM, Laurent Pinchart wrote:
> >>>>> On Thursday 22 October 2015 18:41:05 Rob Herring wrote:
> >>>>>> On Thu, Oct 22, 2015 at 1:52 PM, Ray Jui wrote:
> >>>>>>> On 10/22/2015 11:43 AM, Rob Herring wrote:
> >>>>>>>> On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar wrote:
> >>>>>>>>> Add ngpios property to the gpio controller's DT node so that
> >>>>>>>>> controller driver extracts total number of gpio lines present
> >>>>>>>>> in controller from DT and removes dependency on driver.
> >>>>>>>>>
> >>>>>>>>> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> >>>>>>>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
> >>>>>>>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
> >>>>>>>>> ---
> >>>>>>>>>
> >>>>>>>>>    Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
> | 5
> >>>>>>>>>    +++
> >>>>>>>>>    1 file changed, 5 insertions(+)
> >>>>>>>>>
> >>>>>>>>> diff --git
> >>>>>>>>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.t
> >>>>>>>>> xt
> >>>>>>>>> b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.t
> >>>>>>>>> xt
> >>>>>>>>> index f92b833..655a8d7 100644
> >>>>>>>>> ---
> >>>>>>>>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.t
> >>>>>>>>> xt
> >>>>>>>>> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gp
> >>>>>>>>> +++ io
> >>>>>>>>> +++ .txt
> >>>>>>>>>
> >>>>>>>>> @@ -10,6 +10,9 @@ Required properties:
> >>>>>>>>>         Define the base and range of the I/O address space that
> >>>>>>>>>         contains
> >>>>>>>>>
> >>>>>>>>> the Cygnus
> >>>>>>>>>
> >>>>>>>>>     GPIO/PINCONF controller registers
> >>>>>>>>>
> >>>>>>>>> +- ngpios:
> >>>>>>>> +    Total number of GPIOs the controller provides
> >>>>>>>>
> >>>>>>>> This must be optional for compatibility and the driver needs to
> >>>>>>>> handle it not present.
> >>>>>>>
> >>>>>>> You meant to be compatible with existing Cygnus devices, correct?
> >>>>>>>
> >>>>>>> Just to clarify, here you suggest we still leave the existing
> >>>>>>> hard coded ngpios in the driver, in order to be compatible with
> >>>>>>> all existing Cygnus devices (while the Cygnus device tree
> >>>>>>> changes to use ngpio is still being merged and through different
> >>>>>>> maintainer), and have all new iProc SoCs switch to use ngpios from
> device tree, right?
> >>>>>>
> >>>>>> Yes, an existing dtb should continue to work with a new kernel.
> >>>>>> You can add the DT property to the older devices too and then
> >>>>>> eventually remove the hard coded values some time in the future.
> >>>>>> That could be immediately (don't care about compatibility at
> >>>>>> all), a couple of kernel cycles, never... It all depends on users
> >>>>>> of the impacted platforms.
> >>>>>
> >>>>> But shouldn't the property still be documented as required to
> >>>>> ensure that new DTs always include it ?
> >>>>
> >>>> Good point. If the intent is to eventually remove it from the
> >>>> driver, then yes. We probably need "required for new designs" as a
> >>>> category or maybe "recommended"? The wording is not so important
> >>>> here, but I'm thinking about as we try to standardize the naming.
> >>>
> >>> Required for new designs sounds better than recommended. Or maybe
> >>> something like "Required (optional for backward compatibility)".
> >>>
> >>
> >> Yes, it should be phrased as "required for new designs" because all
> >> new iProc SoCs using this GPIO driver need to have this in DT.
> >>
> >> Thanks,
> >>
> >> Ray
> >
> > Thanks for providing feedback. I'll make sure to use this property under phrase
> " required for new designs " in next patch set.
> >
> > Regards,
> > Pramod
> >
> 
> To confirm, is your plan:
> 
> 1) Continue to support hardcoded ngpios in the driver for the current SoC Cygnus
> 2) Proceed with Cygnus DTS changes to switch to DT based ngpios configuration
> 3) Modify the document to make DT ngpios a required property for all new SoCs
> including NSP, NS2, and etc.
> 
> ?
> 
> Thanks,
> 
> Ray

Ok. This patch-set is to make this driver more generic so that all future SoCs , as you mentioned like NS2, NSP, Stingray, could use it.  Since This Cygnus is in very very early stage and No customer is using it so we can afford it to address ngpio from DT and remove Cygnus hard coded values immediately from this patch. Otherwise we will see the same issue with "gpios-ranges" property and this will be highly inter-dependent as well.   

Regards,
Pramod



^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-26 18:06                     ` Pramod Kumar
@ 2015-10-26 18:08                       ` Ray Jui
  0 siblings, 0 replies; 41+ messages in thread
From: Ray Jui @ 2015-10-26 18:08 UTC (permalink / raw)
  To: Pramod Kumar, Laurent Pinchart, Rob Herring
  Cc: Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Scott Branden, Russell King, Linus Walleij, linux-gpio,
	bcm-kernel-feedback-list, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

Hi Pramod,

On 10/26/2015 11:06 AM, Pramod Kumar wrote:
> Hi Ray,
>
>> -----Original Message-----
>> From: Ray Jui [mailto:rjui@broadcom.com]
>> Sent: 26 October 2015 22:43
>> To: Pramod Kumar; Laurent Pinchart; Rob Herring
>> Cc: Pawel Moll; Mark Rutland; Ian Campbell; Kumar Gala; Scott Branden; Russell
>> King; Linus Walleij; linux-gpio@vger.kernel.org; bcm-kernel-feedback-list; Jason
>> Uy; Masahiro Yamada; Thomas Gleixner; devicetree@vger.kernel.org; linux-
>> arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Jonas Gorski
>> Subject: Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller
>> node
>>
>> Hi Pramod,
>>
>> On 10/26/2015 10:08 AM, Pramod Kumar wrote:
>>>
>>>
>>>> -----Original Message-----
>>>> From: Ray Jui [mailto:rjui@broadcom.com]
>>>> Sent: 23 October 2015 21:38
>>>> To: Laurent Pinchart; Rob Herring
>>>> Cc: Pramod Kumar; Pawel Moll; Mark Rutland; Ian Campbell; Kumar Gala;
>>>> Scott Branden; Russell King; Linus Walleij;
>>>> linux-gpio@vger.kernel.org; bcm-kernel- feedback-list; Jason Uy;
>>>> Masahiro Yamada; Thomas Gleixner; devicetree@vger.kernel.org;
>>>> linux-arm-kernel@lists.infradead.org; linux- kernel@vger.kernel.org;
>>>> Jonas Gorski
>>>> Subject: Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO
>>>> controller node
>>>>
>>>>
>>>>
>>>> On 10/23/2015 6:02 AM, Laurent Pinchart wrote:
>>>>> Hi Rob,
>>>>>
>>>>> On Friday 23 October 2015 06:51:28 Rob Herring wrote:
>>>>>> On Fri, Oct 23, 2015 at 4:08 AM, Laurent Pinchart wrote:
>>>>>>> On Thursday 22 October 2015 18:41:05 Rob Herring wrote:
>>>>>>>> On Thu, Oct 22, 2015 at 1:52 PM, Ray Jui wrote:
>>>>>>>>> On 10/22/2015 11:43 AM, Rob Herring wrote:
>>>>>>>>>> On Mon, Oct 19, 2015 at 12:43 AM, Pramod Kumar wrote:
>>>>>>>>>>> Add ngpios property to the gpio controller's DT node so that
>>>>>>>>>>> controller driver extracts total number of gpio lines present
>>>>>>>>>>> in controller from DT and removes dependency on driver.
>>>>>>>>>>>
>>>>>>>>>>> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
>>>>>>>>>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>>>>>>>>>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>>>>>>>>>>> ---
>>>>>>>>>>>
>>>>>>>>>>>     Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.txt
>> | 5
>>>>>>>>>>>     +++
>>>>>>>>>>>     1 file changed, 5 insertions(+)
>>>>>>>>>>>
>>>>>>>>>>> diff --git
>>>>>>>>>>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.t
>>>>>>>>>>> xt
>>>>>>>>>>> b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.t
>>>>>>>>>>> xt
>>>>>>>>>>> index f92b833..655a8d7 100644
>>>>>>>>>>> ---
>>>>>>>>>>> a/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gpio.t
>>>>>>>>>>> xt
>>>>>>>>>>> +++ b/Documentation/devicetree/bindings/pinctrl/brcm,cygnus-gp
>>>>>>>>>>> +++ io
>>>>>>>>>>> +++ .txt
>>>>>>>>>>>
>>>>>>>>>>> @@ -10,6 +10,9 @@ Required properties:
>>>>>>>>>>>          Define the base and range of the I/O address space that
>>>>>>>>>>>          contains
>>>>>>>>>>>
>>>>>>>>>>> the Cygnus
>>>>>>>>>>>
>>>>>>>>>>>      GPIO/PINCONF controller registers
>>>>>>>>>>>
>>>>>>>>>>> +- ngpios:
>>>>>>>>>> +    Total number of GPIOs the controller provides
>>>>>>>>>>
>>>>>>>>>> This must be optional for compatibility and the driver needs to
>>>>>>>>>> handle it not present.
>>>>>>>>>
>>>>>>>>> You meant to be compatible with existing Cygnus devices, correct?
>>>>>>>>>
>>>>>>>>> Just to clarify, here you suggest we still leave the existing
>>>>>>>>> hard coded ngpios in the driver, in order to be compatible with
>>>>>>>>> all existing Cygnus devices (while the Cygnus device tree
>>>>>>>>> changes to use ngpio is still being merged and through different
>>>>>>>>> maintainer), and have all new iProc SoCs switch to use ngpios from
>> device tree, right?
>>>>>>>>
>>>>>>>> Yes, an existing dtb should continue to work with a new kernel.
>>>>>>>> You can add the DT property to the older devices too and then
>>>>>>>> eventually remove the hard coded values some time in the future.
>>>>>>>> That could be immediately (don't care about compatibility at
>>>>>>>> all), a couple of kernel cycles, never... It all depends on users
>>>>>>>> of the impacted platforms.
>>>>>>>
>>>>>>> But shouldn't the property still be documented as required to
>>>>>>> ensure that new DTs always include it ?
>>>>>>
>>>>>> Good point. If the intent is to eventually remove it from the
>>>>>> driver, then yes. We probably need "required for new designs" as a
>>>>>> category or maybe "recommended"? The wording is not so important
>>>>>> here, but I'm thinking about as we try to standardize the naming.
>>>>>
>>>>> Required for new designs sounds better than recommended. Or maybe
>>>>> something like "Required (optional for backward compatibility)".
>>>>>
>>>>
>>>> Yes, it should be phrased as "required for new designs" because all
>>>> new iProc SoCs using this GPIO driver need to have this in DT.
>>>>
>>>> Thanks,
>>>>
>>>> Ray
>>>
>>> Thanks for providing feedback. I'll make sure to use this property under phrase
>> " required for new designs " in next patch set.
>>>
>>> Regards,
>>> Pramod
>>>
>>
>> To confirm, is your plan:
>>
>> 1) Continue to support hardcoded ngpios in the driver for the current SoC Cygnus
>> 2) Proceed with Cygnus DTS changes to switch to DT based ngpios configuration
>> 3) Modify the document to make DT ngpios a required property for all new SoCs
>> including NSP, NS2, and etc.
>>
>> ?
>>
>> Thanks,
>>
>> Ray
>
> Ok. This patch-set is to make this driver more generic so that all future SoCs , as you mentioned like NS2, NSP, Stingray, could use it.  Since This Cygnus is in very very early stage and No customer is using it so we can afford it to address ngpio from DT and remove Cygnus hard coded values immediately from this patch. Otherwise we will see the same issue with "gpios-ranges" property and this will be highly inter-dependent as well.
>
> Regards,
> Pramod
>

That sounds fine to me. In this case, the patch set stays as it is and 
no change is required.

Thanks,

Ray

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-19  5:43 ` [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node Pramod Kumar
  2015-10-22 18:43   ` Rob Herring
@ 2015-10-27  9:41   ` Linus Walleij
  2015-10-28  5:14     ` Pramod Kumar
  1 sibling, 1 reply; 41+ messages in thread
From: Linus Walleij @ 2015-10-27  9:41 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Mon, Oct 19, 2015 at 7:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:

> Add ngpios property to the gpio controller's DT node so that controller
> driver extracts total number of gpio lines present in controller
> from DT and removes dependency on driver.
>
> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>
(...)
> +- ngpios:
> +    Total number of GPIOs the controller provides

This description is wrong. The number of GPIOs the controller *provides*
is to be determined by the compatible-string.

ngpios is used to restrict the number of lines *used* or *routed* from
the number *available*. (I hope that is what the code does as well.)
Such as if 12 GPIOs are used of the 32 available on 32bits in a
register.

Update this description to say what it really means.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 01/11] dt-bindings: pinctrl: Optional DT property to support pin mappings
  2015-10-19  5:43 ` [PATCH 01/11] dt-bindings: pinctrl: Optional DT property to support pin mappings Pramod Kumar
  2015-10-22 18:45   ` Rob Herring
@ 2015-10-27  9:43   ` Linus Walleij
  1 sibling, 0 replies; 41+ messages in thread
From: Linus Walleij @ 2015-10-27  9:43 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Mon, Oct 19, 2015 at 7:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:

> If GPIO controller's pins are muxed, pin-controller subsystem
> need to be intimated by defining mapping between gpio and
> pinmux controller. This patch adds required properties to
> define this mapping via DT.
>
> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>

Applied with Rob's ACK and a tweak to the subject line.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 02/11] pinctrl: Remove GPIO to Pinctrl pin mapping from driver
  2015-10-19  5:43 ` [PATCH 02/11] pinctrl: Remove GPIO to Pinctrl pin mapping from driver Pramod Kumar
@ 2015-10-27  9:45   ` Linus Walleij
  0 siblings, 0 replies; 41+ messages in thread
From: Linus Walleij @ 2015-10-27  9:45 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Mon, Oct 19, 2015 at 7:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:

> Remove gpio to pinctrl pin mapping code from driver and
> address this through standard property "gpio-ranges".
>
> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>

Patch applied with a small subject tweak.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 03/11] dts: pinctrl: Add GPIO to Pinctrl pin mapping in DT
  2015-10-19  5:43 ` [PATCH 03/11] dts: pinctrl: Add GPIO to Pinctrl pin mapping in DT Pramod Kumar
@ 2015-10-27  9:46   ` Linus Walleij
  2015-11-18 18:39   ` Florian Fainelli
  1 sibling, 0 replies; 41+ messages in thread
From: Linus Walleij @ 2015-10-27  9:46 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Mon, Oct 19, 2015 at 7:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:

> ASIU gpio controller's pins are muxed with pin-cntroller.
> Add this mapping through property "gpio-ranges".
>
> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Please funnel this through the Broadcom Cygnus/ARM SoC tree.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 04/11] dt-binding: Add new compatible string for gpio controller driver
  2015-10-19  5:43 ` [PATCH 04/11] dt-binding: Add new compatible string for gpio controller driver Pramod Kumar
  2015-10-22 18:40   ` Rob Herring
@ 2015-10-27  9:49   ` Linus Walleij
  1 sibling, 0 replies; 41+ messages in thread
From: Linus Walleij @ 2015-10-27  9:49 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Mon, Oct 19, 2015 at 7:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:

> This new compatible string, "brcm,iproc-gpio", should be used for
> all new iproc-based future SoCs.
>
> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>

Patch applied with subject tweak.

Think about Rob's comment to add an overarching SoC
compatible string, please.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 07/11] pinctrl: use ngpios propety from DT
  2015-10-19  5:43 ` [PATCH 07/11] pinctrl: use ngpios propety from DT Pramod Kumar
@ 2015-10-27  9:51   ` Linus Walleij
  2015-10-28 11:52     ` Pramod Kumar
  0 siblings, 1 reply; 41+ messages in thread
From: Linus Walleij @ 2015-10-27  9:51 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Mon, Oct 19, 2015 at 7:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:

> Since identical hardware is used in several instances and all pins
> are not routed to pinctrl hence getting total number of gpios from
> DT make more sense hence stop using total number of gpios pins from
> drivers and extract it from DT.
>
> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>

This patch is wrong.

Keep this per-compatible code, and only overrid the ngpios
if and only if:

- The ngpios is set in the DT node
- The ngpios in the DT node is *smaller* than the hardware
  defined number of GPIOs.

ngpios is for restricting the number of available lines due to
routing etc, not to define what the hardware has, because the
hardware most certainly have all the lines, it's just that you're
not using all of them.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 08/11] pinctrl: Add new compatible string to GPIO controller driver
  2015-10-19  5:43 ` [PATCH 08/11] pinctrl: Add new compatible string to GPIO controller driver Pramod Kumar
@ 2015-10-27  9:54   ` Linus Walleij
  0 siblings, 0 replies; 41+ messages in thread
From: Linus Walleij @ 2015-10-27  9:54 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, linux-gpio,
	BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On Mon, Oct 19, 2015 at 7:43 AM, Pramod Kumar <pramodku@broadcom.com> wrote:

> This compatible string should be used for all new iproc based future
> SoCs having the same GPIO controller hardware.
>
> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>

Stopped applying patches, this looks OK but you will have
to rebase the series on my "devel" branch, addressing the
review comments.

Yours,
Linus Wallewij

^ permalink raw reply	[flat|nested] 41+ messages in thread

* RE: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node
  2015-10-27  9:41   ` Linus Walleij
@ 2015-10-28  5:14     ` Pramod Kumar
  0 siblings, 0 replies; 41+ messages in thread
From: Pramod Kumar @ 2015-10-28  5:14 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, linux-gpio,
	bcm-kernel-feedback-list, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, Laurent Pinchart, devicetree, linux-arm-kernel,
	linux-kernel, Jonas Gorski

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 1757 bytes --]

Hi Linus,

> -----Original Message-----
> From: Linus Walleij [mailto:linus.walleij@linaro.org]
> Sent: 27 October 2015 15:11
> To: Pramod Kumar
> Cc: Rob Herring; Pawel Moll; Mark Rutland; Ian Campbell; Kumar Gala; Ray Jui;
> Scott Branden; Russell King; linux-gpio@vger.kernel.org; bcm-kernel-feedback-
> list; Jason Uy; Masahiro Yamada; Thomas Gleixner; Laurent Pinchart;
> devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-
> kernel@vger.kernel.org; Jonas Gorski
> Subject: Re: [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller
> node
> 
> On Mon, Oct 19, 2015 at 7:43 AM, Pramod Kumar <pramodku@broadcom.com>
> wrote:
> 
> > Add ngpios property to the gpio controller's DT node so that
> > controller driver extracts total number of gpio lines present in
> > controller from DT and removes dependency on driver.
> >
> > Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> > Reviewed-by: Ray Jui <rjui@broadcom.com>
> > Reviewed-by: Scott Branden <sbranden@broadcom.com>
> (...)
> > +- ngpios:
> > +    Total number of GPIOs the controller provides
> 
> This description is wrong. The number of GPIOs the controller *provides* is to
> be determined by the compatible-string.
> 
> ngpios is used to restrict the number of lines *used* or *routed* from the
> number *available*. (I hope that is what the code does as well.) Such as if 12
> GPIOs are used of the 32 available on 32bits in a register.
> 
> Update this description to say what it really means.
> 
> Yours,
> Linus Walleij

Thanks for reviewing . Will update the description.

Regards,
Pramod
ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 41+ messages in thread

* RE: [PATCH 07/11] pinctrl: use ngpios propety from DT
  2015-10-27  9:51   ` Linus Walleij
@ 2015-10-28 11:52     ` Pramod Kumar
  2015-10-28 15:39       ` Ray Jui
  2015-10-29 14:36       ` Linus Walleij
  0 siblings, 2 replies; 41+ messages in thread
From: Pramod Kumar @ 2015-10-28 11:52 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, linux-gpio,
	bcm-kernel-feedback-list, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, Laurent Pinchart, devicetree, linux-arm-kernel,
	linux-kernel, Jonas Gorski

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 2387 bytes --]

Hi Linus,

> -----Original Message-----
> From: Linus Walleij [mailto:linus.walleij@linaro.org]
> Sent: 27 October 2015 15:22
> To: Pramod Kumar
> Cc: Rob Herring; Pawel Moll; Mark Rutland; Ian Campbell; Kumar Gala; Ray Jui;
> Scott Branden; Russell King; linux-gpio@vger.kernel.org; bcm-kernel-feedback-
> list; Jason Uy; Masahiro Yamada; Thomas Gleixner; Laurent Pinchart;
> devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-
> kernel@vger.kernel.org; Jonas Gorski
> Subject: Re: [PATCH 07/11] pinctrl: use ngpios propety from DT
> 
> On Mon, Oct 19, 2015 at 7:43 AM, Pramod Kumar <pramodku@broadcom.com>
> wrote:
> 
> > Since identical hardware is used in several instances and all pins are
> > not routed to pinctrl hence getting total number of gpios from DT make
> > more sense hence stop using total number of gpios pins from drivers
> > and extract it from DT.
> >
> > Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> > Reviewed-by: Ray Jui <rjui@broadcom.com>
> > Reviewed-by: Scott Branden <sbranden@broadcom.com>
> 
> This patch is wrong.
> 
> Keep this per-compatible code, and only overrid the ngpios if and only if:
> 
> - The ngpios is set in the DT node
> - The ngpios in the DT node is *smaller* than the hardware
>   defined number of GPIOs.
> 
> ngpios is for restricting the number of available lines due to routing etc, not to
> define what the hardware has, because the hardware most certainly have all the
> lines, it's just that you're not using all of them.
> 
> Yours,
> Linus Walleij

I discussed with ASIC team regarding this iProc GPIO block. They use a library to create the GPIOs block where "total number of GPIO pins( let say N) in GPIO block" is used as an parameter. 
Library uses a construct for *a* GPIO pin. This gets instantiated N times to create a complete GPIO block with N pins.

All iProc based SoCs uses this library. So I'm not sure whether attaching "total number of GPIOs pins" to compatible-string make sense in this case. 
I personally feel that passing this number from the DT makes more sense here. Any iProc based future as well as current SoCs would be able to use this driver without any change.

Please advise us in this case.

Regards,
Pramod
ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 07/11] pinctrl: use ngpios propety from DT
  2015-10-28 11:52     ` Pramod Kumar
@ 2015-10-28 15:39       ` Ray Jui
  2015-10-29 14:36       ` Linus Walleij
  1 sibling, 0 replies; 41+ messages in thread
From: Ray Jui @ 2015-10-28 15:39 UTC (permalink / raw)
  To: Pramod Kumar, Linus Walleij
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Scott Branden, Russell King, linux-gpio,
	bcm-kernel-feedback-list, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, Laurent Pinchart, devicetree, linux-arm-kernel,
	linux-kernel, Jonas Gorski



On 10/28/2015 4:52 AM, Pramod Kumar wrote:
> Hi Linus,
>
>> -----Original Message-----
>> From: Linus Walleij [mailto:linus.walleij@linaro.org]
>> Sent: 27 October 2015 15:22
>> To: Pramod Kumar
>> Cc: Rob Herring; Pawel Moll; Mark Rutland; Ian Campbell; Kumar Gala; Ray Jui;
>> Scott Branden; Russell King; linux-gpio@vger.kernel.org; bcm-kernel-feedback-
>> list; Jason Uy; Masahiro Yamada; Thomas Gleixner; Laurent Pinchart;
>> devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-
>> kernel@vger.kernel.org; Jonas Gorski
>> Subject: Re: [PATCH 07/11] pinctrl: use ngpios propety from DT
>>
>> On Mon, Oct 19, 2015 at 7:43 AM, Pramod Kumar <pramodku@broadcom.com>
>> wrote:
>>
>>> Since identical hardware is used in several instances and all pins are
>>> not routed to pinctrl hence getting total number of gpios from DT make
>>> more sense hence stop using total number of gpios pins from drivers
>>> and extract it from DT.
>>>
>>> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
>>> Reviewed-by: Ray Jui <rjui@broadcom.com>
>>> Reviewed-by: Scott Branden <sbranden@broadcom.com>
>>
>> This patch is wrong.
>>
>> Keep this per-compatible code, and only overrid the ngpios if and only if:
>>
>> - The ngpios is set in the DT node
>> - The ngpios in the DT node is *smaller* than the hardware
>>    defined number of GPIOs.
>>
>> ngpios is for restricting the number of available lines due to routing etc, not to
>> define what the hardware has, because the hardware most certainly have all the
>> lines, it's just that you're not using all of them.
>>
>> Yours,
>> Linus Walleij
>
> I discussed with ASIC team regarding this iProc GPIO block. They use a library to create the GPIOs block where "total number of GPIO pins( let say N) in GPIO block" is used as an parameter.
> Library uses a construct for *a* GPIO pin. This gets instantiated N times to create a complete GPIO block with N pins.

Just to confirm, N can be *any number*, and when it exceeds 32, 
additional registers will be created by the library, correct? I think 
that's what I saw with Cygnus, where 3 instances of this GPIO controller 
was used, with two of them less supporting less than 32 GPIOs and one of 
them (ASIU) supporting 146 GPIOs, in which case, 5 register banks are 
used with 0x200 segment each.

>
> All iProc based SoCs uses this library. So I'm not sure whether attaching "total number of GPIOs pins" to compatible-string make sense in this case.

The closest I can think of is to tie a very large number of N to the 
"brcm,iproc-gpio" compatible string for all new iProc SoCs, but even 
that, one can argue how large is *large*

> I personally feel that passing this number from the DT makes more sense here. Any iProc based future as well as current SoCs would be able to use this driver without any change.
>
> Please advise us in this case.
>
> Regards,
> Pramod
>

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 07/11] pinctrl: use ngpios propety from DT
  2015-10-28 11:52     ` Pramod Kumar
  2015-10-28 15:39       ` Ray Jui
@ 2015-10-29 14:36       ` Linus Walleij
  2015-10-29 14:47         ` Jonas Gorski
  1 sibling, 1 reply; 41+ messages in thread
From: Linus Walleij @ 2015-10-29 14:36 UTC (permalink / raw)
  To: Pramod Kumar
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, linux-gpio,
	bcm-kernel-feedback-list, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, Laurent Pinchart, devicetree, linux-arm-kernel,
	linux-kernel, Jonas Gorski

On Wed, Oct 28, 2015 at 12:52 PM, Pramod Kumar <pramodku@broadcom.com> wrote:

> I discussed with ASIC team regarding this iProc GPIO block. They use a library to create the GPIOs block where "total number of GPIO pins( let say N) in GPIO block" is used as an parameter.
> Library uses a construct for *a* GPIO pin. This gets instantiated N times to create a complete GPIO block with N pins.
>
> All iProc based SoCs uses this library. So I'm not sure whether attaching "total number of GPIOs pins" to compatible-string make sense in this case.
> I personally feel that passing this number from the DT makes more sense here. Any iProc based future as well as current SoCs would be able to use this driver without any change.
>
> Please advise us in this case.

Hm! You make a good case.

But this contradicts the traditional use of ngpios.

But on the other hand:
git grep ngpio Documentation/devicetree/bindings/gpio/

Gives at hand that the use of ngpio[s] is a complete mess.

:(

I will think about patching the standard bindings to fix this mess
and include your case. Give me some time.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 07/11] pinctrl: use ngpios propety from DT
  2015-10-29 14:36       ` Linus Walleij
@ 2015-10-29 14:47         ` Jonas Gorski
  2015-10-30 11:06           ` Linus Walleij
  0 siblings, 1 reply; 41+ messages in thread
From: Jonas Gorski @ 2015-10-29 14:47 UTC (permalink / raw)
  To: Linus Walleij, Pramod Kumar
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Ray Jui, Scott Branden, Russell King, linux-gpio,
	bcm-kernel-feedback-list, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, Laurent Pinchart, devicetree, linux-arm-kernel,
	linux-kernel

On 29.10.2015 15:36, Linus Walleij wrote:
> On Wed, Oct 28, 2015 at 12:52 PM, Pramod Kumar <pramodku@broadcom.com> wrote:
> 
>> I discussed with ASIC team regarding this iProc GPIO block. They use a library to create the GPIOs block where "total number of GPIO pins( let say N) in GPIO block" is used as an parameter.
>> Library uses a construct for *a* GPIO pin. This gets instantiated N times to create a complete GPIO block with N pins.
>>
>> All iProc based SoCs uses this library. So I'm not sure whether attaching "total number of GPIOs pins" to compatible-string make sense in this case.
>> I personally feel that passing this number from the DT makes more sense here. Any iProc based future as well as current SoCs would be able to use this driver without any change.
>>
>> Please advise us in this case.
> 
> Hm! You make a good case.
> 
> But this contradicts the traditional use of ngpios.
> 
> But on the other hand:
> git grep ngpio Documentation/devicetree/bindings/gpio/
> 
> Gives at hand that the use of ngpio[s] is a complete mess.
> 
> :(
> 
> I will think about patching the standard bindings to fix this mess
> and include your case. Give me some time.

Using ngpios to restrict the amount of actually available GPIOs from
the possible amount of GPIOs seems a rather limited use, as rerouted
gpios are seldom at the end of the GPIO space.

So maybe it makes more sense to use ngpio as the number of
possible gpios and then have an additional "reserved-gpios"
bitmask / list of unavailable gpios?

Ideally those would be just consumed by a pinctrl instance, but I
guess that these are sometimes controlled through pinstrapping,
so there might be no driver to attach to them.

Regards
Jonas

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 07/11] pinctrl: use ngpios propety from DT
  2015-10-29 14:47         ` Jonas Gorski
@ 2015-10-30 11:06           ` Linus Walleij
  0 siblings, 0 replies; 41+ messages in thread
From: Linus Walleij @ 2015-10-30 11:06 UTC (permalink / raw)
  To: Jonas Gorski
  Cc: Pramod Kumar, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, Ray Jui, Scott Branden, Russell King,
	linux-gpio, bcm-kernel-feedback-list, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, Laurent Pinchart, devicetree, linux-arm-kernel,
	linux-kernel

On Thu, Oct 29, 2015 at 3:47 PM, Jonas Gorski <jogo@openwrt.org> wrote:

> Using ngpios to restrict the amount of actually available GPIOs from
> the possible amount of GPIOs seems a rather limited use, as rerouted
> gpios are seldom at the end of the GPIO space.

I need an example.

> So maybe it makes more sense to use ngpio as the number of
> possible gpios and then have an additional "reserved-gpios"
> bitmask / list of unavailable gpios?

This idea is good, but let's not make upfront design until we have a
piece of hardware that requires exactly this.

I sent a patch to the gpio.txt binding including a diplomatic statement
on this...

> Ideally those would be just consumed by a pinctrl instance, but I
> guess that these are sometimes controlled through pinstrapping,
> so there might be no driver to attach to them.

Uhmm.... Not quite following but all right... With gpio ranges the
GPIO to pins are mapped, and they can switch functions at runtime.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 41+ messages in thread

* Re: [PATCH 03/11] dts: pinctrl: Add GPIO to Pinctrl pin mapping in DT
  2015-10-19  5:43 ` [PATCH 03/11] dts: pinctrl: Add GPIO to Pinctrl pin mapping in DT Pramod Kumar
  2015-10-27  9:46   ` Linus Walleij
@ 2015-11-18 18:39   ` Florian Fainelli
  2015-11-19  3:34     ` Pramod Kumar
  1 sibling, 1 reply; 41+ messages in thread
From: Florian Fainelli @ 2015-11-18 18:39 UTC (permalink / raw)
  To: Pramod Kumar, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, Ray Jui, Scott Branden, Russell King,
	Linus Walleij, linux-gpio
  Cc: BCM Kernel Feedback, Jason Uy, Masahiro Yamada, Thomas Gleixner,
	Laurent Pinchart, devicetree, linux-arm-kernel, linux-kernel,
	Jonas Gorski

On 18/10/15 22:43, Pramod Kumar wrote:
> ASIU gpio controller's pins are muxed with pin-cntroller.
> Add this mapping through property "gpio-ranges".
> 
> Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> Reviewed-by: Ray Jui <rjui@broadcom.com>
> Reviewed-by: Scott Branden <sbranden@broadcom.com>

Applied to devicetree/next, since there was a bit of restructuring, I
had to manually apply it, please verify the resolution looks correct to you.

Thanks!
-- 
Florian

^ permalink raw reply	[flat|nested] 41+ messages in thread

* RE: [PATCH 03/11] dts: pinctrl: Add GPIO to Pinctrl pin mapping in DT
  2015-11-18 18:39   ` Florian Fainelli
@ 2015-11-19  3:34     ` Pramod Kumar
  0 siblings, 0 replies; 41+ messages in thread
From: Pramod Kumar @ 2015-11-19  3:34 UTC (permalink / raw)
  To: Florian Fainelli, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, Ray Jui, Scott Branden, Russell King,
	Linus Walleij, linux-gpio
  Cc: bcm-kernel-feedback-list, Jason Uy, Masahiro Yamada,
	Thomas Gleixner, Laurent Pinchart, devicetree, linux-arm-kernel,
	linux-kernel, Jonas Gorski

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 1335 bytes --]

Hi Florian,

> -----Original Message-----
> From: Florian Fainelli [mailto:f.fainelli@gmail.com]
> Sent: 19 November 2015 00:10
> To: Pramod Kumar; Rob Herring; Pawel Moll; Mark Rutland; Ian Campbell;
> Kumar Gala; Ray Jui; Scott Branden; Russell King; Linus Walleij; linux-
> gpio@vger.kernel.org
> Cc: bcm-kernel-feedback-list; Jason Uy; Masahiro Yamada; Thomas Gleixner;
> Laurent Pinchart; devicetree@vger.kernel.org; linux-arm-
> kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Jonas Gorski
> Subject: Re: [PATCH 03/11] dts: pinctrl: Add GPIO to Pinctrl pin mapping in DT
> 
> On 18/10/15 22:43, Pramod Kumar wrote:
> > ASIU gpio controller's pins are muxed with pin-cntroller.
> > Add this mapping through property "gpio-ranges".
> >
> > Signed-off-by: Pramod Kumar <pramodku@broadcom.com>
> > Reviewed-by: Ray Jui <rjui@broadcom.com>
> > Reviewed-by: Scott Branden <sbranden@broadcom.com>
> 
> Applied to devicetree/next, since there was a bit of restructuring, I had to
> manually apply it, please verify the resolution looks correct to you.

Applied patch looks fine. Thanks for having time in restructuring. 

Regards,
Pramod

> 
> Thanks!
> --
> Florian
ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2015-11-19  3:35 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-19  5:43 [PATCH 00/11] Generalized broadcom cygnus gpio driver Pramod Kumar
2015-10-19  5:43 ` [PATCH 01/11] dt-bindings: pinctrl: Optional DT property to support pin mappings Pramod Kumar
2015-10-22 18:45   ` Rob Herring
2015-10-27  9:43   ` Linus Walleij
2015-10-19  5:43 ` [PATCH 02/11] pinctrl: Remove GPIO to Pinctrl pin mapping from driver Pramod Kumar
2015-10-27  9:45   ` Linus Walleij
2015-10-19  5:43 ` [PATCH 03/11] dts: pinctrl: Add GPIO to Pinctrl pin mapping in DT Pramod Kumar
2015-10-27  9:46   ` Linus Walleij
2015-11-18 18:39   ` Florian Fainelli
2015-11-19  3:34     ` Pramod Kumar
2015-10-19  5:43 ` [PATCH 04/11] dt-binding: Add new compatible string for gpio controller driver Pramod Kumar
2015-10-22 18:40   ` Rob Herring
2015-10-27  9:49   ` Linus Walleij
2015-10-19  5:43 ` [PATCH 05/11] dt-binding: Add ngpios property to GPIO controller node Pramod Kumar
2015-10-22 18:43   ` Rob Herring
2015-10-22 18:52     ` Ray Jui
2015-10-22 23:41       ` Rob Herring
2015-10-23  9:08         ` Laurent Pinchart
2015-10-23 11:51           ` Rob Herring
2015-10-23 13:02             ` Laurent Pinchart
2015-10-23 16:08               ` Ray Jui
2015-10-26 17:08                 ` Pramod Kumar
2015-10-26 17:12                   ` Ray Jui
2015-10-26 18:06                     ` Pramod Kumar
2015-10-26 18:08                       ` Ray Jui
2015-10-27  9:41   ` Linus Walleij
2015-10-28  5:14     ` Pramod Kumar
2015-10-19  5:43 ` [PATCH 06/11] dts: define ngpios property in gpio controller's node Pramod Kumar
2015-10-19  5:43 ` [PATCH 07/11] pinctrl: use ngpios propety from DT Pramod Kumar
2015-10-27  9:51   ` Linus Walleij
2015-10-28 11:52     ` Pramod Kumar
2015-10-28 15:39       ` Ray Jui
2015-10-29 14:36       ` Linus Walleij
2015-10-29 14:47         ` Jonas Gorski
2015-10-30 11:06           ` Linus Walleij
2015-10-19  5:43 ` [PATCH 08/11] pinctrl: Add new compatible string to GPIO controller driver Pramod Kumar
2015-10-27  9:54   ` Linus Walleij
2015-10-19  5:43 ` [PATCH 09/11] gpio: Rename func/macro/var to IP-block,iproc Pramod Kumar
2015-10-19  5:43 ` [PATCH 10/11] Documentation: Rename gpio controller name from cygnus to iproc Pramod Kumar
2015-10-22 18:41   ` Rob Herring
2015-10-19  5:43 ` [PATCH 11/11] pinctrl: Rename gpio driver " Pramod Kumar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).