@@ -1940,6 +1940,7 @@ static int __init ingenic_gpio_probe(struct ingenic_pinctrl *jzpc,
1940
1940
{
1941
1941
struct ingenic_gpio_chip * jzgc ;
1942
1942
struct device * dev = jzpc -> dev ;
1943
+ struct gpio_irq_chip * girq ;
1943
1944
unsigned int bank ;
1944
1945
int err ;
1945
1946
@@ -1982,10 +1983,6 @@ static int __init ingenic_gpio_probe(struct ingenic_pinctrl *jzpc,
1982
1983
jzgc -> gc .free = gpiochip_generic_free ;
1983
1984
}
1984
1985
1985
- err = devm_gpiochip_add_data (dev , & jzgc -> gc , jzgc );
1986
- if (err )
1987
- return err ;
1988
-
1989
1986
jzgc -> irq = irq_of_parse_and_map (node , 0 );
1990
1987
if (!jzgc -> irq )
1991
1988
return - EINVAL ;
@@ -2000,13 +1997,22 @@ static int __init ingenic_gpio_probe(struct ingenic_pinctrl *jzpc,
2000
1997
jzgc -> irq_chip .irq_set_wake = ingenic_gpio_irq_set_wake ;
2001
1998
jzgc -> irq_chip .flags = IRQCHIP_MASK_ON_SUSPEND ;
2002
1999
2003
- err = gpiochip_irqchip_add (& jzgc -> gc , & jzgc -> irq_chip , 0 ,
2004
- handle_level_irq , IRQ_TYPE_NONE );
2000
+ girq = & jzgc -> gc .irq ;
2001
+ girq -> chip = & jzgc -> irq_chip ;
2002
+ girq -> parent_handler = ingenic_gpio_irq_handler ;
2003
+ girq -> num_parents = 1 ;
2004
+ girq -> parents = devm_kcalloc (dev , 1 , sizeof (* girq -> parents ),
2005
+ GFP_KERNEL );
2006
+ if (!girq -> parents )
2007
+ return - ENOMEM ;
2008
+ girq -> parents [0 ] = jzgc -> irq ;
2009
+ girq -> default_type = IRQ_TYPE_NONE ;
2010
+ girq -> handler = handle_level_irq ;
2011
+
2012
+ err = devm_gpiochip_add_data (dev , & jzgc -> gc , jzgc );
2005
2013
if (err )
2006
2014
return err ;
2007
2015
2008
- gpiochip_set_chained_irqchip (& jzgc -> gc , & jzgc -> irq_chip ,
2009
- jzgc -> irq , ingenic_gpio_irq_handler );
2010
2016
return 0 ;
2011
2017
}
2012
2018
0 commit comments