diff mbox

[12/15] SH: kill off set_irq_flags usage

Message ID 1433874401-27161-13-git-send-email-robh@kernel.org (mailing list archive)
State Not Applicable
Delegated to: Simon Horman
Headers show

Commit Message

Rob Herring (Arm) June 9, 2015, 6:26 p.m. UTC
set_irq_flags is ARM specific with custom flags which have genirq
equivalents. Convert drivers to use the genirq interfaces directly, so we
can kill off set_irq_flags. The translation of flags is as follows:

IRQF_VALID -> !IRQ_NOREQUEST
IRQF_PROBE -> !IRQ_NOPROBE
IRQF_NOAUTOEN -> IRQ_NOAUTOEN

For IRQs managed by an irqdomain, the irqdomain core code handles clearing
and setting IRQ_NOREQUEST already, so there is no need to do this in
.map() functions and we can simply remove the set_irq_flags calls. Some
users also set IRQ_NOPROBE and this has been maintained although it is not
clear that is really needed. There appears to be a great deal of blind
copy and paste of this code.

Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Simon Horman <horms@verge.net.au>
Cc: Magnus Damm <magnus.damm@gmail.com>
Cc: linux-sh@vger.kernel.org
---
 drivers/sh/intc/internals.h | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

Comments

Simon Horman July 7, 2015, 12:53 a.m. UTC | #1
On Tue, Jun 09, 2015 at 01:26:38PM -0500, Rob Herring wrote:
> set_irq_flags is ARM specific with custom flags which have genirq
> equivalents. Convert drivers to use the genirq interfaces directly, so we
> can kill off set_irq_flags. The translation of flags is as follows:
> 
> IRQF_VALID -> !IRQ_NOREQUEST
> IRQF_PROBE -> !IRQ_NOPROBE
> IRQF_NOAUTOEN -> IRQ_NOAUTOEN
> 
> For IRQs managed by an irqdomain, the irqdomain core code handles clearing
> and setting IRQ_NOREQUEST already, so there is no need to do this in
> .map() functions and we can simply remove the set_irq_flags calls. Some
> users also set IRQ_NOPROBE and this has been maintained although it is not
> clear that is really needed. There appears to be a great deal of blind
> copy and paste of this code.
> 
> Signed-off-by: Rob Herring <robh@kernel.org>
> Cc: Simon Horman <horms@verge.net.au>
> Cc: Magnus Damm <magnus.damm@gmail.com>
> Cc: linux-sh@vger.kernel.org

I am trusting the description above coupled with the comments in
the original code (that this patch removes). Assuming those ducks are
aligned:

Acked-by: Simon Horman <horms+renesas@verge.net.au>

> ---
>  drivers/sh/intc/internals.h | 10 +---------
>  1 file changed, 1 insertion(+), 9 deletions(-)
> 
> diff --git a/drivers/sh/intc/internals.h b/drivers/sh/intc/internals.h
> index 7dff08e..897ffb1 100644
> --- a/drivers/sh/intc/internals.h
> +++ b/drivers/sh/intc/internals.h
> @@ -99,15 +99,7 @@ static inline struct intc_desc_int *get_intc_desc(unsigned int irq)
>   */
>  static inline void activate_irq(int irq)
>  {
> -#ifdef CONFIG_ARM
> -	/* ARM requires an extra step to clear IRQ_NOREQUEST, which it
> -	 * sets on behalf of every irq_chip.  Also sets IRQ_NOPROBE.
> -	 */
> -	set_irq_flags(irq, IRQF_VALID);
> -#else
> -	/* same effect on other architectures */
> -	irq_set_noprobe(irq);
> -#endif
> +	irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
>  }
>  
>  static inline int intc_handle_int_cmp(const void *a, const void *b)
> -- 
> 2.1.0
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Simon Horman July 7, 2015, 1:55 a.m. UTC | #2
On Tue, Jul 07, 2015 at 09:53:39AM +0900, Simon Horman wrote:
> On Tue, Jun 09, 2015 at 01:26:38PM -0500, Rob Herring wrote:
> > set_irq_flags is ARM specific with custom flags which have genirq
> > equivalents. Convert drivers to use the genirq interfaces directly, so we
> > can kill off set_irq_flags. The translation of flags is as follows:
> > 
> > IRQF_VALID -> !IRQ_NOREQUEST
> > IRQF_PROBE -> !IRQ_NOPROBE
> > IRQF_NOAUTOEN -> IRQ_NOAUTOEN
> > 
> > For IRQs managed by an irqdomain, the irqdomain core code handles clearing
> > and setting IRQ_NOREQUEST already, so there is no need to do this in
> > .map() functions and we can simply remove the set_irq_flags calls. Some
> > users also set IRQ_NOPROBE and this has been maintained although it is not
> > clear that is really needed. There appears to be a great deal of blind
> > copy and paste of this code.
> > 
> > Signed-off-by: Rob Herring <robh@kernel.org>
> > Cc: Simon Horman <horms@verge.net.au>
> > Cc: Magnus Damm <magnus.damm@gmail.com>
> > Cc: linux-sh@vger.kernel.org
> 
> I am trusting the description above coupled with the comments in
> the original code (that this patch removes). Assuming those ducks are
> aligned:
> 
> Acked-by: Simon Horman <horms+renesas@verge.net.au>

As I usually take patches for drivers/sh/ (there have not been many of late)
please let me know if you would like me to pick up this change.

Also, a very minor nit, the prefix for patches to this file is usually
'sh:' rather than 'SH:'.

> 
> > ---
> >  drivers/sh/intc/internals.h | 10 +---------
> >  1 file changed, 1 insertion(+), 9 deletions(-)
> > 
> > diff --git a/drivers/sh/intc/internals.h b/drivers/sh/intc/internals.h
> > index 7dff08e..897ffb1 100644
> > --- a/drivers/sh/intc/internals.h
> > +++ b/drivers/sh/intc/internals.h
> > @@ -99,15 +99,7 @@ static inline struct intc_desc_int *get_intc_desc(unsigned int irq)
> >   */
> >  static inline void activate_irq(int irq)
> >  {
> > -#ifdef CONFIG_ARM
> > -	/* ARM requires an extra step to clear IRQ_NOREQUEST, which it
> > -	 * sets on behalf of every irq_chip.  Also sets IRQ_NOPROBE.
> > -	 */
> > -	set_irq_flags(irq, IRQF_VALID);
> > -#else
> > -	/* same effect on other architectures */
> > -	irq_set_noprobe(irq);
> > -#endif
> > +	irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
> >  }
> >  
> >  static inline int intc_handle_int_cmp(const void *a, const void *b)
> > -- 
> > 2.1.0
> > 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-sh" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Rob Herring (Arm) July 7, 2015, 2:38 p.m. UTC | #3
On Mon, Jul 6, 2015 at 8:55 PM, Simon Horman <horms@verge.net.au> wrote:
> On Tue, Jul 07, 2015 at 09:53:39AM +0900, Simon Horman wrote:
>> On Tue, Jun 09, 2015 at 01:26:38PM -0500, Rob Herring wrote:
>> > set_irq_flags is ARM specific with custom flags which have genirq
>> > equivalents. Convert drivers to use the genirq interfaces directly, so we
>> > can kill off set_irq_flags. The translation of flags is as follows:
>> >
>> > IRQF_VALID -> !IRQ_NOREQUEST
>> > IRQF_PROBE -> !IRQ_NOPROBE
>> > IRQF_NOAUTOEN -> IRQ_NOAUTOEN
>> >
>> > For IRQs managed by an irqdomain, the irqdomain core code handles clearing
>> > and setting IRQ_NOREQUEST already, so there is no need to do this in
>> > .map() functions and we can simply remove the set_irq_flags calls. Some
>> > users also set IRQ_NOPROBE and this has been maintained although it is not
>> > clear that is really needed. There appears to be a great deal of blind
>> > copy and paste of this code.
>> >
>> > Signed-off-by: Rob Herring <robh@kernel.org>
>> > Cc: Simon Horman <horms@verge.net.au>
>> > Cc: Magnus Damm <magnus.damm@gmail.com>
>> > Cc: linux-sh@vger.kernel.org
>>
>> I am trusting the description above coupled with the comments in
>> the original code (that this patch removes). Assuming those ducks are
>> aligned:
>>
>> Acked-by: Simon Horman <horms+renesas@verge.net.au>
>
> As I usually take patches for drivers/sh/ (there have not been many of late)
> please let me know if you would like me to pick up this change.

This is a dependency for removing set_irq_flags from ARM, so I plan to
send the whole series to arm-soc.

> Also, a very minor nit, the prefix for patches to this file is usually
> 'sh:' rather than 'SH:'.

Okay, will fix-up.

Rob

>
>>
>> > ---
>> >  drivers/sh/intc/internals.h | 10 +---------
>> >  1 file changed, 1 insertion(+), 9 deletions(-)
>> >
>> > diff --git a/drivers/sh/intc/internals.h b/drivers/sh/intc/internals.h
>> > index 7dff08e..897ffb1 100644
>> > --- a/drivers/sh/intc/internals.h
>> > +++ b/drivers/sh/intc/internals.h
>> > @@ -99,15 +99,7 @@ static inline struct intc_desc_int *get_intc_desc(unsigned int irq)
>> >   */
>> >  static inline void activate_irq(int irq)
>> >  {
>> > -#ifdef CONFIG_ARM
>> > -   /* ARM requires an extra step to clear IRQ_NOREQUEST, which it
>> > -    * sets on behalf of every irq_chip.  Also sets IRQ_NOPROBE.
>> > -    */
>> > -   set_irq_flags(irq, IRQF_VALID);
>> > -#else
>> > -   /* same effect on other architectures */
>> > -   irq_set_noprobe(irq);
>> > -#endif
>> > +   irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
>> >  }
>> >
>> >  static inline int intc_handle_int_cmp(const void *a, const void *b)
>> > --
>> > 2.1.0
>> >
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-sh" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Simon Horman July 8, 2015, 1:04 a.m. UTC | #4
On Tue, Jul 07, 2015 at 09:38:53AM -0500, Rob Herring wrote:
> On Mon, Jul 6, 2015 at 8:55 PM, Simon Horman <horms@verge.net.au> wrote:
> > On Tue, Jul 07, 2015 at 09:53:39AM +0900, Simon Horman wrote:
> >> On Tue, Jun 09, 2015 at 01:26:38PM -0500, Rob Herring wrote:
> >> > set_irq_flags is ARM specific with custom flags which have genirq
> >> > equivalents. Convert drivers to use the genirq interfaces directly, so we
> >> > can kill off set_irq_flags. The translation of flags is as follows:
> >> >
> >> > IRQF_VALID -> !IRQ_NOREQUEST
> >> > IRQF_PROBE -> !IRQ_NOPROBE
> >> > IRQF_NOAUTOEN -> IRQ_NOAUTOEN
> >> >
> >> > For IRQs managed by an irqdomain, the irqdomain core code handles clearing
> >> > and setting IRQ_NOREQUEST already, so there is no need to do this in
> >> > .map() functions and we can simply remove the set_irq_flags calls. Some
> >> > users also set IRQ_NOPROBE and this has been maintained although it is not
> >> > clear that is really needed. There appears to be a great deal of blind
> >> > copy and paste of this code.
> >> >
> >> > Signed-off-by: Rob Herring <robh@kernel.org>
> >> > Cc: Simon Horman <horms@verge.net.au>
> >> > Cc: Magnus Damm <magnus.damm@gmail.com>
> >> > Cc: linux-sh@vger.kernel.org
> >>
> >> I am trusting the description above coupled with the comments in
> >> the original code (that this patch removes). Assuming those ducks are
> >> aligned:
> >>
> >> Acked-by: Simon Horman <horms+renesas@verge.net.au>
> >
> > As I usually take patches for drivers/sh/ (there have not been many of late)
> > please let me know if you would like me to pick up this change.
> 
> This is a dependency for removing set_irq_flags from ARM, so I plan to
> send the whole series to arm-soc.

Thanks, that is fine by me.

> > Also, a very minor nit, the prefix for patches to this file is usually
> > 'sh:' rather than 'SH:'.
> 
> Okay, will fix-up.
> 
> Rob
> 
> >
> >>
> >> > ---
> >> >  drivers/sh/intc/internals.h | 10 +---------
> >> >  1 file changed, 1 insertion(+), 9 deletions(-)
> >> >
> >> > diff --git a/drivers/sh/intc/internals.h b/drivers/sh/intc/internals.h
> >> > index 7dff08e..897ffb1 100644
> >> > --- a/drivers/sh/intc/internals.h
> >> > +++ b/drivers/sh/intc/internals.h
> >> > @@ -99,15 +99,7 @@ static inline struct intc_desc_int *get_intc_desc(unsigned int irq)
> >> >   */
> >> >  static inline void activate_irq(int irq)
> >> >  {
> >> > -#ifdef CONFIG_ARM
> >> > -   /* ARM requires an extra step to clear IRQ_NOREQUEST, which it
> >> > -    * sets on behalf of every irq_chip.  Also sets IRQ_NOPROBE.
> >> > -    */
> >> > -   set_irq_flags(irq, IRQF_VALID);
> >> > -#else
> >> > -   /* same effect on other architectures */
> >> > -   irq_set_noprobe(irq);
> >> > -#endif
> >> > +   irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
> >> >  }
> >> >
> >> >  static inline int intc_handle_int_cmp(const void *a, const void *b)
> >> > --
> >> > 2.1.0
> >> >
> >> --
> >> To unsubscribe from this list: send the line "unsubscribe linux-sh" in
> >> the body of a message to majordomo@vger.kernel.org
> >> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >>
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/sh/intc/internals.h b/drivers/sh/intc/internals.h
index 7dff08e..897ffb1 100644
--- a/drivers/sh/intc/internals.h
+++ b/drivers/sh/intc/internals.h
@@ -99,15 +99,7 @@  static inline struct intc_desc_int *get_intc_desc(unsigned int irq)
  */
 static inline void activate_irq(int irq)
 {
-#ifdef CONFIG_ARM
-	/* ARM requires an extra step to clear IRQ_NOREQUEST, which it
-	 * sets on behalf of every irq_chip.  Also sets IRQ_NOPROBE.
-	 */
-	set_irq_flags(irq, IRQF_VALID);
-#else
-	/* same effect on other architectures */
-	irq_set_noprobe(irq);
-#endif
+	irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
 }
 
 static inline int intc_handle_int_cmp(const void *a, const void *b)