diff mbox

[2/9] ARM: shmobile: add GPIO IRQ macro

Message ID 1369648773-7941-3-git-send-email-horms+renesas@verge.net.au (mailing list archive)
State Superseded
Headers show

Commit Message

Simon Horman May 27, 2013, 9:59 a.m. UTC
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

R-Car series gpio_rcar driver can control GPIO IRQ today.
It needs base IRQ number for gpio_rcar_config :: .irq_base
This patch adds macro for GPIO IRQ.
This patch was tested on Bock-W board

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
---
 arch/arm/mach-shmobile/include/mach/irqs.h |    5 +++++
 1 file changed, 5 insertions(+)

Comments

Olof Johansson May 28, 2013, 4:07 a.m. UTC | #1
On Mon, May 27, 2013 at 06:59:26PM +0900, Simon Horman wrote:
> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> 
> R-Car series gpio_rcar driver can control GPIO IRQ today.
> It needs base IRQ number for gpio_rcar_config :: .irq_base
> This patch adds macro for GPIO IRQ.
> This patch was tested on Bock-W board
> 
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
> ---
>  arch/arm/mach-shmobile/include/mach/irqs.h |    5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/arch/arm/mach-shmobile/include/mach/irqs.h b/arch/arm/mach-shmobile/include/mach/irqs.h
> index b2074e2..d241bfd 100644
> --- a/arch/arm/mach-shmobile/include/mach/irqs.h
> +++ b/arch/arm/mach-shmobile/include/mach/irqs.h
> @@ -16,4 +16,9 @@
>  #define IRQPIN_BASE		2000
>  #define irq_pin(nr)		((nr) + IRQPIN_BASE)
>  
> +/* GPIO IRQ */
> +#define _GPIO_IRQ_BASE		2500
> +#define GPIO_IRQ_BASE(x)	(_GPIO_IRQ_BASE + (32 * x))
> +#define GPIO_IRQ(x, y)		(_GPIO_IRQ_BASE + (32 * x) + y)
> +
>  #endif /* __ASM_MACH_IRQS_H */

Hmm. It'd be real nice to see some effort on moving this over to sparse
irq instead. That'll be needed for full device tree conversion anyway. And
with that, the static irq bases will be gone, so drivers and some of
the platform code will need to be adjusted accordingly.


-Olof
--
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
Magnus Damm May 28, 2013, 5:53 a.m. UTC | #2
Hi Olof,

On Tue, May 28, 2013 at 1:07 PM, Olof Johansson <olof@lixom.net> wrote:
> On Mon, May 27, 2013 at 06:59:26PM +0900, Simon Horman wrote:
>> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>
>> R-Car series gpio_rcar driver can control GPIO IRQ today.
>> It needs base IRQ number for gpio_rcar_config :: .irq_base
>> This patch adds macro for GPIO IRQ.
>> This patch was tested on Bock-W board
>>
>> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
>> ---
>>  arch/arm/mach-shmobile/include/mach/irqs.h |    5 +++++
>>  1 file changed, 5 insertions(+)
>>
>> diff --git a/arch/arm/mach-shmobile/include/mach/irqs.h b/arch/arm/mach-shmobile/include/mach/irqs.h
>> index b2074e2..d241bfd 100644
>> --- a/arch/arm/mach-shmobile/include/mach/irqs.h
>> +++ b/arch/arm/mach-shmobile/include/mach/irqs.h
>> @@ -16,4 +16,9 @@
>>  #define IRQPIN_BASE          2000
>>  #define irq_pin(nr)          ((nr) + IRQPIN_BASE)
>>
>> +/* GPIO IRQ */
>> +#define _GPIO_IRQ_BASE               2500
>> +#define GPIO_IRQ_BASE(x)     (_GPIO_IRQ_BASE + (32 * x))
>> +#define GPIO_IRQ(x, y)               (_GPIO_IRQ_BASE + (32 * x) + y)
>> +
>>  #endif /* __ASM_MACH_IRQS_H */
>
> Hmm. It'd be real nice to see some effort on moving this over to sparse
> irq instead. That'll be needed for full device tree conversion anyway. And
> with that, the static irq bases will be gone, so drivers and some of
> the platform code will need to be adjusted accordingly.

I believe we've been doing sparse IRQ for ages, this is just to make
non-DT stuff more readable.

Or was there some particular other interface you wanted us to use for
non-DT board code?

Cheers,

/ magnus
--
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
Olof Johansson May 28, 2013, 6:18 a.m. UTC | #3
On Tue, May 28, 2013 at 02:53:04PM +0900, Magnus Damm wrote:
> Hi Olof,
> 
> On Tue, May 28, 2013 at 1:07 PM, Olof Johansson <olof@lixom.net> wrote:
> > On Mon, May 27, 2013 at 06:59:26PM +0900, Simon Horman wrote:
> >> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> >>
> >> R-Car series gpio_rcar driver can control GPIO IRQ today.
> >> It needs base IRQ number for gpio_rcar_config :: .irq_base
> >> This patch adds macro for GPIO IRQ.
> >> This patch was tested on Bock-W board
> >>
> >> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> >> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
> >> ---
> >>  arch/arm/mach-shmobile/include/mach/irqs.h |    5 +++++
> >>  1 file changed, 5 insertions(+)
> >>
> >> diff --git a/arch/arm/mach-shmobile/include/mach/irqs.h b/arch/arm/mach-shmobile/include/mach/irqs.h
> >> index b2074e2..d241bfd 100644
> >> --- a/arch/arm/mach-shmobile/include/mach/irqs.h
> >> +++ b/arch/arm/mach-shmobile/include/mach/irqs.h
> >> @@ -16,4 +16,9 @@
> >>  #define IRQPIN_BASE          2000
> >>  #define irq_pin(nr)          ((nr) + IRQPIN_BASE)
> >>
> >> +/* GPIO IRQ */
> >> +#define _GPIO_IRQ_BASE               2500
> >> +#define GPIO_IRQ_BASE(x)     (_GPIO_IRQ_BASE + (32 * x))
> >> +#define GPIO_IRQ(x, y)               (_GPIO_IRQ_BASE + (32 * x) + y)
> >> +
> >>  #endif /* __ASM_MACH_IRQS_H */
> >
> > Hmm. It'd be real nice to see some effort on moving this over to sparse
> > irq instead. That'll be needed for full device tree conversion anyway. And
> > with that, the static irq bases will be gone, so drivers and some of
> > the platform code will need to be adjusted accordingly.
> 
> I believe we've been doing sparse IRQ for ages, this is just to make
> non-DT stuff more readable.
> 
> Or was there some particular other interface you wanted us to use for
> non-DT board code?

Sorry, terminology confusion on my side. Most other platforms sorted
this out when they moved to sparse irq, removing most hardcoded interrupt
numbers at the same time and handling it through DT. But since shmobile
still has a ways to go on DT conversion things are a bit different.

Either way, once things have been converted fully to DT, most of these
static numberings can/should be possible to remove.


-Olof
--
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
Magnus Damm May 30, 2013, 1:32 a.m. UTC | #4
Hey Olof,

On Tue, May 28, 2013 at 3:18 PM, Olof Johansson <olof@lixom.net> wrote:
> On Tue, May 28, 2013 at 02:53:04PM +0900, Magnus Damm wrote:
>> Hi Olof,
>>
>> On Tue, May 28, 2013 at 1:07 PM, Olof Johansson <olof@lixom.net> wrote:
>> > On Mon, May 27, 2013 at 06:59:26PM +0900, Simon Horman wrote:
>> >> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>> >>
>> >> R-Car series gpio_rcar driver can control GPIO IRQ today.
>> >> It needs base IRQ number for gpio_rcar_config :: .irq_base
>> >> This patch adds macro for GPIO IRQ.
>> >> This patch was tested on Bock-W board
>> >>
>> >> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>> >> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
>> >> ---
>> >>  arch/arm/mach-shmobile/include/mach/irqs.h |    5 +++++
>> >>  1 file changed, 5 insertions(+)
>> >>
>> >> diff --git a/arch/arm/mach-shmobile/include/mach/irqs.h b/arch/arm/mach-shmobile/include/mach/irqs.h
>> >> index b2074e2..d241bfd 100644
>> >> --- a/arch/arm/mach-shmobile/include/mach/irqs.h
>> >> +++ b/arch/arm/mach-shmobile/include/mach/irqs.h
>> >> @@ -16,4 +16,9 @@
>> >>  #define IRQPIN_BASE          2000
>> >>  #define irq_pin(nr)          ((nr) + IRQPIN_BASE)
>> >>
>> >> +/* GPIO IRQ */
>> >> +#define _GPIO_IRQ_BASE               2500
>> >> +#define GPIO_IRQ_BASE(x)     (_GPIO_IRQ_BASE + (32 * x))
>> >> +#define GPIO_IRQ(x, y)               (_GPIO_IRQ_BASE + (32 * x) + y)
>> >> +
>> >>  #endif /* __ASM_MACH_IRQS_H */
>> >
>> > Hmm. It'd be real nice to see some effort on moving this over to sparse
>> > irq instead. That'll be needed for full device tree conversion anyway. And
>> > with that, the static irq bases will be gone, so drivers and some of
>> > the platform code will need to be adjusted accordingly.
>>
>> I believe we've been doing sparse IRQ for ages, this is just to make
>> non-DT stuff more readable.
>>
>> Or was there some particular other interface you wanted us to use for
>> non-DT board code?
>
> Sorry, terminology confusion on my side. Most other platforms sorted
> this out when they moved to sparse irq, removing most hardcoded interrupt
> numbers at the same time and handling it through DT. But since shmobile
> still has a ways to go on DT conversion things are a bit different.
>
> Either way, once things have been converted fully to DT, most of these
> static numberings can/should be possible to remove.

Yes, exactly! Please note that the current drivers are written to be
DT aware and the IRQ code makes use of IRQ domains, so like you say
the DT -reference board code does not need to make use of these kind
of macros.

However, we are still not able to swith to DT fully due to lack of DT
support for PINMUX/GPIO. One even larger road block is the common
clock framework. And then we have the I/O power domains used with
Runtime PM on sh7372.

Thanks for your help,

/ magnus
--
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/arch/arm/mach-shmobile/include/mach/irqs.h b/arch/arm/mach-shmobile/include/mach/irqs.h
index b2074e2..d241bfd 100644
--- a/arch/arm/mach-shmobile/include/mach/irqs.h
+++ b/arch/arm/mach-shmobile/include/mach/irqs.h
@@ -16,4 +16,9 @@ 
 #define IRQPIN_BASE		2000
 #define irq_pin(nr)		((nr) + IRQPIN_BASE)
 
+/* GPIO IRQ */
+#define _GPIO_IRQ_BASE		2500
+#define GPIO_IRQ_BASE(x)	(_GPIO_IRQ_BASE + (32 * x))
+#define GPIO_IRQ(x, y)		(_GPIO_IRQ_BASE + (32 * x) + y)
+
 #endif /* __ASM_MACH_IRQS_H */