All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-12 18:12 ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-12 18:12 UTC (permalink / raw)
  To: Linus Walleij, Sekhar Nori, Santosh Shilimkar
  Cc: Rob Herring, prabhakar.csengg, linux-gpio, linux-kernel,
	davinci-linux-open-source, linux-arm-kernel, Grygorii Strashko

This series is intended to update Davinci GPIO driver and reuse
it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
Keystone GPIO IP: supports:
- up to 32 GPIO lines;
- only unbanked irqs;

See Documentation:
Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf

This series depends on:
[1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
https://lkml.org/lkml/2013/11/8/22
[2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
https://www.mail-archive.com/devicetree@vger.kernel.org/msg05970.html
[3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
https://lkml.org/lkml/2013/11/26/405
[4] "gpio: introduce GPIO_DAVINCI kconfig option"
https://lkml.org/lkml/2013/11/26/435
[5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
https://lkml.org/lkml/2013/11/26/428

To handle all dependencies, I've created a branch where I collected all 
"ready to merge" patches (all acks added in patches) and this series:
- https://github.com/grygoriyS/linux.git
- branch: keystone-master-gpio-for-next

The "keystone-master-gpio-for-next" based on:
 https://git.kernel.org/cgit/linux/kernel/git/ssantosh/linux-keystone.git
 branch: keystone/master

+ where I've merged in:
 https://git.kernel.org/cgit/linux/kernel/git/nsekhar/linux-davinci.git
 branch: fixes

List of commits:
 6fb66de gpio: davinci: reuse for Keystone SoC
 c0c5422 gpio: davinci: don't create irq_domain in case of unbanked irqs
 df9f7bc gpio: davinci: use chained_irq_enter/chained_irq_exit API
 6230c92 gpio: davinci: introduce GPIO_DAVINCI kconfig option
 8b0c1a8 gpio: davinci: get rid of DAVINCI_N_GPIO
 5eb07f7 gpio: davinci: add OF support
 df3e59d gpio: davinci: remove unused variable intc_irq_num
 38804b6 gpio: davinci: converts to use irqdomain
 94eac24 gpio: davinci: use {readl|writel}_relaxed() instead of __raw_*

CC: Linus Walleij <linus.walleij@linaro.org>
CC: Sekhar Nori <nsekhar@ti.com>
CC: Santosh Shilimkar <santosh.shilimkar@ti.com>

Grygorii Strashko (2):
  gpio: davinci: don't create irq_domain in case of unbanked irqs
  gpio: davinci: reuse for Keystone SoC

 .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
 drivers/gpio/gpio-davinci.c                        |   83 ++++++++++++++------
 2 files changed, 59 insertions(+), 28 deletions(-)

-- 
1.7.9.5


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

* [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-12 18:12 ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-12 18:12 UTC (permalink / raw)
  To: Linus Walleij, Sekhar Nori, Santosh Shilimkar
  Cc: Rob Herring, prabhakar.csengg, linux-gpio, linux-kernel,
	davinci-linux-open-source, linux-arm-kernel, Grygorii Strashko

This series is intended to update Davinci GPIO driver and reuse
it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
Keystone GPIO IP: supports:
- up to 32 GPIO lines;
- only unbanked irqs;

See Documentation:
Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf

This series depends on:
[1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
https://lkml.org/lkml/2013/11/8/22
[2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
https://www.mail-archive.com/devicetree@vger.kernel.org/msg05970.html
[3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
https://lkml.org/lkml/2013/11/26/405
[4] "gpio: introduce GPIO_DAVINCI kconfig option"
https://lkml.org/lkml/2013/11/26/435
[5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
https://lkml.org/lkml/2013/11/26/428

To handle all dependencies, I've created a branch where I collected all 
"ready to merge" patches (all acks added in patches) and this series:
- https://github.com/grygoriyS/linux.git
- branch: keystone-master-gpio-for-next

The "keystone-master-gpio-for-next" based on:
 https://git.kernel.org/cgit/linux/kernel/git/ssantosh/linux-keystone.git
 branch: keystone/master

+ where I've merged in:
 https://git.kernel.org/cgit/linux/kernel/git/nsekhar/linux-davinci.git
 branch: fixes

List of commits:
 6fb66de gpio: davinci: reuse for Keystone SoC
 c0c5422 gpio: davinci: don't create irq_domain in case of unbanked irqs
 df9f7bc gpio: davinci: use chained_irq_enter/chained_irq_exit API
 6230c92 gpio: davinci: introduce GPIO_DAVINCI kconfig option
 8b0c1a8 gpio: davinci: get rid of DAVINCI_N_GPIO
 5eb07f7 gpio: davinci: add OF support
 df3e59d gpio: davinci: remove unused variable intc_irq_num
 38804b6 gpio: davinci: converts to use irqdomain
 94eac24 gpio: davinci: use {readl|writel}_relaxed() instead of __raw_*

CC: Linus Walleij <linus.walleij@linaro.org>
CC: Sekhar Nori <nsekhar@ti.com>
CC: Santosh Shilimkar <santosh.shilimkar@ti.com>

Grygorii Strashko (2):
  gpio: davinci: don't create irq_domain in case of unbanked irqs
  gpio: davinci: reuse for Keystone SoC

 .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
 drivers/gpio/gpio-davinci.c                        |   83 ++++++++++++++------
 2 files changed, 59 insertions(+), 28 deletions(-)

-- 
1.7.9.5


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

* [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-12 18:12 ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-12 18:12 UTC (permalink / raw)
  To: linux-arm-kernel

This series is intended to update Davinci GPIO driver and reuse
it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
Keystone GPIO IP: supports:
- up to 32 GPIO lines;
- only unbanked irqs;

See Documentation:
Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf

This series depends on:
[1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
https://lkml.org/lkml/2013/11/8/22
[2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
https://www.mail-archive.com/devicetree at vger.kernel.org/msg05970.html
[3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
https://lkml.org/lkml/2013/11/26/405
[4] "gpio: introduce GPIO_DAVINCI kconfig option"
https://lkml.org/lkml/2013/11/26/435
[5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
https://lkml.org/lkml/2013/11/26/428

To handle all dependencies, I've created a branch where I collected all 
"ready to merge" patches (all acks added in patches) and this series:
- https://github.com/grygoriyS/linux.git
- branch: keystone-master-gpio-for-next

The "keystone-master-gpio-for-next" based on:
 https://git.kernel.org/cgit/linux/kernel/git/ssantosh/linux-keystone.git
 branch: keystone/master

+ where I've merged in:
 https://git.kernel.org/cgit/linux/kernel/git/nsekhar/linux-davinci.git
 branch: fixes

List of commits:
 6fb66de gpio: davinci: reuse for Keystone SoC
 c0c5422 gpio: davinci: don't create irq_domain in case of unbanked irqs
 df9f7bc gpio: davinci: use chained_irq_enter/chained_irq_exit API
 6230c92 gpio: davinci: introduce GPIO_DAVINCI kconfig option
 8b0c1a8 gpio: davinci: get rid of DAVINCI_N_GPIO
 5eb07f7 gpio: davinci: add OF support
 df3e59d gpio: davinci: remove unused variable intc_irq_num
 38804b6 gpio: davinci: converts to use irqdomain
 94eac24 gpio: davinci: use {readl|writel}_relaxed() instead of __raw_*

CC: Linus Walleij <linus.walleij@linaro.org>
CC: Sekhar Nori <nsekhar@ti.com>
CC: Santosh Shilimkar <santosh.shilimkar@ti.com>

Grygorii Strashko (2):
  gpio: davinci: don't create irq_domain in case of unbanked irqs
  gpio: davinci: reuse for Keystone SoC

 .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
 drivers/gpio/gpio-davinci.c                        |   83 ++++++++++++++------
 2 files changed, 59 insertions(+), 28 deletions(-)

-- 
1.7.9.5

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

* [PATCH 1/2] gpio: davinci: don't create irq_domain in case of unbanked irqs
  2013-12-12 18:12 ` Grygorii Strashko
  (?)
@ 2013-12-12 18:12   ` Grygorii Strashko
  -1 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-12 18:12 UTC (permalink / raw)
  To: Linus Walleij, Sekhar Nori, Santosh Shilimkar
  Cc: Rob Herring, prabhakar.csengg, linux-gpio, linux-kernel,
	davinci-linux-open-source, linux-arm-kernel, Grygorii Strashko

The system may crash if:
- there are more then 1 bank
- unbanked irqs are enabled
- someone will call gpio_to_irq() for GPIO from bank2 or above

Hence, fix it by not creating irq_domain if unbanked irqs are enabled
and correct gpio_to_irq_banked() to handle this properly.

CC: Linus Walleij <linus.walleij@linaro.org>
CC: Sekhar Nori <nsekhar@ti.com>
CC: Santosh Shilimkar <santosh.shilimkar@ti.com>

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
 drivers/gpio/gpio-davinci.c |   34 +++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 15 deletions(-)

diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index 9379b4d..73f65ca 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -351,7 +351,10 @@ static int gpio_to_irq_banked(struct gpio_chip *chip, unsigned offset)
 {
 	struct davinci_gpio_controller *d = chip2controller(chip);
 
-	return irq_create_mapping(d->irq_domain, d->chip.base + offset);
+	if (d->irq_domain)
+		return irq_create_mapping(d->irq_domain, d->chip.base + offset);
+	else
+		return -ENXIO;
 }
 
 static int gpio_to_irq_unbanked(struct gpio_chip *chip, unsigned offset)
@@ -429,7 +432,7 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	struct davinci_gpio_controller *chips = platform_get_drvdata(pdev);
 	struct davinci_gpio_platform_data *pdata = dev->platform_data;
 	struct davinci_gpio_regs __iomem *g;
-	struct irq_domain	*irq_domain;
+	struct irq_domain	*irq_domain = NULL;
 
 	ngpio = pdata->ngpio;
 	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
@@ -453,18 +456,20 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	}
 	clk_prepare_enable(clk);
 
-	irq = irq_alloc_descs(-1, 0, ngpio, 0);
-	if (irq < 0) {
-		dev_err(dev, "Couldn't allocate IRQ numbers\n");
-		return -ENODEV;
-	}
+	if (!pdata->gpio_unbanked) {
+		irq = irq_alloc_descs(-1, 0, ngpio, 0);
+		if (irq < 0) {
+			dev_err(dev, "Couldn't allocate IRQ numbers\n");
+			return -ENODEV;
+		}
 
-	irq_domain = irq_domain_add_legacy(NULL, ngpio, irq, 0,
-						&davinci_gpio_irq_ops,
-						chips);
-	if (!irq_domain) {
-		dev_err(dev, "Couldn't register an IRQ domain\n");
-		return -ENODEV;
+		irq_domain = irq_domain_add_legacy(NULL, ngpio, irq, 0,
+							&davinci_gpio_irq_ops,
+							chips);
+		if (!irq_domain) {
+			dev_err(dev, "Couldn't register an IRQ domain\n");
+			return -ENODEV;
+		}
 	}
 
 	/*
@@ -475,8 +480,7 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	 */
 	for (gpio = 0, bank = 0; gpio < ngpio; bank++, gpio += 32) {
 		chips[bank].chip.to_irq = gpio_to_irq_banked;
-		if (!pdata->gpio_unbanked)
-			chips[bank].irq_domain = irq_domain;
+		chips[bank].irq_domain = irq_domain;
 	}
 
 	/*
-- 
1.7.9.5


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

* [PATCH 1/2] gpio: davinci: don't create irq_domain in case of unbanked irqs
@ 2013-12-12 18:12   ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-12 18:12 UTC (permalink / raw)
  To: Linus Walleij, Sekhar Nori, Santosh Shilimkar
  Cc: Rob Herring, prabhakar.csengg, linux-gpio, linux-kernel,
	davinci-linux-open-source, linux-arm-kernel, Grygorii Strashko

The system may crash if:
- there are more then 1 bank
- unbanked irqs are enabled
- someone will call gpio_to_irq() for GPIO from bank2 or above

Hence, fix it by not creating irq_domain if unbanked irqs are enabled
and correct gpio_to_irq_banked() to handle this properly.

CC: Linus Walleij <linus.walleij@linaro.org>
CC: Sekhar Nori <nsekhar@ti.com>
CC: Santosh Shilimkar <santosh.shilimkar@ti.com>

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
 drivers/gpio/gpio-davinci.c |   34 +++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 15 deletions(-)

diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index 9379b4d..73f65ca 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -351,7 +351,10 @@ static int gpio_to_irq_banked(struct gpio_chip *chip, unsigned offset)
 {
 	struct davinci_gpio_controller *d = chip2controller(chip);
 
-	return irq_create_mapping(d->irq_domain, d->chip.base + offset);
+	if (d->irq_domain)
+		return irq_create_mapping(d->irq_domain, d->chip.base + offset);
+	else
+		return -ENXIO;
 }
 
 static int gpio_to_irq_unbanked(struct gpio_chip *chip, unsigned offset)
@@ -429,7 +432,7 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	struct davinci_gpio_controller *chips = platform_get_drvdata(pdev);
 	struct davinci_gpio_platform_data *pdata = dev->platform_data;
 	struct davinci_gpio_regs __iomem *g;
-	struct irq_domain	*irq_domain;
+	struct irq_domain	*irq_domain = NULL;
 
 	ngpio = pdata->ngpio;
 	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
@@ -453,18 +456,20 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	}
 	clk_prepare_enable(clk);
 
-	irq = irq_alloc_descs(-1, 0, ngpio, 0);
-	if (irq < 0) {
-		dev_err(dev, "Couldn't allocate IRQ numbers\n");
-		return -ENODEV;
-	}
+	if (!pdata->gpio_unbanked) {
+		irq = irq_alloc_descs(-1, 0, ngpio, 0);
+		if (irq < 0) {
+			dev_err(dev, "Couldn't allocate IRQ numbers\n");
+			return -ENODEV;
+		}
 
-	irq_domain = irq_domain_add_legacy(NULL, ngpio, irq, 0,
-						&davinci_gpio_irq_ops,
-						chips);
-	if (!irq_domain) {
-		dev_err(dev, "Couldn't register an IRQ domain\n");
-		return -ENODEV;
+		irq_domain = irq_domain_add_legacy(NULL, ngpio, irq, 0,
+							&davinci_gpio_irq_ops,
+							chips);
+		if (!irq_domain) {
+			dev_err(dev, "Couldn't register an IRQ domain\n");
+			return -ENODEV;
+		}
 	}
 
 	/*
@@ -475,8 +480,7 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	 */
 	for (gpio = 0, bank = 0; gpio < ngpio; bank++, gpio += 32) {
 		chips[bank].chip.to_irq = gpio_to_irq_banked;
-		if (!pdata->gpio_unbanked)
-			chips[bank].irq_domain = irq_domain;
+		chips[bank].irq_domain = irq_domain;
 	}
 
 	/*
-- 
1.7.9.5


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

* [PATCH 1/2] gpio: davinci: don't create irq_domain in case of unbanked irqs
@ 2013-12-12 18:12   ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-12 18:12 UTC (permalink / raw)
  To: linux-arm-kernel

The system may crash if:
- there are more then 1 bank
- unbanked irqs are enabled
- someone will call gpio_to_irq() for GPIO from bank2 or above

Hence, fix it by not creating irq_domain if unbanked irqs are enabled
and correct gpio_to_irq_banked() to handle this properly.

CC: Linus Walleij <linus.walleij@linaro.org>
CC: Sekhar Nori <nsekhar@ti.com>
CC: Santosh Shilimkar <santosh.shilimkar@ti.com>

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
 drivers/gpio/gpio-davinci.c |   34 +++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 15 deletions(-)

diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index 9379b4d..73f65ca 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -351,7 +351,10 @@ static int gpio_to_irq_banked(struct gpio_chip *chip, unsigned offset)
 {
 	struct davinci_gpio_controller *d = chip2controller(chip);
 
-	return irq_create_mapping(d->irq_domain, d->chip.base + offset);
+	if (d->irq_domain)
+		return irq_create_mapping(d->irq_domain, d->chip.base + offset);
+	else
+		return -ENXIO;
 }
 
 static int gpio_to_irq_unbanked(struct gpio_chip *chip, unsigned offset)
@@ -429,7 +432,7 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	struct davinci_gpio_controller *chips = platform_get_drvdata(pdev);
 	struct davinci_gpio_platform_data *pdata = dev->platform_data;
 	struct davinci_gpio_regs __iomem *g;
-	struct irq_domain	*irq_domain;
+	struct irq_domain	*irq_domain = NULL;
 
 	ngpio = pdata->ngpio;
 	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
@@ -453,18 +456,20 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	}
 	clk_prepare_enable(clk);
 
-	irq = irq_alloc_descs(-1, 0, ngpio, 0);
-	if (irq < 0) {
-		dev_err(dev, "Couldn't allocate IRQ numbers\n");
-		return -ENODEV;
-	}
+	if (!pdata->gpio_unbanked) {
+		irq = irq_alloc_descs(-1, 0, ngpio, 0);
+		if (irq < 0) {
+			dev_err(dev, "Couldn't allocate IRQ numbers\n");
+			return -ENODEV;
+		}
 
-	irq_domain = irq_domain_add_legacy(NULL, ngpio, irq, 0,
-						&davinci_gpio_irq_ops,
-						chips);
-	if (!irq_domain) {
-		dev_err(dev, "Couldn't register an IRQ domain\n");
-		return -ENODEV;
+		irq_domain = irq_domain_add_legacy(NULL, ngpio, irq, 0,
+							&davinci_gpio_irq_ops,
+							chips);
+		if (!irq_domain) {
+			dev_err(dev, "Couldn't register an IRQ domain\n");
+			return -ENODEV;
+		}
 	}
 
 	/*
@@ -475,8 +480,7 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	 */
 	for (gpio = 0, bank = 0; gpio < ngpio; bank++, gpio += 32) {
 		chips[bank].chip.to_irq = gpio_to_irq_banked;
-		if (!pdata->gpio_unbanked)
-			chips[bank].irq_domain = irq_domain;
+		chips[bank].irq_domain = irq_domain;
 	}
 
 	/*
-- 
1.7.9.5

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

* [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
  2013-12-12 18:12 ` Grygorii Strashko
  (?)
@ 2013-12-12 18:12     ` Grygorii Strashko
  -1 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-12 18:12 UTC (permalink / raw)
  To: Linus Walleij, Sekhar Nori, Santosh Shilimkar
  Cc: Rob Herring, prabhakar.csengg-Re5JQEeQqe8AvxtiuMwx3w,
	linux-gpio-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	Grygorii Strashko, devicetree-u79uwXL29TY76Z2rM5mHXA

The similar GPIO HW block is used by keystone SoCs as
in Davinci SoCs.
Hence, reuse Davinci GPIO driver for Keystone taking into
account that Keystone contains ARM GIC IRQ controller which
is implemented using IRQ Chip.

Documentation:
	http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf

CC: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
CC: Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org>
CC: Santosh Shilimkar <santosh.shilimkar-l0cyMroinI0@public.gmane.org>
CC: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

Signed-off-by: Grygorii Strashko <grygorii.strashko-l0cyMroinI0@public.gmane.org>
---
 .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
 drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
 2 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
index a2e839d..4ce9862 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
@@ -1,7 +1,7 @@
-Davinci GPIO controller bindings
+Davinci/Keystone GPIO controller bindings
 
 Required Properties:
-- compatible: should be "ti,dm6441-gpio"
+- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
 
 - reg: Physical base address of the controller and the size of memory mapped
        registers.
diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index 73f65ca..3e44e0c 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
 	.xlate = irq_domain_xlate_onetwocell,
 };
 
+static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
+{
+	static struct irq_chip_type gpio_unbanked;
+
+	gpio_unbanked = *container_of(irq_get_chip(irq),
+				      struct irq_chip_type, chip);
+
+	return &gpio_unbanked.chip;
+};
+
+static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
+{
+	static struct irq_chip gpio_unbanked;
+
+	gpio_unbanked = *irq_get_chip(irq);
+	pr_err("keystone_gpio_get_irq_chip\n");
+	return &gpio_unbanked;
+};
+
+static const struct of_device_id davinci_gpio_ids[];
+
 /*
  * NOTE:  for suspend/resume, probably best to make a platform_device with
  * suspend_late/resume_resume calls hooking into results of the set_wake()
@@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	struct davinci_gpio_platform_data *pdata = dev->platform_data;
 	struct davinci_gpio_regs __iomem *g;
 	struct irq_domain	*irq_domain = NULL;
+	const struct of_device_id *match;
+	struct irq_chip *irq_chip;
+	struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
+
+	gpio_get_irq_chip = davinci_gpio_get_irq_chip;
+	match = of_match_device(of_match_ptr(davinci_gpio_ids),
+				dev);
+	if (match)
+		gpio_get_irq_chip = match->data;
 
 	ngpio = pdata->ngpio;
 	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
@@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	}
 
 	bank_irq = res->start;
-
 	if (!bank_irq) {
 		dev_err(dev, "Invalid IRQ resource\n");
 		return -ENODEV;
@@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	}
 
 	/*
-	 * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
+	 * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
 	 * controller only handling trigger modes.  We currently assume no
 	 * IRQ mux conflicts; gpio_irq_type_unbanked() is only for GPIOs.
 	 */
 	if (pdata->gpio_unbanked) {
-		static struct irq_chip_type gpio_unbanked;
-
 		/* pass "bank 0" GPIO IRQs to AINTC */
 		chips[0].chip.to_irq = gpio_to_irq_unbanked;
 		chips[0].gpio_irq = bank_irq;
 		chips[0].gpio_unbanked = pdata->gpio_unbanked;
 		binten = BIT(0);
 
-		/* AINTC handles mask/unmask; GPIO handles triggering */
+		/* INTC handles mask/unmask; GPIO handles triggering */
 		irq = bank_irq;
-		gpio_unbanked = *container_of(irq_get_chip(irq),
-					      struct irq_chip_type, chip);
-		gpio_unbanked.chip.name = "GPIO-AINTC";
-		gpio_unbanked.chip.irq_set_type = gpio_irq_type_unbanked;
+		irq_chip = gpio_get_irq_chip(irq);
+		irq_chip->name = "GPIO-AINTC";
+		irq_chip->irq_set_type = gpio_irq_type_unbanked;
 
 		/* default trigger: both edges */
 		g = gpio2regs(0);
@@ -511,7 +537,7 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 
 		/* set the direct IRQs up to use that irqchip */
 		for (gpio = 0; gpio < pdata->gpio_unbanked; gpio++, irq++) {
-			irq_set_chip(irq, &gpio_unbanked.chip);
+			irq_set_chip(irq, irq_chip);
 			irq_set_handler_data(irq, &chips[gpio / 32]);
 			irq_set_status_flags(irq, IRQ_TYPE_EDGE_BOTH);
 		}
@@ -554,7 +580,8 @@ done:
 
 #if IS_ENABLED(CONFIG_OF)
 static const struct of_device_id davinci_gpio_ids[] = {
-	{ .compatible = "ti,dm6441-gpio", },
+	{ .compatible = "ti,keystone-gpio", keystone_gpio_get_irq_chip},
+	{ .compatible = "ti,dm6441-gpio", davinci_gpio_get_irq_chip},
 	{ /* sentinel */ },
 };
 MODULE_DEVICE_TABLE(of, davinci_gpio_ids);
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
@ 2013-12-12 18:12     ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-12 18:12 UTC (permalink / raw)
  To: Linus Walleij, Sekhar Nori, Santosh Shilimkar
  Cc: Rob Herring, prabhakar.csengg, linux-gpio, linux-kernel,
	davinci-linux-open-source, linux-arm-kernel, Grygorii Strashko,
	devicetree

The similar GPIO HW block is used by keystone SoCs as
in Davinci SoCs.
Hence, reuse Davinci GPIO driver for Keystone taking into
account that Keystone contains ARM GIC IRQ controller which
is implemented using IRQ Chip.

Documentation:
	http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf

CC: Linus Walleij <linus.walleij@linaro.org>
CC: Sekhar Nori <nsekhar@ti.com>
CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
CC: devicetree@vger.kernel.org

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
 .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
 drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
 2 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
index a2e839d..4ce9862 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
@@ -1,7 +1,7 @@
-Davinci GPIO controller bindings
+Davinci/Keystone GPIO controller bindings
 
 Required Properties:
-- compatible: should be "ti,dm6441-gpio"
+- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
 
 - reg: Physical base address of the controller and the size of memory mapped
        registers.
diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index 73f65ca..3e44e0c 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
 	.xlate = irq_domain_xlate_onetwocell,
 };
 
+static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
+{
+	static struct irq_chip_type gpio_unbanked;
+
+	gpio_unbanked = *container_of(irq_get_chip(irq),
+				      struct irq_chip_type, chip);
+
+	return &gpio_unbanked.chip;
+};
+
+static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
+{
+	static struct irq_chip gpio_unbanked;
+
+	gpio_unbanked = *irq_get_chip(irq);
+	pr_err("keystone_gpio_get_irq_chip\n");
+	return &gpio_unbanked;
+};
+
+static const struct of_device_id davinci_gpio_ids[];
+
 /*
  * NOTE:  for suspend/resume, probably best to make a platform_device with
  * suspend_late/resume_resume calls hooking into results of the set_wake()
@@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	struct davinci_gpio_platform_data *pdata = dev->platform_data;
 	struct davinci_gpio_regs __iomem *g;
 	struct irq_domain	*irq_domain = NULL;
+	const struct of_device_id *match;
+	struct irq_chip *irq_chip;
+	struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
+
+	gpio_get_irq_chip = davinci_gpio_get_irq_chip;
+	match = of_match_device(of_match_ptr(davinci_gpio_ids),
+				dev);
+	if (match)
+		gpio_get_irq_chip = match->data;
 
 	ngpio = pdata->ngpio;
 	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
@@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	}
 
 	bank_irq = res->start;
-
 	if (!bank_irq) {
 		dev_err(dev, "Invalid IRQ resource\n");
 		return -ENODEV;
@@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	}
 
 	/*
-	 * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
+	 * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
 	 * controller only handling trigger modes.  We currently assume no
 	 * IRQ mux conflicts; gpio_irq_type_unbanked() is only for GPIOs.
 	 */
 	if (pdata->gpio_unbanked) {
-		static struct irq_chip_type gpio_unbanked;
-
 		/* pass "bank 0" GPIO IRQs to AINTC */
 		chips[0].chip.to_irq = gpio_to_irq_unbanked;
 		chips[0].gpio_irq = bank_irq;
 		chips[0].gpio_unbanked = pdata->gpio_unbanked;
 		binten = BIT(0);
 
-		/* AINTC handles mask/unmask; GPIO handles triggering */
+		/* INTC handles mask/unmask; GPIO handles triggering */
 		irq = bank_irq;
-		gpio_unbanked = *container_of(irq_get_chip(irq),
-					      struct irq_chip_type, chip);
-		gpio_unbanked.chip.name = "GPIO-AINTC";
-		gpio_unbanked.chip.irq_set_type = gpio_irq_type_unbanked;
+		irq_chip = gpio_get_irq_chip(irq);
+		irq_chip->name = "GPIO-AINTC";
+		irq_chip->irq_set_type = gpio_irq_type_unbanked;
 
 		/* default trigger: both edges */
 		g = gpio2regs(0);
@@ -511,7 +537,7 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 
 		/* set the direct IRQs up to use that irqchip */
 		for (gpio = 0; gpio < pdata->gpio_unbanked; gpio++, irq++) {
-			irq_set_chip(irq, &gpio_unbanked.chip);
+			irq_set_chip(irq, irq_chip);
 			irq_set_handler_data(irq, &chips[gpio / 32]);
 			irq_set_status_flags(irq, IRQ_TYPE_EDGE_BOTH);
 		}
@@ -554,7 +580,8 @@ done:
 
 #if IS_ENABLED(CONFIG_OF)
 static const struct of_device_id davinci_gpio_ids[] = {
-	{ .compatible = "ti,dm6441-gpio", },
+	{ .compatible = "ti,keystone-gpio", keystone_gpio_get_irq_chip},
+	{ .compatible = "ti,dm6441-gpio", davinci_gpio_get_irq_chip},
 	{ /* sentinel */ },
 };
 MODULE_DEVICE_TABLE(of, davinci_gpio_ids);
-- 
1.7.9.5


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

* [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
@ 2013-12-12 18:12     ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-12 18:12 UTC (permalink / raw)
  To: linux-arm-kernel

The similar GPIO HW block is used by keystone SoCs as
in Davinci SoCs.
Hence, reuse Davinci GPIO driver for Keystone taking into
account that Keystone contains ARM GIC IRQ controller which
is implemented using IRQ Chip.

Documentation:
	http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf

CC: Linus Walleij <linus.walleij@linaro.org>
CC: Sekhar Nori <nsekhar@ti.com>
CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
CC: devicetree at vger.kernel.org

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
 .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
 drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
 2 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
index a2e839d..4ce9862 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
@@ -1,7 +1,7 @@
-Davinci GPIO controller bindings
+Davinci/Keystone GPIO controller bindings
 
 Required Properties:
-- compatible: should be "ti,dm6441-gpio"
+- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
 
 - reg: Physical base address of the controller and the size of memory mapped
        registers.
diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index 73f65ca..3e44e0c 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
 	.xlate = irq_domain_xlate_onetwocell,
 };
 
+static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
+{
+	static struct irq_chip_type gpio_unbanked;
+
+	gpio_unbanked = *container_of(irq_get_chip(irq),
+				      struct irq_chip_type, chip);
+
+	return &gpio_unbanked.chip;
+};
+
+static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
+{
+	static struct irq_chip gpio_unbanked;
+
+	gpio_unbanked = *irq_get_chip(irq);
+	pr_err("keystone_gpio_get_irq_chip\n");
+	return &gpio_unbanked;
+};
+
+static const struct of_device_id davinci_gpio_ids[];
+
 /*
  * NOTE:  for suspend/resume, probably best to make a platform_device with
  * suspend_late/resume_resume calls hooking into results of the set_wake()
@@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	struct davinci_gpio_platform_data *pdata = dev->platform_data;
 	struct davinci_gpio_regs __iomem *g;
 	struct irq_domain	*irq_domain = NULL;
+	const struct of_device_id *match;
+	struct irq_chip *irq_chip;
+	struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
+
+	gpio_get_irq_chip = davinci_gpio_get_irq_chip;
+	match = of_match_device(of_match_ptr(davinci_gpio_ids),
+				dev);
+	if (match)
+		gpio_get_irq_chip = match->data;
 
 	ngpio = pdata->ngpio;
 	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
@@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	}
 
 	bank_irq = res->start;
-
 	if (!bank_irq) {
 		dev_err(dev, "Invalid IRQ resource\n");
 		return -ENODEV;
@@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 	}
 
 	/*
-	 * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
+	 * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
 	 * controller only handling trigger modes.  We currently assume no
 	 * IRQ mux conflicts; gpio_irq_type_unbanked() is only for GPIOs.
 	 */
 	if (pdata->gpio_unbanked) {
-		static struct irq_chip_type gpio_unbanked;
-
 		/* pass "bank 0" GPIO IRQs to AINTC */
 		chips[0].chip.to_irq = gpio_to_irq_unbanked;
 		chips[0].gpio_irq = bank_irq;
 		chips[0].gpio_unbanked = pdata->gpio_unbanked;
 		binten = BIT(0);
 
-		/* AINTC handles mask/unmask; GPIO handles triggering */
+		/* INTC handles mask/unmask; GPIO handles triggering */
 		irq = bank_irq;
-		gpio_unbanked = *container_of(irq_get_chip(irq),
-					      struct irq_chip_type, chip);
-		gpio_unbanked.chip.name = "GPIO-AINTC";
-		gpio_unbanked.chip.irq_set_type = gpio_irq_type_unbanked;
+		irq_chip = gpio_get_irq_chip(irq);
+		irq_chip->name = "GPIO-AINTC";
+		irq_chip->irq_set_type = gpio_irq_type_unbanked;
 
 		/* default trigger: both edges */
 		g = gpio2regs(0);
@@ -511,7 +537,7 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
 
 		/* set the direct IRQs up to use that irqchip */
 		for (gpio = 0; gpio < pdata->gpio_unbanked; gpio++, irq++) {
-			irq_set_chip(irq, &gpio_unbanked.chip);
+			irq_set_chip(irq, irq_chip);
 			irq_set_handler_data(irq, &chips[gpio / 32]);
 			irq_set_status_flags(irq, IRQ_TYPE_EDGE_BOTH);
 		}
@@ -554,7 +580,8 @@ done:
 
 #if IS_ENABLED(CONFIG_OF)
 static const struct of_device_id davinci_gpio_ids[] = {
-	{ .compatible = "ti,dm6441-gpio", },
+	{ .compatible = "ti,keystone-gpio", keystone_gpio_get_irq_chip},
+	{ .compatible = "ti,dm6441-gpio", davinci_gpio_get_irq_chip},
 	{ /* sentinel */ },
 };
 MODULE_DEVICE_TABLE(of, davinci_gpio_ids);
-- 
1.7.9.5

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
  2013-12-12 18:12 ` Grygorii Strashko
  (?)
@ 2013-12-14 19:11   ` Santosh Shilimkar
  -1 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-14 19:11 UTC (permalink / raw)
  To: Linus Walleij, Sekhar Nori
  Cc: Grygorii Strashko, Rob Herring, prabhakar.csengg, linux-gpio,
	linux-kernel, davinci-linux-open-source, linux-arm-kernel

Linus, Sekhar,

On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
> This series is intended to update Davinci GPIO driver and reuse
> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
> Keystone GPIO IP: supports:
> - up to 32 GPIO lines;
> - only unbanked irqs;
> 
> See Documentation:
> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
> 
> This series depends on:
> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
> https://lkml.org/lkml/2013/11/8/22
> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
> https://www.mail-archive.com/devicetree@vger.kernel.org/msg05970.html
> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
> https://lkml.org/lkml/2013/11/26/405
> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
> https://lkml.org/lkml/2013/11/26/435
> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
> https://lkml.org/lkml/2013/11/26/428
> 
> To handle all dependencies, I've created a branch where I collected all 
> "ready to merge" patches (all acks added in patches) and this series:
> - https://github.com/grygoriyS/linux.git
> - branch: keystone-master-gpio-for-next
> 
Can one of you pull all these patches ?

If needed I can take these patches to arm-soc with Linus's ack
or can prepare a pull request which Linus W can pull from from.

Regards,
Santosh




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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-14 19:11   ` Santosh Shilimkar
  0 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-14 19:11 UTC (permalink / raw)
  To: Linus Walleij, Sekhar Nori
  Cc: Grygorii Strashko, Rob Herring, prabhakar.csengg, linux-gpio,
	linux-kernel, davinci-linux-open-source, linux-arm-kernel

Linus, Sekhar,

On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
> This series is intended to update Davinci GPIO driver and reuse
> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
> Keystone GPIO IP: supports:
> - up to 32 GPIO lines;
> - only unbanked irqs;
> 
> See Documentation:
> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
> 
> This series depends on:
> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
> https://lkml.org/lkml/2013/11/8/22
> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
> https://www.mail-archive.com/devicetree@vger.kernel.org/msg05970.html
> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
> https://lkml.org/lkml/2013/11/26/405
> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
> https://lkml.org/lkml/2013/11/26/435
> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
> https://lkml.org/lkml/2013/11/26/428
> 
> To handle all dependencies, I've created a branch where I collected all 
> "ready to merge" patches (all acks added in patches) and this series:
> - https://github.com/grygoriyS/linux.git
> - branch: keystone-master-gpio-for-next
> 
Can one of you pull all these patches ?

If needed I can take these patches to arm-soc with Linus's ack
or can prepare a pull request which Linus W can pull from from.

Regards,
Santosh




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

* [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-14 19:11   ` Santosh Shilimkar
  0 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-14 19:11 UTC (permalink / raw)
  To: linux-arm-kernel

Linus, Sekhar,

On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
> This series is intended to update Davinci GPIO driver and reuse
> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
> Keystone GPIO IP: supports:
> - up to 32 GPIO lines;
> - only unbanked irqs;
> 
> See Documentation:
> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
> 
> This series depends on:
> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
> https://lkml.org/lkml/2013/11/8/22
> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
> https://www.mail-archive.com/devicetree at vger.kernel.org/msg05970.html
> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
> https://lkml.org/lkml/2013/11/26/405
> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
> https://lkml.org/lkml/2013/11/26/435
> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
> https://lkml.org/lkml/2013/11/26/428
> 
> To handle all dependencies, I've created a branch where I collected all 
> "ready to merge" patches (all acks added in patches) and this series:
> - https://github.com/grygoriyS/linux.git
> - branch: keystone-master-gpio-for-next
> 
Can one of you pull all these patches ?

If needed I can take these patches to arm-soc with Linus's ack
or can prepare a pull request which Linus W can pull from from.

Regards,
Santosh

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
  2013-12-14 19:11   ` Santosh Shilimkar
  (?)
@ 2013-12-15 13:50       ` Sekhar Nori
  -1 siblings, 0 replies; 45+ messages in thread
From: Sekhar Nori @ 2013-12-15 13:50 UTC (permalink / raw)
  To: Santosh Shilimkar, Linus Walleij
  Cc: davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring,
	linux-gpio-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
> Linus, Sekhar,
> 
> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>> This series is intended to update Davinci GPIO driver and reuse
>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>> Keystone GPIO IP: supports:
>> - up to 32 GPIO lines;
>> - only unbanked irqs;
>>
>> See Documentation:
>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>
>> This series depends on:
>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>> https://lkml.org/lkml/2013/11/8/22
>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>> https://www.mail-archive.com/devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg05970.html
>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>> https://lkml.org/lkml/2013/11/26/405
>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>> https://lkml.org/lkml/2013/11/26/435
>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>> https://lkml.org/lkml/2013/11/26/428
>>
>> To handle all dependencies, I've created a branch where I collected all 
>> "ready to merge" patches (all acks added in patches) and this series:
>> - https://github.com/grygoriyS/linux.git
>> - branch: keystone-master-gpio-for-next
>>
> Can one of you pull all these patches ?

So I went through my backlog and queued all that I think is ready. Here
is the branch. Let me know if there is anything else missing.

https://git.kernel.org/cgit/linux/kernel/git/nsekhar/linux-davinci.git/log/?h=v3.14/gpio

Thanks,
Sekhar

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-15 13:50       ` Sekhar Nori
  0 siblings, 0 replies; 45+ messages in thread
From: Sekhar Nori @ 2013-12-15 13:50 UTC (permalink / raw)
  To: Santosh Shilimkar, Linus Walleij
  Cc: Grygorii Strashko, Rob Herring, prabhakar.csengg, linux-gpio,
	linux-kernel, davinci-linux-open-source, linux-arm-kernel

On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
> Linus, Sekhar,
> 
> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>> This series is intended to update Davinci GPIO driver and reuse
>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>> Keystone GPIO IP: supports:
>> - up to 32 GPIO lines;
>> - only unbanked irqs;
>>
>> See Documentation:
>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>
>> This series depends on:
>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>> https://lkml.org/lkml/2013/11/8/22
>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>> https://www.mail-archive.com/devicetree@vger.kernel.org/msg05970.html
>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>> https://lkml.org/lkml/2013/11/26/405
>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>> https://lkml.org/lkml/2013/11/26/435
>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>> https://lkml.org/lkml/2013/11/26/428
>>
>> To handle all dependencies, I've created a branch where I collected all 
>> "ready to merge" patches (all acks added in patches) and this series:
>> - https://github.com/grygoriyS/linux.git
>> - branch: keystone-master-gpio-for-next
>>
> Can one of you pull all these patches ?

So I went through my backlog and queued all that I think is ready. Here
is the branch. Let me know if there is anything else missing.

https://git.kernel.org/cgit/linux/kernel/git/nsekhar/linux-davinci.git/log/?h=v3.14/gpio

Thanks,
Sekhar

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

* [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-15 13:50       ` Sekhar Nori
  0 siblings, 0 replies; 45+ messages in thread
From: Sekhar Nori @ 2013-12-15 13:50 UTC (permalink / raw)
  To: linux-arm-kernel

On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
> Linus, Sekhar,
> 
> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>> This series is intended to update Davinci GPIO driver and reuse
>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>> Keystone GPIO IP: supports:
>> - up to 32 GPIO lines;
>> - only unbanked irqs;
>>
>> See Documentation:
>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>
>> This series depends on:
>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>> https://lkml.org/lkml/2013/11/8/22
>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>> https://www.mail-archive.com/devicetree at vger.kernel.org/msg05970.html
>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>> https://lkml.org/lkml/2013/11/26/405
>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>> https://lkml.org/lkml/2013/11/26/435
>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>> https://lkml.org/lkml/2013/11/26/428
>>
>> To handle all dependencies, I've created a branch where I collected all 
>> "ready to merge" patches (all acks added in patches) and this series:
>> - https://github.com/grygoriyS/linux.git
>> - branch: keystone-master-gpio-for-next
>>
> Can one of you pull all these patches ?

So I went through my backlog and queued all that I think is ready. Here
is the branch. Let me know if there is anything else missing.

https://git.kernel.org/cgit/linux/kernel/git/nsekhar/linux-davinci.git/log/?h=v3.14/gpio

Thanks,
Sekhar

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
  2013-12-15 13:50       ` Sekhar Nori
  (?)
@ 2013-12-15 13:54           ` Sekhar Nori
  -1 siblings, 0 replies; 45+ messages in thread
From: Sekhar Nori @ 2013-12-15 13:54 UTC (permalink / raw)
  To: Santosh Shilimkar, Linus Walleij
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-gpio-u79uwXL29TY76Z2rM5mHXA,
	davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring

On Sunday 15 December 2013 07:20 PM, Sekhar Nori wrote:
> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>> Linus, Sekhar,
>>
>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>> This series is intended to update Davinci GPIO driver and reuse
>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>> Keystone GPIO IP: supports:
>>> - up to 32 GPIO lines;
>>> - only unbanked irqs;
>>>
>>> See Documentation:
>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>
>>> This series depends on:
>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>> https://lkml.org/lkml/2013/11/8/22
>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>> https://www.mail-archive.com/devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg05970.html
>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>> https://lkml.org/lkml/2013/11/26/405
>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>> https://lkml.org/lkml/2013/11/26/435
>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>> https://lkml.org/lkml/2013/11/26/428
>>>
>>> To handle all dependencies, I've created a branch where I collected all 
>>> "ready to merge" patches (all acks added in patches) and this series:
>>> - https://github.com/grygoriyS/linux.git
>>> - branch: keystone-master-gpio-for-next
>>>
>> Can one of you pull all these patches ?
> 
> So I went through my backlog and queued all that I think is ready. Here
> is the branch. Let me know if there is anything else missing.

Forgot to mention that I have not been able to test them today though.
They will hit linux-next only after I have been able to test them and I
send a pull request to arm-soc or Linus W.

Thanks,
Sekhar

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-15 13:54           ` Sekhar Nori
  0 siblings, 0 replies; 45+ messages in thread
From: Sekhar Nori @ 2013-12-15 13:54 UTC (permalink / raw)
  To: Santosh Shilimkar, Linus Walleij
  Cc: davinci-linux-open-source, linux-kernel, Rob Herring, linux-gpio,
	linux-arm-kernel

On Sunday 15 December 2013 07:20 PM, Sekhar Nori wrote:
> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>> Linus, Sekhar,
>>
>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>> This series is intended to update Davinci GPIO driver and reuse
>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>> Keystone GPIO IP: supports:
>>> - up to 32 GPIO lines;
>>> - only unbanked irqs;
>>>
>>> See Documentation:
>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>
>>> This series depends on:
>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>> https://lkml.org/lkml/2013/11/8/22
>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>> https://www.mail-archive.com/devicetree@vger.kernel.org/msg05970.html
>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>> https://lkml.org/lkml/2013/11/26/405
>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>> https://lkml.org/lkml/2013/11/26/435
>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>> https://lkml.org/lkml/2013/11/26/428
>>>
>>> To handle all dependencies, I've created a branch where I collected all 
>>> "ready to merge" patches (all acks added in patches) and this series:
>>> - https://github.com/grygoriyS/linux.git
>>> - branch: keystone-master-gpio-for-next
>>>
>> Can one of you pull all these patches ?
> 
> So I went through my backlog and queued all that I think is ready. Here
> is the branch. Let me know if there is anything else missing.

Forgot to mention that I have not been able to test them today though.
They will hit linux-next only after I have been able to test them and I
send a pull request to arm-soc or Linus W.

Thanks,
Sekhar

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

* [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-15 13:54           ` Sekhar Nori
  0 siblings, 0 replies; 45+ messages in thread
From: Sekhar Nori @ 2013-12-15 13:54 UTC (permalink / raw)
  To: linux-arm-kernel

On Sunday 15 December 2013 07:20 PM, Sekhar Nori wrote:
> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>> Linus, Sekhar,
>>
>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>> This series is intended to update Davinci GPIO driver and reuse
>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>> Keystone GPIO IP: supports:
>>> - up to 32 GPIO lines;
>>> - only unbanked irqs;
>>>
>>> See Documentation:
>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>
>>> This series depends on:
>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>> https://lkml.org/lkml/2013/11/8/22
>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>> https://www.mail-archive.com/devicetree at vger.kernel.org/msg05970.html
>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>> https://lkml.org/lkml/2013/11/26/405
>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>> https://lkml.org/lkml/2013/11/26/435
>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>> https://lkml.org/lkml/2013/11/26/428
>>>
>>> To handle all dependencies, I've created a branch where I collected all 
>>> "ready to merge" patches (all acks added in patches) and this series:
>>> - https://github.com/grygoriyS/linux.git
>>> - branch: keystone-master-gpio-for-next
>>>
>> Can one of you pull all these patches ?
> 
> So I went through my backlog and queued all that I think is ready. Here
> is the branch. Let me know if there is anything else missing.

Forgot to mention that I have not been able to test them today though.
They will hit linux-next only after I have been able to test them and I
send a pull request to arm-soc or Linus W.

Thanks,
Sekhar

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

* Re: [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
  2013-12-12 18:12     ` Grygorii Strashko
  (?)
@ 2013-12-16  7:29       ` Alexandre Courbot
  -1 siblings, 0 replies; 45+ messages in thread
From: Alexandre Courbot @ 2013-12-16  7:29 UTC (permalink / raw)
  To: Grygorii Strashko
  Cc: Linus Walleij, Sekhar Nori, Santosh Shilimkar, Rob Herring,
	prabhakar.csengg, linux-gpio, Linux Kernel Mailing List,
	davinci-linux-open-source, linux-arm-kernel, devicetree

On Fri, Dec 13, 2013 at 3:12 AM, Grygorii Strashko
<grygorii.strashko@ti.com> wrote:
> The similar GPIO HW block is used by keystone SoCs as
> in Davinci SoCs.
> Hence, reuse Davinci GPIO driver for Keystone taking into
> account that Keystone contains ARM GIC IRQ controller which
> is implemented using IRQ Chip.
>
> Documentation:
>         http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>
> CC: Linus Walleij <linus.walleij@linaro.org>
> CC: Sekhar Nori <nsekhar@ti.com>
> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
> CC: devicetree@vger.kernel.org
>
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
>  .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>  drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>  2 files changed, 40 insertions(+), 13 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> index a2e839d..4ce9862 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> @@ -1,7 +1,7 @@
> -Davinci GPIO controller bindings
> +Davinci/Keystone GPIO controller bindings
>
>  Required Properties:
> -- compatible: should be "ti,dm6441-gpio"
> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>
>  - reg: Physical base address of the controller and the size of memory mapped
>         registers.
> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
> index 73f65ca..3e44e0c 100644
> --- a/drivers/gpio/gpio-davinci.c
> +++ b/drivers/gpio/gpio-davinci.c
> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>         .xlate = irq_domain_xlate_onetwocell,
>  };
>
> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
> +{
> +       static struct irq_chip_type gpio_unbanked;
> +
> +       gpio_unbanked = *container_of(irq_get_chip(irq),
> +                                     struct irq_chip_type, chip);
> +
> +       return &gpio_unbanked.chip;
> +};
> +
> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
> +{
> +       static struct irq_chip gpio_unbanked;
> +
> +       gpio_unbanked = *irq_get_chip(irq);
> +       pr_err("keystone_gpio_get_irq_chip\n");

Do you intend this pr_err() to remain here?

> +       return &gpio_unbanked;
> +};
> +
> +static const struct of_device_id davinci_gpio_ids[];
> +
>  /*
>   * NOTE:  for suspend/resume, probably best to make a platform_device with
>   * suspend_late/resume_resume calls hooking into results of the set_wake()
> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>         struct davinci_gpio_platform_data *pdata = dev->platform_data;
>         struct davinci_gpio_regs __iomem *g;
>         struct irq_domain       *irq_domain = NULL;
> +       const struct of_device_id *match;
> +       struct irq_chip *irq_chip;
> +       struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
> +
> +       gpio_get_irq_chip = davinci_gpio_get_irq_chip;
> +       match = of_match_device(of_match_ptr(davinci_gpio_ids),
> +                               dev);
> +       if (match)
> +               gpio_get_irq_chip = match->data;
>
>         ngpio = pdata->ngpio;
>         res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>         }
>
>         bank_irq = res->start;
> -
>         if (!bank_irq) {
>                 dev_err(dev, "Invalid IRQ resource\n");
>                 return -ENODEV;
> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>         }
>
>         /*
> -        * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
> +        * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>          * controller only handling trigger modes.  We currently assume no
>          * IRQ mux conflicts; gpio_irq_type_unbanked() is only for GPIOs.
>          */
>         if (pdata->gpio_unbanked) {
> -               static struct irq_chip_type gpio_unbanked;
> -
>                 /* pass "bank 0" GPIO IRQs to AINTC */
>                 chips[0].chip.to_irq = gpio_to_irq_unbanked;
>                 chips[0].gpio_irq = bank_irq;
>                 chips[0].gpio_unbanked = pdata->gpio_unbanked;
>                 binten = BIT(0);
>
> -               /* AINTC handles mask/unmask; GPIO handles triggering */
> +               /* INTC handles mask/unmask; GPIO handles triggering */
>                 irq = bank_irq;
> -               gpio_unbanked = *container_of(irq_get_chip(irq),
> -                                             struct irq_chip_type, chip);
> -               gpio_unbanked.chip.name = "GPIO-AINTC";
> -               gpio_unbanked.chip.irq_set_type = gpio_irq_type_unbanked;
> +               irq_chip = gpio_get_irq_chip(irq);
> +               irq_chip->name = "GPIO-AINTC";

According to the other renamings I see in this file, shouldn't the
string also be changed to "GPIO-INTC"?

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

* Re: [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
@ 2013-12-16  7:29       ` Alexandre Courbot
  0 siblings, 0 replies; 45+ messages in thread
From: Alexandre Courbot @ 2013-12-16  7:29 UTC (permalink / raw)
  To: Grygorii Strashko
  Cc: Linus Walleij, Sekhar Nori, Santosh Shilimkar, Rob Herring,
	prabhakar.csengg, linux-gpio, Linux Kernel Mailing List,
	davinci-linux-open-source, linux-arm-kernel, devicetree

On Fri, Dec 13, 2013 at 3:12 AM, Grygorii Strashko
<grygorii.strashko@ti.com> wrote:
> The similar GPIO HW block is used by keystone SoCs as
> in Davinci SoCs.
> Hence, reuse Davinci GPIO driver for Keystone taking into
> account that Keystone contains ARM GIC IRQ controller which
> is implemented using IRQ Chip.
>
> Documentation:
>         http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>
> CC: Linus Walleij <linus.walleij@linaro.org>
> CC: Sekhar Nori <nsekhar@ti.com>
> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
> CC: devicetree@vger.kernel.org
>
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
>  .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>  drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>  2 files changed, 40 insertions(+), 13 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> index a2e839d..4ce9862 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> @@ -1,7 +1,7 @@
> -Davinci GPIO controller bindings
> +Davinci/Keystone GPIO controller bindings
>
>  Required Properties:
> -- compatible: should be "ti,dm6441-gpio"
> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>
>  - reg: Physical base address of the controller and the size of memory mapped
>         registers.
> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
> index 73f65ca..3e44e0c 100644
> --- a/drivers/gpio/gpio-davinci.c
> +++ b/drivers/gpio/gpio-davinci.c
> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>         .xlate = irq_domain_xlate_onetwocell,
>  };
>
> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
> +{
> +       static struct irq_chip_type gpio_unbanked;
> +
> +       gpio_unbanked = *container_of(irq_get_chip(irq),
> +                                     struct irq_chip_type, chip);
> +
> +       return &gpio_unbanked.chip;
> +};
> +
> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
> +{
> +       static struct irq_chip gpio_unbanked;
> +
> +       gpio_unbanked = *irq_get_chip(irq);
> +       pr_err("keystone_gpio_get_irq_chip\n");

Do you intend this pr_err() to remain here?

> +       return &gpio_unbanked;
> +};
> +
> +static const struct of_device_id davinci_gpio_ids[];
> +
>  /*
>   * NOTE:  for suspend/resume, probably best to make a platform_device with
>   * suspend_late/resume_resume calls hooking into results of the set_wake()
> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>         struct davinci_gpio_platform_data *pdata = dev->platform_data;
>         struct davinci_gpio_regs __iomem *g;
>         struct irq_domain       *irq_domain = NULL;
> +       const struct of_device_id *match;
> +       struct irq_chip *irq_chip;
> +       struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
> +
> +       gpio_get_irq_chip = davinci_gpio_get_irq_chip;
> +       match = of_match_device(of_match_ptr(davinci_gpio_ids),
> +                               dev);
> +       if (match)
> +               gpio_get_irq_chip = match->data;
>
>         ngpio = pdata->ngpio;
>         res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>         }
>
>         bank_irq = res->start;
> -
>         if (!bank_irq) {
>                 dev_err(dev, "Invalid IRQ resource\n");
>                 return -ENODEV;
> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>         }
>
>         /*
> -        * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
> +        * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>          * controller only handling trigger modes.  We currently assume no
>          * IRQ mux conflicts; gpio_irq_type_unbanked() is only for GPIOs.
>          */
>         if (pdata->gpio_unbanked) {
> -               static struct irq_chip_type gpio_unbanked;
> -
>                 /* pass "bank 0" GPIO IRQs to AINTC */
>                 chips[0].chip.to_irq = gpio_to_irq_unbanked;
>                 chips[0].gpio_irq = bank_irq;
>                 chips[0].gpio_unbanked = pdata->gpio_unbanked;
>                 binten = BIT(0);
>
> -               /* AINTC handles mask/unmask; GPIO handles triggering */
> +               /* INTC handles mask/unmask; GPIO handles triggering */
>                 irq = bank_irq;
> -               gpio_unbanked = *container_of(irq_get_chip(irq),
> -                                             struct irq_chip_type, chip);
> -               gpio_unbanked.chip.name = "GPIO-AINTC";
> -               gpio_unbanked.chip.irq_set_type = gpio_irq_type_unbanked;
> +               irq_chip = gpio_get_irq_chip(irq);
> +               irq_chip->name = "GPIO-AINTC";

According to the other renamings I see in this file, shouldn't the
string also be changed to "GPIO-INTC"?

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

* [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
@ 2013-12-16  7:29       ` Alexandre Courbot
  0 siblings, 0 replies; 45+ messages in thread
From: Alexandre Courbot @ 2013-12-16  7:29 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Dec 13, 2013 at 3:12 AM, Grygorii Strashko
<grygorii.strashko@ti.com> wrote:
> The similar GPIO HW block is used by keystone SoCs as
> in Davinci SoCs.
> Hence, reuse Davinci GPIO driver for Keystone taking into
> account that Keystone contains ARM GIC IRQ controller which
> is implemented using IRQ Chip.
>
> Documentation:
>         http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>
> CC: Linus Walleij <linus.walleij@linaro.org>
> CC: Sekhar Nori <nsekhar@ti.com>
> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
> CC: devicetree at vger.kernel.org
>
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
>  .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>  drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>  2 files changed, 40 insertions(+), 13 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> index a2e839d..4ce9862 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> @@ -1,7 +1,7 @@
> -Davinci GPIO controller bindings
> +Davinci/Keystone GPIO controller bindings
>
>  Required Properties:
> -- compatible: should be "ti,dm6441-gpio"
> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>
>  - reg: Physical base address of the controller and the size of memory mapped
>         registers.
> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
> index 73f65ca..3e44e0c 100644
> --- a/drivers/gpio/gpio-davinci.c
> +++ b/drivers/gpio/gpio-davinci.c
> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>         .xlate = irq_domain_xlate_onetwocell,
>  };
>
> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
> +{
> +       static struct irq_chip_type gpio_unbanked;
> +
> +       gpio_unbanked = *container_of(irq_get_chip(irq),
> +                                     struct irq_chip_type, chip);
> +
> +       return &gpio_unbanked.chip;
> +};
> +
> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
> +{
> +       static struct irq_chip gpio_unbanked;
> +
> +       gpio_unbanked = *irq_get_chip(irq);
> +       pr_err("keystone_gpio_get_irq_chip\n");

Do you intend this pr_err() to remain here?

> +       return &gpio_unbanked;
> +};
> +
> +static const struct of_device_id davinci_gpio_ids[];
> +
>  /*
>   * NOTE:  for suspend/resume, probably best to make a platform_device with
>   * suspend_late/resume_resume calls hooking into results of the set_wake()
> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>         struct davinci_gpio_platform_data *pdata = dev->platform_data;
>         struct davinci_gpio_regs __iomem *g;
>         struct irq_domain       *irq_domain = NULL;
> +       const struct of_device_id *match;
> +       struct irq_chip *irq_chip;
> +       struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
> +
> +       gpio_get_irq_chip = davinci_gpio_get_irq_chip;
> +       match = of_match_device(of_match_ptr(davinci_gpio_ids),
> +                               dev);
> +       if (match)
> +               gpio_get_irq_chip = match->data;
>
>         ngpio = pdata->ngpio;
>         res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>         }
>
>         bank_irq = res->start;
> -
>         if (!bank_irq) {
>                 dev_err(dev, "Invalid IRQ resource\n");
>                 return -ENODEV;
> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>         }
>
>         /*
> -        * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
> +        * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>          * controller only handling trigger modes.  We currently assume no
>          * IRQ mux conflicts; gpio_irq_type_unbanked() is only for GPIOs.
>          */
>         if (pdata->gpio_unbanked) {
> -               static struct irq_chip_type gpio_unbanked;
> -
>                 /* pass "bank 0" GPIO IRQs to AINTC */
>                 chips[0].chip.to_irq = gpio_to_irq_unbanked;
>                 chips[0].gpio_irq = bank_irq;
>                 chips[0].gpio_unbanked = pdata->gpio_unbanked;
>                 binten = BIT(0);
>
> -               /* AINTC handles mask/unmask; GPIO handles triggering */
> +               /* INTC handles mask/unmask; GPIO handles triggering */
>                 irq = bank_irq;
> -               gpio_unbanked = *container_of(irq_get_chip(irq),
> -                                             struct irq_chip_type, chip);
> -               gpio_unbanked.chip.name = "GPIO-AINTC";
> -               gpio_unbanked.chip.irq_set_type = gpio_irq_type_unbanked;
> +               irq_chip = gpio_get_irq_chip(irq);
> +               irq_chip->name = "GPIO-AINTC";

According to the other renamings I see in this file, shouldn't the
string also be changed to "GPIO-INTC"?

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
  2013-12-15 13:54           ` Sekhar Nori
  (?)
@ 2013-12-16 11:18               ` Grygorii Strashko
  -1 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-16 11:18 UTC (permalink / raw)
  To: Sekhar Nori, Santosh Shilimkar, Linus Walleij
  Cc: linux-gpio-u79uwXL29TY76Z2rM5mHXA,
	davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/,
	Rob Herring, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On 12/15/2013 03:54 PM, Sekhar Nori wrote:
> On Sunday 15 December 2013 07:20 PM, Sekhar Nori wrote:
>> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>>> Linus, Sekhar,
>>>
>>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>>> This series is intended to update Davinci GPIO driver and reuse
>>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>>> Keystone GPIO IP: supports:
>>>> - up to 32 GPIO lines;
>>>> - only unbanked irqs;
>>>>
>>>> See Documentation:
>>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>>
>>>> This series depends on:
>>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>>> https://lkml.org/lkml/2013/11/8/22
>>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>>> https://www.mail-archive.com/devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg05970.html
>>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>>> https://lkml.org/lkml/2013/11/26/405
>>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>>> https://lkml.org/lkml/2013/11/26/435
>>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>>> https://lkml.org/lkml/2013/11/26/428
>>>>
>>>> To handle all dependencies, I've created a branch where I collected all
>>>> "ready to merge" patches (all acks added in patches) and this series:
>>>> - https://github.com/grygoriyS/linux.git
>>>> - branch: keystone-master-gpio-for-next
>>>>
>>> Can one of you pull all these patches ?
>>
>> So I went through my backlog and queued all that I think is ready. Here
>> is the branch. Let me know if there is anything else missing.

Looks like everything are in place. Thanks.

>
> Forgot to mention that I have not been able to test them today though.
> They will hit linux-next only after I have been able to test them and I
> send a pull request to arm-soc or Linus W.
>

Regards,
-grygorii

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-16 11:18               ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-16 11:18 UTC (permalink / raw)
  To: Sekhar Nori, Santosh Shilimkar, Linus Walleij
  Cc: linux-arm-kernel, linux-gpio, davinci-linux-open-source,
	linux-kernel, Rob Herring

On 12/15/2013 03:54 PM, Sekhar Nori wrote:
> On Sunday 15 December 2013 07:20 PM, Sekhar Nori wrote:
>> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>>> Linus, Sekhar,
>>>
>>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>>> This series is intended to update Davinci GPIO driver and reuse
>>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>>> Keystone GPIO IP: supports:
>>>> - up to 32 GPIO lines;
>>>> - only unbanked irqs;
>>>>
>>>> See Documentation:
>>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>>
>>>> This series depends on:
>>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>>> https://lkml.org/lkml/2013/11/8/22
>>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>>> https://www.mail-archive.com/devicetree@vger.kernel.org/msg05970.html
>>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>>> https://lkml.org/lkml/2013/11/26/405
>>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>>> https://lkml.org/lkml/2013/11/26/435
>>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>>> https://lkml.org/lkml/2013/11/26/428
>>>>
>>>> To handle all dependencies, I've created a branch where I collected all
>>>> "ready to merge" patches (all acks added in patches) and this series:
>>>> - https://github.com/grygoriyS/linux.git
>>>> - branch: keystone-master-gpio-for-next
>>>>
>>> Can one of you pull all these patches ?
>>
>> So I went through my backlog and queued all that I think is ready. Here
>> is the branch. Let me know if there is anything else missing.

Looks like everything are in place. Thanks.

>
> Forgot to mention that I have not been able to test them today though.
> They will hit linux-next only after I have been able to test them and I
> send a pull request to arm-soc or Linus W.
>

Regards,
-grygorii


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

* [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-16 11:18               ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-16 11:18 UTC (permalink / raw)
  To: linux-arm-kernel

On 12/15/2013 03:54 PM, Sekhar Nori wrote:
> On Sunday 15 December 2013 07:20 PM, Sekhar Nori wrote:
>> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>>> Linus, Sekhar,
>>>
>>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>>> This series is intended to update Davinci GPIO driver and reuse
>>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>>> Keystone GPIO IP: supports:
>>>> - up to 32 GPIO lines;
>>>> - only unbanked irqs;
>>>>
>>>> See Documentation:
>>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>>
>>>> This series depends on:
>>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>>> https://lkml.org/lkml/2013/11/8/22
>>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>>> https://www.mail-archive.com/devicetree at vger.kernel.org/msg05970.html
>>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>>> https://lkml.org/lkml/2013/11/26/405
>>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>>> https://lkml.org/lkml/2013/11/26/435
>>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>>> https://lkml.org/lkml/2013/11/26/428
>>>>
>>>> To handle all dependencies, I've created a branch where I collected all
>>>> "ready to merge" patches (all acks added in patches) and this series:
>>>> - https://github.com/grygoriyS/linux.git
>>>> - branch: keystone-master-gpio-for-next
>>>>
>>> Can one of you pull all these patches ?
>>
>> So I went through my backlog and queued all that I think is ready. Here
>> is the branch. Let me know if there is anything else missing.

Looks like everything are in place. Thanks.

>
> Forgot to mention that I have not been able to test them today though.
> They will hit linux-next only after I have been able to test them and I
> send a pull request to arm-soc or Linus W.
>

Regards,
-grygorii

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

* Re: [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
  2013-12-16  7:29       ` Alexandre Courbot
  (?)
@ 2013-12-16 11:18           ` Grygorii Strashko
  -1 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-16 11:18 UTC (permalink / raw)
  To: Alexandre Courbot
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA,
	davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/,
	Linus Walleij, Linux Kernel Mailing List, Rob Herring,
	linux-gpio-u79uwXL29TY76Z2rM5mHXA, Santosh Shilimkar,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On 12/16/2013 09:29 AM, Alexandre Courbot wrote:
> On Fri, Dec 13, 2013 at 3:12 AM, Grygorii Strashko
> <grygorii.strashko-l0cyMroinI0@public.gmane.org> wrote:
>> The similar GPIO HW block is used by keystone SoCs as
>> in Davinci SoCs.
>> Hence, reuse Davinci GPIO driver for Keystone taking into
>> account that Keystone contains ARM GIC IRQ controller which
>> is implemented using IRQ Chip.
>>
>> Documentation:
>>          http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>
>> CC: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>> CC: Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org>
>> CC: Santosh Shilimkar <santosh.shilimkar-l0cyMroinI0@public.gmane.org>
>> CC: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>>
>> Signed-off-by: Grygorii Strashko <grygorii.strashko-l0cyMroinI0@public.gmane.org>
>> ---
>>   .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>>   drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>>   2 files changed, 40 insertions(+), 13 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> index a2e839d..4ce9862 100644
>> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> @@ -1,7 +1,7 @@
>> -Davinci GPIO controller bindings
>> +Davinci/Keystone GPIO controller bindings
>>
>>   Required Properties:
>> -- compatible: should be "ti,dm6441-gpio"
>> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>>
>>   - reg: Physical base address of the controller and the size of memory mapped
>>          registers.
>> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
>> index 73f65ca..3e44e0c 100644
>> --- a/drivers/gpio/gpio-davinci.c
>> +++ b/drivers/gpio/gpio-davinci.c
>> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>>          .xlate = irq_domain_xlate_onetwocell,
>>   };
>>
>> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +       static struct irq_chip_type gpio_unbanked;
>> +
>> +       gpio_unbanked = *container_of(irq_get_chip(irq),
>> +                                     struct irq_chip_type, chip);
>> +
>> +       return &gpio_unbanked.chip;
>> +};
>> +
>> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +       static struct irq_chip gpio_unbanked;
>> +
>> +       gpio_unbanked = *irq_get_chip(irq);
>> +       pr_err("keystone_gpio_get_irq_chip\n");
>
> Do you intend this pr_err() to remain here?

No, thanks - will remove.

>
>> +       return &gpio_unbanked;
>> +};
>> +
>> +static const struct of_device_id davinci_gpio_ids[];
>> +
>>   /*
>>    * NOTE:  for suspend/resume, probably best to make a platform_device with
>>    * suspend_late/resume_resume calls hooking into results of the set_wake()
>> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>          struct davinci_gpio_platform_data *pdata = dev->platform_data;
>>          struct davinci_gpio_regs __iomem *g;
>>          struct irq_domain       *irq_domain = NULL;
>> +       const struct of_device_id *match;
>> +       struct irq_chip *irq_chip;
>> +       struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
>> +
>> +       gpio_get_irq_chip = davinci_gpio_get_irq_chip;
>> +       match = of_match_device(of_match_ptr(davinci_gpio_ids),
>> +                               dev);
>> +       if (match)
>> +               gpio_get_irq_chip = match->data;
>>
>>          ngpio = pdata->ngpio;
>>          res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
>> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>          }
>>
>>          bank_irq = res->start;
>> -
>>          if (!bank_irq) {
>>                  dev_err(dev, "Invalid IRQ resource\n");
>>                  return -ENODEV;
>> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>          }
>>
>>          /*
>> -        * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>> +        * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>>           * controller only handling trigger modes.  We currently assume no
>>           * IRQ mux conflicts; gpio_irq_type_unbanked() is only for GPIOs.
>>           */
>>          if (pdata->gpio_unbanked) {
>> -               static struct irq_chip_type gpio_unbanked;
>> -
>>                  /* pass "bank 0" GPIO IRQs to AINTC */
>>                  chips[0].chip.to_irq = gpio_to_irq_unbanked;
>>                  chips[0].gpio_irq = bank_irq;
>>                  chips[0].gpio_unbanked = pdata->gpio_unbanked;
>>                  binten = BIT(0);
>>
>> -               /* AINTC handles mask/unmask; GPIO handles triggering */
>> +               /* INTC handles mask/unmask; GPIO handles triggering */
>>                  irq = bank_irq;
>> -               gpio_unbanked = *container_of(irq_get_chip(irq),
>> -                                             struct irq_chip_type, chip);
>> -               gpio_unbanked.chip.name = "GPIO-AINTC";
>> -               gpio_unbanked.chip.irq_set_type = gpio_irq_type_unbanked;
>> +               irq_chip = gpio_get_irq_chip(irq);
>> +               irq_chip->name = "GPIO-AINTC";
>
> According to the other renamings I see in this file, shouldn't the
> string also be changed to "GPIO-INTC"?

Right. Will change, it should be more generic now.

I'll wait a bit for other comments and resend.

Regards,
-grygorii

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

* Re: [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
@ 2013-12-16 11:18           ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-16 11:18 UTC (permalink / raw)
  To: Alexandre Courbot
  Cc: Linus Walleij, Sekhar Nori, Santosh Shilimkar, Rob Herring,
	prabhakar.csengg, linux-gpio, Linux Kernel Mailing List,
	davinci-linux-open-source, linux-arm-kernel, devicetree

On 12/16/2013 09:29 AM, Alexandre Courbot wrote:
> On Fri, Dec 13, 2013 at 3:12 AM, Grygorii Strashko
> <grygorii.strashko@ti.com> wrote:
>> The similar GPIO HW block is used by keystone SoCs as
>> in Davinci SoCs.
>> Hence, reuse Davinci GPIO driver for Keystone taking into
>> account that Keystone contains ARM GIC IRQ controller which
>> is implemented using IRQ Chip.
>>
>> Documentation:
>>          http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>
>> CC: Linus Walleij <linus.walleij@linaro.org>
>> CC: Sekhar Nori <nsekhar@ti.com>
>> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
>> CC: devicetree@vger.kernel.org
>>
>> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
>> ---
>>   .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>>   drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>>   2 files changed, 40 insertions(+), 13 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> index a2e839d..4ce9862 100644
>> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> @@ -1,7 +1,7 @@
>> -Davinci GPIO controller bindings
>> +Davinci/Keystone GPIO controller bindings
>>
>>   Required Properties:
>> -- compatible: should be "ti,dm6441-gpio"
>> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>>
>>   - reg: Physical base address of the controller and the size of memory mapped
>>          registers.
>> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
>> index 73f65ca..3e44e0c 100644
>> --- a/drivers/gpio/gpio-davinci.c
>> +++ b/drivers/gpio/gpio-davinci.c
>> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>>          .xlate = irq_domain_xlate_onetwocell,
>>   };
>>
>> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +       static struct irq_chip_type gpio_unbanked;
>> +
>> +       gpio_unbanked = *container_of(irq_get_chip(irq),
>> +                                     struct irq_chip_type, chip);
>> +
>> +       return &gpio_unbanked.chip;
>> +};
>> +
>> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +       static struct irq_chip gpio_unbanked;
>> +
>> +       gpio_unbanked = *irq_get_chip(irq);
>> +       pr_err("keystone_gpio_get_irq_chip\n");
>
> Do you intend this pr_err() to remain here?

No, thanks - will remove.

>
>> +       return &gpio_unbanked;
>> +};
>> +
>> +static const struct of_device_id davinci_gpio_ids[];
>> +
>>   /*
>>    * NOTE:  for suspend/resume, probably best to make a platform_device with
>>    * suspend_late/resume_resume calls hooking into results of the set_wake()
>> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>          struct davinci_gpio_platform_data *pdata = dev->platform_data;
>>          struct davinci_gpio_regs __iomem *g;
>>          struct irq_domain       *irq_domain = NULL;
>> +       const struct of_device_id *match;
>> +       struct irq_chip *irq_chip;
>> +       struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
>> +
>> +       gpio_get_irq_chip = davinci_gpio_get_irq_chip;
>> +       match = of_match_device(of_match_ptr(davinci_gpio_ids),
>> +                               dev);
>> +       if (match)
>> +               gpio_get_irq_chip = match->data;
>>
>>          ngpio = pdata->ngpio;
>>          res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
>> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>          }
>>
>>          bank_irq = res->start;
>> -
>>          if (!bank_irq) {
>>                  dev_err(dev, "Invalid IRQ resource\n");
>>                  return -ENODEV;
>> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>          }
>>
>>          /*
>> -        * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>> +        * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>>           * controller only handling trigger modes.  We currently assume no
>>           * IRQ mux conflicts; gpio_irq_type_unbanked() is only for GPIOs.
>>           */
>>          if (pdata->gpio_unbanked) {
>> -               static struct irq_chip_type gpio_unbanked;
>> -
>>                  /* pass "bank 0" GPIO IRQs to AINTC */
>>                  chips[0].chip.to_irq = gpio_to_irq_unbanked;
>>                  chips[0].gpio_irq = bank_irq;
>>                  chips[0].gpio_unbanked = pdata->gpio_unbanked;
>>                  binten = BIT(0);
>>
>> -               /* AINTC handles mask/unmask; GPIO handles triggering */
>> +               /* INTC handles mask/unmask; GPIO handles triggering */
>>                  irq = bank_irq;
>> -               gpio_unbanked = *container_of(irq_get_chip(irq),
>> -                                             struct irq_chip_type, chip);
>> -               gpio_unbanked.chip.name = "GPIO-AINTC";
>> -               gpio_unbanked.chip.irq_set_type = gpio_irq_type_unbanked;
>> +               irq_chip = gpio_get_irq_chip(irq);
>> +               irq_chip->name = "GPIO-AINTC";
>
> According to the other renamings I see in this file, shouldn't the
> string also be changed to "GPIO-INTC"?

Right. Will change, it should be more generic now.

I'll wait a bit for other comments and resend.

Regards,
-grygorii



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

* [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
@ 2013-12-16 11:18           ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-16 11:18 UTC (permalink / raw)
  To: linux-arm-kernel

On 12/16/2013 09:29 AM, Alexandre Courbot wrote:
> On Fri, Dec 13, 2013 at 3:12 AM, Grygorii Strashko
> <grygorii.strashko@ti.com> wrote:
>> The similar GPIO HW block is used by keystone SoCs as
>> in Davinci SoCs.
>> Hence, reuse Davinci GPIO driver for Keystone taking into
>> account that Keystone contains ARM GIC IRQ controller which
>> is implemented using IRQ Chip.
>>
>> Documentation:
>>          http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>
>> CC: Linus Walleij <linus.walleij@linaro.org>
>> CC: Sekhar Nori <nsekhar@ti.com>
>> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
>> CC: devicetree at vger.kernel.org
>>
>> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
>> ---
>>   .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>>   drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>>   2 files changed, 40 insertions(+), 13 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> index a2e839d..4ce9862 100644
>> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> @@ -1,7 +1,7 @@
>> -Davinci GPIO controller bindings
>> +Davinci/Keystone GPIO controller bindings
>>
>>   Required Properties:
>> -- compatible: should be "ti,dm6441-gpio"
>> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>>
>>   - reg: Physical base address of the controller and the size of memory mapped
>>          registers.
>> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
>> index 73f65ca..3e44e0c 100644
>> --- a/drivers/gpio/gpio-davinci.c
>> +++ b/drivers/gpio/gpio-davinci.c
>> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>>          .xlate = irq_domain_xlate_onetwocell,
>>   };
>>
>> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +       static struct irq_chip_type gpio_unbanked;
>> +
>> +       gpio_unbanked = *container_of(irq_get_chip(irq),
>> +                                     struct irq_chip_type, chip);
>> +
>> +       return &gpio_unbanked.chip;
>> +};
>> +
>> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +       static struct irq_chip gpio_unbanked;
>> +
>> +       gpio_unbanked = *irq_get_chip(irq);
>> +       pr_err("keystone_gpio_get_irq_chip\n");
>
> Do you intend this pr_err() to remain here?

No, thanks - will remove.

>
>> +       return &gpio_unbanked;
>> +};
>> +
>> +static const struct of_device_id davinci_gpio_ids[];
>> +
>>   /*
>>    * NOTE:  for suspend/resume, probably best to make a platform_device with
>>    * suspend_late/resume_resume calls hooking into results of the set_wake()
>> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>          struct davinci_gpio_platform_data *pdata = dev->platform_data;
>>          struct davinci_gpio_regs __iomem *g;
>>          struct irq_domain       *irq_domain = NULL;
>> +       const struct of_device_id *match;
>> +       struct irq_chip *irq_chip;
>> +       struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
>> +
>> +       gpio_get_irq_chip = davinci_gpio_get_irq_chip;
>> +       match = of_match_device(of_match_ptr(davinci_gpio_ids),
>> +                               dev);
>> +       if (match)
>> +               gpio_get_irq_chip = match->data;
>>
>>          ngpio = pdata->ngpio;
>>          res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
>> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>          }
>>
>>          bank_irq = res->start;
>> -
>>          if (!bank_irq) {
>>                  dev_err(dev, "Invalid IRQ resource\n");
>>                  return -ENODEV;
>> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>          }
>>
>>          /*
>> -        * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>> +        * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>>           * controller only handling trigger modes.  We currently assume no
>>           * IRQ mux conflicts; gpio_irq_type_unbanked() is only for GPIOs.
>>           */
>>          if (pdata->gpio_unbanked) {
>> -               static struct irq_chip_type gpio_unbanked;
>> -
>>                  /* pass "bank 0" GPIO IRQs to AINTC */
>>                  chips[0].chip.to_irq = gpio_to_irq_unbanked;
>>                  chips[0].gpio_irq = bank_irq;
>>                  chips[0].gpio_unbanked = pdata->gpio_unbanked;
>>                  binten = BIT(0);
>>
>> -               /* AINTC handles mask/unmask; GPIO handles triggering */
>> +               /* INTC handles mask/unmask; GPIO handles triggering */
>>                  irq = bank_irq;
>> -               gpio_unbanked = *container_of(irq_get_chip(irq),
>> -                                             struct irq_chip_type, chip);
>> -               gpio_unbanked.chip.name = "GPIO-AINTC";
>> -               gpio_unbanked.chip.irq_set_type = gpio_irq_type_unbanked;
>> +               irq_chip = gpio_get_irq_chip(irq);
>> +               irq_chip->name = "GPIO-AINTC";
>
> According to the other renamings I see in this file, shouldn't the
> string also be changed to "GPIO-INTC"?

Right. Will change, it should be more generic now.

I'll wait a bit for other comments and resend.

Regards,
-grygorii

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
  2013-12-15 13:50       ` Sekhar Nori
  (?)
@ 2013-12-16 15:09           ` Santosh Shilimkar
  -1 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 15:09 UTC (permalink / raw)
  To: Sekhar Nori
  Cc: davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/,
	Linus Walleij, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring,
	linux-gpio-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Sunday 15 December 2013 08:50 AM, Sekhar Nori wrote:
> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>> Linus, Sekhar,
>>
>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>> This series is intended to update Davinci GPIO driver and reuse
>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>> Keystone GPIO IP: supports:
>>> - up to 32 GPIO lines;
>>> - only unbanked irqs;
>>>
>>> See Documentation:
>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>
>>> This series depends on:
>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>> https://lkml.org/lkml/2013/11/8/22
>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>> https://www.mail-archive.com/devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg05970.html
>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>> https://lkml.org/lkml/2013/11/26/405
>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>> https://lkml.org/lkml/2013/11/26/435
>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>> https://lkml.org/lkml/2013/11/26/428
>>>
>>> To handle all dependencies, I've created a branch where I collected all 
>>> "ready to merge" patches (all acks added in patches) and this series:
>>> - https://github.com/grygoriyS/linux.git
>>> - branch: keystone-master-gpio-for-next
>>>
>> Can one of you pull all these patches ?
> 
> So I went through my backlog and queued all that I think is ready. Here
> is the branch. Let me know if there is anything else missing.
>
The $subject series (2 patches) don't seems to be on your branch.

Regards,
Santosh
 

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-16 15:09           ` Santosh Shilimkar
  0 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 15:09 UTC (permalink / raw)
  To: Sekhar Nori
  Cc: Linus Walleij, Grygorii Strashko, Rob Herring, prabhakar.csengg,
	linux-gpio, linux-kernel, davinci-linux-open-source,
	linux-arm-kernel

On Sunday 15 December 2013 08:50 AM, Sekhar Nori wrote:
> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>> Linus, Sekhar,
>>
>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>> This series is intended to update Davinci GPIO driver and reuse
>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>> Keystone GPIO IP: supports:
>>> - up to 32 GPIO lines;
>>> - only unbanked irqs;
>>>
>>> See Documentation:
>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>
>>> This series depends on:
>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>> https://lkml.org/lkml/2013/11/8/22
>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>> https://www.mail-archive.com/devicetree@vger.kernel.org/msg05970.html
>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>> https://lkml.org/lkml/2013/11/26/405
>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>> https://lkml.org/lkml/2013/11/26/435
>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>> https://lkml.org/lkml/2013/11/26/428
>>>
>>> To handle all dependencies, I've created a branch where I collected all 
>>> "ready to merge" patches (all acks added in patches) and this series:
>>> - https://github.com/grygoriyS/linux.git
>>> - branch: keystone-master-gpio-for-next
>>>
>> Can one of you pull all these patches ?
> 
> So I went through my backlog and queued all that I think is ready. Here
> is the branch. Let me know if there is anything else missing.
>
The $subject series (2 patches) don't seems to be on your branch.

Regards,
Santosh
 




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

* [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-16 15:09           ` Santosh Shilimkar
  0 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 15:09 UTC (permalink / raw)
  To: linux-arm-kernel

On Sunday 15 December 2013 08:50 AM, Sekhar Nori wrote:
> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>> Linus, Sekhar,
>>
>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>> This series is intended to update Davinci GPIO driver and reuse
>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>> Keystone GPIO IP: supports:
>>> - up to 32 GPIO lines;
>>> - only unbanked irqs;
>>>
>>> See Documentation:
>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>
>>> This series depends on:
>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>> https://lkml.org/lkml/2013/11/8/22
>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>> https://www.mail-archive.com/devicetree at vger.kernel.org/msg05970.html
>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>> https://lkml.org/lkml/2013/11/26/405
>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>> https://lkml.org/lkml/2013/11/26/435
>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>> https://lkml.org/lkml/2013/11/26/428
>>>
>>> To handle all dependencies, I've created a branch where I collected all 
>>> "ready to merge" patches (all acks added in patches) and this series:
>>> - https://github.com/grygoriyS/linux.git
>>> - branch: keystone-master-gpio-for-next
>>>
>> Can one of you pull all these patches ?
> 
> So I went through my backlog and queued all that I think is ready. Here
> is the branch. Let me know if there is anything else missing.
>
The $subject series (2 patches) don't seems to be on your branch.

Regards,
Santosh
 

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

* Re: [PATCH 1/2] gpio: davinci: don't create irq_domain in case of unbanked irqs
  2013-12-12 18:12   ` Grygorii Strashko
  (?)
@ 2013-12-16 16:24       ` Santosh Shilimkar
  -1 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 16:24 UTC (permalink / raw)
  To: Grygorii Strashko
  Cc: davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/,
	Linus Walleij, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring,
	linux-gpio-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
> The system may crash if:
> - there are more then 1 bank
> - unbanked irqs are enabled
> - someone will call gpio_to_irq() for GPIO from bank2 or above
> 
> Hence, fix it by not creating irq_domain if unbanked irqs are enabled
> and correct gpio_to_irq_banked() to handle this properly.
> 
> CC: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> CC: Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org>
> CC: Santosh Shilimkar <santosh.shilimkar-l0cyMroinI0@public.gmane.org>
> 
> Signed-off-by: Grygorii Strashko <grygorii.strashko-l0cyMroinI0@public.gmane.org>
> ---
Acked-by: Santosh Shilimkar <santosh.shilimkar-l0cyMroinI0@public.gmane.org>

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

* Re: [PATCH 1/2] gpio: davinci: don't create irq_domain in case of unbanked irqs
@ 2013-12-16 16:24       ` Santosh Shilimkar
  0 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 16:24 UTC (permalink / raw)
  To: Grygorii Strashko
  Cc: Linus Walleij, Sekhar Nori, Rob Herring, prabhakar.csengg,
	linux-gpio, linux-kernel, davinci-linux-open-source,
	linux-arm-kernel

On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
> The system may crash if:
> - there are more then 1 bank
> - unbanked irqs are enabled
> - someone will call gpio_to_irq() for GPIO from bank2 or above
> 
> Hence, fix it by not creating irq_domain if unbanked irqs are enabled
> and correct gpio_to_irq_banked() to handle this properly.
> 
> CC: Linus Walleij <linus.walleij@linaro.org>
> CC: Sekhar Nori <nsekhar@ti.com>
> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
> 
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>



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

* [PATCH 1/2] gpio: davinci: don't create irq_domain in case of unbanked irqs
@ 2013-12-16 16:24       ` Santosh Shilimkar
  0 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 16:24 UTC (permalink / raw)
  To: linux-arm-kernel

On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
> The system may crash if:
> - there are more then 1 bank
> - unbanked irqs are enabled
> - someone will call gpio_to_irq() for GPIO from bank2 or above
> 
> Hence, fix it by not creating irq_domain if unbanked irqs are enabled
> and correct gpio_to_irq_banked() to handle this properly.
> 
> CC: Linus Walleij <linus.walleij@linaro.org>
> CC: Sekhar Nori <nsekhar@ti.com>
> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
> 
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>

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

* Re: [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
  2013-12-12 18:12     ` Grygorii Strashko
  (?)
@ 2013-12-16 16:38         ` Santosh Shilimkar
  -1 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 16:38 UTC (permalink / raw)
  To: Grygorii Strashko
  Cc: devicetree-u79uwXL29TY76Z2rM5mHXA,
	davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/,
	Linus Walleij, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring,
	linux-gpio-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
> The similar GPIO HW block is used by keystone SoCs as
> in Davinci SoCs.
> Hence, reuse Davinci GPIO driver for Keystone taking into
> account that Keystone contains ARM GIC IRQ controller which
> is implemented using IRQ Chip.
> 
> Documentation:
> 	http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
> 
> CC: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> CC: Sekhar Nori <nsekhar-l0cyMroinI0@public.gmane.org>
> CC: Santosh Shilimkar <santosh.shilimkar-l0cyMroinI0@public.gmane.org>
> CC: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> 
> Signed-off-by: Grygorii Strashko <grygorii.strashko-l0cyMroinI0@public.gmane.org>
> ---
>  .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>  drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>  2 files changed, 40 insertions(+), 13 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> index a2e839d..4ce9862 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> @@ -1,7 +1,7 @@
> -Davinci GPIO controller bindings
> +Davinci/Keystone GPIO controller bindings
>  
>  Required Properties:
> -- compatible: should be "ti,dm6441-gpio"
> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>  
>  - reg: Physical base address of the controller and the size of memory mapped
>         registers.
> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
> index 73f65ca..3e44e0c 100644
> --- a/drivers/gpio/gpio-davinci.c
> +++ b/drivers/gpio/gpio-davinci.c
> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>  	.xlate = irq_domain_xlate_onetwocell,
>  };
>  
> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
> +{
> +	static struct irq_chip_type gpio_unbanked;
> +
> +	gpio_unbanked = *container_of(irq_get_chip(irq),
> +				      struct irq_chip_type, chip);
> +
> +	return &gpio_unbanked.chip;
> +};
> +
> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
> +{
> +	static struct irq_chip gpio_unbanked;
> +
> +	gpio_unbanked = *irq_get_chip(irq);
> +	pr_err("keystone_gpio_get_irq_chip\n");
> +	return &gpio_unbanked;
> +};
> +
> +static const struct of_device_id davinci_gpio_ids[];
> +
>  /*
>   * NOTE:  for suspend/resume, probably best to make a platform_device with
>   * suspend_late/resume_resume calls hooking into results of the set_wake()
> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>  	struct davinci_gpio_platform_data *pdata = dev->platform_data;
>  	struct davinci_gpio_regs __iomem *g;
>  	struct irq_domain	*irq_domain = NULL;
> +	const struct of_device_id *match;
> +	struct irq_chip *irq_chip;
> +	struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
> +
> +	gpio_get_irq_chip = davinci_gpio_get_irq_chip;
> +	match = of_match_device(of_match_ptr(davinci_gpio_ids),
> +				dev);
> +	if (match)
> +		gpio_get_irq_chip = match->data;
and if the DT node is not populated ?
>  
>  	ngpio = pdata->ngpio;
>  	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>  	}
>  
>  	bank_irq = res->start;
> -
stray change..

>  	if (!bank_irq) {
>  		dev_err(dev, "Invalid IRQ resource\n");
>  		return -ENODEV;
> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>  	}
>  
>  	/*
> -	 * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
> +	 * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
So you want to have a generic name here. If you are changing it, change it
across the driver in a separate patch or leave it as is...
I don't think it matters much..

With those comments addressed, you can add my ack.
Acked-by: Santosh Shilimkar <santosh.shilimkar-l0cyMroinI0@public.gmane.org>

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

* Re: [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
@ 2013-12-16 16:38         ` Santosh Shilimkar
  0 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 16:38 UTC (permalink / raw)
  To: Grygorii Strashko
  Cc: Linus Walleij, Sekhar Nori, Rob Herring, prabhakar.csengg,
	linux-gpio, linux-kernel, davinci-linux-open-source,
	linux-arm-kernel, devicetree

On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
> The similar GPIO HW block is used by keystone SoCs as
> in Davinci SoCs.
> Hence, reuse Davinci GPIO driver for Keystone taking into
> account that Keystone contains ARM GIC IRQ controller which
> is implemented using IRQ Chip.
> 
> Documentation:
> 	http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
> 
> CC: Linus Walleij <linus.walleij@linaro.org>
> CC: Sekhar Nori <nsekhar@ti.com>
> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
> CC: devicetree@vger.kernel.org
> 
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
>  .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>  drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>  2 files changed, 40 insertions(+), 13 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> index a2e839d..4ce9862 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> @@ -1,7 +1,7 @@
> -Davinci GPIO controller bindings
> +Davinci/Keystone GPIO controller bindings
>  
>  Required Properties:
> -- compatible: should be "ti,dm6441-gpio"
> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>  
>  - reg: Physical base address of the controller and the size of memory mapped
>         registers.
> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
> index 73f65ca..3e44e0c 100644
> --- a/drivers/gpio/gpio-davinci.c
> +++ b/drivers/gpio/gpio-davinci.c
> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>  	.xlate = irq_domain_xlate_onetwocell,
>  };
>  
> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
> +{
> +	static struct irq_chip_type gpio_unbanked;
> +
> +	gpio_unbanked = *container_of(irq_get_chip(irq),
> +				      struct irq_chip_type, chip);
> +
> +	return &gpio_unbanked.chip;
> +};
> +
> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
> +{
> +	static struct irq_chip gpio_unbanked;
> +
> +	gpio_unbanked = *irq_get_chip(irq);
> +	pr_err("keystone_gpio_get_irq_chip\n");
> +	return &gpio_unbanked;
> +};
> +
> +static const struct of_device_id davinci_gpio_ids[];
> +
>  /*
>   * NOTE:  for suspend/resume, probably best to make a platform_device with
>   * suspend_late/resume_resume calls hooking into results of the set_wake()
> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>  	struct davinci_gpio_platform_data *pdata = dev->platform_data;
>  	struct davinci_gpio_regs __iomem *g;
>  	struct irq_domain	*irq_domain = NULL;
> +	const struct of_device_id *match;
> +	struct irq_chip *irq_chip;
> +	struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
> +
> +	gpio_get_irq_chip = davinci_gpio_get_irq_chip;
> +	match = of_match_device(of_match_ptr(davinci_gpio_ids),
> +				dev);
> +	if (match)
> +		gpio_get_irq_chip = match->data;
and if the DT node is not populated ?
>  
>  	ngpio = pdata->ngpio;
>  	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>  	}
>  
>  	bank_irq = res->start;
> -
stray change..

>  	if (!bank_irq) {
>  		dev_err(dev, "Invalid IRQ resource\n");
>  		return -ENODEV;
> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>  	}
>  
>  	/*
> -	 * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
> +	 * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
So you want to have a generic name here. If you are changing it, change it
across the driver in a separate patch or leave it as is...
I don't think it matters much..

With those comments addressed, you can add my ack.
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>


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

* [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
@ 2013-12-16 16:38         ` Santosh Shilimkar
  0 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 16:38 UTC (permalink / raw)
  To: linux-arm-kernel

On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
> The similar GPIO HW block is used by keystone SoCs as
> in Davinci SoCs.
> Hence, reuse Davinci GPIO driver for Keystone taking into
> account that Keystone contains ARM GIC IRQ controller which
> is implemented using IRQ Chip.
> 
> Documentation:
> 	http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
> 
> CC: Linus Walleij <linus.walleij@linaro.org>
> CC: Sekhar Nori <nsekhar@ti.com>
> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
> CC: devicetree at vger.kernel.org
> 
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
>  .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>  drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>  2 files changed, 40 insertions(+), 13 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> index a2e839d..4ce9862 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
> @@ -1,7 +1,7 @@
> -Davinci GPIO controller bindings
> +Davinci/Keystone GPIO controller bindings
>  
>  Required Properties:
> -- compatible: should be "ti,dm6441-gpio"
> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>  
>  - reg: Physical base address of the controller and the size of memory mapped
>         registers.
> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
> index 73f65ca..3e44e0c 100644
> --- a/drivers/gpio/gpio-davinci.c
> +++ b/drivers/gpio/gpio-davinci.c
> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>  	.xlate = irq_domain_xlate_onetwocell,
>  };
>  
> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
> +{
> +	static struct irq_chip_type gpio_unbanked;
> +
> +	gpio_unbanked = *container_of(irq_get_chip(irq),
> +				      struct irq_chip_type, chip);
> +
> +	return &gpio_unbanked.chip;
> +};
> +
> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
> +{
> +	static struct irq_chip gpio_unbanked;
> +
> +	gpio_unbanked = *irq_get_chip(irq);
> +	pr_err("keystone_gpio_get_irq_chip\n");
> +	return &gpio_unbanked;
> +};
> +
> +static const struct of_device_id davinci_gpio_ids[];
> +
>  /*
>   * NOTE:  for suspend/resume, probably best to make a platform_device with
>   * suspend_late/resume_resume calls hooking into results of the set_wake()
> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>  	struct davinci_gpio_platform_data *pdata = dev->platform_data;
>  	struct davinci_gpio_regs __iomem *g;
>  	struct irq_domain	*irq_domain = NULL;
> +	const struct of_device_id *match;
> +	struct irq_chip *irq_chip;
> +	struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
> +
> +	gpio_get_irq_chip = davinci_gpio_get_irq_chip;
> +	match = of_match_device(of_match_ptr(davinci_gpio_ids),
> +				dev);
> +	if (match)
> +		gpio_get_irq_chip = match->data;
and if the DT node is not populated ?
>  
>  	ngpio = pdata->ngpio;
>  	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>  	}
>  
>  	bank_irq = res->start;
> -
stray change..

>  	if (!bank_irq) {
>  		dev_err(dev, "Invalid IRQ resource\n");
>  		return -ENODEV;
> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>  	}
>  
>  	/*
> -	 * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
> +	 * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
So you want to have a generic name here. If you are changing it, change it
across the driver in a separate patch or leave it as is...
I don't think it matters much..

With those comments addressed, you can add my ack.
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
  2013-12-16 15:09           ` Santosh Shilimkar
  (?)
@ 2013-12-16 16:39               ` Santosh Shilimkar
  -1 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 16:39 UTC (permalink / raw)
  To: Sekhar Nori, Linus Walleij
  Cc: davinci-linux-open-source-VycZQUHpC/PFrsHnngEfi1aTQe2KTcn/,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring,
	linux-gpio-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Monday 16 December 2013 10:09 AM, Santosh Shilimkar wrote:
> On Sunday 15 December 2013 08:50 AM, Sekhar Nori wrote:
>> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>>> Linus, Sekhar,
>>>
>>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>>> This series is intended to update Davinci GPIO driver and reuse
>>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>>> Keystone GPIO IP: supports:
>>>> - up to 32 GPIO lines;
>>>> - only unbanked irqs;
>>>>
>>>> See Documentation:
>>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>>
>>>> This series depends on:
>>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>>> https://lkml.org/lkml/2013/11/8/22
>>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>>> https://www.mail-archive.com/devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg05970.html
>>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>>> https://lkml.org/lkml/2013/11/26/405
>>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>>> https://lkml.org/lkml/2013/11/26/435
>>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>>> https://lkml.org/lkml/2013/11/26/428
>>>>
>>>> To handle all dependencies, I've created a branch where I collected all 
>>>> "ready to merge" patches (all acks added in patches) and this series:
>>>> - https://github.com/grygoriyS/linux.git
>>>> - branch: keystone-master-gpio-for-next
>>>>
>>> Can one of you pull all these patches ?
>>
>> So I went through my backlog and queued all that I think is ready. Here
>> is the branch. Let me know if there is anything else missing.
>>
> The $subject series (2 patches) don't seems to be on your branch.
> 
Ofcourse Linus needs to ack them before they can be considered.
I have couple of comments as well so refresh of the series
would be needed.

Linus, Can you also please look at them.

Regards,
Santosh

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-16 16:39               ` Santosh Shilimkar
  0 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 16:39 UTC (permalink / raw)
  To: Sekhar Nori, Linus Walleij
  Cc: Grygorii Strashko, Rob Herring, prabhakar.csengg, linux-gpio,
	linux-kernel, davinci-linux-open-source, linux-arm-kernel

On Monday 16 December 2013 10:09 AM, Santosh Shilimkar wrote:
> On Sunday 15 December 2013 08:50 AM, Sekhar Nori wrote:
>> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>>> Linus, Sekhar,
>>>
>>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>>> This series is intended to update Davinci GPIO driver and reuse
>>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>>> Keystone GPIO IP: supports:
>>>> - up to 32 GPIO lines;
>>>> - only unbanked irqs;
>>>>
>>>> See Documentation:
>>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>>
>>>> This series depends on:
>>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>>> https://lkml.org/lkml/2013/11/8/22
>>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>>> https://www.mail-archive.com/devicetree@vger.kernel.org/msg05970.html
>>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>>> https://lkml.org/lkml/2013/11/26/405
>>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>>> https://lkml.org/lkml/2013/11/26/435
>>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>>> https://lkml.org/lkml/2013/11/26/428
>>>>
>>>> To handle all dependencies, I've created a branch where I collected all 
>>>> "ready to merge" patches (all acks added in patches) and this series:
>>>> - https://github.com/grygoriyS/linux.git
>>>> - branch: keystone-master-gpio-for-next
>>>>
>>> Can one of you pull all these patches ?
>>
>> So I went through my backlog and queued all that I think is ready. Here
>> is the branch. Let me know if there is anything else missing.
>>
> The $subject series (2 patches) don't seems to be on your branch.
> 
Ofcourse Linus needs to ack them before they can be considered.
I have couple of comments as well so refresh of the series
would be needed.

Linus, Can you also please look at them.

Regards,
Santosh


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

* [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-16 16:39               ` Santosh Shilimkar
  0 siblings, 0 replies; 45+ messages in thread
From: Santosh Shilimkar @ 2013-12-16 16:39 UTC (permalink / raw)
  To: linux-arm-kernel

On Monday 16 December 2013 10:09 AM, Santosh Shilimkar wrote:
> On Sunday 15 December 2013 08:50 AM, Sekhar Nori wrote:
>> On Sunday 15 December 2013 12:41 AM, Santosh Shilimkar wrote:
>>> Linus, Sekhar,
>>>
>>> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>>>> This series is intended to update Davinci GPIO driver and reuse
>>>> it for Keystone SoCs, because Keystone uses the similar GPIO IP like Davinci.
>>>> Keystone GPIO IP: supports:
>>>> - up to 32 GPIO lines;
>>>> - only unbanked irqs;
>>>>
>>>> See Documentation:
>>>> Keystone - http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>>>
>>>> This series depends on:
>>>> [1] "[PATCH 1/2] gpio: davinci: Fix a check for unbanked gpio"
>>>> https://lkml.org/lkml/2013/11/8/22
>>>> [2] "[PATCH v6 0/6] gpio: daVinci: cleanup and feature enhancement"
>>>> https://www.mail-archive.com/devicetree at vger.kernel.org/msg05970.html
>>>> [3] "gpio: davinci: get rid of DAVINCI_N_GPIO"
>>>> https://lkml.org/lkml/2013/11/26/405
>>>> [4] "gpio: introduce GPIO_DAVINCI kconfig option"
>>>> https://lkml.org/lkml/2013/11/26/435
>>>> [5] "gpio: davinci: use chained_irq_enter/chained_irq_exit API"
>>>> https://lkml.org/lkml/2013/11/26/428
>>>>
>>>> To handle all dependencies, I've created a branch where I collected all 
>>>> "ready to merge" patches (all acks added in patches) and this series:
>>>> - https://github.com/grygoriyS/linux.git
>>>> - branch: keystone-master-gpio-for-next
>>>>
>>> Can one of you pull all these patches ?
>>
>> So I went through my backlog and queued all that I think is ready. Here
>> is the branch. Let me know if there is anything else missing.
>>
> The $subject series (2 patches) don't seems to be on your branch.
> 
Ofcourse Linus needs to ack them before they can be considered.
I have couple of comments as well so refresh of the series
would be needed.

Linus, Can you also please look at them.

Regards,
Santosh

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

* Re: [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
  2013-12-16 16:38         ` Santosh Shilimkar
  (?)
@ 2013-12-16 18:02           ` Grygorii Strashko
  -1 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-16 18:02 UTC (permalink / raw)
  To: Santosh Shilimkar
  Cc: Linus Walleij, Sekhar Nori, Rob Herring, prabhakar.csengg,
	linux-gpio, linux-kernel, davinci-linux-open-source,
	linux-arm-kernel, devicetree

On 12/16/2013 06:38 PM, Santosh Shilimkar wrote:
> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>> The similar GPIO HW block is used by keystone SoCs as
>> in Davinci SoCs.
>> Hence, reuse Davinci GPIO driver for Keystone taking into
>> account that Keystone contains ARM GIC IRQ controller which
>> is implemented using IRQ Chip.
>>
>> Documentation:
>> 	http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>
>> CC: Linus Walleij <linus.walleij@linaro.org>
>> CC: Sekhar Nori <nsekhar@ti.com>
>> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
>> CC: devicetree@vger.kernel.org
>>
>> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
>> ---
>>   .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>>   drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>>   2 files changed, 40 insertions(+), 13 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> index a2e839d..4ce9862 100644
>> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> @@ -1,7 +1,7 @@
>> -Davinci GPIO controller bindings
>> +Davinci/Keystone GPIO controller bindings
>>
>>   Required Properties:
>> -- compatible: should be "ti,dm6441-gpio"
>> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>>
>>   - reg: Physical base address of the controller and the size of memory mapped
>>          registers.
>> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
>> index 73f65ca..3e44e0c 100644
>> --- a/drivers/gpio/gpio-davinci.c
>> +++ b/drivers/gpio/gpio-davinci.c
>> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>>   	.xlate = irq_domain_xlate_onetwocell,
>>   };
>>
>> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +	static struct irq_chip_type gpio_unbanked;
>> +
>> +	gpio_unbanked = *container_of(irq_get_chip(irq),
>> +				      struct irq_chip_type, chip);
>> +
>> +	return &gpio_unbanked.chip;
>> +};
>> +
>> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +	static struct irq_chip gpio_unbanked;
>> +
>> +	gpio_unbanked = *irq_get_chip(irq);
>> +	pr_err("keystone_gpio_get_irq_chip\n");
>> +	return &gpio_unbanked;
>> +};
>> +
>> +static const struct of_device_id davinci_gpio_ids[];
>> +
>>   /*
>>    * NOTE:  for suspend/resume, probably best to make a platform_device with
>>    * suspend_late/resume_resume calls hooking into results of the set_wake()
>> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>   	struct davinci_gpio_platform_data *pdata = dev->platform_data;
>>   	struct davinci_gpio_regs __iomem *g;
>>   	struct irq_domain	*irq_domain = NULL;
>> +	const struct of_device_id *match;
>> +	struct irq_chip *irq_chip;
>> +	struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
>> +
>> +	gpio_get_irq_chip = davinci_gpio_get_irq_chip;
>> +	match = of_match_device(of_match_ptr(davinci_gpio_ids),
>> +				dev);
>> +	if (match)
>> +		gpio_get_irq_chip = match->data;
> and if the DT node is not populated ?
>>
>>   	ngpio = pdata->ngpio;
>>   	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
>> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>   	}
>>
>>   	bank_irq = res->start;
>> -
> stray change..
>
>>   	if (!bank_irq) {
>>   		dev_err(dev, "Invalid IRQ resource\n");
>>   		return -ENODEV;
>> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>   	}
>>
>>   	/*
>> -	 * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>> +	 * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
> So you want to have a generic name here. If you are changing it, change it
> across the driver in a separate patch or leave it as is...
> I don't think it matters much..

Uh. Ok. I'll drop renaming.


>
> With those comments addressed, you can add my ack.
> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
>


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

* Re: [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
@ 2013-12-16 18:02           ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-16 18:02 UTC (permalink / raw)
  To: Santosh Shilimkar
  Cc: Linus Walleij, Sekhar Nori, Rob Herring, prabhakar.csengg,
	linux-gpio, linux-kernel, davinci-linux-open-source,
	linux-arm-kernel, devicetree

On 12/16/2013 06:38 PM, Santosh Shilimkar wrote:
> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>> The similar GPIO HW block is used by keystone SoCs as
>> in Davinci SoCs.
>> Hence, reuse Davinci GPIO driver for Keystone taking into
>> account that Keystone contains ARM GIC IRQ controller which
>> is implemented using IRQ Chip.
>>
>> Documentation:
>> 	http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>
>> CC: Linus Walleij <linus.walleij@linaro.org>
>> CC: Sekhar Nori <nsekhar@ti.com>
>> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
>> CC: devicetree@vger.kernel.org
>>
>> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
>> ---
>>   .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>>   drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>>   2 files changed, 40 insertions(+), 13 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> index a2e839d..4ce9862 100644
>> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> @@ -1,7 +1,7 @@
>> -Davinci GPIO controller bindings
>> +Davinci/Keystone GPIO controller bindings
>>
>>   Required Properties:
>> -- compatible: should be "ti,dm6441-gpio"
>> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>>
>>   - reg: Physical base address of the controller and the size of memory mapped
>>          registers.
>> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
>> index 73f65ca..3e44e0c 100644
>> --- a/drivers/gpio/gpio-davinci.c
>> +++ b/drivers/gpio/gpio-davinci.c
>> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>>   	.xlate = irq_domain_xlate_onetwocell,
>>   };
>>
>> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +	static struct irq_chip_type gpio_unbanked;
>> +
>> +	gpio_unbanked = *container_of(irq_get_chip(irq),
>> +				      struct irq_chip_type, chip);
>> +
>> +	return &gpio_unbanked.chip;
>> +};
>> +
>> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +	static struct irq_chip gpio_unbanked;
>> +
>> +	gpio_unbanked = *irq_get_chip(irq);
>> +	pr_err("keystone_gpio_get_irq_chip\n");
>> +	return &gpio_unbanked;
>> +};
>> +
>> +static const struct of_device_id davinci_gpio_ids[];
>> +
>>   /*
>>    * NOTE:  for suspend/resume, probably best to make a platform_device with
>>    * suspend_late/resume_resume calls hooking into results of the set_wake()
>> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>   	struct davinci_gpio_platform_data *pdata = dev->platform_data;
>>   	struct davinci_gpio_regs __iomem *g;
>>   	struct irq_domain	*irq_domain = NULL;
>> +	const struct of_device_id *match;
>> +	struct irq_chip *irq_chip;
>> +	struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
>> +
>> +	gpio_get_irq_chip = davinci_gpio_get_irq_chip;
>> +	match = of_match_device(of_match_ptr(davinci_gpio_ids),
>> +				dev);
>> +	if (match)
>> +		gpio_get_irq_chip = match->data;
> and if the DT node is not populated ?
>>
>>   	ngpio = pdata->ngpio;
>>   	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
>> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>   	}
>>
>>   	bank_irq = res->start;
>> -
> stray change..
>
>>   	if (!bank_irq) {
>>   		dev_err(dev, "Invalid IRQ resource\n");
>>   		return -ENODEV;
>> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>   	}
>>
>>   	/*
>> -	 * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>> +	 * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
> So you want to have a generic name here. If you are changing it, change it
> across the driver in a separate patch or leave it as is...
> I don't think it matters much..

Uh. Ok. I'll drop renaming.


>
> With those comments addressed, you can add my ack.
> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
>


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

* [PATCH 2/2] gpio: davinci: reuse for Keystone SoC
@ 2013-12-16 18:02           ` Grygorii Strashko
  0 siblings, 0 replies; 45+ messages in thread
From: Grygorii Strashko @ 2013-12-16 18:02 UTC (permalink / raw)
  To: linux-arm-kernel

On 12/16/2013 06:38 PM, Santosh Shilimkar wrote:
> On Thursday 12 December 2013 01:12 PM, Grygorii Strashko wrote:
>> The similar GPIO HW block is used by keystone SoCs as
>> in Davinci SoCs.
>> Hence, reuse Davinci GPIO driver for Keystone taking into
>> account that Keystone contains ARM GIC IRQ controller which
>> is implemented using IRQ Chip.
>>
>> Documentation:
>> 	http://www.ti.com/lit/ug/sprugv1/sprugv1.pdf
>>
>> CC: Linus Walleij <linus.walleij@linaro.org>
>> CC: Sekhar Nori <nsekhar@ti.com>
>> CC: Santosh Shilimkar <santosh.shilimkar@ti.com>
>> CC: devicetree at vger.kernel.org
>>
>> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
>> ---
>>   .../devicetree/bindings/gpio/gpio-davinci.txt      |    4 +-
>>   drivers/gpio/gpio-davinci.c                        |   49 +++++++++++++++-----
>>   2 files changed, 40 insertions(+), 13 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> index a2e839d..4ce9862 100644
>> --- a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt
>> @@ -1,7 +1,7 @@
>> -Davinci GPIO controller bindings
>> +Davinci/Keystone GPIO controller bindings
>>
>>   Required Properties:
>> -- compatible: should be "ti,dm6441-gpio"
>> +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
>>
>>   - reg: Physical base address of the controller and the size of memory mapped
>>          registers.
>> diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
>> index 73f65ca..3e44e0c 100644
>> --- a/drivers/gpio/gpio-davinci.c
>> +++ b/drivers/gpio/gpio-davinci.c
>> @@ -413,6 +413,27 @@ static const struct irq_domain_ops davinci_gpio_irq_ops = {
>>   	.xlate = irq_domain_xlate_onetwocell,
>>   };
>>
>> +static struct irq_chip *davinci_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +	static struct irq_chip_type gpio_unbanked;
>> +
>> +	gpio_unbanked = *container_of(irq_get_chip(irq),
>> +				      struct irq_chip_type, chip);
>> +
>> +	return &gpio_unbanked.chip;
>> +};
>> +
>> +static struct irq_chip *keystone_gpio_get_irq_chip(unsigned int irq)
>> +{
>> +	static struct irq_chip gpio_unbanked;
>> +
>> +	gpio_unbanked = *irq_get_chip(irq);
>> +	pr_err("keystone_gpio_get_irq_chip\n");
>> +	return &gpio_unbanked;
>> +};
>> +
>> +static const struct of_device_id davinci_gpio_ids[];
>> +
>>   /*
>>    * NOTE:  for suspend/resume, probably best to make a platform_device with
>>    * suspend_late/resume_resume calls hooking into results of the set_wake()
>> @@ -433,6 +454,15 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>   	struct davinci_gpio_platform_data *pdata = dev->platform_data;
>>   	struct davinci_gpio_regs __iomem *g;
>>   	struct irq_domain	*irq_domain = NULL;
>> +	const struct of_device_id *match;
>> +	struct irq_chip *irq_chip;
>> +	struct irq_chip *(*gpio_get_irq_chip)(unsigned int irq);
>> +
>> +	gpio_get_irq_chip = davinci_gpio_get_irq_chip;
>> +	match = of_match_device(of_match_ptr(davinci_gpio_ids),
>> +				dev);
>> +	if (match)
>> +		gpio_get_irq_chip = match->data;
> and if the DT node is not populated ?
>>
>>   	ngpio = pdata->ngpio;
>>   	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
>> @@ -442,7 +472,6 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>   	}
>>
>>   	bank_irq = res->start;
>> -
> stray change..
>
>>   	if (!bank_irq) {
>>   		dev_err(dev, "Invalid IRQ resource\n");
>>   		return -ENODEV;
>> @@ -484,25 +513,22 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev)
>>   	}
>>
>>   	/*
>> -	 * AINTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
>> +	 * INTC can handle direct/unbanked IRQs for GPIOs, with the GPIO
> So you want to have a generic name here. If you are changing it, change it
> across the driver in a separate patch or leave it as is...
> I don't think it matters much..

Uh. Ok. I'll drop renaming.


>
> With those comments addressed, you can add my ack.
> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
>

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
  2013-12-16 16:39               ` Santosh Shilimkar
  (?)
@ 2013-12-20  9:39                 ` Linus Walleij
  -1 siblings, 0 replies; 45+ messages in thread
From: Linus Walleij @ 2013-12-20  9:39 UTC (permalink / raw)
  To: Santosh Shilimkar
  Cc: Sekhar Nori, Grygorii Strashko, Rob Herring, Prabhakar Lad,
	linux-gpio, linux-kernel, davinci-linux-open-source,
	linux-arm-kernel

On Mon, Dec 16, 2013 at 5:39 PM, Santosh Shilimkar
<santosh.shilimkar@ti.com> wrote:
> On Monday 16 December 2013 10:09 AM, Santosh Shilimkar wrote:

>> The $subject series (2 patches) don't seems to be on your branch.
>>
> Ofcourse Linus needs to ack them before they can be considered.
> I have couple of comments as well so refresh of the series
> would be needed.
>
> Linus, Can you also please look at them.

I'm looking, sorry for the delay. Busy before christmas.

Yours,
Linus Walleij

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

* Re: [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-20  9:39                 ` Linus Walleij
  0 siblings, 0 replies; 45+ messages in thread
From: Linus Walleij @ 2013-12-20  9:39 UTC (permalink / raw)
  To: Santosh Shilimkar
  Cc: Sekhar Nori, Grygorii Strashko, Rob Herring, Prabhakar Lad,
	linux-gpio, linux-kernel, davinci-linux-open-source,
	linux-arm-kernel

On Mon, Dec 16, 2013 at 5:39 PM, Santosh Shilimkar
<santosh.shilimkar@ti.com> wrote:
> On Monday 16 December 2013 10:09 AM, Santosh Shilimkar wrote:

>> The $subject series (2 patches) don't seems to be on your branch.
>>
> Ofcourse Linus needs to ack them before they can be considered.
> I have couple of comments as well so refresh of the series
> would be needed.
>
> Linus, Can you also please look at them.

I'm looking, sorry for the delay. Busy before christmas.

Yours,
Linus Walleij

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

* [PATCH 0/2] gpio: davinci: reuse for keystone arch
@ 2013-12-20  9:39                 ` Linus Walleij
  0 siblings, 0 replies; 45+ messages in thread
From: Linus Walleij @ 2013-12-20  9:39 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Dec 16, 2013 at 5:39 PM, Santosh Shilimkar
<santosh.shilimkar@ti.com> wrote:
> On Monday 16 December 2013 10:09 AM, Santosh Shilimkar wrote:

>> The $subject series (2 patches) don't seems to be on your branch.
>>
> Ofcourse Linus needs to ack them before they can be considered.
> I have couple of comments as well so refresh of the series
> would be needed.
>
> Linus, Can you also please look at them.

I'm looking, sorry for the delay. Busy before christmas.

Yours,
Linus Walleij

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

end of thread, other threads:[~2013-12-20  9:39 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-12-12 18:12 [PATCH 0/2] gpio: davinci: reuse for keystone arch Grygorii Strashko
2013-12-12 18:12 ` Grygorii Strashko
2013-12-12 18:12 ` Grygorii Strashko
2013-12-12 18:12 ` [PATCH 1/2] gpio: davinci: don't create irq_domain in case of unbanked irqs Grygorii Strashko
2013-12-12 18:12   ` Grygorii Strashko
2013-12-12 18:12   ` Grygorii Strashko
     [not found]   ` <1386871973-26762-2-git-send-email-grygorii.strashko-l0cyMroinI0@public.gmane.org>
2013-12-16 16:24     ` Santosh Shilimkar
2013-12-16 16:24       ` Santosh Shilimkar
2013-12-16 16:24       ` Santosh Shilimkar
     [not found] ` <1386871973-26762-1-git-send-email-grygorii.strashko-l0cyMroinI0@public.gmane.org>
2013-12-12 18:12   ` [PATCH 2/2] gpio: davinci: reuse for Keystone SoC Grygorii Strashko
2013-12-12 18:12     ` Grygorii Strashko
2013-12-12 18:12     ` Grygorii Strashko
2013-12-16  7:29     ` Alexandre Courbot
2013-12-16  7:29       ` Alexandre Courbot
2013-12-16  7:29       ` Alexandre Courbot
     [not found]       ` <CAAVeFuJSe_BZ+cr8ZVz-etAzsUbe_taS+0EqM+pXhKhTdyuWiQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-12-16 11:18         ` Grygorii Strashko
2013-12-16 11:18           ` Grygorii Strashko
2013-12-16 11:18           ` Grygorii Strashko
     [not found]     ` <1386871973-26762-3-git-send-email-grygorii.strashko-l0cyMroinI0@public.gmane.org>
2013-12-16 16:38       ` Santosh Shilimkar
2013-12-16 16:38         ` Santosh Shilimkar
2013-12-16 16:38         ` Santosh Shilimkar
2013-12-16 18:02         ` Grygorii Strashko
2013-12-16 18:02           ` Grygorii Strashko
2013-12-16 18:02           ` Grygorii Strashko
2013-12-14 19:11 ` [PATCH 0/2] gpio: davinci: reuse for keystone arch Santosh Shilimkar
2013-12-14 19:11   ` Santosh Shilimkar
2013-12-14 19:11   ` Santosh Shilimkar
     [not found]   ` <52ACAD50.6060003-l0cyMroinI0@public.gmane.org>
2013-12-15 13:50     ` Sekhar Nori
2013-12-15 13:50       ` Sekhar Nori
2013-12-15 13:50       ` Sekhar Nori
     [not found]       ` <52ADB3BC.3080605-l0cyMroinI0@public.gmane.org>
2013-12-15 13:54         ` Sekhar Nori
2013-12-15 13:54           ` Sekhar Nori
2013-12-15 13:54           ` Sekhar Nori
     [not found]           ` <52ADB47E.1080505-l0cyMroinI0@public.gmane.org>
2013-12-16 11:18             ` Grygorii Strashko
2013-12-16 11:18               ` Grygorii Strashko
2013-12-16 11:18               ` Grygorii Strashko
2013-12-16 15:09         ` Santosh Shilimkar
2013-12-16 15:09           ` Santosh Shilimkar
2013-12-16 15:09           ` Santosh Shilimkar
     [not found]           ` <52AF17A6.3060007-l0cyMroinI0@public.gmane.org>
2013-12-16 16:39             ` Santosh Shilimkar
2013-12-16 16:39               ` Santosh Shilimkar
2013-12-16 16:39               ` Santosh Shilimkar
2013-12-20  9:39               ` Linus Walleij
2013-12-20  9:39                 ` Linus Walleij
2013-12-20  9:39                 ` Linus Walleij

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.