gpio: Final genirq cleanups
Subsystems (5)
cover gpio: Final genirq cleanups
Grant,
if possible, please push this lot to Linus for .39. It's cleaning up the missing bits and pieces which are necessary to remove all the compat cruft in the genirq code.
Thanks,
tglx
PATCH 1/3 arm/gpio: Remove three copies of broken and racy debug code
gpiolib plus two gpio implementations in arm fiddle in the guts of irq_desc in a racy and buggy way. Remove the stuff. I already told the gpio folks that we can provide that information in a proper way if necessary.
--- arch/arm/mach-ep93xx/gpio.c | 39 ------------------------------------- arch/arm/plat-nomadik/gpio.c | 45 ------------------------------------------- drivers/gpio/gpiolib.c | 45 ------------------------------------------- 3 files changed, 129 deletions(-)
arch/arm/mach-ep93xx/gpio.c +0 -39
@@ -366,45 +366,6 @@ static void ep93xx_gpio_dbg_show(structgpiochip_is_requested (chip, i) ? :"" , is_out ?"out" :"in " , (data_reg & (1 << i)) ? "hi" : "lo"); - -if (!is_out) { -int irq =gpio_to_irq (gpio); -struct irq_desc *desc = irq_desc + irq; - -if (irq >=0 && desc->action) { -char *trigger; - -switch (desc->status &IRQ_TYPE_SENSE_MASK ) { -case IRQ_TYPE_NONE : - trigger ="(default)" ; -break ; -case IRQ_TYPE_EDGE_FALLING : - trigger ="edge-falling" ; -break ; -case IRQ_TYPE_EDGE_RISING : - trigger ="edge-rising" ; -break ; -case IRQ_TYPE_EDGE_BOTH : - trigger ="edge-both" ; -break ; -case IRQ_TYPE_LEVEL_HIGH : - trigger ="level-high" ; -break ; -case IRQ_TYPE_LEVEL_LOW : - trigger ="level-low" ; -break ; -default : - trigger ="?trigger?" ; -break ; - } - -seq_printf (s," irq-%d %s%s" , - irq, trigger, - (desc->status &IRQ_WAKEUP ) - ?" wakeup" :"" ); - } - } -seq_printf (s,"\n" ); } }
arch/arm/plat-nomadik/gpio.c +0 -45
51 lines not on this page · raw message
drivers/gpio/gpiolib.c +0 -45
51 lines not on this page · raw message
Re: [patch 1/3] arm/gpio: Remove three copies of broken and racy debug code
Quoted 6 lines · Thomas Gleixner
gpiolib plus two gpio implementations in arm fiddle in the guts of
irq_descin a racy and buggy way. Remove the stuff. I already told the gpio folks that we can provide that information in a proper way if necessary.Signed-off-by Thomas Gleixner <[email protected]>
Quoted 8 lines
--- arch/arm/mach-ep93xx/gpio.c | 39 ------------------------------------- arch/arm/plat-nomadik/gpio.c | 45 ------------------------------------------- drivers/gpio/gpiolib.c | 45 ------------------------------------------- 3 files changed, 129 deletions(-)Index:
linux-2.6-tip/arch/arm/mach-ep93xx/gpio.c
===================================================================
I suggested an alternative patch for the ep93xx last time round which keeps the information that the pin is configured as an interrupt and tidies the code a bit (moves the newline to the first seq_printf). My patch is available here:
http://lists-archives.org/linux-kernel/27439434-arm-ep93xx-kill-another-instance-of-broken-irq_desc-fiddling.html
Could we merge that instead please.
Thanks,
~Ryan
Signature · 7 lines
Bluewater Systems Ltd - ARM Technology Solution Centre Ryan Mallon 5 Amuri Park, 404 Barbadoes St [email protected] PO Box 13 889, Christchurch 8013 http://www.bluewatersys.com New Zealand Phone: +64 3 3779127 Freecall: Australia 1800 148 751 Fax: +64 3 3779135 USA 1800 261 2934
Re: [patch 1/3] arm/gpio: Remove three copies of broken and racy debug code
Quoted 16 lines · Ryan Mallon
Quoted 6 lines · Thomas Gleixner
gpiolib plus two gpio implementations in arm fiddle in the guts of
irq_descin a racy and buggy way. Remove the stuff. I already told the gpio folks that we can provide that information in a proper way if necessary.Signed-off-by Thomas Gleixner <[email protected]>Quoted 8 lines
--- arch/arm/mach-ep93xx/gpio.c | 39 ------------------------------------- arch/arm/plat-nomadik/gpio.c | 45 ------------------------------------------- drivers/gpio/gpiolib.c | 45 ------------------------------------------- 3 files changed, 129 deletions(-)Index:
linux-2.6-tip/arch/arm/mach-ep93xx/gpio.c
===================================================================
Quoted 7 lines
I suggested an alternative patch for the ep93xx last time round which keeps the information that the pin is configured as an interrupt and tidies the code a bit (moves the newline to the first
seq_printf). My patch is available here:
http://lists-archives.org/linux-kernel/27439434-arm-ep93xx-kill-another-instance-of-broken-irq_desc-fiddling.htmlCould we merge that instead please.
Sure. Will pick it up.
Thanks,
tglx
PATCH 2/3 gpio: Cleanup genirq namespace
In reply to Thomas GleixnerConverted with coccinelle.
--- drivers/gpio/adp5588-gpio.c | 8 ++++---- drivers/gpio/max732x.c | 8 ++++---- drivers/gpio/pca953x.c | 6 +++--- drivers/gpio/pl061.c | 14 +++++++------- drivers/gpio/stmpe-gpio.c | 12 ++++++------ drivers/gpio/sx150x.c | 10 +++++----- drivers/gpio/tc3589x-gpio.c | 12 ++++++------ drivers/gpio/timbgpio.c | 18 +++++++++--------- drivers/gpio/vr41xx_giu.c | 12 ++++++------ 9 files changed, 50 insertions(+), 50 deletions(-)
drivers/gpio/adp5588-gpio.c +4 -4
@@ -289,10 +289,10 @@ static int adp5588_irq_setup(struct adp5for (gpio =0 ; gpio < dev->gpio_chip.ngpio; gpio++) {int irq = gpio + dev->irq_base; -set_irq_chip_data (irq, dev); -set_irq_chip_and_handler (irq, &adp5588_irq_chip, +irq_set_chip_data (irq, dev); +irq_set_chip_and_handler (irq, &adp5588_irq_chip, handle_level_irq); -set_irq_nested_thread (irq,1 ); +irq_set_nested_thread (irq,1 );#ifdef CONFIG_ARM /* * ARM needs us to explicitly flag the IRQ as VALID,
@@ -300,7 +300,7 @@ static int adp5588_irq_setup(struct adp5*/ set_irq_flags (irq,IRQF_VALID );#else -set_irq_noprobe (irq); +irq_set_noprobe (irq);#endif }
drivers/gpio/max732x.c +4 -4
@@ -470,14 +470,14 @@ static int max732x_irq_setup(struct max7if (!(chip->dir_input & (1 << lvl)))continue ; -set_irq_chip_data (irq, chip); -set_irq_chip_and_handler (irq, &max732x_irq_chip, +irq_set_chip_data (irq, chip); +irq_set_chip_and_handler (irq, &max732x_irq_chip, handle_edge_irq); -set_irq_nested_thread (irq,1 ); +irq_set_nested_thread (irq,1 );#ifdef CONFIG_ARM set_irq_flags (irq,IRQF_VALID );#else -set_irq_noprobe (irq); +irq_set_noprobe (irq);#endif }
drivers/gpio/pca953x.c +3 -3
@@ -395,13 +395,13 @@ static int pca953x_irq_setup(struct pca9for (lvl =0 ; lvl < chip->gpio_chip.ngpio; lvl++) {int irq = lvl + chip->irq_base; -set_irq_chip_data (irq, chip); -set_irq_chip_and_handler (irq, &pca953x_irq_chip, +irq_set_chip_data (irq, chip); +irq_set_chip_and_handler (irq, &pca953x_irq_chip, handle_edge_irq);#ifdef CONFIG_ARM set_irq_flags (irq,IRQF_VALID );#else -set_irq_noprobe (irq); +irq_set_noprobe (irq);#endif }
drivers/gpio/pl061.c +7 -7
@@ -210,7 +210,7 @@ static struct irq_chip pl061_irqchip = {static void pl061_irq_handler (unsigned irq,struct irq_desc *desc) { -struct list_head *chip_list =get_irq_data (irq); +struct list_head *chip_list =irq_get_handler_data (irq);struct list_head *ptr;struct pl061_gpio *chip;
@@ -294,7 +294,7 @@ static int pl061_probe(struct amba_devic ret = -ENODEV ; goto iounmap; } -set_irq_chained_handler (irq, pl061_irq_handler); +irq_set_chained_handler (irq, pl061_irq_handler);if (!test_and_set_bit (irq, init_irq)) {/* list initialized? */ chip_list =kmalloc (sizeof (*chip_list),GFP_KERNEL );if (chip_list ==NULL ) {
@@ -303,9 +303,9 @@ static int pl061_probe(struct amba_devic goto iounmap; }INIT_LIST_HEAD (chip_list); -set_irq_data (irq, chip_list); +irq_set_handler_data (irq, chip_list); }else - chip_list =get_irq_data (irq); + chip_list =irq_get_handler_data (irq);list_add (&chip->list, chip_list);for (i =0 ; i <PL061_GPIO_NR ; i++) {
@@ -315,10 +315,10 @@ static int pl061_probe(struct amba_devicelse pl061_direction_input (&chip->gc, i); -set_irq_chip (i+chip->irq_base, &pl061_irqchip); -set_irq_handler (i+chip->irq_base, handle_simple_irq); +irq_set_chip (i + chip->irq_base, &pl061_irqchip); +irq_set_handler (i + chip->irq_base, handle_simple_irq);set_irq_flags (i+chip->irq_base,IRQF_VALID ); -set_irq_chip_data (i+chip->irq_base, chip); +irq_set_chip_data (i + chip->irq_base, chip); }return 0 ;
drivers/gpio/stmpe-gpio.c +6 -6
@@ -254,14 +254,14 @@ static int __devinit stmpe_gpio_irq_initint irq;for (irq = base; irq < base + stmpe_gpio->chip.ngpio; irq++) { -set_irq_chip_data (irq, stmpe_gpio); -set_irq_chip_and_handler (irq, &stmpe_gpio_irq_chip, +irq_set_chip_data (irq, stmpe_gpio); +irq_set_chip_and_handler (irq, &stmpe_gpio_irq_chip, handle_simple_irq); -set_irq_nested_thread (irq,1 ); +irq_set_nested_thread (irq,1 );#ifdef CONFIG_ARM set_irq_flags (irq,IRQF_VALID );#else -set_irq_noprobe (irq); +irq_set_noprobe (irq);#endif }
@@ -277,8 +277,8 @@ static void stmpe_gpio_irq_remove(struct#ifdef CONFIG_ARM set_irq_flags (irq,0 );#endif -set_irq_chip_and_handler (irq,NULL ,NULL ); -set_irq_chip_data (irq,NULL ); +irq_set_chip_and_handler (irq,NULL ,NULL ); +irq_set_chip_data (irq,NULL ); } }
drivers/gpio/sx150x.c +5 -5
@@ -551,12 +551,12 @@ static int sx150x_install_irq_chip(strucfor (n =0 ; n < chip->dev_cfg->ngpios; ++n) { irq = irq_base + n; -set_irq_chip_and_handler (irq, &chip->irq_chip, handle_edge_irq); -set_irq_nested_thread (irq,1 ); +irq_set_chip_and_handler (irq, &chip->irq_chip, handle_edge_irq); +irq_set_nested_thread (irq,1 );#ifdef CONFIG_ARM set_irq_flags (irq,IRQF_VALID );#else -set_irq_noprobe (irq); +irq_set_noprobe (irq);#endif }
@@ -583,8 +583,8 @@ static void sx150x_remove_irq_chip(strucfor (n =0 ; n < chip->dev_cfg->ngpios; ++n) { irq = chip->irq_base + n; -set_irq_handler (irq,NULL ); -set_irq_chip (irq,NULL ); +irq_set_handler (irq,NULL ); +irq_set_chip (irq,NULL ); } }
drivers/gpio/tc3589x-gpio.c +6 -6
@@ -239,14 +239,14 @@ static int tc3589x_gpio_irq_init(structint irq;for (irq = base; irq < base + tc3589x_gpio->chip.ngpio; irq++) { -set_irq_chip_data (irq, tc3589x_gpio); -set_irq_chip_and_handler (irq, &tc3589x_gpio_irq_chip, +irq_set_chip_data (irq, tc3589x_gpio); +irq_set_chip_and_handler (irq, &tc3589x_gpio_irq_chip, handle_simple_irq); -set_irq_nested_thread (irq,1 ); +irq_set_nested_thread (irq,1 );#ifdef CONFIG_ARM set_irq_flags (irq,IRQF_VALID );#else -set_irq_noprobe (irq); +irq_set_noprobe (irq);#endif }
@@ -262,8 +262,8 @@ static void tc3589x_gpio_irq_remove(stru#ifdef CONFIG_ARM set_irq_flags (irq,0 );#endif -set_irq_chip_and_handler (irq,NULL ,NULL ); -set_irq_chip_data (irq,NULL ); +irq_set_chip_and_handler (irq,NULL ,NULL ); +irq_set_chip_data (irq,NULL ); } }
drivers/gpio/timbgpio.c +9 -9
@@ -195,7 +195,7 @@ out:static void timbgpio_irq (unsigned int irq,struct irq_desc *desc) { -struct timbgpio *tgpio =get_irq_data (irq); +struct timbgpio *tgpio =irq_get_handler_data (irq);unsigned long ipr;int offset;
@@ -291,16 +291,16 @@ static int __devinit timbgpio_probe(strureturn 0 ;for (i =0 ; i < pdata->nr_pins; i++) { -set_irq_chip_and_handler_name (tgpio->irq_base + i, +irq_set_chip_and_handler_name (tgpio->irq_base + i, &timbgpio_irqchip, handle_simple_irq,"mux" ); -set_irq_chip_data (tgpio->irq_base + i, tgpio); +irq_set_chip_data (tgpio->irq_base + i, tgpio);#ifdef CONFIG_ARM set_irq_flags (tgpio->irq_base + i,IRQF_VALID |IRQF_PROBE );#endif } -set_irq_data (irq, tgpio); -set_irq_chained_handler (irq, timbgpio_irq); +irq_set_handler_data (irq, tgpio); +irq_set_chained_handler (irq, timbgpio_irq);return 0 ;
@@ -327,12 +327,12 @@ static int __devexit timbgpio_remove(strif (irq >=0 && tgpio->irq_base >0 ) {int i;for (i =0 ; i < pdata->nr_pins; i++) { -set_irq_chip (tgpio->irq_base + i,NULL ); -set_irq_chip_data (tgpio->irq_base + i,NULL ); +irq_set_chip (tgpio->irq_base + i,NULL ); +irq_set_chip_data (tgpio->irq_base + i,NULL ); } -set_irq_handler (irq,NULL ); -set_irq_data (irq,NULL ); +irq_set_handler (irq,NULL ); +irq_set_handler_data (irq,NULL ); } err =gpiochip_remove (&tgpio->gpio);
drivers/gpio/vr41xx_giu.c +6 -6
@@ -238,13 +238,13 @@ void vr41xx_set_irq_trigger(unsigned intbreak ; } } -set_irq_chip_and_handler (GIU_IRQ (pin), +irq_set_chip_and_handler (GIU_IRQ (pin), &giuint_low_irq_chip, handle_edge_irq); }else {giu_clear (GIUINTTYPL , mask);giu_clear (GIUINTHTSELL , mask); -set_irq_chip_and_handler (GIU_IRQ (pin), +irq_set_chip_and_handler (GIU_IRQ (pin), &giuint_low_irq_chip, handle_level_irq); }
@@ -273,13 +273,13 @@ void vr41xx_set_irq_trigger(unsigned intbreak ; } } -set_irq_chip_and_handler (GIU_IRQ (pin), +irq_set_chip_and_handler (GIU_IRQ (pin), &giuint_high_irq_chip, handle_edge_irq); }else {giu_clear (GIUINTTYPH , mask);giu_clear (GIUINTHTSELH , mask); -set_irq_chip_and_handler (GIU_IRQ (pin), +irq_set_chip_and_handler (GIU_IRQ (pin), &giuint_high_irq_chip, handle_level_irq); }
@@ -539,9 +539,9 @@ static int __devinit giu_probe(struct pl chip = &giuint_high_irq_chip;if (trigger & (1 << pin)) -set_irq_chip_and_handler (i, chip, handle_edge_irq); +irq_set_chip_and_handler (i, chip, handle_edge_irq);else -set_irq_chip_and_handler (i, chip, handle_level_irq); +irq_set_chip_and_handler (i, chip, handle_level_irq); }
PATCH 3/3 gpio: Fold irq_set_chip/irq_set_handler to irq_set_chip_and_handler
In reply to Thomas GleixnerConverted with coccinelle.
--- drivers/gpio/pl061.c | 4 ++-- drivers/gpio/sx150x.c | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-)
drivers/gpio/pl061.c +2 -2
@@ -315,8 +315,8 @@ static int pl061_probe(struct amba_devicelse pl061_direction_input (&chip->gc, i); -irq_set_chip (i + chip->irq_base, &pl061_irqchip); -irq_set_handler (i + chip->irq_base, handle_simple_irq); +irq_set_chip_and_handler (i + chip->irq_base, &pl061_irqchip, + handle_simple_irq);set_irq_flags (i+chip->irq_base,IRQF_VALID );irq_set_chip_data (i + chip->irq_base, chip); }
drivers/gpio/sx150x.c +1 -2
@@ -583,8 +583,7 @@ static void sx150x_remove_irq_chip(strucfor (n =0 ; n < chip->dev_cfg->ngpios; ++n) { irq = chip->irq_base + n; -irq_set_handler (irq,NULL ); -irq_set_chip (irq,NULL ); +irq_set_chip_and_handler (irq,NULL ,NULL ); } }
Quoted 5 lines · Thomas Gleixner
Grant,
if possible, please push this lot to Linus for .39. It's cleaning up the missing bits and pieces which are necessary to remove all the compat cruft in the genirq code.
These look fine. Since it sounds like you need to base other patches on top of these, go ahead and add my Acked-by to all of them and push them through your tree. I don't have any more gpio patches that I'm sending to Linus this cycle anyway.
g.
Quoted 11 lines · Grant Likely
Quoted 5 lines · Thomas Gleixner
Grant,
if possible, please push this lot to Linus for .39. It's cleaning up the missing bits and pieces which are necessary to remove all the compat cruft in the genirq code.
These look fine. Since it sounds like you need to base other patches on top of these, go ahead and add my Acked-by to all of them and push them through your tree. I don't have any more gpio patches that I'm sending to Linus this cycle anyway.
Will do.
Quoted 3 lines
g.
Acked-by Grant Likely <[email protected]>
Thanks !
tglx