Message ID | 1369648773-7941-3-git-send-email-horms+renesas@verge.net.au (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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
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
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
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
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 */