diff mbox

[30/35] irqchip: add irq-omap-intc.h header

Message ID 1406582183-696-31-git-send-email-balbi@ti.com
State Accepted
Commit afee8d96433167a3b764c4cc3a11fea8d77dbd4b
Headers show

Commit Message

Felipe Balbi July 28, 2014, 9:16 p.m. UTC
OMAP INTC irqchip driver will be moved under
drivers/irqchip/ soon but we still have a dependency
with mach-omap2 when it comes to idle functions.

In order to make it easy to share those function
prototypes with OMAP PM code, we introduce this new
header.

Signed-off-by: Felipe Balbi <balbi@ti.com>
---
 arch/arm/mach-omap2/board-3430sdp.c        |  1 +
 arch/arm/mach-omap2/board-am3517crane.c    |  1 +
 arch/arm/mach-omap2/board-am3517evm.c      |  1 +
 arch/arm/mach-omap2/board-cm-t35.c         |  1 +
 arch/arm/mach-omap2/board-cm-t3517.c       |  1 +
 arch/arm/mach-omap2/board-devkit8000.c     |  1 +
 arch/arm/mach-omap2/board-ldp.c            |  1 +
 arch/arm/mach-omap2/board-omap3beagle.c    |  1 +
 arch/arm/mach-omap2/board-omap3logic.c     |  1 +
 arch/arm/mach-omap2/board-omap3pandora.c   |  1 +
 arch/arm/mach-omap2/board-omap3stalker.c   |  1 +
 arch/arm/mach-omap2/board-omap3touchbook.c |  1 +
 arch/arm/mach-omap2/board-overo.c          |  1 +
 arch/arm/mach-omap2/board-rx51.c           |  1 +
 arch/arm/mach-omap2/board-ti8168evm.c      |  1 +
 arch/arm/mach-omap2/common.h               |  9 ---------
 arch/arm/mach-omap2/cpuidle34xx.c          |  1 +
 arch/arm/mach-omap2/irq.c                  |  1 +
 arch/arm/mach-omap2/pm24xx.c               |  1 +
 arch/arm/mach-omap2/pm34xx.c               |  1 +
 include/linux/irqchip/irq-omap-intc.h      | 32 ++++++++++++++++++++++++++++++
 21 files changed, 51 insertions(+), 9 deletions(-)
 create mode 100644 include/linux/irqchip/irq-omap-intc.h

Comments

Tony Lindgren July 29, 2014, 12:01 p.m. UTC | #1
* Felipe Balbi <balbi@ti.com> [140728 14:19]:
> OMAP INTC irqchip driver will be moved under
> drivers/irqchip/ soon but we still have a dependency
> with mach-omap2 when it comes to idle functions.
> 
> In order to make it easy to share those function
> prototypes with OMAP PM code, we introduce this new
> header.
> 
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
>  arch/arm/mach-omap2/board-3430sdp.c        |  1 +
>  arch/arm/mach-omap2/board-am3517crane.c    |  1 +
>  arch/arm/mach-omap2/board-am3517evm.c      |  1 +
>  arch/arm/mach-omap2/board-cm-t35.c         |  1 +
>  arch/arm/mach-omap2/board-cm-t3517.c       |  1 +
>  arch/arm/mach-omap2/board-devkit8000.c     |  1 +
>  arch/arm/mach-omap2/board-ldp.c            |  1 +
>  arch/arm/mach-omap2/board-omap3beagle.c    |  1 +
>  arch/arm/mach-omap2/board-omap3logic.c     |  1 +
>  arch/arm/mach-omap2/board-omap3pandora.c   |  1 +
>  arch/arm/mach-omap2/board-omap3stalker.c   |  1 +
>  arch/arm/mach-omap2/board-omap3touchbook.c |  1 +
>  arch/arm/mach-omap2/board-overo.c          |  1 +
>  arch/arm/mach-omap2/board-rx51.c           |  1 +
>  arch/arm/mach-omap2/board-ti8168evm.c      |  1 +
>  arch/arm/mach-omap2/common.h               |  9 ---------
>  arch/arm/mach-omap2/cpuidle34xx.c          |  1 +
>  arch/arm/mach-omap2/irq.c                  |  1 +
>  arch/arm/mach-omap2/pm24xx.c               |  1 +
>  arch/arm/mach-omap2/pm34xx.c               |  1 +
>  include/linux/irqchip/irq-omap-intc.h      | 32 ++++++++++++++++++++++++++++++
...

> +void omap2_init_irq(void);
> +void omap3_init_irq(void);
> +void ti81xx_init_irq(void);

I think these will all go away with DT based booting?
So it might be worth waiting for that rather than churn
all these files, or..

> +int omap_irq_pending(void);
> +void omap_intc_save_context(void);
> +void omap_intc_restore_context(void);
> +void omap3_intc_suspend(void);
> +void omap3_intc_prepare_idle(void);
> +void omap3_intc_resume_idle(void);

..how about we pass something like struct omap_intc_data
as pdata and let the intc driver populate function pointers
for these if runtime PM calls are not enough here?

That way we could have just minimal pdata header file.

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Felipe Balbi July 29, 2014, 2:10 p.m. UTC | #2
On Tue, Jul 29, 2014 at 05:01:33AM -0700, Tony Lindgren wrote:
> * Felipe Balbi <balbi@ti.com> [140728 14:19]:
> > OMAP INTC irqchip driver will be moved under
> > drivers/irqchip/ soon but we still have a dependency
> > with mach-omap2 when it comes to idle functions.
> > 
> > In order to make it easy to share those function
> > prototypes with OMAP PM code, we introduce this new
> > header.
> > 
> > Signed-off-by: Felipe Balbi <balbi@ti.com>
> > ---
> >  arch/arm/mach-omap2/board-3430sdp.c        |  1 +
> >  arch/arm/mach-omap2/board-am3517crane.c    |  1 +
> >  arch/arm/mach-omap2/board-am3517evm.c      |  1 +
> >  arch/arm/mach-omap2/board-cm-t35.c         |  1 +
> >  arch/arm/mach-omap2/board-cm-t3517.c       |  1 +
> >  arch/arm/mach-omap2/board-devkit8000.c     |  1 +
> >  arch/arm/mach-omap2/board-ldp.c            |  1 +
> >  arch/arm/mach-omap2/board-omap3beagle.c    |  1 +
> >  arch/arm/mach-omap2/board-omap3logic.c     |  1 +
> >  arch/arm/mach-omap2/board-omap3pandora.c   |  1 +
> >  arch/arm/mach-omap2/board-omap3stalker.c   |  1 +
> >  arch/arm/mach-omap2/board-omap3touchbook.c |  1 +
> >  arch/arm/mach-omap2/board-overo.c          |  1 +
> >  arch/arm/mach-omap2/board-rx51.c           |  1 +
> >  arch/arm/mach-omap2/board-ti8168evm.c      |  1 +
> >  arch/arm/mach-omap2/common.h               |  9 ---------
> >  arch/arm/mach-omap2/cpuidle34xx.c          |  1 +
> >  arch/arm/mach-omap2/irq.c                  |  1 +
> >  arch/arm/mach-omap2/pm24xx.c               |  1 +
> >  arch/arm/mach-omap2/pm34xx.c               |  1 +
> >  include/linux/irqchip/irq-omap-intc.h      | 32 ++++++++++++++++++++++++++++++
> ...
> 
> > +void omap2_init_irq(void);
> > +void omap3_init_irq(void);
> > +void ti81xx_init_irq(void);
> 
> I think these will all go away with DT based booting?
> So it might be worth waiting for that rather than churn
> all these files, or..

you just asked me to rebase this series because now we had OMAP3 idle
working with DT. And now, you're asking me to hold on to this series
because not everything is DT-based yet.

This is the third time I rebase the series after a long hiatus and it
always comes out to the same result -> "let's wait some more".
Tony Lindgren July 29, 2014, 3:06 p.m. UTC | #3
* Felipe Balbi <balbi@ti.com> [140729 07:13]:
> On Tue, Jul 29, 2014 at 05:01:33AM -0700, Tony Lindgren wrote:
> > * Felipe Balbi <balbi@ti.com> [140728 14:19]:
> > > OMAP INTC irqchip driver will be moved under
> > > drivers/irqchip/ soon but we still have a dependency
> > > with mach-omap2 when it comes to idle functions.
> > > 
> > > In order to make it easy to share those function
> > > prototypes with OMAP PM code, we introduce this new
> > > header.
> > > 
> > > Signed-off-by: Felipe Balbi <balbi@ti.com>
> > > ---
> > >  arch/arm/mach-omap2/board-3430sdp.c        |  1 +
> > >  arch/arm/mach-omap2/board-am3517crane.c    |  1 +
> > >  arch/arm/mach-omap2/board-am3517evm.c      |  1 +
> > >  arch/arm/mach-omap2/board-cm-t35.c         |  1 +
> > >  arch/arm/mach-omap2/board-cm-t3517.c       |  1 +
> > >  arch/arm/mach-omap2/board-devkit8000.c     |  1 +
> > >  arch/arm/mach-omap2/board-ldp.c            |  1 +
> > >  arch/arm/mach-omap2/board-omap3beagle.c    |  1 +
> > >  arch/arm/mach-omap2/board-omap3logic.c     |  1 +
> > >  arch/arm/mach-omap2/board-omap3pandora.c   |  1 +
> > >  arch/arm/mach-omap2/board-omap3stalker.c   |  1 +
> > >  arch/arm/mach-omap2/board-omap3touchbook.c |  1 +
> > >  arch/arm/mach-omap2/board-overo.c          |  1 +
> > >  arch/arm/mach-omap2/board-rx51.c           |  1 +
> > >  arch/arm/mach-omap2/board-ti8168evm.c      |  1 +
> > >  arch/arm/mach-omap2/common.h               |  9 ---------
> > >  arch/arm/mach-omap2/cpuidle34xx.c          |  1 +
> > >  arch/arm/mach-omap2/irq.c                  |  1 +
> > >  arch/arm/mach-omap2/pm24xx.c               |  1 +
> > >  arch/arm/mach-omap2/pm34xx.c               |  1 +
> > >  include/linux/irqchip/irq-omap-intc.h      | 32 ++++++++++++++++++++++++++++++
> > ...
> > 
> > > +void omap2_init_irq(void);
> > > +void omap3_init_irq(void);
> > > +void ti81xx_init_irq(void);
> > 
> > I think these will all go away with DT based booting?
> > So it might be worth waiting for that rather than churn
> > all these files, or..
> 
> you just asked me to rebase this series because now we had OMAP3 idle
> working with DT. And now, you're asking me to hold on to this series
> because not everything is DT-based yet.

I just don't like the idea of patching all these board files that
are going away anyways. If we need to do that, let's just add it
to common.h that's already included by all the remaining board-*.c
files. I know we should rather include the files directly, but in
this case that's just extra churn.

The real problem is how to properly deal with the save and
restore calls that idle code needs.

In any case, it seems we can merge quite a bit of this series
already and then deal with the problem parts.
 
> This is the third time I rebase the series after a long hiatus and it
> always comes out to the same result -> "let's wait some more".

Nope, it's always been "this series causes PM regressions"
and few other minor comments. And we have not been in any
position to really test that until with v3.16-rc4. And then
you always run out of time and nobody else does anything :)

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Felipe Balbi July 29, 2014, 3:19 p.m. UTC | #4
On Tue, Jul 29, 2014 at 08:06:55AM -0700, Tony Lindgren wrote:
> * Felipe Balbi <balbi@ti.com> [140729 07:13]:
> > On Tue, Jul 29, 2014 at 05:01:33AM -0700, Tony Lindgren wrote:
> > > * Felipe Balbi <balbi@ti.com> [140728 14:19]:
> > > > OMAP INTC irqchip driver will be moved under
> > > > drivers/irqchip/ soon but we still have a dependency
> > > > with mach-omap2 when it comes to idle functions.
> > > > 
> > > > In order to make it easy to share those function
> > > > prototypes with OMAP PM code, we introduce this new
> > > > header.
> > > > 
> > > > Signed-off-by: Felipe Balbi <balbi@ti.com>
> > > > ---
> > > >  arch/arm/mach-omap2/board-3430sdp.c        |  1 +
> > > >  arch/arm/mach-omap2/board-am3517crane.c    |  1 +
> > > >  arch/arm/mach-omap2/board-am3517evm.c      |  1 +
> > > >  arch/arm/mach-omap2/board-cm-t35.c         |  1 +
> > > >  arch/arm/mach-omap2/board-cm-t3517.c       |  1 +
> > > >  arch/arm/mach-omap2/board-devkit8000.c     |  1 +
> > > >  arch/arm/mach-omap2/board-ldp.c            |  1 +
> > > >  arch/arm/mach-omap2/board-omap3beagle.c    |  1 +
> > > >  arch/arm/mach-omap2/board-omap3logic.c     |  1 +
> > > >  arch/arm/mach-omap2/board-omap3pandora.c   |  1 +
> > > >  arch/arm/mach-omap2/board-omap3stalker.c   |  1 +
> > > >  arch/arm/mach-omap2/board-omap3touchbook.c |  1 +
> > > >  arch/arm/mach-omap2/board-overo.c          |  1 +
> > > >  arch/arm/mach-omap2/board-rx51.c           |  1 +
> > > >  arch/arm/mach-omap2/board-ti8168evm.c      |  1 +
> > > >  arch/arm/mach-omap2/common.h               |  9 ---------
> > > >  arch/arm/mach-omap2/cpuidle34xx.c          |  1 +
> > > >  arch/arm/mach-omap2/irq.c                  |  1 +
> > > >  arch/arm/mach-omap2/pm24xx.c               |  1 +
> > > >  arch/arm/mach-omap2/pm34xx.c               |  1 +
> > > >  include/linux/irqchip/irq-omap-intc.h      | 32 ++++++++++++++++++++++++++++++
> > > ...
> > > 
> > > > +void omap2_init_irq(void);
> > > > +void omap3_init_irq(void);
> > > > +void ti81xx_init_irq(void);
> > > 
> > > I think these will all go away with DT based booting?
> > > So it might be worth waiting for that rather than churn
> > > all these files, or..
> > 
> > you just asked me to rebase this series because now we had OMAP3 idle
> > working with DT. And now, you're asking me to hold on to this series
> > because not everything is DT-based yet.
> 
> I just don't like the idea of patching all these board files that
> are going away anyways. If we need to do that, let's just add it

when are they going away ? Are we really gonna delay this series until
those board-files eventually vanish ?

> to common.h that's already included by all the remaining board-*.c
> files. I know we should rather include the files directly, but in
> this case that's just extra churn.
> 
> The real problem is how to properly deal with the save and
> restore calls that idle code needs.

well, for system sleep we have callbacks from irq generic itself. The
real problem is just with runtime PM.

> In any case, it seems we can merge quite a bit of this series
> already and then deal with the problem parts.

sure, it at least some of those patches get merged, then it's less crap
for me to rebase every now and again.

> > This is the third time I rebase the series after a long hiatus and it
> > always comes out to the same result -> "let's wait some more".
> 
> Nope, it's always been "this series causes PM regressions"

you just said that we haven't been in any position to really test this,
so can it be that the status has always been "this series causes PM
regressions". We couldn't test that before, right ?

> and few other minor comments. And we have not been in any
> position to really test that until with v3.16-rc4. And then
> you always run out of time and nobody else does anything :)

sure, I have other stuff to do as well.
Tony Lindgren July 29, 2014, 3:28 p.m. UTC | #5
* Felipe Balbi <balbi@ti.com> [140729 08:22]:
> On Tue, Jul 29, 2014 at 08:06:55AM -0700, Tony Lindgren wrote:
> > * Felipe Balbi <balbi@ti.com> [140729 07:13]:
> > > This is the third time I rebase the series after a long hiatus and it
> > > always comes out to the same result -> "let's wait some more".
> > 
> > Nope, it's always been "this series causes PM regressions"
> 
> you just said that we haven't been in any position to really test this,
> so can it be that the status has always been "this series causes PM
> regressions". We couldn't test that before, right ?

It's been working for legacy booting for years with the mainline
kernel, but not for device tree based booting until with v3.16-rc4.
I believe I tested your earlier series with my pending DT patches
though.
 
> > and few other minor comments. And we have not been in any
> > position to really test that until with v3.16-rc4. And then
> > you always run out of time and nobody else does anything :)
> 
> sure, I have other stuff to do as well.

Right :) I and others can provide some help here, but it's
the mr. patch author that needs to follow up on this series
too :p

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Lindgren Sept. 11, 2014, 9:08 p.m. UTC | #6
* Felipe Balbi <balbi@ti.com> [140728 14:19]:
> OMAP INTC irqchip driver will be moved under
> drivers/irqchip/ soon but we still have a dependency
> with mach-omap2 when it comes to idle functions.
> 
> In order to make it easy to share those function
> prototypes with OMAP PM code, we introduce this new
> header.
> 
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
>  arch/arm/mach-omap2/board-3430sdp.c        |  1 +
>  arch/arm/mach-omap2/board-am3517crane.c    |  1 +
>  arch/arm/mach-omap2/board-am3517evm.c      |  1 +
>  arch/arm/mach-omap2/board-cm-t35.c         |  1 +
>  arch/arm/mach-omap2/board-cm-t3517.c       |  1 +
>  arch/arm/mach-omap2/board-devkit8000.c     |  1 +
>  arch/arm/mach-omap2/board-ldp.c            |  1 +
>  arch/arm/mach-omap2/board-omap3beagle.c    |  1 +
>  arch/arm/mach-omap2/board-omap3logic.c     |  1 +
>  arch/arm/mach-omap2/board-omap3pandora.c   |  1 +
>  arch/arm/mach-omap2/board-omap3stalker.c   |  1 +
>  arch/arm/mach-omap2/board-omap3touchbook.c |  1 +
>  arch/arm/mach-omap2/board-overo.c          |  1 +
>  arch/arm/mach-omap2/board-rx51.c           |  1 +
>  arch/arm/mach-omap2/board-ti8168evm.c      |  1 +
>  arch/arm/mach-omap2/common.h               |  9 ---------
>  arch/arm/mach-omap2/cpuidle34xx.c          |  1 +
>  arch/arm/mach-omap2/irq.c                  |  1 +
>  arch/arm/mach-omap2/pm24xx.c               |  1 +
>  arch/arm/mach-omap2/pm34xx.c               |  1 +
>  include/linux/irqchip/irq-omap-intc.h      | 32 ++++++++++++++++++++++++++++++
>  21 files changed, 51 insertions(+), 9 deletions(-)

I ended up setting up another branch without this patch
at omap-for-v3.12/intc-v2. It now has dependency to the
SoC changes from Nishant and the const cleanup fix from Uwe.

This patch is not needed, let's leave this out, the functions
needed by the platform code won't need to be in a separate
header file as they are only needed by the platform code.

If you have a chance, can you please repost the remainging
patches to do the actual move to drivers, but without this
patch? And if we are lucky we'll get an ack from the
drivers/irqchip maintainers and I can apply those changes too
into omap-for-v3.12/intc-v2 ;)

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Felipe Balbi Sept. 15, 2014, 7:29 p.m. UTC | #7
Hi,

On Thu, Sep 11, 2014 at 02:08:01PM -0700, Tony Lindgren wrote:
> * Felipe Balbi <balbi@ti.com> [140728 14:19]:
> > OMAP INTC irqchip driver will be moved under
> > drivers/irqchip/ soon but we still have a dependency
> > with mach-omap2 when it comes to idle functions.
> > 
> > In order to make it easy to share those function
> > prototypes with OMAP PM code, we introduce this new
> > header.
> > 
> > Signed-off-by: Felipe Balbi <balbi@ti.com>
> > ---
> >  arch/arm/mach-omap2/board-3430sdp.c        |  1 +
> >  arch/arm/mach-omap2/board-am3517crane.c    |  1 +
> >  arch/arm/mach-omap2/board-am3517evm.c      |  1 +
> >  arch/arm/mach-omap2/board-cm-t35.c         |  1 +
> >  arch/arm/mach-omap2/board-cm-t3517.c       |  1 +
> >  arch/arm/mach-omap2/board-devkit8000.c     |  1 +
> >  arch/arm/mach-omap2/board-ldp.c            |  1 +
> >  arch/arm/mach-omap2/board-omap3beagle.c    |  1 +
> >  arch/arm/mach-omap2/board-omap3logic.c     |  1 +
> >  arch/arm/mach-omap2/board-omap3pandora.c   |  1 +
> >  arch/arm/mach-omap2/board-omap3stalker.c   |  1 +
> >  arch/arm/mach-omap2/board-omap3touchbook.c |  1 +
> >  arch/arm/mach-omap2/board-overo.c          |  1 +
> >  arch/arm/mach-omap2/board-rx51.c           |  1 +
> >  arch/arm/mach-omap2/board-ti8168evm.c      |  1 +
> >  arch/arm/mach-omap2/common.h               |  9 ---------
> >  arch/arm/mach-omap2/cpuidle34xx.c          |  1 +
> >  arch/arm/mach-omap2/irq.c                  |  1 +
> >  arch/arm/mach-omap2/pm24xx.c               |  1 +
> >  arch/arm/mach-omap2/pm34xx.c               |  1 +
> >  include/linux/irqchip/irq-omap-intc.h      | 32 ++++++++++++++++++++++++++++++
> >  21 files changed, 51 insertions(+), 9 deletions(-)
> 
> I ended up setting up another branch without this patch
> at omap-for-v3.12/intc-v2. It now has dependency to the
> SoC changes from Nishant and the const cleanup fix from Uwe.
> 
> This patch is not needed, let's leave this out, the functions

so, if we don't add that header, we will have to include soc.h and
common.h with full (relative) path from drivers/irqchip/irq-omap-intc.c.
IOW:

#include "../../arch/arm/mach-omap2/common.h"

Neither soc.h nor common.h are part of the include path. I'd rather not
go down that route and just add this extra header. Even if you ask me to
move soc.h and common.h under <asm/mach/{soc,common}.h> we will already
have to modify every board file anyway.
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c
index d21a304..bd79a51 100644
--- a/arch/arm/mach-omap2/board-3430sdp.c
+++ b/arch/arm/mach-omap2/board-3430sdp.c
@@ -27,6 +27,7 @@ 
 #include <linux/platform_data/spi-omap2-mcspi.h>
 #include <linux/platform_data/omap-twl4030.h>
 #include <linux/usb/phy.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
diff --git a/arch/arm/mach-omap2/board-am3517crane.c b/arch/arm/mach-omap2/board-am3517crane.c
index 212c316..1fdcd67 100644
--- a/arch/arm/mach-omap2/board-am3517crane.c
+++ b/arch/arm/mach-omap2/board-am3517crane.c
@@ -24,6 +24,7 @@ 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/nand.h>
 #include <linux/mtd/partitions.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
diff --git a/arch/arm/mach-omap2/board-am3517evm.c b/arch/arm/mach-omap2/board-am3517evm.c
index 1c091b3..117c07a 100644
--- a/arch/arm/mach-omap2/board-am3517evm.c
+++ b/arch/arm/mach-omap2/board-am3517evm.c
@@ -27,6 +27,7 @@ 
 #include <linux/mmc/host.h>
 #include <linux/usb/musb.h>
 #include <linux/platform_data/gpio-omap.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include "am35xx.h"
 #include <asm/mach-types.h>
diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c
index c6df8ee..0e3e447 100644
--- a/arch/arm/mach-omap2/board-cm-t35.c
+++ b/arch/arm/mach-omap2/board-cm-t35.c
@@ -26,6 +26,7 @@ 
 #include <linux/delay.h>
 #include <linux/gpio.h>
 #include <linux/platform_data/gpio-omap.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <linux/platform_data/at24.h>
 #include <linux/i2c/twl.h>
diff --git a/arch/arm/mach-omap2/board-cm-t3517.c b/arch/arm/mach-omap2/board-cm-t3517.c
index 8a2c167..8854878 100644
--- a/arch/arm/mach-omap2/board-cm-t3517.c
+++ b/arch/arm/mach-omap2/board-cm-t3517.c
@@ -34,6 +34,7 @@ 
 #include <linux/mtd/partitions.h>
 #include <linux/mmc/host.h>
 #include <linux/can/platform/ti_hecc.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c
index d8e4f34..be05a3e 100644
--- a/arch/arm/mach-omap2/board-devkit8000.c
+++ b/arch/arm/mach-omap2/board-devkit8000.c
@@ -24,6 +24,7 @@ 
 #include <linux/gpio.h>
 #include <linux/input.h>
 #include <linux/gpio_keys.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
index c2975af..4c010c2 100644
--- a/arch/arm/mach-omap2/board-ldp.c
+++ b/arch/arm/mach-omap2/board-ldp.c
@@ -30,6 +30,7 @@ 
 #include <linux/mmc/host.h>
 #include <linux/usb/phy.h>
 #include <linux/platform_data/spi-omap2-mcspi.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 81de1c6..26c3232 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -27,6 +27,7 @@ 
 #include <linux/gpio_keys.h>
 #include <linux/pm_opp.h>
 #include <linux/cpu.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
index 6049f60..cd1bc90 100644
--- a/arch/arm/mach-omap2/board-omap3logic.c
+++ b/arch/arm/mach-omap2/board-omap3logic.c
@@ -23,6 +23,7 @@ 
 #include <linux/clk.h>
 #include <linux/io.h>
 #include <linux/gpio.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <linux/regulator/fixed.h>
 #include <linux/regulator/machine.h>
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c
index f322016..72a3fae 100644
--- a/arch/arm/mach-omap2/board-omap3pandora.c
+++ b/arch/arm/mach-omap2/board-omap3pandora.c
@@ -20,6 +20,7 @@ 
 #include <linux/init.h>
 #include <linux/kernel.h>
 #include <linux/platform_device.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <linux/spi/spi.h>
 #include <linux/regulator/machine.h>
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c
index 6311f4b..8e93215 100644
--- a/arch/arm/mach-omap2/board-omap3stalker.c
+++ b/arch/arm/mach-omap2/board-omap3stalker.c
@@ -23,6 +23,7 @@ 
 #include <linux/gpio.h>
 #include <linux/input.h>
 #include <linux/gpio_keys.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <linux/regulator/fixed.h>
 #include <linux/regulator/machine.h>
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
index d454508..c86927b 100644
--- a/arch/arm/mach-omap2/board-omap3touchbook.c
+++ b/arch/arm/mach-omap2/board-omap3touchbook.c
@@ -23,6 +23,7 @@ 
 #include <linux/gpio.h>
 #include <linux/input.h>
 #include <linux/gpio_keys.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index 2dae6cc..628c96c 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -31,6 +31,7 @@ 
 #include <linux/regulator/machine.h>
 #include <linux/regulator/fixed.h>
 #include <linux/spi/spi.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/nand.h>
diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index 2d1e5a6..d0b05e0 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -22,6 +22,7 @@ 
 #include <linux/usb/phy.h>
 #include <linux/usb/musb.h>
 #include <linux/platform_data/spi-omap2-mcspi.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
diff --git a/arch/arm/mach-omap2/board-ti8168evm.c b/arch/arm/mach-omap2/board-ti8168evm.c
index 6273c28..2707593 100644
--- a/arch/arm/mach-omap2/board-ti8168evm.c
+++ b/arch/arm/mach-omap2/board-ti8168evm.c
@@ -15,6 +15,7 @@ 
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/platform_device.h>
+#include <linux/irqchip/irq-omap-intc.h>
 #include <linux/usb/musb.h>
 
 #include <asm/mach-types.h>
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 1dd0021..7df6efd 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -210,15 +210,6 @@  extern struct device *omap2_get_iva_device(void);
 extern struct device *omap2_get_l3_device(void);
 extern struct device *omap4_get_dsp_device(void);
 
-void omap2_init_irq(void);
-void omap3_init_irq(void);
-void ti81xx_init_irq(void);
-extern int omap_irq_pending(void);
-void omap_intc_save_context(void);
-void omap_intc_restore_context(void);
-void omap3_intc_suspend(void);
-void omap3_intc_prepare_idle(void);
-void omap3_intc_resume_idle(void);
 void omap_gic_of_init(void);
 
 #ifdef CONFIG_CACHE_L2X0
diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c
index e18709d..8f03ac0 100644
--- a/arch/arm/mach-omap2/cpuidle34xx.c
+++ b/arch/arm/mach-omap2/cpuidle34xx.c
@@ -27,6 +27,7 @@ 
 #include <linux/export.h>
 #include <linux/cpu_pm.h>
 #include <asm/cpuidle.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include "powerdomain.h"
 #include "clockdomain.h"
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
index b2993e4..ed249c7 100644
--- a/arch/arm/mach-omap2/irq.c
+++ b/arch/arm/mach-omap2/irq.c
@@ -22,6 +22,7 @@ 
 #include <linux/of.h>
 #include <linux/of_address.h>
 #include <linux/of_irq.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include "soc.h"
 #include "common.h"
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c
index a5ea988..b912a84 100644
--- a/arch/arm/mach-omap2/pm24xx.c
+++ b/arch/arm/mach-omap2/pm24xx.c
@@ -30,6 +30,7 @@ 
 #include <linux/time.h>
 #include <linux/gpio.h>
 #include <linux/platform_data/gpio-omap.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <asm/fncpy.h>
 
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 507d8ee..320e7f2 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -30,6 +30,7 @@ 
 #include <linux/slab.h>
 #include <linux/omap-dma.h>
 #include <linux/platform_data/gpio-omap.h>
+#include <linux/irqchip/irq-omap-intc.h>
 
 #include <trace/events/power.h>
 
diff --git a/include/linux/irqchip/irq-omap-intc.h b/include/linux/irqchip/irq-omap-intc.h
new file mode 100644
index 0000000..e06b370
--- /dev/null
+++ b/include/linux/irqchip/irq-omap-intc.h
@@ -0,0 +1,32 @@ 
+/**
+ * irq-omap-intc.h - INTC Idle Functions
+ *
+ * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com
+ *
+ * Author: Felipe Balbi <balbi@ti.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2  of
+ * the License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __INCLUDE_LINUX_IRQCHIP_IRQ_OMAP_INTC_H
+#define __INCLUDE_LINUX_IRQCHIP_IRQ_OMAP_INTC_H
+
+void omap2_init_irq(void);
+void omap3_init_irq(void);
+void ti81xx_init_irq(void);
+
+int omap_irq_pending(void);
+void omap_intc_save_context(void);
+void omap_intc_restore_context(void);
+void omap3_intc_suspend(void);
+void omap3_intc_prepare_idle(void);
+void omap3_intc_resume_idle(void);
+
+#endif /* __INCLUDE_LINUX_IRQCHIP_IRQ_OMAP_INTC_H */