Skip to contentSkip to conversation

gpio: lpc32xx: disable broken to_irq support

PATCH New Sylvain Lemieux 3 participants 4 messages May 11, 2016 – May 24, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 gpio: lpc32xx: disable broken to_irq support

From: Sylvain Lemieux <[email protected]>

The "to_irq" functionality is broken inside this driver since commit 76ba59f8366f ("genirq: Add irq_domain-aware core IRQ handler").

The addition of the new lpc32xx irqchip driver in 4.7, fixed the lpc32xx platform interrupt issue.

When switching to the new lpc32xx irqchip driver, a warning appear in the lpc32xx gpio driver: warning: "NR_IRQS" redefined.

To remove this warning (temporary solution), this patch disables the broken "to_irq" mapping functionality support.

---
Note:
* For details on the lpc32xx irqchip patch, refer to:
http://thread.gmane.org/gmane.linux.drivers.devicetree/165620

* The final solution is to replace the existing lpc32xx gpio driver. This work is currently in progress; refer to the following URL:
http://thread.gmane.org/gmane.linux.drivers.devicetree/144696

 drivers/gpio/gpio-lpc32xx.c | 48 +--------------------------------------------
 1 file changed, 1 insertion(+), 47 deletions(-)
drivers/gpio/gpio-lpc32xx.c +1 -47
index d39014d..fc5f197 100644
@@ -29,7 +29,6 @@
 
 #include <mach/hardware.h>
 #include <mach/platform.h>
-#include <mach/irqs.h>
 
 #define LPC32XX_GPIO_P3_INP_STATE		_GPREG(0x000)
 #define LPC32XX_GPIO_P3_OUTP_SET		_GPREG(0x004)
@@ -371,61 +370,16 @@ static int lpc32xx_gpio_request(struct gpio_chip *chip, unsigned pin)
 
 static int lpc32xx_gpio_to_irq_p01(struct gpio_chip *chip, unsigned offset)
 {
-	return IRQ_LPC32XX_P0_P1_IRQ;
+	return -ENXIO;
 }
 
-static const char lpc32xx_gpio_to_irq_gpio_p3_table[] = {
-	IRQ_LPC32XX_GPIO_00,
-	IRQ_LPC32XX_GPIO_01,
-	IRQ_LPC32XX_GPIO_02,
-	IRQ_LPC32XX_GPIO_03,
-	IRQ_LPC32XX_GPIO_04,
-	IRQ_LPC32XX_GPIO_05,
-};
-
 static int lpc32xx_gpio_to_irq_gpio_p3(struct gpio_chip *chip, unsigned offset)
 {
-	if (offset < ARRAY_SIZE(lpc32xx_gpio_to_irq_gpio_p3_table))
-		return lpc32xx_gpio_to_irq_gpio_p3_table[offset];
 	return -ENXIO;
 }
 
-static const char lpc32xx_gpio_to_irq_gpi_p3_table[] = {
-	IRQ_LPC32XX_GPI_00,
-	IRQ_LPC32XX_GPI_01,
-	IRQ_LPC32XX_GPI_02,
-	IRQ_LPC32XX_GPI_03,
-	IRQ_LPC32XX_GPI_04,
-	IRQ_LPC32XX_GPI_05,
-	IRQ_LPC32XX_GPI_06,
-	IRQ_LPC32XX_GPI_07,
-	IRQ_LPC32XX_GPI_08,
-	IRQ_LPC32XX_GPI_09,
-	-ENXIO, /* 10 */
-	-ENXIO, /* 11 */
-	-ENXIO, /* 12 */
-	-ENXIO, /* 13 */
-	-ENXIO, /* 14 */
-	-ENXIO, /* 15 */
-	-ENXIO, /* 16 */
-	-ENXIO, /* 17 */
-	-ENXIO, /* 18 */
-	IRQ_LPC32XX_GPI_19,
-	-ENXIO, /* 20 */
-	-ENXIO, /* 21 */
-	-ENXIO, /* 22 */
-	-ENXIO, /* 23 */
-	-ENXIO, /* 24 */
-	-ENXIO, /* 25 */
-	-ENXIO, /* 26 */
-	-ENXIO, /* 27 */
-	IRQ_LPC32XX_GPI_28,
-};
-
 static int lpc32xx_gpio_to_irq_gpi_p3(struct gpio_chip *chip, unsigned offset)
 {
-	if (offset < ARRAY_SIZE(lpc32xx_gpio_to_irq_gpi_p3_table))
-		return lpc32xx_gpio_to_irq_gpi_p3_table[offset];
 	return -ENXIO;
 }
 
Signature · 1 line
1.8.3.1
#1 lore raw

PATCH 1/1 gpio: lpc32xx: disable broken to_irq support

Hi Sylvain,

Quoted 20 lines · Sylvain Lemieux

From: Sylvain Lemieux <[email protected]>

The "to_irq" functionality is broken inside this driver since commit 76ba59f8366f ("genirq: Add irq_domain-aware core IRQ handler").

The addition of the new lpc32xx irqchip driver in 4.7, fixed the lpc32xx platform interrupt issue.

When switching to the new lpc32xx irqchip driver, a warning appear in the lpc32xx gpio driver: warning: "NR_IRQS" redefined.

To remove this warning (temporary solution), this patch disables the broken "to_irq" mapping functionality support.

---
Note:
* For details on the lpc32xx irqchip patch, refer to:
http://thread.gmane.org/gmane.linux.drivers.devicetree/165620

Quoted 7 lines

* The final solution is to replace the existing lpc32xx gpio driver. This work is currently in progress; refer to the following URL:
http://thread.gmane.org/gmane.linux.drivers.devicetree/144696

 drivers/gpio/gpio-lpc32xx.c | 48 +--------------------------------------------
 1 file changed, 1 insertion(+), 47 deletions(-)

the change looks good to me.

Probably all lpc32xx_gpio_to_irq* functions can be removed along with .to_irq callback assignments, but it is up to you.

--
With best wishes,
Vladimir

#2 lore raw

PATCH 1/1 gpio: lpc32xx: disable broken to_irq support

In reply to Sylvain Lemieux
Quoted 8 lines · Sylvain Lemieux

From: Sylvain Lemieux <[email protected]>

The "to_irq" functionality is broken inside this driver since commit 76ba59f8366f ("genirq: Add irq_domain-aware core IRQ handler").

The addition of the new lpc32xx irqchip driver in 4.7, fixed the lpc32xx platform interrupt issue.

Quoted 7 lines

When switching to the new lpc32xx irqchip driver, a warning appear in the lpc32xx gpio driver: warning: "NR_IRQS" redefined.

To remove this warning (temporary solution), this patch disables the broken "to_irq" mapping functionality support.

Patch applied for fixes with Vladimir's ACK.

Quoted 3 lines

* The final solution is to replace the existing lpc32xx gpio driver. This work is currently in progress; refer to the following URL:
http://thread.gmane.org/gmane.linux.drivers.devicetree/144696

Hm, I see that the ambition was to merge the new irqchip driver and the new GPIO driver in the same merge window. Sorry if I was being too lazy/picky/whatever about the patch(es) I guess I didn't quite get the scope of this change. :(

I should say that as long as we can agree that the new code makes the kernel as a whole a better place, I am happy to merge it. Sometimes also I need to zoom out from the GPIO and pin control subsystem(s) and see the big picture.

Yours,
Linus Walleij

#3 lore raw

PATCH 1/1 gpio: lpc32xx: disable broken to_irq support

Hi Linus,

Quoted 21 lines · Linus Walleij
Quoted 8 lines · Sylvain Lemieux

From: Sylvain Lemieux <[email protected]>

The "to_irq" functionality is broken inside this driver since commit 76ba59f8366f ("genirq: Add irq_domain-aware core IRQ handler").

The addition of the new lpc32xx irqchip driver in 4.7, fixed the lpc32xx platform interrupt issue.

Quoted 7 lines

When switching to the new lpc32xx irqchip driver, a warning appear in the lpc32xx gpio driver: warning: "NR_IRQS" redefined.

To remove this warning (temporary solution), this patch disables the broken "to_irq" mapping functionality support.

Patch applied for fixes with Vladimir's ACK.

Quoted 9 lines
Quoted 3 lines

* The final solution is to replace the existing lpc32xx gpio driver. This work is currently in progress; refer to the following URL:
http://thread.gmane.org/gmane.linux.drivers.devicetree/144696

Hm, I see that the ambition was to merge the new irqchip driver and the new GPIO driver in the same merge window. Sorry if I was being too lazy/picky/whatever about the patch(es) I guess I didn't quite get the scope of this change. :(

The new LPC32xx GPIO driver can go in a separate merge window; another version of the patchset is required.

For 4.7, the goal was to remove the broken dependency in the existing driver.

Quoted 7 lines

I should say that as long as we can agree that the new code makes the kernel as a whole a better place, I am happy to merge it. Sometimes also I need to zoom out from the GPIO and pin control subsystem(s) and see the big picture.

Yours,
Linus Walleij

Sylvain Lemieux