[PATCH 2/5] SPEAR3xx: Rename register/irq defines to remove naming conflicts
viresh kumar
viresh.kumar at st.com
Wed Aug 11 05:14:24 EDT 2010
On 8/11/2010 2:20 AM, Ryan Mallon wrote:
>>> >>
>>> >> +/*
>>> >> + * GPIO pins virtual irqs
>>> >> + * Use the lowest number for the GPIO virtual IRQs base on which subarchs
>>> >> + * we have compiled in
>>> >> + */
>>> >> +#if defined(CONFIG_MACH_SPEAR310)
>>> >> +#define SPEAR_GPIO_INT_BASE (SPEAR3XX_VIRQ_START + 18)
>>> >> +#elif defined(CONFIG_MACH_SPEAR320)
>>> >> +#define SPEAR_GPIO_INT_BASE (SPEAR3XX_VIRQ_START + 17)
>>> >> +#else
>>> >> +#define SPEAR_GPIO_INT_BASE (SPEAR3XX_VIRQ_START + 9)
>>> >> #endif
>> >
>> > If we have all three machines enabled, then SPEAR_GPIO_INT_BASE will start from
>> > VIRQ_START + 18, which will work for spear310 and spear320, but will not be
>> > correct as we will skip 9 irq no.s.
> Do the virtual irqs map directly to the hardware in some way? I thought
> that since they were virtual there offset would be somewhat arbitrary?
No. Virtual irqs are not fixed with hardware. What i wanted to say is
NR_IRQS will have a higher value, which will make irq_desc[NR_IRQS]
array have more size.
>
>> > It would be better to have three different base addresses
>> > SPEAR300_GPIO_INT_BASE, etc.
> This is possible. We can either do this by making SPEAR3XX_GPIO_INT_BASE
> a variable, or by having some ifdef/machine_is code in the board
> initialisation.
Not sure! We need to have single value of NR_IRQS for all spear3xx variants.
This will always waste some memory. I don't know if any other solution can
be there.
So SPEAR_GPIO_INT_BASE can be kept common with a single value without
these #ifdefs, i.e. we can have
#define SPEAR_GPIO_INT_BASE (SPEAR3XX_VIRQ_START + 18)
and now we can have different macros per machine, i.e. 300,310,320.
viresh.
More information about the linux-arm-kernel
mailing list